model: toolbar.buttongroup
pk: 17
- fields:
- group: [14, 12]
accesskey: a
+ group: [14, 12]
label: akapit
link: ''
params: '{"tag": "akap"}'
model: toolbar.button
pk: 39
- fields:
- group: [14]
accesskey: ''
+ group: [14]
label: akapit cd.
link: ''
params: '{"tag": "akap_cd"}'
model: toolbar.button
pk: 40
- fields:
- group: [14]
accesskey: d
+ group: [14]
label: akapit dialogowy
link: ''
params: '{"tag": "akap_dialog"}'
model: toolbar.button
pk: 41
- fields:
- group: [1]
accesskey: ''
+ group: [1]
label: akt
link: ''
params: '{"tag": "akt"}'
model: toolbar.button
pk: 14
- fields:
- group: [13]
accesskey: ''
+ group: [13]
label: autor
link: ''
params: '{"tag": "autor_utworu"}'
model: toolbar.button
pk: 32
- fields:
- group: [2]
accesskey: ''
+ group: [2]
label: Podstawowa
link: ''
params: '[["fulltextregexp", {"exprs": [["\ufeff", ""], ["$[\\s]*\\d+[\\s]*^",
- ""], ["-\\s*^", ""], ["\\,\\.\\.|\\.\\,\\.|\\.\\.\\,", "..."]]}], ["lineregexp",
- {"exprs": [["^\\s+|\\s+$", ""], ["\\s+", " "], ["(,,)\\s+|\\s+(\")", "$1"],
- ["(\\d)[\u2014-](\\d)", "$1--$2"], ["[\u2014]", "---"], ["<(/?)P([aert])",
- "<$1p$2"], ["([^\\.])(\\s*)</p", "$1.$2</p"], ["([,\\.:;!\\?])([^\\s\\\\])",
- "$1 $2"], ["([^\\s])\\s+([,\\.:;!\\?])", "$1$2"]]}]]'
+ ""], ["-\\s*^", ""], ["\\,\\.\\.|\\.\\,\\.|\\.\\.\\,", "..."], ["<(/?)P([aert])",
+ "<$1p$2"], ["[\u2014\u2013\u2010-]+", "---"], ["(\\d)---(\\d)", "$1--$2"],
+ ["(\\S)---(\\S)", "$1-$2"]]}], ["lineregexp", {"exprs": [["^\\s+|\\s+$",
+ ""], ["\\s+", " "], ["(,,)\\s+", "$1"], ["\\s+(\")", "$1"], ["([^\\.])(\\s*)</p",
+ "$1.$2</p"], ["([\\.:;!\\?])([^\\s\\\\])", "$1 $2"], ["([^\\s])\\s+([\\.:;!\\?])",
+ "$1$2"], ["\\s+,([^,])", ",$1"], ["([^,]),([^\\s\\\\,])", "$1, $2"]]}]]'
scriptlet: macro
slug: basic_correction
- tooltip: "Wykonuj\u0119 operacj\u0119 z novel-pages i poem-pages."
+ tooltip: "Wykonuj\u0119 podstawow\u0105 korekt\u0119 tekstu."
model: toolbar.button
pk: 4
- fields:
- group: [2]
accesskey: ''
+ group: [2]
label: "zamiana cudzys\u0142ow\xF3w 1"
link: ''
params: '{"exprs": [["\u00ab|\u201e", ",,"], ["\u00bb", "\""], ["([^=])\"([\u0104\u0118\u00d3\u0141\u017b\u0179\u0106\u0143\u0105\u017c\u017a\u015b\u0144\u00f3\u0142\u0107\\w])",
model: toolbar.button
pk: 89
- fields:
- group: [2]
accesskey: ''
+ group: [2]
label: "zamiana cudzys\u0142ow\xF3w 2"
link: ''
params: '{"exprs": [["\u00bb|\u201e", ",,"], ["\u00ab", "\""], ["([^=])\"([\u0104\u0118\u00d3\u0141\u017b\u0179\u0106\u0143\u0105\u017c\u017a\u015b\u0144\u00f3\u0142\u0107\\w])",
model: toolbar.button
pk: 77
- fields:
- group: [1]
accesskey: ''
+ group: [1]
label: "cz\u0119\u015B\u0107/ksi\u0119ga"
link: ''
params: '{"tag": "naglowek_czesc"}'
model: toolbar.button
pk: 10
- fields:
- group: [13, 22]
accesskey: ''
+ group: [13, 22]
label: dedykacja
link: ''
params: '{"tag": "dedykacja"}'
model: toolbar.button
pk: 74
- fields:
- group: [12]
accesskey: ''
+ group: [12]
label: didaskalia
link: ''
params: '{"tag": "didaskalia"}'
model: toolbar.button
pk: 62
- fields:
- group: [22]
accesskey: ''
+ group: [22]
label: "didaskalia pocz\u0105tkowe"
link: ''
params: '{"tag": "miejsce_czas"}'
model: toolbar.button
pk: 79
- fields:
- group: [12]
accesskey: ''
+ group: [12]
label: didaskalia tekstowe
link: ''
params: '{"tag": "didask_tekst"}'
model: toolbar.button
pk: 63
- fields:
- group: [21]
accesskey: ''
+ group: [21]
label: "d\u0142ugi cyt. poet."
link: ''
params: '{"tag": "poezja_cyt"}'
model: toolbar.button
pk: 67
- fields:
- group: [21]
accesskey: ''
+ group: [21]
label: "d\u0142ugi cytat"
link: ''
params: '{"tag": "dlugi_cyt"}'
model: toolbar.button
pk: 42
- fields:
- group: [11]
accesskey: ''
+ group: [11]
label: dramat wiersz.
link: ''
params: '{"tag": "dramat_wierszowany_l"}'
model: toolbar.button
pk: 20
- fields:
- group: [11]
accesskey: ''
+ group: [11]
label: "dramat wiersz./w. \u0142am"
link: ''
params: '{"tag": "dramat_wierszowany_lp"}'
model: toolbar.button
pk: 22
- fields:
- group: [11]
accesskey: ''
+ group: [11]
label: "dramat wsp\xF3\u0142czesny"
link: ''
params: '{"tag": "dramat_wspolczesny"}'
model: toolbar.button
pk: 21
- fields:
- group: [13]
accesskey: ''
+ group: [13]
label: "dzie\u0142o nadrz\u0119dne"
link: ''
params: '{"tag": "dzielo_nadrzedne"}'
model: toolbar.button
pk: 38
- fields:
- group: [27]
accesskey: ''
+ group: [27]
label: extra
link: ''
params: '{"tag": "extra"}'
model: toolbar.button
pk: 96
- fields:
- group: []
accesskey: ''
+ group: []
label: Wydrukuj
link: print/html
params: '[]'
model: toolbar.button
pk: 87
- fields:
- group: [12]
accesskey: k
+ group: [12]
label: kwestia
link: ''
params: '{"tag": "kwestia"}'
model: toolbar.button
pk: 82
- fields:
- group: [11]
accesskey: ''
+ group: [11]
label: liryka
link: ''
params: '{"tag": "liryka_l"}'
model: toolbar.button
pk: 23
- fields:
- group: [11]
accesskey: ''
+ group: [11]
label: "liryka/w. \u0142am"
link: ''
params: '{"tag": "liryka_lp"}'
model: toolbar.button
pk: 24
- fields:
- group: [22]
accesskey: ''
+ group: [22]
label: "lista os\xF3b"
link: ''
params: '{"tag": "lista_osob"}'
model: toolbar.button
pk: 93
- fields:
- group: [22]
accesskey: ''
+ group: [22]
label: 'typ osoby '
link: ''
params: '{"tag": "lista_osoba", "attrs": {"typ": ""}}'
model: toolbar.button
pk: 78
- fields:
- group: [15]
accesskey: ''
+ group: [15]
label: matemat.
link: ''
params: '{"tag": "mat"}'
model: toolbar.button
pk: 47
- fields:
- group: [13, 22]
accesskey: ''
+ group: [13, 22]
label: motto
link: ''
params: '{"tag": "motto"}'
model: toolbar.button
pk: 75
- fields:
- group: [13, 22]
accesskey: ''
+ group: [13, 22]
label: motto podpis
link: ''
params: '{"tag": "motto_podpis"}'
model: toolbar.button
pk: 37
- fields:
- group: [12]
accesskey: ''
+ group: [2]
+ label: ",,\u2026\" na \xAB\u2026\xBB"
+ link: ''
+ params: '{"exprs": [[",,", "\u00ab"], ["\"", "\u00bb"]]}'
+ scriptlet: fulltextregexp
+ slug: na-francuskie
+ tooltip: "Zamienia cudzys\u0142owy podw\xF3jne na francuskie"
+ model: toolbar.button
+ pk: 2
+- fields:
+ accesskey: ''
+ group: [2]
+ label: ",,\u2026\" na \xBB\u2026\xAB"
+ link: ''
+ params: '{"exprs": [[",,", "\u00bb"], ["\"", "\u00ab"]]}'
+ scriptlet: fulltextregexp
+ slug: na-niemieckie
+ tooltip: "Zamienia cudzys\u0142owy podw\xF3jne na niemieckie"
+ model: toolbar.button
+ pk: 3
+- fields:
+ accesskey: ''
+ group: [12]
label: "nag\u0142\xF3wek kwestii"
link: ''
params: '{"tag": "naglowek_osoba"}'
model: toolbar.button
pk: 16
- fields:
- group: [22]
accesskey: ''
+ group: [22]
label: "nag\u0142\xF3wek listy"
link: ''
params: '{"tag": "naglowek_listy"}'
model: toolbar.button
pk: 94
- fields:
- group: [13]
accesskey: ''
+ group: [13]
label: nazwa utworu
link: ''
params: '{"tag": "nazwa_utworu"}'
model: toolbar.button
pk: 33
- fields:
- group: [13]
accesskey: ''
+ group: [13]
label: nota
link: ''
params: '{"tag": "nota"}'
model: toolbar.button
pk: 35
- fields:
- group: [11]
accesskey: ''
+ group: [11]
label: opowiadanie
link: ''
params: '{"tag": "opowiadanie"}'
model: toolbar.button
pk: 18
- fields:
- group: [12]
accesskey: b
+ group: [12]
label: osoba
link: ''
params: '{"tag": "osoba"}'
model: toolbar.button
pk: 64
- fields:
- group: [22]
accesskey: ''
+ group: [22]
label: osoba na liscie
link: ''
params: '{"tag": "lista_osoba"}'
model: toolbar.button
pk: 95
- fields:
- group: [1]
accesskey: ''
+ group: [1]
label: "podrozdzia\u0142"
link: ''
params: '{"tag": "naglowek_podrozdzial"}'
model: toolbar.button
pk: 12
- fields:
- group: [1]
accesskey: ''
+ group: [1]
label: "podtytu\u0142"
link: ''
params: '{"tag": "podtytul"}'
model: toolbar.button
pk: 34
- fields:
- group: [11]
accesskey: ''
+ group: [11]
label: "powie\u015B\u0107"
link: ''
params: '{"tag": "powiesc"}'
model: toolbar.button
pk: 19
- fields:
- group: []
accesskey: ''
+ group: []
label: Wydrukuj
link: print/xml
params: '[]'
model: toolbar.button
pk: 86
- fields:
- group: [26]
accesskey: ''
+ group: [26]
label: przypis autorski
link: ''
params: '{"tag": "pa"}'
model: toolbar.button
pk: 68
- fields:
- group: [26]
accesskey: ''
+ group: [26]
label: przypis edytorski
link: ''
params: '{"tag": "pe"}'
model: toolbar.button
pk: 71
- fields:
- group: [26]
accesskey: ''
+ group: [26]
label: przypis redaktorski
link: ''
params: '{"tag": "pr"}'
model: toolbar.button
pk: 70
- fields:
- group: [26]
accesskey: ''
+ group: [26]
label: "przypis t\u0142umacza"
link: ''
params: '{"tag": "pt"}'
model: toolbar.button
pk: 69
- fields:
- group: [1]
accesskey: ''
+ group: [1]
label: "rozdzia\u0142"
link: ''
params: '{"tag": "naglowek_rozdzial"}'
model: toolbar.button
pk: 11
- fields:
- group: [1]
accesskey: ''
+ group: [1]
label: scena
link: ''
params: '{"tag": "naglowek_scena"}'
model: toolbar.button
pk: 15
- fields:
- group: [16]
accesskey: ''
+ group: [16]
label: asterysk
link: ''
params: '{"nocontent": "true", "tag": "sekcja_asterysk"}'
model: toolbar.button
pk: 54
- fields:
- group: [16]
accesskey: ''
+ group: [16]
label: linia
link: ''
params: '{"nocontent": "true", "tag": "separator_linia"}'
model: toolbar.button
pk: 55
- fields:
- group: [16]
accesskey: ''
+ group: [16]
label: "\u015Bwiat\u0142o"
link: ''
params: '{"nocontent": "true", "tag": "sekcja_swiatlo"}'
model: toolbar.button
pk: 53
- fields:
- group: [15]
accesskey: ''
+ group: [15]
label: "s\u0142owo obce"
link: ''
params: '{"tag": "slowo_obce"}'
model: toolbar.button
pk: 46
- fields:
- group: [1]
accesskey: ''
+ group: [1]
label: "\u015Br\xF3dtytu\u0142"
link: ''
params: '{"tag": "srodtytul"}'
model: toolbar.button
pk: 13
- fields:
- group: [2]
- accesskey: ''
- label: "Usu\u0144 spacj\u0119"
- link: ''
- params: '{"exprs": [["^\\s+|\\s+$", ""], ["\\s+", " "], ["(,,)\\s+", "$1"],
- ["\\s+(\")", "$1"]]}'
- scriptlet: lineregexp
- slug: strip_whitespace
- tooltip: "Usuwa zb\u0119dne spacj\u0119 z dokumentu."
- model: toolbar.button
- pk: 3
-- fields:
- group: [12, 17]
accesskey: s
+ group: [12, 17]
label: strofa
link: ''
params: '{"tag": "strofa"}'
model: toolbar.button
pk: 81
- fields:
- group: [11]
accesskey: ''
+ group: [11]
label: "tag g\u0142\xF3wny"
link: ''
params: '{"tag": "utwor"}'
model: toolbar.button
pk: 17
- fields:
- group: [2]
accesskey: u
+ group: [2]
label: "A<sup>\u2193</sup>"
link: ''
params: '[]'
model: toolbar.button
pk: 76
- fields:
- group: [15]
accesskey: ''
+ group: [15]
label: "tytu\u0142 dzie\u0142a"
link: ''
params: '{"tag": "tytul_dziela"}'
model: toolbar.button
pk: 92
- fields:
- group: [15]
accesskey: ''
+ group: [15]
label: "tytu\u0142 dzie\u0142a typ 1"
link: ''
params: '{"tag": "tytul_dziela", "attrs": {"typ": "1"}}'
model: toolbar.button
pk: 45
- fields:
- group: [27]
accesskey: ''
+ group: [27]
label: uwaga
link: ''
params: '{"tag": "uwaga"}'
model: toolbar.button
pk: 51
- fields:
- group: [14, 17]
accesskey: ''
+ group: [14, 17]
label: wers akap.
link: ''
params: '{"tag": "wers_akap"}'
model: toolbar.button
pk: 83
- fields:
- group: [12, 17]
accesskey: ''
+ group: [12, 17]
label: wers cd.
link: ''
params: '{"tag": "wers_cd"}'
model: toolbar.button
pk: 85
- fields:
- group: [12, 17]
accesskey: w
+ group: [12, 17]
label: "wers mocno wci\u0119ty"
link: ''
params: '{"tag": "wers_wciety", "attrs": {"typ": ""}}'
model: toolbar.button
pk: 84
- fields:
- group: [12, 17]
accesskey: q
+ group: [12, 17]
label: "wers wci\u0119ty"
link: ''
params: '{"tag": "wers_wciety", "attrs": {"typ": "1"}}'
model: toolbar.button
pk: 91
- fields:
- group: [15]
accesskey: ''
+ group: [15]
label: www
link: ''
params: '{"tag": "www"}'
model: toolbar.button
pk: 48
- fields:
- group: [15]
accesskey: ''
+ group: [15]
label: "wyr\xF3\u017Cnienie"
link: ''
params: '{"tag": "wyroznienie"}'
model: toolbar.button
pk: 44
- fields:
- group: [11]
accesskey: ''
+ group: [11]
label: wywiad
link: ''
params: '{"tag": "wywiad"}'
model: toolbar.button
pk: 25
- fields:
- group: [21]
accesskey: ''
+ group: [21]
label: "wywiad odpowied\u017A"
link: ''
params: '{"tag": "wywiad_odp"}'
model: toolbar.button
pk: 73
- fields:
- group: [21]
accesskey: ''
+ group: [21]
label: wywiad pytanie
link: ''
params: '{"tag": "wywiad_pyt"}'
model: toolbar.button
pk: 72
- fields:
- group: [2]
accesskey: ''
- label: "Zamie\u0144 dywiz"
- link: ''
- params: '{"exprs": [["(\\s)-(\\s)", "$1---$2"], ["^(\\s*)-(\\s)", "$1---$2"],
- ["(\\s)-(\\s*)$", "$1---$2"], ["(\\d)[\u2014\u2013\u2010-](\\d)", "$1--$2"],
- ["\u2014\u2013\u2010", "---"]]}'
- scriptlet: lineregexp
- slug: zamien_dywiz
- tooltip: "Zamienia '\u2014' na '---', oraz '1\u20142' na '1--2'."
- model: toolbar.button
- pk: 2
-- fields:
group: [16]
- accesskey: ''
label: "zast\u0119pnik wersu"
link: ''
params: '{"tag": "zastepnik_wersu"}'
--- /dev/null
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-08-03 12:14+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: models.py:17
+msgid "button group"
+msgstr "grupa przycisków"
+
+#: models.py:17
+msgid "button groups"
+msgstr "grupy przycisków"
+
+#: models.py:51
+msgid "button"
+msgstr "przycisk"
+
+#: models.py:51
+msgid "buttons"
+msgstr "przyciski"
+
+#: models.py:75
+msgid "javascript"
+msgstr ""
DOCUMENT_STAGES = (
("", u"-----"),
+ ("first_correction", _(u"First correction")),
("tagging", _(u"Tagging")),
("proofreading", _(u"Initial Proofreading")),
("annotation-proofreading", _(u"Annotation Proofreading")),
--- /dev/null
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-08-03 12:13+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: constants.py:6
+msgid "First correction"
+msgstr "Autokorekta"
+
+#: constants.py:7
+msgid "Tagging"
+msgstr "Tagowanie"
+
+#: constants.py:8
+msgid "Initial Proofreading"
+msgstr "Korekta"
+
+#: constants.py:9
+msgid "Annotation Proofreading"
+msgstr "Sprawdzenie przypisów źródła"
+
+#: constants.py:10
+msgid "Modernisation"
+msgstr "Uwspółcześnienie"
+
+#: constants.py:11
+msgid "Themes"
+msgstr "Motywy"
+
+#: constants.py:12
+msgid "Editor's Proofreading"
+msgstr "Ostateczna redakcja literacka"
+
+#: constants.py:13
+msgid "Technical Editor's Proofreading"
+msgstr "Ostateczna redakcja techniczna"
+
+#: constants.py:17
+msgid "Ready to publish"
+msgstr "Gotowe do publikacji"
+
+#: forms.py:62
+msgid "Author"
+msgstr "Autor"
+
+#: forms.py:63
+msgid "Your name/"
+msgstr "Imię i nazwisko/"
+
+#: forms.py:68
+msgid "Author's email"
+msgstr "E-mail autora"
+
+#: forms.py:69
+msgid "Your email address, so we can show a gravatar :)"
+msgstr "Adres e-mail, żebyśmy mogli pokazać gravatar :)"
+
+#: forms.py:75
+msgid "Your comments"
+msgstr "Twój komentarz"
+
+#: forms.py:76
+msgid "Describe changes you made."
+msgstr "Opisz swoje zmiany"
+
+#: forms.py:82
+msgid "Completed"
+msgstr "Ukończono"
+
+#: forms.py:83
+msgid "If you completed a life cycle stage, select it."
+msgstr "Jeśli został ukończony etap prac, wskaż go."
+
+#: models.py:93
+#, python-format
+msgid "Finished stage: %s"
+msgstr "Ukończony etap: %s"
+
+#: models.py:149
+msgid "name"
+msgstr "nazwa"
+
+#: models.py:153
+msgid "theme"
+msgstr "motyw"
+
+#: models.py:154
+msgid "themes"
+msgstr "motywy"
+
+#: views.py:279
+msgid "Tag added"
+msgstr "Dodano tag"
+
+#: templates/wiki/base.html:15
+msgid "Platforma Redakcyjna"
+msgstr ""
+
+#: templates/wiki/diff_table.html:5
+msgid "Old version"
+msgstr "Stara wersja"
+
+#: templates/wiki/diff_table.html:6
+msgid "New version"
+msgstr "Nowa wersja"
+
+#: templates/wiki/document_create_missing.html:8
+msgid "Create document"
+msgstr "Utwórz dokument"
+
+#: templates/wiki/document_details.html:31
+msgid "Click to open/close gallery"
+msgstr "Kliknij, aby (ro)zwinąć galerię"
+
+#: templates/wiki/document_details_base.html:36
+msgid "Help"
+msgstr "Pomoc"
+
+#: templates/wiki/document_details_base.html:38
+msgid "Version"
+msgstr "Wersja"
+
+#: templates/wiki/document_details_base.html:38
+msgid "Unknown"
+msgstr "nieznana"
+
+#: templates/wiki/document_details_base.html:40
+#: templates/wiki/tag_dialog.html:15
+msgid "Save"
+msgstr "Zapisz"
+
+#: templates/wiki/document_details_base.html:41
+msgid "Save attempt in progress"
+msgstr ""
+
+#: templates/wiki/document_list.html:30
+msgid "Clear filter"
+msgstr "Wyczyść filtr"
+
+#: templates/wiki/document_list.html:48
+msgid "Your last edited documents"
+msgstr "Twoje ostatnie edycje"
+
+#: templates/wiki/tag_dialog.html:16
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: templates/wiki/tabs/gallery_view.html:7
+msgid "Previous"
+msgstr "Poprzednie"
+
+#: templates/wiki/tabs/gallery_view.html:13
+msgid "Next"
+msgstr "Następne"
+
+#: templates/wiki/tabs/gallery_view.html:15
+msgid "Zoom in"
+msgstr "Powiększ"
+
+#: templates/wiki/tabs/gallery_view.html:16
+msgid "Zoom out"
+msgstr "Zmniejsz"
+
+#: templates/wiki/tabs/gallery_view_item.html:3
+msgid "Gallery"
+msgstr "Galeria"
+
+#: templates/wiki/tabs/history_view.html:5
+msgid "Compare versions"
+msgstr "Porównaj wersje"
+
+#: templates/wiki/tabs/history_view.html:7
+msgid "Mark version"
+msgstr "Oznacz wersję"
+
+#: templates/wiki/tabs/history_view.html:9
+msgid "Revert document"
+msgstr "Przywróć wersję"
+
+#: templates/wiki/tabs/history_view.html:12
+msgid "View version"
+msgstr "Zobacz wersję"
+
+#: templates/wiki/tabs/history_view_item.html:3
+msgid "History"
+msgstr "Historia"
+
+#: templates/wiki/tabs/search_view.html:3
+#: templates/wiki/tabs/search_view.html:5
+msgid "Search"
+msgstr "Szukaj"
+
+#: templates/wiki/tabs/search_view.html:8
+msgid "Replace with"
+msgstr "Zamień na"
+
+#: templates/wiki/tabs/search_view.html:10
+msgid "Replace"
+msgstr "Zamień"
+
+#: templates/wiki/tabs/search_view.html:13
+msgid "Options"
+msgstr "Opcje"
+
+#: templates/wiki/tabs/search_view.html:15
+msgid "Case sensitive"
+msgstr "Rozróżniaj wielkość liter"
+
+#: templates/wiki/tabs/search_view.html:17
+msgid "From cursor"
+msgstr "Zacznij od kursora"
+
+#: templates/wiki/tabs/search_view_item.html:3
+msgid "Search and replace"
+msgstr "Znajdź i zamień"
+
+#: templates/wiki/tabs/source_editor_item.html:5
+msgid "Source code"
+msgstr "Kod źródłowy"
+
+#: templates/wiki/tabs/summary_view.html:10
+msgid "Title"
+msgstr "Tytuł"
+
+#: templates/wiki/tabs/summary_view.html:15
+msgid "Document ID"
+msgstr "ID dokumentu"
+
+#: templates/wiki/tabs/summary_view.html:19
+msgid "Current version"
+msgstr "Aktualna wersja"
+
+#: templates/wiki/tabs/summary_view.html:22
+msgid "Last edited by"
+msgstr "Ostatnio edytowane przez"
+
+#: templates/wiki/tabs/summary_view.html:26
+msgid "Link to gallery"
+msgstr "Link do galerii"
+
+#: templates/wiki/tabs/summary_view.html:31
+msgid "Publish"
+msgstr "Opublikuj"
+
+#: templates/wiki/tabs/summary_view_item.html:4
+msgid "Summary"
+msgstr "Podsumowanie"
+
+#: templates/wiki/tabs/wysiwyg_editor.html:9
+msgid "Insert theme"
+msgstr "Wstaw motyw"
+
+#: templates/wiki/tabs/wysiwyg_editor.html:12
+msgid "Insert annotation"
+msgstr "Wstaw przypis"
+
+#: templates/wiki/tabs/wysiwyg_editor_item.html:3
+msgid "Visual editor"
+msgstr "Edytor wizualny"
{% include "wiki/tabs/source_editor.html" %}
{% endblock %}
+{% block tabs-right %}
+ {% include "wiki/tabs/gallery_view_item.html" %}
+ {% include "wiki/tabs/search_view_item.html" %}
+{% endblock %}
+
{% block splitter-extra %}
- {% include "wiki/tabs/gallery_view.html" %}
+<div class="vsplitbar" title="{% trans "Click to open/close gallery" %}">
+ </div>
+ <div id="sidebar">
+ {% include "wiki/tabs/gallery_view.html" %}
+ {% include "wiki/tabs/search_view.html" %}
+ </div>
{% endblock %}
{% block dialogs %}
| {% trans "Version" %}: <span id="document-revision">{% trans "Unknown" %}</span>
{% if not readonly %}
| <button style="margin-left: 6px" id="save-button">{% trans "Save" %}</button>
+ <span id='save-attempt-info'>{% trans "Save attempt in progress" %}</span>
{% endif %}
</div>
- <ol id="tabs">
+ <ol id="tabs" class="tabs">
{% block tabs-menu %} {% endblock %}
</ol>
+ <ol id="tabs-right" class="tabs">
+ {% block tabs-right %} {% endblock %}
+ </ol>
</div>
<div id="splitter">
<div id="editor" class="{% block editor-class %} {% endblock %}">
{% load i18n %}
-<div class="vsplitbar" title="{% trans "Click to open/close gallery" %}">
-</div>
<div id="side-gallery">
<!-- gallery toolbar -->
<div class="toolbar">
--- /dev/null
+{% load i18n %}
+<li id="ScanGalleryPerspective" data-ui-related="side-gallery" data-ui-jsclass="ScanGalleryPerspective" class='active'>
+ <span>{% trans "Gallery" %}</span>
+</li>
--- /dev/null
+{% load i18n %}
+<div id='side-search'>
+ <p>{% trans "Search" %}:<br/>
+ <input id='search-input' /><br/>
+ <button id='search-button'>{% trans "Search" %}</button>
+ </p>
+
+ <p>{% trans "Replace with" %}:<br/>
+ <input id='replace-input' /><br/>
+ <button id='replace-button'>{% trans "Replace" %}</button><br/>
+ </p>
+
+ <p>{% trans "Options" %}<br/>
+ <input type="checkbox" id="search-case-sensitive" />
+ <label for="search-case-sensitive">{% trans "Case sensitive" %}</label><br/>
+ <input type="checkbox" id="search-from-cursor" />
+ <label for="search-from-cursor">{% trans "From cursor" %}</label><br/>
+ </p>
+</div>
\ No newline at end of file
--- /dev/null
+{% load i18n %}
+<li id="SearchPerspective" data-ui-related="side-search" data-ui-jsclass="SearchPerspective">
+ <span>{% trans "Search and replace" %}</span>
+</li>
{% load i18n %}
{% load wiki %}
<li id="SummaryPerspective" data-ui-related="summary-view-editor" data-ui-jsclass="SummaryPerspective">
- <span>{{ document.name|wiki_title }}</span>
+ <span>{% trans "Summary" %}</span>
</li>
"text_save": DocumentTextSaveForm(prefix="textsave"),
"add_tag": DocumentTagForm(prefix="addtag"),
},
+ 'REDMINE_URL': settings.REDMINE_URL,
})
'document_name': document.name,
'document_info': dict(document.info(), readonly=True),
'document_meta': document.meta,
+ 'REDMINE_URL': settings.REDMINE_URL,
})
comment = form.cleaned_data['comment']
if form.cleaned_data['stage_completed']:
comment += '\n#stage-finished: %s\n' % form.cleaned_data['stage_completed']
- author = "%s <%s>" % (form.cleaned_data['author_name'], form.cleaned_data['author_email'])
+ if request.user.is_authenticated():
+ author_name = request.user
+ author_email = request.user.email
+ else:
+ author_name = form.cleaned_data['author_name']
+ author_email = form.cleaned_data['author_email']
+ author = "%s <%s>" % (author_name, author_email)
storage.put(document, author=author, comment=comment, parent=revision)
document = storage.get(name)
return JSONResponse({
self.repo = mercurial.hg.repository(self.ui, self.repo_path)
def _file_path(self, title, type='.xml'):
- return os.path.join(self.path, urlquote(title, safe='')) + type
+ """ Return plain version if exists in repo, add extension otherwise. """
+ path = os.path.join(self.path, urlquote(title, safe=''))
+ if type and self._title_to_file(title, '') not in self.repo['tip']:
+ path += type
+ return path
def _title_to_file(self, title, type=".xml"):
- return os.path.join(self.repo_prefix, urlquote(title, safe='')) + type
+ """ Return plain version if exists in repo, add extension otherwise. """
+ path = os.path.join(self.repo_prefix, urlquote(title, safe=''))
+ if type and path not in self.repo['tip']:
+ path += type
+ return path
def _file_to_title(self, filename):
assert filename.startswith(self.repo_prefix)
'js/wiki/view_editor_source.js',
'js/wiki/view_editor_wysiwyg.js',
'js/wiki/view_gallery.js',
+ 'js/wiki/view_search.js',
'js/wiki/view_column_diff.js',
),
'output_filename': 'compressed/detail_scripts_?.js',
a:hover {
text-decoration: underline;
-}
\ No newline at end of file
+}
+
+
+#loading-overlay {
+ display: none;
+}
-/* =========== */
-/* = Gallery = */
-/* =========== */
-
-#side-gallery {
+#sidebar {
+ display:none;
position: absolute;
- /* overflow: hidden; */
top: 0px;
right: 0px;
bottom: 0px;
width: 480px;
- display: none;
background-color: #FFF;
}
+#side-search {
+ height: 100%;
+ display: none;
+ background-color: #C1C1C1;
+}
+
+#side-search p {
+ padding: .5em;
+}
+
+/* =========== */
+/* = Gallery = */
+/* =========== */
+
#side-gallery .error_message
{
background-color: white;
font-weight: bold;
}
+#header.saving {
+ background-color: #E1C1C1;
+}
+#header.saving #save-button {
+ display: none;
+}
+#save-attempt-info {
+ color: #801000;
+ display: none;
+}
+.saving #save-attempt-info {
+ display: inline;
+}
+
#header h1, #header h1 a {
margin: 0;
padding: 0;
color: #222;
}
-#tabs {
+.tabs {
overflow: hidden;
margin: 0;
padding: 0;
height: 31px;
border: 0px;
padding-left: 1em;
+ float: left;
+}
+
+#tabs-right {
+ float: right;
+ padding-right: 1em;
}
-#tabs li {
+.tabs li {
height: 18px;
margin-top: 6px;
margin-bottom: 0px;
-webkit-border-bottom-right-radius: 0px;
}
-#tabs li.active {
+.tabs li.active {
background-color: #C1C1C1;
}
{
this.scriptlets = {};
- this.scriptlets['insert_tag'] = function(context, params, done)
+ this.scriptlets['insert_tag'] = function(context, params, text, move_forward, done)
{
- var text = this.XMLEditorSelectedText(context);
var start_tag = '<'+params.tag;
var move_cursor = false;
}
}
- this.XMLEditorReplaceSelectedText(context, output);
-
- try {
- if (move_cursor) {
- this.XMLEditorMoveCursorForward(context, params.tag.length+2);
- }
- } catch(e) {}
+ if (move_cursor) {
+ move_forward += params.tag.length+2;
+ }
- done();
+ done(output, move_forward);
}.bind(this);
- this.scriptlets['lineregexp'] = function(context, params, done) {
+ this.scriptlets['lineregexp'] = function(context, params, text, move_forward, done) {
var self = this;
var exprs = $.map(params.exprs, function(expr) {
});
var partial = true;
- var text = this.XMLEditorSelectedText(context);
- if(!text) return done();
+ if(!text) done(text, move_forward);
var changed = 0;
var lines = text.split('\n');
if(old_line != line) changed += 1;
return line;
}, function(newlines) {
- if(changed > 0) {
- self.XMLEditorReplaceSelectedText(context, newlines.join('\n') );
- };
+ if(changed > 0) {
+ text = newlines.join('\n');
+ };
- done();
+ done(text, move_forward);
});
}.bind(this);
- this.scriptlets['fulltextregexp'] = function(context, params, done) {
+ this.scriptlets['fulltextregexp'] = function(context, params, text, move_forward, done) {
var self = this;
var exprs = $.map(params.exprs, function(expr) {
};
});
- var text = this.XMLEditorSelectedText(context);
- if(!text) return done();
+ if(!text) done(text, move_forward);
var original = text;$
nblck_each(exprs, function(expr, index) {
$progress.html(600 + index);
text = text.replace(expr.rx, expr.repl);
}, function() {
- if( original != text) {
- self.XMLEditorReplaceSelectedText(context, text);
- }
-
- done();
+ done(text, move_forward);
});
}.bind(this);
- this.scriptlets['macro'] = function(context, params, done) {
+ this.scriptlets['macro'] = function(context, params, text, move_forward, done) {
var self = this;
var i = 0;
- function next() {
+ function next(text, move_forward) {
if (i < params.length) {
var e = params[i];
i = i + 1;
- self.scriptlets[e[0]](context, e[1], next);
+ self.scriptlets[e[0]](context, e[1], text, move_forward, next);
}
else {
- done();
+ done(text, move_forward);
}
};
- next();
+ next(text, move_forward);
}.bind(this);
- this.scriptlets['lowercase'] = function(context, params, done)
+ this.scriptlets['lowercase'] = function(context, params, text, move_forward, done)
{
- var text = this.XMLEditorSelectedText(context);
-
- if(!text) return;
+ if(!text) done(text, move_forward);
- var repl = '';
var lcase = text.toLowerCase();
var ucase = text.toUpperCase();
return '';
}
});
- repl = words.join(' ');
+ text = words.join(' ');
}
- if(repl != text) this.XMLEditorReplaceSelectedText(context, repl);
-
- done();
+ done(text, move_forward);
}.bind(this);
- this.scriptlets["insert_stanza"] = function(context, params, done) {
- var text = this.XMLEditorSelectedText(context);
-
+ this.scriptlets["insert_stanza"] = function(context, params, text, move_forward, done) {
if(text) {
var verses = text.split('\n');
text = ''; var buf = ''; var ebuf = '';
}
}
text = text + buf + '\n</strofa>' + ebuf;
- this.XMLEditorReplaceSelectedText(context, text);
}
-
- if (!text) {
- this.XMLEditorMoveCursorForward(context, params.tag.length + 2);
+ else {
+ move_forward += params.tag.length + 2;
}
- done();
+ done(text, move_forward);
}.bind(this);
}
$.blockUI({message: $progress, showOverlay: false});
- self.scriptlets[opts.action](opts.context, opts.extra, function(){
+ var input = self.XMLEditorSelectedText(opts.context);
+ self.scriptlets[opts.action](opts.context, opts.extra, input, 0, function(output, move_forward){
/*if(timer)
clearTimeout(timer);
else */
+ if (input != output) {
+ self.XMLEditorReplaceSelectedText(opts.context, output)
+ }
+ if (move_forward) {
+ try {
+ self.XMLEditorMoveCursorForward(opts.context, move_forward)
+ }
+ catch(e) {}
+ }
$.unblockUI(); // done
});
}
replaceChars: function(text, start, end) {
this.editor.replaceChars(text, start, end);
},
- getSearchCursor: function(string, fromCursor) {
- return this.editor.getSearchCursor(string, fromCursor);
+ getSearchCursor: function(string, fromCursor, regexp, case_sensitive) {
+ return this.editor.getSearchCursor(string, fromCursor, regexp, case_sensitive);
},
undo: function() {this.editor.history.undo();},
// indicating whether anything was found, and can be called again to
// skip to the next find. Use the select and replace methods to
// actually do something with the found locations.
- function SearchCursor(editor, string, fromCursor) {
+ function SearchCursor(editor, string, fromCursor, regexp, case_sensitive) {
+
+ function casedIndexOf(hay, needle, case_sensitive) {
+ if (case_sensitive)
+ return hay.indexOf(needle);
+ else
+ return hay.toLowerCase().indexOf(needle.toLowerCase())
+ }
+
+ function casedLastIndexOf(hay, needle, case_sensitive) {
+ if (case_sensitive)
+ return hay.lastIndexOf(needle);
+ else
+ return hay.toLowerCase().lastIndexOf(needle.toLowerCase());
+ }
+
+ function casedEqual(a, b, case_sensitive) {
+ if (case_sensitive)
+ return a == b;
+ else
+ return a.toLowerCase() == b.toLowerCase();
+ }
+
this.editor = editor;
this.history = editor.history;
this.history.commit();
// For one-line strings, searching can be done simply by calling
// indexOf on the current line.
function() {
- var match = cleanText(self.history.textAfter(self.line).slice(self.offset)).indexOf(string);
+ var match = casedIndexOf(cleanText(self.history.textAfter(self.line).slice(self.offset)),
+ string, case_sensitive);
if (match > -1)
return {from: {node: self.line, offset: self.offset + match},
to: {node: self.line, offset: self.offset + match + string.length}};
// end of the line and the last match starts at the start.
function() {
var firstLine = cleanText(self.history.textAfter(self.line).slice(self.offset));
- var match = firstLine.lastIndexOf(target[0]);
+ var match = casedLastIndexOf(firstLine, target[0], case_sensitive);
if (match == -1 || match != firstLine.length - target[0].length)
return false;
var startOffset = self.offset + match;
var line = self.history.nodeAfter(self.line);
for (var i = 1; i < target.length - 1; i++) {
- if (cleanText(self.history.textAfter(line)) != target[i])
+ if (!casedEqual(cleanText(self.history.textAfter(line)), target[i], case_sensitive))
return false;
line = self.history.nodeAfter(line);
}
- if (cleanText(self.history.textAfter(line)).indexOf(target[target.length - 1]) != 0)
+ if (casedIndexOf(cleanText(self.history.textAfter(line)), target[target.length - 1], case_sensitive) != 0)
return false;
return {from: {node: self.line, offset: startOffset},
offset: lastLine.length};
},
- getSearchCursor: function(string, fromCursor) {
- return new SearchCursor(this, string, fromCursor);
+ getSearchCursor: function(string, fromCursor, regexp, case_sensitive) {
+ return new SearchCursor(this, string, fromCursor, regexp, case_sensitive);
},
// Re-indent the whole buffer
if($tab.length != 1)
$tab = $(DEFAULT_PERSPECTIVE);
- var $old = $('#tabs li').filter('.active');
+ var $old = $tab.closest('.tabs').find('.active');
$old.each(function(){
$(this).removeClass('active');
var self = this;
self.$elem.block({
- message: "Zapisywanie...",
+ message: "Zapisywanie... <br/><button id='save-hide'>ukryj</button>",
fadeIn: 0,
});
+ $.wiki.blocking = self.$elem;
try {
function initialize()
{
- gallery = new $.wiki.ScanGalleryPerspective({
- doc: CurrentDocument, id: "ScanGalleryPerspective"
- });
-
$(document).keydown(function(event) {
console.log("Received key:", event);
});
/*
* TABS
*/
- $('#tabs li').live('click', function(event, callback) {
+ $('.tabs li').live('click', function(event, callback) {
$.wiki.switchToTab(this);
});
$('.vsplitbar').toggle(
function() {
$.wiki.state.perspectives.ScanGalleryPerspective.show = true;
- $('#side-gallery').show();
- $('.vsplitbar').css('right', 480).addClass('.active');
+ $('#sidebar').show();
+ $('.vsplitbar').css('right', 480).addClass('active');
$('#editor .editor').css('right', 510);
$(window).resize();
- gallery.onEnter();
+ $.wiki.perspectiveForTab('#tabs-right .active').onEnter();
},
function() {
$.wiki.state.perspectives.ScanGalleryPerspective.show = false;
- $('#side-gallery').hide();
+ $('#sidebar').hide();
$('.vsplitbar').css('right', 0).removeClass('active');
$('#editor .editor').css('right', 30);
$(window).resize();
- gallery.onExit();
+ $.wiki.perspectiveForTab('#tabs-right .active').onExit();
}
);
/*
* Initialize all perspectives
*/
- initAll( $.makeArray($('ol#tabs li')), initialize);
+ initAll( $.makeArray($('.tabs li')), initialize);
console.log(location.hash);
});
console.log('Exiting', this.doc);
this.doc.setText(this.codemirror.getCode());
+ if ($('.vsplitbar').hasClass('active') && $('#SearchPerspective').hasClass('active')) {
+ $.wiki.switchToTab('#ScanGalleryPerspective');
+ }
+
if(success) success();
}
$.wiki.Perspective.prototype.onEnter.call(this);
+ $('.vsplitbar').not('.active').trigger('click');
+
this.doc.refreshGallery({
success: function(doc, data){
self.$image.show();
--- /dev/null
+(function($){
+
+ /*
+ * Perspective
+ */
+ function SearchPerspective(options){
+ var old_callback = options.callback || function() { };
+
+ this.noupdate_hash_onenter = true;
+
+ options.callback = function(){
+ var self = this;
+
+ this.editor = null;
+ this.$element = $("#side-search");
+ this.$searchInput = $('#search-input', this.$element);
+ this.$replaceInput = $('#replace-input', this.$element);
+ this.$searchButton = $('#search-button', this.$element);
+ this.$replaceButton = $('#replace-button', this.$element);
+
+ this.$replaceButton.attr("disabled","disabled");
+ this.options = Array();
+
+ // handlers
+ this.$searchInput.change(function(event){
+ self.searchCursor = null;
+ });
+ this.$replaceInput.change(function(event){
+ self.searchCursor = null;
+ });
+
+ $("#side-search input:checkbox").each(function() {
+ self.options[this.id] = this.checked;
+ }).change(function(){
+ self.options[this.id] = this.checked;
+ self.searchCursor = null;
+ });
+
+ this.$searchButton.click(function(){
+ if (!self.search())
+ alert('Brak wyników.');
+ });
+
+ this.$replaceButton.click(function(){
+ self.replace();
+ });
+
+ old_callback.call(this);
+ };
+
+ $.wiki.Perspective.call(this, options);
+ };
+
+ SearchPerspective.prototype = new $.wiki.Perspective();
+
+ SearchPerspective.prototype.search = function(){
+ var self = this;
+ var query = self.$searchInput.val();
+
+ if (!self.editor)
+ self.editor = $.wiki.perspectiveForTab('#CodeMirrorPerspective').codemirror
+
+ if (!self.searchCursor) {
+ self.searchCursor = self.editor.getSearchCursor(
+ self.$searchInput.val(),
+ self.options['search-from-cursor'],
+ self.options['search-regexp'],
+ self.options['search-case-sensitive']
+ );
+ }
+ if (self.searchCursor.findNext()) {
+ self.searchCursor.select();
+ self.$replaceButton.removeAttr("disabled");
+ return true;
+ }
+ else {
+ self.searchCursor = null;
+ this.$replaceButton.attr("disabled","disabled");
+ return false;
+ }
+ };
+
+ SearchPerspective.prototype.replace = function(){
+ var self = this;
+ var query = self.$replaceInput.val();
+
+ if (!self.searchCursor) {
+ self.search();
+ }
+ else {}
+ self.searchCursor.select();
+ self.searchCursor.replace(query);
+ self.search();
+ };
+
+ SearchPerspective.prototype.onEnter = function(success, failure){
+ var self = this;
+
+ $.wiki.Perspective.prototype.onEnter.call(this);
+ self.$searchCursor = null;
+
+ $('.vsplitbar').not('.active').trigger('click');
+ if ($.wiki.activePerspective() != 'CodeMirrorPerspective')
+ $.wiki.switchToTab('#CodeMirrorPerspective');
+ };
+
+ SearchPerspective.prototype.onExit = function(success, failure) {
+
+ };
+
+ $.wiki.SearchPerspective = SearchPerspective;
+
+})(jQuery);
\ No newline at end of file
success: function(data) {
var changed = false;
+ $('#header').removeClass('saving');
+
if (data.text) {
self.text = data.text;
self.revision = data.revision;
params['success'](self, changed, ((changed && "Udało się zapisać :)") || "Twoja wersja i serwera jest identyczna"));
},
error: function(xhr) {
- try {
- params['failure'](self, $.parseJSON(xhr.responseText));
- }
- catch (e) {
- params['failure'](self, {
- "__message": "<p>Nie udało się zapisać - błąd serwera.</p>"
- });
- };
+ if ($('#header').hasClass('saving')) {
+ $('#header').removeClass('saving');
+ $.blockUI({
+ message: "<p>Nie udało się zapisać zmian. <br/><button onclick='$.unblockUI()'>OK</button></p>"
+ })
+ }
+ else {
+ try {
+ params['failure'](self, $.parseJSON(xhr.responseText));
+ }
+ catch (e) {
+ params['failure'](self, {
+ "__message": "<p>Nie udało się zapisać - błąd serwera.</p>"
+ });
+ };
+ }
}
});
+
+ $('#save-hide').click(function(){
+ $('#header').addClass('saving');
+ $.unblockUI();
+ $.wiki.blocking.unblock();
+ });
}; /* end of save() */
WikiDocument.prototype.publish = function(params) {
</head>
<body id="{% block bodyid %}base{% endblock %}">
- <div id="loading-overlay" style="display: none;">
+ <div id="loading-overlay">
<div id="loading-message">
<img src="{{STATIC_URL}}img/spinner.gif" />
<p>{% trans "Loading" %}</p>