From 4f0dcd8051dc94fb0501d1664f3c4cb01d5bc8e3 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Tue, 31 Aug 2010 01:51:50 +0200 Subject: [PATCH 01/16] include submodules in archive tarball --- fabfile.py | 5 +- scripts/git-archive-all.sh | 208 +++++++++++++++++++++++++++++++++++++ 2 files changed, 211 insertions(+), 2 deletions(-) create mode 100755 scripts/git-archive-all.sh diff --git a/fabfile.py b/fabfile.py index 1995fd3cb..855d6bdd5 100644 --- a/fabfile.py +++ b/fabfile.py @@ -99,10 +99,11 @@ def rollback(): # = Helpers. These are called by other functions rather than directly = # ===================================================================== def upload_tar_from_git(): - "Create an archive from the current Git master branch and upload it" + "Create an archive from the current Git branch and upload it" print '>>> upload tar from git' require('release', provided_by=[deploy]) - local('git archive --format=tar master | gzip > %(release)s.tar.gz' % env) + local('git-archive-all.sh --format tar %(release)s.tar' % env) + local('gzip %(release)s.tar' % env) run('mkdir -p %(path)s/releases/%(release)s' % env, pty=True) run('mkdir -p %(path)s/packages' % env, pty=True) put('%(release)s.tar.gz' % env, '%(path)s/packages/' % env) diff --git a/scripts/git-archive-all.sh b/scripts/git-archive-all.sh new file mode 100755 index 000000000..af97d9645 --- /dev/null +++ b/scripts/git-archive-all.sh @@ -0,0 +1,208 @@ +#!/bin/bash - +# +# File: git-archive-all.sh +# +# Description: A utility script that builds an archive file(s) of all +# git repositories and submodules in the current path. +# Useful for creating a single tarfile of a git super- +# project that contains other submodules. +# +# Examples: Use git-archive-all.sh to create archive distributions +# from git repositories. To use, simply do: +# +# cd $GIT_DIR; git-archive-all.sh +# +# where $GIT_DIR is the root of your git superproject. +# +# License: GPL3 +# +############################################################################### +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +############################################################################### + +# DEBUGGING +set -e +set -C # noclobber + +# TRAP SIGNALS +trap 'cleanup' QUIT EXIT + +# For security reasons, explicitly set the internal field separator +# to newline, space, tab +OLD_IFS=$IFS +IFS=' + ' + +function cleanup () { + rm -f $TMPFILE + rm -f $TOARCHIVE + IFS="$OLD_IFS" +} + +function usage () { + echo "Usage is as follows:" + echo + echo "$PROGRAM <--version>" + echo " Prints the program version number on a line by itself and exits." + echo + echo "$PROGRAM <--usage|--help|-?>" + echo " Prints this usage output and exits." + echo + echo "$PROGRAM [--format ] [--prefix ] [--separate|-s] [output_file]" + echo " Creates an archive for the entire git superproject, and its submodules" + echo " using the passed parameters, described below." + echo + echo " If '--format' is specified, the archive is created with the named" + echo " git archiver backend. Obviously, this must be a backend that git-archive" + echo " understands. The format defaults to 'tar' if not specified." + echo + echo " If '--prefix' is specified, the archive's superproject and all submodules" + echo " are created with the prefix named. The default is to not use one." + echo + echo " If '--separate' or '-s' is specified, individual archives will be created" + echo " for each of the superproject itself and its submodules. The default is to" + echo " concatenate individual archives into one larger archive." + echo + echo " If 'output_file' is specified, the resulting archive is created as the" + echo " file named. This parameter is essentially a path that must be writeable." + echo " When combined with '--separate' ('-s') this path must refer to a directory." + echo " Without this parameter or when combined with '--separate' the resulting" + echo " archive(s) are named with a dot-separated path of the archived directory and" + echo " a file extension equal to their format (e.g., 'superdir.submodule1dir.tar')." +} + +function version () { + echo "$PROGRAM version $VERSION" +} + +# Internal variables and initializations. +readonly PROGRAM=`basename "$0"` +readonly VERSION=0.2 + +OLD_PWD="`pwd`" +TMPDIR=${TMPDIR:-/tmp} +TMPFILE=`mktemp "$TMPDIR/$PROGRAM.XXXXXX"` # Create a place to store our work's progress +TOARCHIVE=`mktemp "$TMPDIR/$PROGRAM.toarchive.XXXXXX"` +OUT_FILE=$OLD_PWD # assume "this directory" without a name change by default +SEPARATE=0 + +FORMAT=tar +PREFIX= +TREEISH=HEAD + +# RETURN VALUES/EXIT STATUS CODES +readonly E_BAD_OPTION=254 +readonly E_UNKNOWN=255 + +# Process command-line arguments. +while test $# -gt 0; do + case $1 in + --format ) + shift + FORMAT="$1" + shift + ;; + + --prefix ) + shift + PREFIX="$1" + shift + ;; + + --separate | -s ) + shift + SEPARATE=1 + ;; + + --version ) + version + exit + ;; + + -? | --usage | --help ) + usage + exit + ;; + + -* ) + echo "Unrecognized option: $1" >&2 + usage + exit $E_BAD_OPTION + ;; + + * ) + break + ;; + esac +done + +if [ ! -z "$1" ]; then + OUT_FILE="$1" + shift +fi + +# Validate parameters; error early, error often. +if [ $SEPARATE -eq 1 -a ! -d $OUT_FILE ]; then + echo "When creating multiple archives, your destination must be a directory." + echo "If it's not, you risk being surprised when your files are overwritten." + exit +elif [ `git config -l | grep -q '^core\.bare=false'; echo $?` -ne 0 ]; then + echo "$PROGRAM must be run from a git working copy (i.e., not a bare repository)." + exit +fi + +# Create the superproject's git-archive +git archive --format=$FORMAT --prefix="$PREFIX" $TREEISH > $TMPDIR/$(basename $(pwd)).$FORMAT +echo $TMPDIR/$(basename $(pwd)).$FORMAT >| $TMPFILE # clobber on purpose +superfile=`head -n 1 $TMPFILE` + +# find all '.git' dirs, these show us the remaining to-be-archived dirs +find . -name '.git' -type d -print | sed -e 's/^\.\///' -e 's/\.git$//' | grep -v '^$' >> $TOARCHIVE + +while read path; do + TREEISH=$(git submodule | grep "^ .*${path%/} " | cut -d ' ' -f 2) # git-submodule does not list trailing slashes in $path + cd "$path" + git archive --format=$FORMAT --prefix="${PREFIX}$path" ${TREEISH:-HEAD} > "$TMPDIR"/"$(echo "$path" | sed -e 's/\//./g')"$FORMAT + if [ $FORMAT == 'zip' ]; then + # delete the empty directory entry; zipped submodules won't unzip if we don't do this + zip -d "$(tail -n 1 $TMPFILE)" "${PREFIX}${path%/}" >/dev/null # remove trailing '/' + fi + echo "$TMPDIR"/"$(echo "$path" | sed -e 's/\//./g')"$FORMAT >> $TMPFILE + cd "$OLD_PWD" +done < $TOARCHIVE + +# Concatenate archives into a super-archive. +if [ $SEPARATE -eq 0 ]; then + if [ $FORMAT == 'tar' ]; then + sed -e '1d' $TMPFILE | while read file; do + tar --concatenate -f "$superfile" "$file" && rm -f "$file" + done + elif [ $FORMAT == 'zip' ]; then + sed -e '1d' $TMPFILE | while read file; do + # zip incorrectly stores the full path, so cd and then grow + cd `dirname "$file"` + zip -g "$superfile" `basename "$file"` && rm -f "$file" + done + cd "$OLD_PWD" + fi + + echo "$superfile" >| $TMPFILE # clobber on purpose +fi + +while read file; do + mv "$file" "$OUT_FILE" +done < $TMPFILE -- 2.20.1 From 82c3d8f89fa9f58afed6a8373add3da116a6fce1 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Tue, 31 Aug 2010 02:06:46 +0200 Subject: [PATCH 02/16] final decision: no uk-l10n for now --- wolnelektury/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wolnelektury/settings.py b/wolnelektury/settings.py index 9396a1dd1..359f08f48 100644 --- a/wolnelektury/settings.py +++ b/wolnelektury/settings.py @@ -42,7 +42,7 @@ LANGUAGES = tuple(sorted([ ('fr', u'français'), ('ru', u'русский'), ('es', u'español'), - ('uk', u'українська'), + #('uk', u'українська'), ], key=lambda x: x[0])) -- 2.20.1 From 057604ab62f70f42fe0392ee32036be81ab52d9e Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Wed, 1 Sep 2010 11:11:22 +0200 Subject: [PATCH 03/16] widget fix --- wolnelektury/static/css/master.css | 4 ++++ wolnelektury/static/js/catalogue.js | 10 ++++++++++ wolnelektury/static/js/widget.js | 18 ++++++++++-------- wolnelektury/static/js/widgetInit.js | 2 +- wolnelektury/static/widget.html | 2 +- .../templates/catalogue/main_page.html | 2 +- 6 files changed, 27 insertions(+), 11 deletions(-) diff --git a/wolnelektury/static/css/master.css b/wolnelektury/static/css/master.css index cfa644f65..80677d214 100644 --- a/wolnelektury/static/css/master.css +++ b/wolnelektury/static/css/master.css @@ -948,3 +948,7 @@ div.shown-tags p, div.all-tags p { #createNewShelf { display: none; } + +.widget-code { + overflow: hidden; +} diff --git a/wolnelektury/static/js/catalogue.js b/wolnelektury/static/js/catalogue.js index 31bad6eac..1d90e1084 100644 --- a/wolnelektury/static/js/catalogue.js +++ b/wolnelektury/static/js/catalogue.js @@ -462,5 +462,15 @@ function serverTime() { $(this).data('drag', false); }); + $('.widget-code').focus( + function(){ + $(this).animate({rows: '11'}, 100) + } + ).blur( + function(){ + $(this).animate({rows: '1'}, 300) + } + ); + }); })(jQuery) diff --git a/wolnelektury/static/js/widget.js b/wolnelektury/static/js/widget.js index 8a8202492..7012e6404 100644 --- a/wolnelektury/static/js/widget.js +++ b/wolnelektury/static/js/widget.js @@ -9,13 +9,15 @@ var inputSubmit = document.createElement('input'); var body = document.getElementsByTagName('body') var stylesheet = document.createElement('link'); +var host = 'www.wolnelektury.pl'; + /* set attributes of created elements */ stylesheet.setAttribute('type', 'text/css'); stylesheet.setAttribute('rel', 'stylesheet'); -stylesheet.setAttribute('href', 'http://lektury.staging.nowoczesnapolska.org.pl/static/css/widget.css'); -linkLogo.setAttribute('href', 'http://lektury.staging.nowoczesnapolska.org.pl'); -logo.setAttribute('src', 'http://lektury.staging.nowoczesnapolska.org.pl/static/img/logo.png'); -form.setAttribute('action', 'http://lektury.staging.nowoczesnapolska.org.pl/katalog/szukaj/'); +stylesheet.setAttribute('href', 'http://'+host+'/static/css/widget.css'); +linkLogo.setAttribute('href', 'http://'+host); +logo.setAttribute('src', 'http://'+host+'/static/img/logo.png'); +form.setAttribute('action', 'http://'+host+'/katalog/szukaj/'); form.setAttribute('method', 'get'); form.setAttribute('accept-charset', 'utf-8'); form.setAttribute('id', 'wl-form'); @@ -26,21 +28,21 @@ inputText.setAttribute('name', 'q'); inputText.setAttribute('id', 'id_qq'); inputText.setAttribute('size', '13'); inputSubmit.setAttribute('type', 'image'); -inputSubmit.setAttribute('src', 'http://lektury.staging.nowoczesnapolska.org.pl/static/img/search.png'); +inputSubmit.setAttribute('src', 'http://'+host+'/static/img/search.png'); inputSubmit.setAttribute('style', 'position:relative; top:5px; margin-left:5px'); /* import jquery and autocomplete */ var scriptJ = document.createElement('script'); scriptJ.setAttribute('type', 'text/javascript'); -scriptJ.setAttribute('src', 'http://lektury.staging.nowoczesnapolska.org.pl/static/js/jquery.js'); +scriptJ.setAttribute('src', 'http://'+host+'/static/js/jquery.js'); var scriptAutoComplete = document.createElement('script'); scriptAutoComplete.setAttribute('type', 'text/javascript'); -scriptAutoComplete.setAttribute('src', 'http://lektury.staging.nowoczesnapolska.org.pl/static/js/jquery-ui-1.8.2.custom.min.js'); +scriptAutoComplete.setAttribute('src', 'http://'+host+'/static/js/jquery-ui-1.8.2.custom.min.js'); var scriptInit = document.createElement('script'); scriptInit.setAttribute('type', 'text/javascript'); -scriptInit.setAttribute('src', 'http://lektury.staging.nowoczesnapolska.org.pl/static/js/widgetInit.js'); +scriptInit.setAttribute('src', 'http://'+host+'/static/js/widgetInit.js'); body[0].appendChild(scriptJ); body[0].appendChild(scriptAutoComplete); diff --git a/wolnelektury/static/js/widgetInit.js b/wolnelektury/static/js/widgetInit.js index 0a6e405a3..ab57a3062 100644 --- a/wolnelektury/static/js/widgetInit.js +++ b/wolnelektury/static/js/widgetInit.js @@ -2,7 +2,7 @@ $("#id_qq").autocomplete({ source: function(request, response) { $.ajax({ - url: "http://lektury.staging.nowoczesnapolska.org.pl/katalog/jtags/", + url: "http://www.wolnelektury.pl/katalog/jtags/", dataType: "jsonp", data: { featureClass: "P", diff --git a/wolnelektury/static/widget.html b/wolnelektury/static/widget.html index 67e500971..890184da4 100644 --- a/wolnelektury/static/widget.html +++ b/wolnelektury/static/widget.html @@ -5,7 +5,7 @@ - + diff --git a/wolnelektury/templates/catalogue/main_page.html b/wolnelektury/templates/catalogue/main_page.html index cef3604c0..b3ba6c548 100644 --- a/wolnelektury/templates/catalogue/main_page.html +++ b/wolnelektury/templates/catalogue/main_page.html @@ -18,7 +18,7 @@

{% trans "Wolne Lektury Widget" %}

{% trans "Place our widget - search engine for Wolne Lektury which gives access to free books and audiobooks - on your homepage! Just copy the HTML code below onto your page:" %}

- \r\n\r\n\r\n

Tak b\u0119dzie prezentowa\u0142 si\u0119 wid\u017cet po umieszczeniu go na stronie:

\r\n
\r\n", + "left_column": "

Wid\u017cet Wolne Lektury na Twojej stronie WWW

\r\n

Umie\u015b\u0107 wid\u017cet \u2013 wyszukiwark\u0119 Wolnych Lektur umo\u017cliwiaj\u0105c\u0105 dost\u0119p do darmowych lektur i audiobook\u00f3w \u2013 na swojej stronie WWW!

\r\n

Po prostu skopiuj poni\u017cszy kod HTML.

\r\n\r\n\r\n\r\n\r\n

Tak b\u0119dzie prezentowa\u0142 si\u0119 wid\u017cet po umieszczeniu go na stronie:

\r\n
\r\n", "right_column_uk": "", "title_en": "Widget", - "left_column_pl": "

Wid\u017cet Wolne Lektury na Twojej stronie WWW

\r\n

Umie\u015b\u0107 wid\u017cet \u2013 wyszukiwark\u0119 Wolnych Lektur umo\u017cliwiaj\u0105c\u0105 dost\u0119p do darmowych lektur i audiobook\u00f3w \u2013 na swojej stronie WWW!

\r\n

Po prostu skopiuj poni\u017cszy kod HTML.

\r\n\r\n\r\n\r\n\r\n

Tak b\u0119dzie prezentowa\u0142 si\u0119 wid\u017cet po umieszczeniu go na stronie:

\r\n
\r\n", + "left_column_pl": "

Wid\u017cet Wolne Lektury na Twojej stronie WWW

\r\n

Umie\u015b\u0107 wid\u017cet \u2013 wyszukiwark\u0119 Wolnych Lektur umo\u017cliwiaj\u0105c\u0105 dost\u0119p do darmowych lektur i audiobook\u00f3w \u2013 na swojej stronie WWW!

\r\n

Po prostu skopiuj poni\u017cszy kod HTML.

\r\n\r\n\r\n\r\n\r\n

Tak b\u0119dzie prezentowa\u0142 si\u0119 wid\u017cet po umieszczeniu go na stronie:

\r\n
\r\n", "left_column_ru": "", "right_column_lt": "", "title_es": "Widget", diff --git a/wolnelektury/locale/fr/LC_MESSAGES/django.mo b/wolnelektury/locale/fr/LC_MESSAGES/django.mo index 775809c8ce23ccc1e7ea66e4c504af966fa8a633..6c5c6ca5626ba4750b8356db5270af20a374cd09 100644 GIT binary patch delta 24 gcmbPMJFRv@iW+-yYOz95YVqV!evi$Y)gFrj0Dq4P0ssI2 delta 31 ncmbPMJFRv@iW*;0YH@LXX;E@&u|kNS&*U0@$IYA79*YA2(2@+W diff --git a/wolnelektury/locale/fr/LC_MESSAGES/django.po b/wolnelektury/locale/fr/LC_MESSAGES/django.po index 007bb7cc4..49f94ba78 100644 --- a/wolnelektury/locale/fr/LC_MESSAGES/django.po +++ b/wolnelektury/locale/fr/LC_MESSAGES/django.po @@ -137,7 +137,7 @@ msgid "" msgstr "" "\n" "\t\t\t\tLectures libres et un projet réalisé par la Fondation Pologne Moderne .\n" -"\t\t\t\tReproductions numériques faites par la Bibliothèque nationale, basées sur ressources TNL. \n" +"\t\t\t\tReproductions numériques faites par la Bibliothèque nationale, basées sur ses ressources. \n" "\t\t\t\tHosting EO Networks.\n" "\t\t\t\t" diff --git a/wolnelektury/locale/uk/LC_MESSAGES/django.mo b/wolnelektury/locale/uk/LC_MESSAGES/django.mo index c3cc0696aaae7722408e13a4573ed5388bb6bb1f..e2330c36c4e4c2b89f6871793cb4c1b7b77062d2 100644 GIT binary patch delta 1303 zcmXZbOGs2<6u|K_R+6tYCl#NKCXMB@sWcy{rKw3$P?%*Jf~B;mtf*Fv&Q!Eh915aR zq$GqMqeEg!wTL85WG<15D62)G)J|7DsQ>A@xxe$>`#sM6zVo>~mg^piH*|$_S%66G zdXXxN$l)}RFcG=CK_m_bF$<@#41ZxLmTVLW#yzO*gSZ--F@<@~V+QS;=^~jpjtrGW zEWso`Mq*=zIOPaI8!uvT8g<||9ua6|^aV^sa+KSch%fOeenIVbi!61*2e=AfU^Gr+ zJbp#}AxpMt0w&YW%XXSC4lR8+hx(_T7>sY1oJAclkKGuOBjUy$T!|^0%>L=f&r2?n zn>3*&)QS3oJ-8N!aUIS$35E%Nq7?@nB7yh{b>b;JgYPf_t2VPZ9>Y3p!*HBLUFbbV z;XK;#FY1ojwuq3c6r(PD3UkrvA*dyo#8^z;DnclQs0*CNB%DC~K8L9oz-ZkeJAOw8 z>Ox6*W(^gg_OC|Wk!G}ECx)WeY&+!{fexHS&FnX74cNAsiPWG@;6fev5VhYZw%{zb zVnx1r){jvWdxIS~gSwM-1*T1?wQvGssXw_w(7=mcypMly1p5og9vh29x^Mvdv0%Gd zY@cyI?FAgd%3_hd7LF48XjhkV4EO^Rab}0PlZ$AjZQaSOVSTX^*fAdmun8|?NSVkb z>_QiYmz&qD8}$h8VH8fFUawC`eM-AG7<_~} z;W$R)2Mogn)T*^qn%6BE^(Y*;97|C9m!r;8k8AKO>d{@pH@^R^X%x?2Glp^IK4ZevWS7LUr(e8ilf8rlCTsEV_aQVGP tyWuk2{vp5DKV&o9Hb+iQo=tlhSB)FKR{POF%b4eN=7?p?*O3(v{|{6ix+wqv delta 1289 zcmXZbSx8i26u|LwBgJeSw?;FYx|KC*j+(ipWu>WO2?L7agC<2-k5Nz%=(q$?8I@xO zZ6*{I5tK9Jf(4NeEmkuW3BBo4C1LdvJ_P+w*O&V{-*>;|eA^Yj(c?EB+ai3w43Wl7 zA|CXli^Pb?V?gHh(tM4iZ1 zWZj`m)b_=wJ5q-xwxbPiS!JI*B+!misF{67y#w}QE0I#v0gj?}ypG!LJ|4y?Jc9Y# zth2s}n%Ee2;Uwx#R+U(KQIEO_Q@DR}oS=n@3wRIba1{NeB73oRyT~QHigz)6hjrQB zV?E^=9L9n&&fDN9afov9E?x|NK_^b`wsvwB6Db?zyc*^g2Z0M+_yE0l8W*qwJ1RuF z@h`?>=N{__`p`jn1oe5nL++*gLA`vgN|M0_)Ez0SvJ$UB9)dKZPoK|uf@HjbI$#i! z@D0Y`4C<|&M{OTlZ5@S)ODVfi+vlNi=yor9yv{ zqfXF(>DY#xf?Pz7QQj`rN7PuaAse|avM=y@S+~>KA07zzo1x+GKwww.wolnelektury.pl) це проект реалізований Фондом Модерна Польща. Діє він з 2007 року та надає доступ до літератури, рекомендованої Міністерством національної освіти, яка є частиною суспільного надбання.\n" +"\t\t\tІнтернет-бібліотека шкільної літератури “Wolne Lektury” (www.wolnelektury.pl) це проект реалізований Фондом Модерна Польща. Проект стартував у 2007 році та надає доступ до літератури, рекомендованої Міністерством національної освіти, яка є частиною суспільного надбання.\n" "\t\t\t" #: templates/catalogue/search_multiple_hits.html:5 -- 2.20.1 From 29a509803c78c19046540c5bc621a379a8330486 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Fri, 3 Sep 2010 00:43:48 +0200 Subject: [PATCH 10/16] added epub infopage, updated fixture --- apps/infopages/fixtures/wl_data.json | 51 ++++++++++++++++-- wolnelektury/static/img/epub-www.jpg | Bin 0 -> 27691 bytes .../templates/catalogue/main_page.html | 2 + wolnelektury/urls.py | 1 + 4 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 wolnelektury/static/img/epub-www.jpg diff --git a/apps/infopages/fixtures/wl_data.json b/apps/infopages/fixtures/wl_data.json index bdce6de87..e4cf73c13 100644 --- a/apps/infopages/fixtures/wl_data.json +++ b/apps/infopages/fixtures/wl_data.json @@ -42,6 +42,49 @@ "page_title_ru": "\u041e \u043f\u0440\u043e\u0435\u043a\u0442\u0435 Wolne Lektury" } }, + { + "pk": 5, + "model": "infopages.infopage", + "fields": { + "title_de": "", + "page_title": "Wolne Lektury w formacie na urz\u0105dzenia mobilne", + "left_column_uk": "", + "right_column_pl": "", + "page_title_en": "", + "page_title_es": "", + "left_column_lt": "", + "title_fr": "", + "right_column_ru": "", + "left_column_fr": "", + "title": "Wolne Lektury w formacie na urz\u0105dzenia mobilne", + "title_lt": "", + "right_column": "", + "right_column_es": "", + "right_column_en": "", + "left_column_de": "", + "title_uk": "", + "right_column_fr": "", + "left_column": "

Biblioteka cyfrowa Wolne Lektury udost\u0119pnia za darmo ponad tysi\u0105c utwor\u00f3w z listy lektur szkolnych w formacie epub. Ka\u017cdy u\u017cytkownik ma mo\u017cliwo\u015b\u0107 wgrania e-booka z portalu Wolne Lektury do swojego czytnika ksi\u0105\u017cek elektronicznych lub telefonu kom\u00f3rkowego. Wystarczy \u015bci\u0105gn\u0105\u0107 pliki epub ze strony www.wolnelektury.pl. Pe\u0142n\u0105 list\u0119 utwor\u00f3w w formacie epub znale\u017a\u0107 mo\u017cna tutaj.

\r\n\r\n

Epub to kolejny format, w kt\u00f3rym lektury s\u0105 dost\u0119pne w bibliotece. Dotychczas u\u017cytkownicy mieli do dyspozycji teksty w formatach m.in. html i pdf oraz audiobooki. Format epub umo\u017cliwia czytanie utwor\u00f3w na coraz bardziej popularnych czytnikach i na kom\u00f3rkach.

\r\n\r\n

W zbiorach biblioteki cyfrowej Wolne Lektury znajduj\u0105 si\u0119 lektury szkolne, kt\u00f3re s\u0105 zalecane do u\u017cytku przez Ministerstwo Edukacji Narodowej i trafi\u0142y ju\u017c do domeny publicznej. Biblioteka oferuje u\u017cytkownikom ponad tysi\u0105c utwor\u00f3w, m.in. powie\u015bci Henryka Sienkiewicza, utwory Jana Kochanowskiego, wiersze Boles\u0142awa Le\u015bmiana, czy nowele Marii Konopnickej. Mo\u017cna je zgodnie z prawem bezp\u0142atnie przegl\u0105da\u0107, s\u0142ucha\u0107, \u015bci\u0105ga\u0107 na sw\u00f3j komputer, a tak\u017ce udost\u0119pnia\u0107 innym i cytowa\u0107.

", + "right_column_uk": "", + "title_en": "", + "left_column_pl": "

Biblioteka cyfrowa Wolne Lektury udost\u0119pnia za darmo ponad tysi\u0105c utwor\u00f3w z listy lektur szkolnych w formacie epub. Ka\u017cdy u\u017cytkownik ma mo\u017cliwo\u015b\u0107 wgrania e-booka z portalu Wolne Lektury do swojego czytnika ksi\u0105\u017cek elektronicznych lub telefonu kom\u00f3rkowego. Wystarczy \u015bci\u0105gn\u0105\u0107 pliki epub ze strony www.wolnelektury.pl. Pe\u0142n\u0105 list\u0119 utwor\u00f3w w formacie epub znale\u017a\u0107 mo\u017cna tutaj.

\r\n\r\n

Epub to kolejny format, w kt\u00f3rym lektury s\u0105 dost\u0119pne w bibliotece. Dotychczas u\u017cytkownicy mieli do dyspozycji teksty w formatach m.in. html i pdf oraz audiobooki. Format epub umo\u017cliwia czytanie utwor\u00f3w na coraz bardziej popularnych czytnikach i na kom\u00f3rkach.

\r\n\r\n

W zbiorach biblioteki cyfrowej Wolne Lektury znajduj\u0105 si\u0119 lektury szkolne, kt\u00f3re s\u0105 zalecane do u\u017cytku przez Ministerstwo Edukacji Narodowej i trafi\u0142y ju\u017c do domeny publicznej. Biblioteka oferuje u\u017cytkownikom ponad tysi\u0105c utwor\u00f3w, m.in. powie\u015bci Henryka Sienkiewicza, utwory Jana Kochanowskiego, wiersze Boles\u0142awa Le\u015bmiana, czy nowele Marii Konopnickej. Mo\u017cna je zgodnie z prawem bezp\u0142atnie przegl\u0105da\u0107, s\u0142ucha\u0107, \u015bci\u0105ga\u0107 na sw\u00f3j komputer, a tak\u017ce udost\u0119pnia\u0107 innym i cytowa\u0107.

", + "left_column_ru": "", + "right_column_lt": "", + "title_es": "", + "page_title_fr": "", + "page_title_uk": "", + "page_title_de": "", + "slug": "epub", + "page_title_lt": "", + "right_column_de": "", + "page_title_pl": "Wolne Lektury w formacie na urz\u0105dzenia mobilne", + "left_column_es": "", + "left_column_en": "", + "title_pl": "Wolne Lektury w formacie na urz\u0105dzenia mobilne", + "title_ru": "", + "page_title_ru": "" + } + }, { "pk": 2, "model": "infopages.infopage", @@ -135,7 +178,7 @@ "title_de": "Widget", "page_title": "Widget", "left_column_uk": "", - "right_column_pl": "

Jak umie\u015bci\u0107 wid\u017cet Wolne Lektury na stronie WWW

\r\n

T\u0119 cz\u0119\u015b\u0107 kodu nale\u017cy umie\u015bci\u0107 tam, gdzie ma pojawi\u0107 si\u0119 wid\u017cet.

\r\n
\" size=\"50\">\r\n\r\n

T\u0119 cz\u0119\u015b\u0107 kodu nale\u017cy umie\u015bci\u0107 tu\u017c przed zamkni\u0119ciem taga body, czyli przed </body>

\r\n\r\n\" size=\"50\">", + "right_column_pl": "

Jak umie\u015bci\u0107 wid\u017cet Wolne Lektury na stronie WWW

\r\n\r\n

Po prostu skopiuj poni\u017cszy kod HTML.

\r\n\r\n", "page_title_en": "Widget", "page_title_es": "Widget", "left_column_lt": "", @@ -144,16 +187,16 @@ "left_column_fr": "", "title": "Widget", "title_lt": "Widget", - "right_column": "

Jak umie\u015bci\u0107 wid\u017cet Wolne Lektury na stronie WWW

\r\n

T\u0119 cz\u0119\u015b\u0107 kodu nale\u017cy umie\u015bci\u0107 tam, gdzie ma pojawi\u0107 si\u0119 wid\u017cet.

\r\n\" size=\"50\">\r\n\r\n

T\u0119 cz\u0119\u015b\u0107 kodu nale\u017cy umie\u015bci\u0107 tu\u017c przed zamkni\u0119ciem taga body, czyli przed </body>

\r\n\r\n\" size=\"50\">", + "right_column": "

Jak umie\u015bci\u0107 wid\u017cet Wolne Lektury na stronie WWW

\r\n\r\n

Po prostu skopiuj poni\u017cszy kod HTML.

\r\n\r\n", "right_column_es": "", "right_column_en": "", "left_column_de": "", "title_uk": "Widget", "right_column_fr": "", - "left_column": "

Wid\u017cet Wolne Lektury na Twojej stronie WWW

\r\n

Umie\u015b\u0107 wid\u017cet \u2013 wyszukiwark\u0119 Wolnych Lektur umo\u017cliwiaj\u0105c\u0105 dost\u0119p do darmowych lektur i audiobook\u00f3w \u2013 na swojej stronie WWW!

\r\n

Po prostu skopiuj poni\u017cszy kod HTML.

\r\n\r\n\r\n\r\n\r\n

Tak b\u0119dzie prezentowa\u0142 si\u0119 wid\u017cet po umieszczeniu go na stronie:

\r\n
\r\n", + "left_column": "

Wid\u017cet Wolne Lektury na Twojej stronie WWW

\r\n

Umie\u015b\u0107 wid\u017cet \u2013 wyszukiwark\u0119 Wolnych Lektur umo\u017cliwiaj\u0105c\u0105 dost\u0119p do darmowych lektur i audiobook\u00f3w \u2013 na swojej stronie WWW!

\r\n\r\n

Tak b\u0119dzie prezentowa\u0142 si\u0119 wid\u017cet po umieszczeniu go na stronie:

\r\n
\r\n", "right_column_uk": "", "title_en": "Widget", - "left_column_pl": "

Wid\u017cet Wolne Lektury na Twojej stronie WWW

\r\n

Umie\u015b\u0107 wid\u017cet \u2013 wyszukiwark\u0119 Wolnych Lektur umo\u017cliwiaj\u0105c\u0105 dost\u0119p do darmowych lektur i audiobook\u00f3w \u2013 na swojej stronie WWW!

\r\n

Po prostu skopiuj poni\u017cszy kod HTML.

\r\n\r\n\r\n\r\n\r\n

Tak b\u0119dzie prezentowa\u0142 si\u0119 wid\u017cet po umieszczeniu go na stronie:

\r\n
\r\n", + "left_column_pl": "

Wid\u017cet Wolne Lektury na Twojej stronie WWW

\r\n

Umie\u015b\u0107 wid\u017cet \u2013 wyszukiwark\u0119 Wolnych Lektur umo\u017cliwiaj\u0105c\u0105 dost\u0119p do darmowych lektur i audiobook\u00f3w \u2013 na swojej stronie WWW!

\r\n\r\n

Tak b\u0119dzie prezentowa\u0142 si\u0119 wid\u017cet po umieszczeniu go na stronie:

\r\n
\r\n", "left_column_ru": "", "right_column_lt": "", "title_es": "Widget", diff --git a/wolnelektury/static/img/epub-www.jpg b/wolnelektury/static/img/epub-www.jpg new file mode 100644 index 0000000000000000000000000000000000000000..84016cf6e6a59aa0c57ff158f80bca9453027399 GIT binary patch literal 27691 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

TJPgFh_=u4(}!3 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 qtwY(LqS>s$

↓ {% trans "Browse books by categories" %} ↓

+

epub: lektury w kieszeni

+

{% trans "Wolne Lektury Widget" %}

{% trans "Place our widget - search engine for Wolne Lektury which gives access to free books and audiobooks - on your homepage! Just copy the HTML code below onto your page:" %}

", + "right_column_pl": "

Jak umie\u015bci\u0107 wid\u017cet Wolne Lektury na stronie WWW

\r\n\r\n

Po prostu skopiuj poni\u017cszy kod HTML.

\r\n\r\n", "page_title_en": "Widget", "page_title_es": "Widget", "left_column_lt": "", @@ -187,7 +187,7 @@ "left_column_fr": "", "title": "Widget", "title_lt": "Widget", - "right_column": "

Jak umie\u015bci\u0107 wid\u017cet Wolne Lektury na stronie WWW

\r\n\r\n

Po prostu skopiuj poni\u017cszy kod HTML.

\r\n\r\n", + "right_column": "

Jak umie\u015bci\u0107 wid\u017cet Wolne Lektury na stronie WWW

\r\n\r\n

Po prostu skopiuj poni\u017cszy kod HTML.

\r\n\r\n", "right_column_es": "", "right_column_en": "", "left_column_de": "", diff --git a/wolnelektury/static/css/widget.css b/wolnelektury/static/css/widget.css index cd8e16b05..31349efb1 100644 --- a/wolnelektury/static/css/widget.css +++ b/wolnelektury/static/css/widget.css @@ -44,3 +44,8 @@ width: 160px; cursor: pointer; display:block; } + +.ui-corner-all a{ + color: black; + text-decoration: none; +} diff --git a/wolnelektury/templates/base.html b/wolnelektury/templates/base.html index 4d59dc8aa..297b4d6a6 100644 --- a/wolnelektury/templates/base.html +++ b/wolnelektury/templates/base.html @@ -46,8 +46,8 @@ WolneLektury @ Facebook WolneLektury @ NK
-
-
+ +
{% spaceless %} {% for lang in LANGUAGES %} {% endfor %} {% endspaceless %} -
+
diff --git a/wolnelektury/templates/catalogue/main_page.html b/wolnelektury/templates/catalogue/main_page.html index aba596f99..720c2d584 100644 --- a/wolnelektury/templates/catalogue/main_page.html +++ b/wolnelektury/templates/catalogue/main_page.html @@ -21,11 +21,11 @@

{% trans "Wolne Lektury Widget" %}

{% trans "Place our widget - search engine for Wolne Lektury which gives access to free books and audiobooks - on your homepage! Just copy the HTML code below onto your page:" %}

+<div id="wl" /> +<!-- END --> +<!-- START {% trans "Place this element just before closing body tag: </body>" %} --> +<script type="text/javascript" src="http://www.wolnelektury.pl/static/js/widget.js"></script> +<!-- END -->

{% trans "See more" %} ⇒

{% trans "Your shelves with books" %}

{% if user.is_authenticated %} -- 2.20.1 From 4dc96918a2e2df441c282a7abbb89235ecb4f2f7 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Mon, 13 Sep 2010 12:30:06 +0200 Subject: [PATCH 14/16] Lesmianator --- apps/lesmianator/__init__.py | 6 ++ apps/lesmianator/views.py | 52 ++++++++++++++++++ wolnelektury/settings.py | 1 + wolnelektury/static/css/master.book.css | 14 +++++ .../static/img/mats_erikssonCCBYNCSA.jpg | Bin 0 -> 44304 bytes .../templates/catalogue/main_page.html | 11 +++- wolnelektury/templates/lesmianator/poem.html | 38 +++++++++++++ wolnelektury/urls.py | 1 + 8 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 apps/lesmianator/__init__.py create mode 100644 apps/lesmianator/views.py create mode 100644 wolnelektury/static/img/mats_erikssonCCBYNCSA.jpg create mode 100644 wolnelektury/templates/lesmianator/poem.html diff --git a/apps/lesmianator/__init__.py b/apps/lesmianator/__init__.py new file mode 100644 index 000000000..0932a1c6e --- /dev/null +++ b/apps/lesmianator/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Leśmianator do działania wymaga pliku dictionary.p w katalogu aplikacji +# plik ten powinien zawierać słownik postaci: +# <3-znakowy ciąg> => => +# +# automat generujący taki słownik zostanie dodany później :) diff --git a/apps/lesmianator/views.py b/apps/lesmianator/views.py new file mode 100644 index 000000000..231ab5c96 --- /dev/null +++ b/apps/lesmianator/views.py @@ -0,0 +1,52 @@ +# Create your views here. + +import pickle +from django.shortcuts import render_to_response +from django.template import RequestContext +from random import randint + +import os.path + + +def _choose_word(word): + try: + choices = sum((_dictionary[word][post] for post in _dictionary[word])) + r = randint(0, choices - 1) + + for post in _dictionary[word]: + r -= _dictionary[word][post] + if r < 0: + return post + except KeyError: + return '' + +# load dictionary on start, it won't change +try: + f = open(os.path.join(os.path.dirname(__file__), 'dictionary.p')) + _dictionary = pickle.load(f) +except: + _dictionary = {} + + +def poem(request): + letters = [] + word = u'' + empty = -10 + left = 1000 + if not _dictionary: + left = 0 + while empty != 3 and left: + letter = _choose_word(word) + letters.append(letter) + word = word[-2:] + letter + if letter == u'\n': + empty += 1 + else: + empty = 0 + left -= 1 + + poem = ''.join(letters).strip() + + return render_to_response('lesmianator/poem.html', + {"object": poem}, + context_instance=RequestContext(request)) diff --git a/wolnelektury/settings.py b/wolnelektury/settings.py index 9396a1dd1..b3f3c7827 100644 --- a/wolnelektury/settings.py +++ b/wolnelektury/settings.py @@ -132,6 +132,7 @@ INSTALLED_APPS = [ 'rosetta', 'infopages', 'suggest', + 'lesmianator', ] CACHE_BACKEND = 'locmem:///?max_entries=3000' diff --git a/wolnelektury/static/css/master.book.css b/wolnelektury/static/css/master.book.css index 998a8c374..e3b5d8db8 100644 --- a/wolnelektury/static/css/master.book.css +++ b/wolnelektury/static/css/master.book.css @@ -64,6 +64,20 @@ img { color: #000; background: #FFF url(/static/img/arrow-up.png) no-repeat center right; } +#menu a.menu-link { + display: block; + float: left; + height: 1.5em; + margin-left: 0.5em; + text-align: center; + color: #FFF; +} +#menu span { + color: #888; + font-style: italic; + font-size: .75em; +} + #toc, #themes { position: fixed; diff --git a/wolnelektury/static/img/mats_erikssonCCBYNCSA.jpg b/wolnelektury/static/img/mats_erikssonCCBYNCSA.jpg new file mode 100644 index 0000000000000000000000000000000000000000..68819f63c33389b9f47a2e5ba747faf7d7fe53db GIT binary patch literal 44304 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π?vxW)Rur@XfA}t(X1}eVYNw6!@$-4dJU$Ul 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

C)ZlmRJE+y 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

↓ {% trans "Browse books by categories" %} ↓

-

epub: lektury w kieszeni

+ + +

Leśmianator — poeta automagiczny

+


+ Z drogi! — Idzie poeta — niebieski wycieruch!
+Zbój obłoczny, co z światem jest — wspak i na noże! +Baczność! — Nic się przed takim uchronić nie może!

+ +

Poezja z Wolnych Lektur przepuszczona przez mikser.

+

{% trans "Twórz-że się!" %} ⇒

{% trans "Wolne Lektury Widget" %}

{% trans "Place our widget - search engine for Wolne Lektury which gives access to free books and audiobooks - on your homepage! Just copy the HTML code below onto your page:" %}

diff --git a/wolnelektury/templates/lesmianator/poem.html b/wolnelektury/templates/lesmianator/poem.html new file mode 100644 index 000000000..0d7d712d7 --- /dev/null +++ b/wolnelektury/templates/lesmianator/poem.html @@ -0,0 +1,38 @@ +{% load i18n %} +{% load chunks compressed catalogue_tags %} + + + + + {% block title %}WolneLektury.pl{% endblock %} + + {% compressed_css "book" %} + + + + +
+

+ Leśmianator + *** +

+ {{ object|linebreaksbr }} +
+ + + + diff --git a/wolnelektury/urls.py b/wolnelektury/urls.py index 05f5638b7..1a09a0ad5 100644 --- a/wolnelektury/urls.py +++ b/wolnelektury/urls.py @@ -16,6 +16,7 @@ urlpatterns = patterns('', url(r'^katalog/', include('catalogue.urls')), url(r'^materialy/', include('lessons.urls')), url(r'^sugestia/', include('suggest.urls')), + url(r'^lesmianator/?$', 'lesmianator.views.poem', name='lesmianator'), # Static pages url(r'^wolontariat/$', 'infopages.views.infopage', {'slug': 'voluntary_services'}, name='voluntary_services'), -- 2.20.1 From 5cab5828042f66577b45661f37a8ac7dc5e50ae6 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Mon, 13 Sep 2010 12:46:17 +0200 Subject: [PATCH 15/16] lesmianator fix --- apps/lesmianator/views.py | 12 ++++++++++-- wolnelektury/static/css/master.book.css | 1 + wolnelektury/templates/catalogue/main_page.html | 7 ++++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/apps/lesmianator/views.py b/apps/lesmianator/views.py index 231ab5c96..2761ae5ab 100644 --- a/apps/lesmianator/views.py +++ b/apps/lesmianator/views.py @@ -33,14 +33,22 @@ def poem(request): word = u'' empty = -10 left = 1000 + lines = 0 if not _dictionary: left = 0 - while empty != 3 and left: + # want at least two lines, but let Lesmianator end his stanzas + while (empty < 2 or lines < 2) and left: letter = _choose_word(word) letters.append(letter) word = word[-2:] + letter if letter == u'\n': - empty += 1 + # count non-empty lines + if empty == 0: + lines += 1 + # + if lines >= 2: + empty += 1 + lines += 1 else: empty = 0 left -= 1 diff --git a/wolnelektury/static/css/master.book.css b/wolnelektury/static/css/master.book.css index e3b5d8db8..aac5d5837 100644 --- a/wolnelektury/static/css/master.book.css +++ b/wolnelektury/static/css/master.book.css @@ -76,6 +76,7 @@ img { color: #888; font-style: italic; font-size: .75em; + margin-right: 0.5em; } diff --git a/wolnelektury/templates/catalogue/main_page.html b/wolnelektury/templates/catalogue/main_page.html index d5035450e..e58718a65 100644 --- a/wolnelektury/templates/catalogue/main_page.html +++ b/wolnelektury/templates/catalogue/main_page.html @@ -21,10 +21,11 @@

Leśmianator — poeta automagiczny


Z drogi! — Idzie poeta — niebieski wycieruch!
-Zbój obłoczny, co z światem jest — wspak i na noże! -Baczność! — Nic się przed takim uchronić nie może!

+Zbój obłoczny, co z światem jest — wspak i na noże!
+Baczność! — Nic się przed takim uchronić nie może!
+(źródło)

-

Poezja z Wolnych Lektur przepuszczona przez mikser.

+

Poezja z Wolnych Lektur przepuszczona przez mikser. Stwórz własny wiersz klikając w link:

{% trans "Twórz-że się!" %} ⇒

{% trans "Wolne Lektury Widget" %}

-- 2.20.1 From 1e982a1f6de39a3d52178c5035cdd21b524e1928 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Mon, 13 Sep 2010 15:15:30 +0200 Subject: [PATCH 16/16] fixes #815: books arrangement --- apps/catalogue/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/catalogue/views.py b/apps/catalogue/views.py index 8630ebf61..010d3bfcd 100644 --- a/apps/catalogue/views.py +++ b/apps/catalogue/views.py @@ -159,7 +159,7 @@ def tagged_object_list(request, tags=''): objects = fragments else: # get relevant books and their tags - objects = models.Book.tagged.with_all(tags).order_by() + objects = models.Book.tagged.with_all(tags) if not shelf_is_set: # eliminate descendants l_tags = models.Tag.objects.filter(category='book', slug__in=[book.book_tag_slug() for book in objects]) -- 2.20.1