# HG changeset patch # User gibus # Date 1372154161 -7200 # Node ID b2e0186daa5ba56591c50465c2b895e426652d4b # Parent 8ec189cc214d47f9b44131ddabbfd77f38260fc9 Adds a category to comments, painted with colored vertical bar. diff -r 8ec189cc214d -r b2e0186daa5b src/cm/client.py --- a/src/cm/client.py Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/client.py Tue Jun 25 11:56:01 2013 +0200 @@ -75,6 +75,7 @@ 'content':comment.content, 'content_html':comment.content_html, 'tags': ', '.join(parse_tag_input(comment.tags)), + 'category': comment.category, 'format': comment.format, 'start_wrapper' : comment.start_wrapper, 'end_wrapper' : comment.end_wrapper, @@ -113,6 +114,8 @@ tags = request.POST['tags'] + category = request.POST.get('category', 0); + reply_to_id = request.POST.get('reply_to_id', None) format = request.POST['format'] @@ -131,7 +134,7 @@ if end_offset : end_offset = int(end_offset.strip()) - return name, email, title, content, tags, reply_to_id, format, start_wrapper, end_wrapper, start_offset, end_offset + return name, email, title, content, tags, category, reply_to_id, format, start_wrapper, end_wrapper, start_offset, end_offset def validate_comment_args(name, email, title, content, tags): errors = {} @@ -176,7 +179,7 @@ if not change_state : # moderation action change_scope = request.POST.get('change_scope', None) - name, email, title, content, tags, reply_to_id, format, start_wrapper, end_wrapper, start_offset, end_offset = read_comment_args(request) + name, email, title, content, tags, category, reply_to_id, format, start_wrapper, end_wrapper, start_offset, end_offset = read_comment_args(request) errors = validate_comment_args(name, email, title, content, tags) @@ -202,6 +205,7 @@ comment.content = content comment.content_html = content_html comment.tags = tags + comment.category = category if change_scope : comment.start_wrapper = start_wrapper @@ -237,7 +241,7 @@ # if self.request.user.is_anonymous() : # accessing via an admin url ? # and comment.user == self.request.user user = None if request.user.is_anonymous() else request.user - name, email, title, content, tags, reply_to_id, format, start_wrapper, end_wrapper, start_offset, end_offset = read_comment_args(request) + name, email, title, content, tags, category, reply_to_id, format, start_wrapper, end_wrapper, start_offset, end_offset = read_comment_args(request) errors = {} errors = validate_comment_args(name, email, title, content, tags) @@ -261,7 +265,7 @@ text_version = TextVersion.objects.get(key=version_key) comment_state = 'approved' if text_version.mod_posteriori else 'pending' - comment = Comment.objects.create(state=comment_state, text_version=text_version, user=user, name=name, email=email, title=title, content=content, content_html=content_html, tags = tags, start_wrapper = start_wrapper, end_wrapper = end_wrapper, start_offset = start_offset, end_offset = end_offset, reply_to=reply_to) + comment = Comment.objects.create(state=comment_state, text_version=text_version, user=user, name=name, email=email, title=title, content=content, content_html=content_html, tags = tags, category = category, start_wrapper = start_wrapper, end_wrapper = end_wrapper, start_offset = start_offset, end_offset = end_offset, reply_to=reply_to) ask_for_notification = True if user : @@ -347,12 +351,17 @@ comment_ids = [c.id for c in allowed_comments] tags = list(Tag.objects.filter(items__content_type = ContentType.objects.get_for_model(Comment),items__object_id__in=comment_ids).values("name").annotate(nb_comments=Count('id')).distinct().order_by('name')) + # categories + categories = [] + for category in [0, 1, 2, 3, 4, 5] : + categories.append({'cat' : category, 'nb_comments':allowed_comments.filter(category = category).count()}) + # states states = [] for state in comment_states : states.append({'state' : state, 'nb_comments':allowed_comments.filter(state = state).count()}) - return {'names':names, 'dates':dates, 'tags':tags, 'states':states} + return {'names':names, 'dates':dates, 'tags':tags, 'categories':categories, 'states':states} #def get_ordered_ids(text_version_id): # comments_and_replies = Comment.objects.filter(text_version__id=text_version_id) diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/bg/LC_MESSAGES/django.mo Binary file src/cm/locale/bg/LC_MESSAGES/django.mo has changed diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/bg/LC_MESSAGES/django.po --- a/src/cm/locale/bg/LC_MESSAGES/django.po Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/locale/bg/LC_MESSAGES/django.po Tue Jun 25 11:56:01 2013 +0200 @@ -2161,3 +2161,43 @@ #~ msgid "How do you want to print?" #~ msgstr "Как искате да бъде напечатано?" + +#: models.py:266 views/site.py:191 +#, fuzzy +msgid "Label for the first category of comments" +msgstr "Етикет за първата категория на коментари" + +#: models.py:267 views/site.py:197 +#, fuzzy +msgid "Label for the second category of comments" +msgstr "Етикет за втората категория на коментари" + +#: models.py:268 views/site.py:203 +#, fuzzy +msgid "Label for the third category of comments" +msgstr "Етикет за трета категория коментари" + +#: models.py:269 views/site.py:209 +#, fuzzy +msgid "Label for the fourth category of comments" +msgstr "Етикет за четвърта категория на коментари" + +#: models.py:270 views/site.py:215 +#, fuzzy +msgid "Label for the fifth category of comments" +msgstr "Етикет за пета категория на коментари" + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 views/site.py:192 views/site.py:198 views/site.py:204 views/site.py:210 views/site.py:216 +#, fuzzy +msgid "Paragraphs including at least one comment of this category will have a vertical bar with this color: " +msgstr "Параграфи включително най-малко един коментар на тази категория ще има вертикална лента с този цвят: " + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 +#, fuzzy +msgid "Leave blank to use the value configured for the workspace." +msgstr "Оставете празно, за да използвате стойността конфигуриран за работната площ." + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 +#, fuzzy +msgid "To disable this category for this text whatever the configuration for the workspace, enter: " +msgstr "За да деактивирате тази категория за този текст, независимо от конфигурацията на работната област, въведете: " diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/bg/LC_MESSAGES/djangojs.mo Binary file src/cm/locale/bg/LC_MESSAGES/djangojs.mo has changed diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/bg/LC_MESSAGES/djangojs.po --- a/src/cm/locale/bg/LC_MESSAGES/djangojs.po Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/locale/bg/LC_MESSAGES/djangojs.po Tue Jun 25 11:56:01 2013 +0200 @@ -634,3 +634,18 @@ #~ msgid_plural " replies" #~ msgstr[0] "отговор" #~ msgstr[1] "отговор" + +#: media/js/client/c_icomment.js:330 +#, fuzzy +msgid "category" +msgstr "категория" + +#: media/js/client/c_interface_form.js:52 +#, fuzzy +msgid "Category:" +msgstr "Категория:" + +#: media/js/site/f_text_view_frame.js:123 +#, fuzzy +msgid "Categories" +msgstr "Категории" diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/en/LC_MESSAGES/django.po --- a/src/cm/locale/en/LC_MESSAGES/django.po Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/locale/en/LC_MESSAGES/django.po Tue Jun 25 11:56:01 2013 +0200 @@ -2038,3 +2038,35 @@ msgid "" "You've been registered, please check your email for the confirm message." msgstr "" + +#: models.py:266 views/site.py:191 +msgid "Label for the first category of comments" +msgstr "" + +#: models.py:267 views/site.py:197 +msgid "Label for the second category of comments" +msgstr "" + +#: models.py:268 views/site.py:203 +msgid "Label for the third category of comments" +msgstr "" + +#: models.py:269 views/site.py:209 +msgid "Label for the fourth category of comments" +msgstr "" + +#: models.py:270 views/site.py:215 +msgid "Label for the fifth category of comments" +msgstr "" + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 views/site.py:192 views/site.py:198 views/site.py:204 views/site.py:210 views/site.py:216 +msgid "Paragraphs including at least one comment of this category will have a vertical bar with this color: " +msgstr "" + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 +msgid "Leave blank to use the value configured for the workspace." +msgstr "" + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 +msgid "To disable this category for this text whatever the configuration for the workspace, enter: " +msgstr "" diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/en/LC_MESSAGES/djangojs.po --- a/src/cm/locale/en/LC_MESSAGES/djangojs.po Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/locale/en/LC_MESSAGES/djangojs.po Tue Jun 25 11:56:01 2013 +0200 @@ -618,3 +618,15 @@ #: media/js/client/c_toc.js:45 msgid "Table of contents" msgstr "" + +#: media/js/client/c_icomment.js:330 +msgid "category" +msgstr "" + +#: media/js/client/c_interface_form.js:52 +msgid "Category:" +msgstr "" + +#: media/js/site/f_text_view_frame.js:123 +msgid "Categories" +msgstr "" diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/es/LC_MESSAGES/django.mo Binary file src/cm/locale/es/LC_MESSAGES/django.mo has changed diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/es/LC_MESSAGES/django.po --- a/src/cm/locale/es/LC_MESSAGES/django.po Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/locale/es/LC_MESSAGES/django.po Tue Jun 25 11:56:01 2013 +0200 @@ -2325,3 +2325,43 @@ #~ msgid "Local role" #~ msgstr "Perfil local" + +#: models.py:266 views/site.py:191 +#, fuzzy +msgid "Label for the first category of comments" +msgstr "Etiqueta para la primera categoría de los comentarios" + +#: models.py:267 views/site.py:197 +#, fuzzy +msgid "Label for the second category of comments" +msgstr "Etiqueta para la segunda categoría de los comentarios" + +#: models.py:268 views/site.py:203 +#, fuzzy +msgid "Label for the third category of comments" +msgstr "Etiqueta para la tercera categoría de los comentarios" + +#: models.py:269 views/site.py:209 +#, fuzzy +msgid "Label for the fourth category of comments" +msgstr "Etiqueta para la cuarta categoría de los comentarios" + +#: models.py:270 views/site.py:215 +#, fuzzy +msgid "Label for the fifth category of comments" +msgstr "Etiqueta para la quinta categoría de los comentarios" + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 views/site.py:192 views/site.py:198 views/site.py:204 views/site.py:210 views/site.py:216 +#, fuzzy +msgid "Paragraphs including at least one comment of this category will have a vertical bar with this color: " +msgstr "Los párrafos que incluyen al menos un comentario de esta categoría tendrán una barra vertical, con este color: " + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 +#, fuzzy +msgid "Leave blank to use the value configured for the workspace." +msgstr "Déjelo en blanco para utilizar el valor configurado para el espacio de trabajo." + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 +#, fuzzy +msgid "To disable this category for this text whatever the configuration for the workspace, enter: " +msgstr "Para desactivar esta categoría para este texto sea cual sea la configuración del espacio de trabajo, escriba: " diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/es/LC_MESSAGES/djangojs.mo Binary file src/cm/locale/es/LC_MESSAGES/djangojs.mo has changed diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/es/LC_MESSAGES/djangojs.po --- a/src/cm/locale/es/LC_MESSAGES/djangojs.po Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/locale/es/LC_MESSAGES/djangojs.po Tue Jun 25 11:56:01 2013 +0200 @@ -644,3 +644,18 @@ #~ msgid "Use padding to show discussion threads" #~ msgstr "Usar espacios en blanco para separar los diferentes hilos de debate" + +#: media/js/client/c_icomment.js:330 +#, fuzzy +msgid "category" +msgstr "categoría" + +#: media/js/client/c_interface_form.js:52 +#, fuzzy +msgid "Category:" +msgstr "Categoría:" + +#: media/js/site/f_text_view_frame.js:123 +#, fuzzy +msgid "Categories" +msgstr "Categorías" diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/fr/LC_MESSAGES/django.mo Binary file src/cm/locale/fr/LC_MESSAGES/django.mo has changed diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/fr/LC_MESSAGES/django.po --- a/src/cm/locale/fr/LC_MESSAGES/django.po Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/locale/fr/LC_MESSAGES/django.po Tue Jun 25 11:56:01 2013 +0200 @@ -2259,3 +2259,35 @@ #~ msgid "%(title)s" #~ msgstr "%(title)s" + +#: models.py:266 views/site.py:191 +msgid "Label for the first category of comments" +msgstr "Intitulé pour la première catégorie de commentaires" + +#: models.py:267 views/site.py:197 +msgid "Label for the second category of comments" +msgstr "Intitulé pour la deuxième catégorie de commentaires" + +#: models.py:268 views/site.py:203 +msgid "Label for the third category of comments" +msgstr "Intitulé pour la troisième catégorie de commentaires" + +#: models.py:269 views/site.py:209 +msgid "Label for the fourth category of comments" +msgstr "Intitulé pour la quatrième catégorie de commentaires" + +#: models.py:270 views/site.py:215 +msgid "Label for the fifth category of comments" +msgstr "Intitulé pour la cinquième catégorie de commentaires" + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 views/site.py:192 views/site.py:198 views/site.py:204 views/site.py:210 views/site.py:216 +msgid "Paragraphs including at least one comment of this category will have a vertical bar with this color: " +msgstr "Paragraphes dont au moins un commentaire de cette catégorie auront une barre verticale avec cette couleur : " + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 +msgid "Leave blank to use the value configured for the workspace." +msgstr "Laissez vide pour utiliser la valeur configurée pour l'espace de travail." + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 +msgid "To disable this category for this text whatever the configuration for the workspace, enter: " +msgstr "Pour désactiver cette catégorie pour ce texte quelle que soit la configuration de l'espace de travail, entrez : " diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/fr/LC_MESSAGES/djangojs.mo Binary file src/cm/locale/fr/LC_MESSAGES/djangojs.mo has changed diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/fr/LC_MESSAGES/djangojs.po --- a/src/cm/locale/fr/LC_MESSAGES/djangojs.po Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/locale/fr/LC_MESSAGES/djangojs.po Tue Jun 25 11:56:01 2013 +0200 @@ -639,3 +639,15 @@ #~ msgid_plural " replies" #~ msgstr[0] " réponse" #~ msgstr[1] " réponses" + +#: media/js/client/c_icomment.js:330 +msgid "category" +msgstr "catégorie" + +#: media/js/client/c_interface_form.js:52 +msgid "Category:" +msgstr "Catégorie :" + +#: media/js/site/f_text_view_frame.js:123 +msgid "Categories" +msgstr "Catégories" diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/it/LC_MESSAGES/django.mo Binary file src/cm/locale/it/LC_MESSAGES/django.mo has changed diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/it/LC_MESSAGES/django.po --- a/src/cm/locale/it/LC_MESSAGES/django.po Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/locale/it/LC_MESSAGES/django.po Tue Jun 25 11:56:01 2013 +0200 @@ -2287,3 +2287,43 @@ msgstr "" "Sei registrato, per cortesia controlla la tua casella di posta elettronica " "per il messaggio di conferma." + +#: models.py:266 views/site.py:191 +#, fuzzy +msgid "Label for the first category of comments" +msgstr "Etichetta per la prima categoria di commenti" + +#: models.py:267 views/site.py:197 +#, fuzzy +msgid "Label for the second category of comments" +msgstr "Etichetta per la seconda categoria di commenti" + +#: models.py:268 views/site.py:203 +#, fuzzy +msgid "Label for the third category of comments" +msgstr "Etichetta per la terza categoria di commenti" + +#: models.py:269 views/site.py:209 +#, fuzzy +msgid "Label for the fourth category of comments" +msgstr "Etichetta per la quarta categoria di commenti" + +#: models.py:270 views/site.py:215 +#, fuzzy +msgid "Label for the fifth category of comments" +msgstr "Etichetta per la quinta categoria di commenti" + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 views/site.py:192 views/site.py:198 views/site.py:204 views/site.py:210 views/site.py:216 +#, fuzzy +msgid "Paragraphs including at least one comment of this category will have a vertical bar with this color: " +msgstr "I paragrafi tra cui almeno un commento di questa categoria avranno una barra verticale con questo colore: " + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 +#, fuzzy +msgid "Leave blank to use the value configured for the workspace." +msgstr "Lasciare vuoto per utilizzare il valore configurato per l'area di lavoro." + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 +#, fuzzy +msgid "To disable this category for this text whatever the configuration for the workspace, enter: " +msgstr "Per disabilitare questa categoria per questo testo qualunque sia la configurazione per l'area di lavoro, digitare: " diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/it/LC_MESSAGES/djangojs.mo Binary file src/cm/locale/it/LC_MESSAGES/djangojs.mo has changed diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/it/LC_MESSAGES/djangojs.po --- a/src/cm/locale/it/LC_MESSAGES/djangojs.po Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/locale/it/LC_MESSAGES/djangojs.po Tue Jun 25 11:56:01 2013 +0200 @@ -632,3 +632,18 @@ #: media/js/site/text_edit.js:103 msgid "Remove" msgstr "Cancella" + +#: media/js/client/c_icomment.js:330 +#, fuzzy +msgid "category" +msgstr "categoria" + +#: media/js/client/c_interface_form.js:52 +#, fuzzy +msgid "Category:" +msgstr "Categoria:" + +#: media/js/site/f_text_view_frame.js:123 +#, fuzzy +msgid "Categories" +msgstr "Categorie" diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/no/LC_MESSAGES/django.mo Binary file src/cm/locale/no/LC_MESSAGES/django.mo has changed diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/no/LC_MESSAGES/django.po --- a/src/cm/locale/no/LC_MESSAGES/django.po Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/locale/no/LC_MESSAGES/django.po Tue Jun 25 11:56:01 2013 +0200 @@ -2148,3 +2148,43 @@ #~ msgid "Local role" #~ msgstr "Tekstrolle" + +#: models.py:266 views/site.py:191 +#, fuzzy +msgid "Label for the first category of comments" +msgstr "Etiketten for den første kategorien av kommentarer" + +#: models.py:267 views/site.py:197 +#, fuzzy +msgid "Label for the second category of comments" +msgstr "Etiketten for den andre kategorien av kommentarer" + +#: models.py:268 views/site.py:203 +#, fuzzy +msgid "Label for the third category of comments" +msgstr "Etiketten for tredje kategorien av kommentarer" + +#: models.py:269 views/site.py:209 +#, fuzzy +msgid "Label for the fourth category of comments" +msgstr "Etiketten for fjerde kategori av kommentarer" + +#: models.py:270 views/site.py:215 +#, fuzzy +msgid "Label for the fifth category of comments" +msgstr "Etiketten for femte kategorien av kommentarer" + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 views/site.py:192 views/site.py:198 views/site.py:204 views/site.py:210 views/site.py:216 +#, fuzzy +msgid "Paragraphs including at least one comment of this category will have a vertical bar with this color: " +msgstr "Avsnitt inkludert minst én kommentar av denne kategorien vil ha en loddrett strek med denne fargen: " + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 +#, fuzzy +msgid "Leave blank to use the value configured for the workspace." +msgstr "La stå tomt for å bruke verdien konfigurert for arbeidsområdet." + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 +#, fuzzy +msgid "To disable this category for this text whatever the configuration for the workspace, enter: " +msgstr "For å deaktivere denne kategorien for denne teksten uansett konfigurasjon for arbeidsområdet, skriver du: " diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/no/LC_MESSAGES/djangojs.mo Binary file src/cm/locale/no/LC_MESSAGES/djangojs.mo has changed diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/no/LC_MESSAGES/djangojs.po --- a/src/cm/locale/no/LC_MESSAGES/djangojs.po Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/locale/no/LC_MESSAGES/djangojs.po Tue Jun 25 11:56:01 2013 +0200 @@ -648,3 +648,18 @@ #~ msgstr[1] "" #~ "%(nb_comments)s merknader vil bli slettet, fordi teksten som de er " #~ "knyttet til har blitt endret." + +#: media/js/client/c_icomment.js:330 +#, fuzzy +msgid "category" +msgstr "kategori" + +#: media/js/client/c_interface_form.js:52 +#, fuzzy +msgid "Category:" +msgstr "Kategori:" + +#: media/js/site/f_text_view_frame.js:123 +#, fuzzy +msgid "Categories" +msgstr "Kategorier" diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/pt_BR/LC_MESSAGES/django.mo Binary file src/cm/locale/pt_BR/LC_MESSAGES/django.mo has changed diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/pt_BR/LC_MESSAGES/django.po --- a/src/cm/locale/pt_BR/LC_MESSAGES/django.po Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/locale/pt_BR/LC_MESSAGES/django.po Tue Jun 25 11:56:01 2013 +0200 @@ -2165,3 +2165,43 @@ #, fuzzy #~ msgid "Contact from user: %(name)s / %(email)s" #~ msgstr "Ajouter un utilisateur" + +#: models.py:266 views/site.py:191 +#, fuzzy +msgid "Label for the first category of comments" +msgstr "Rótulo para a primeira categoria dos comentários" + +#: models.py:267 views/site.py:197 +#, fuzzy +msgid "Label for the second category of comments" +msgstr "Rótulo para a segunda categoria dos comentários" + +#: models.py:268 views/site.py:203 +#, fuzzy +msgid "Label for the third category of comments" +msgstr "Rótulo para a terceira categoria dos comentários" + +#: models.py:269 views/site.py:209 +#, fuzzy +msgid "Label for the fourth category of comments" +msgstr "Rótulo para a quarta categoria de comentários" + +#: models.py:270 views/site.py:215 +#, fuzzy +msgid "Label for the fifth category of comments" +msgstr "Rótulo para a quinta categoria dos comentários" + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 views/site.py:192 views/site.py:198 views/site.py:204 views/site.py:210 views/site.py:216 +#, fuzzy +msgid "Paragraphs including at least one comment of this category will have a vertical bar with this color: " +msgstr "Números, incluindo pelo menos um comentário desta categoria terão uma barra vertical com esta cor: " + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 +#, fuzzy +msgid "Leave blank to use the value configured for the workspace." +msgstr "Deixe em branco para usar o valor configurado para o espaço de trabalho." + +#: models.py:266 models.py:267 models.py:268 models.py:269 models.py:270 +#, fuzzy +msgid "To disable this category for this text whatever the configuration for the workspace, enter: " +msgstr "Para desativar esta categoria para este texto seja qual for a configuração do espaço de trabalho, digite: " diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/pt_BR/LC_MESSAGES/djangojs.mo Binary file src/cm/locale/pt_BR/LC_MESSAGES/djangojs.mo has changed diff -r 8ec189cc214d -r b2e0186daa5b src/cm/locale/pt_BR/LC_MESSAGES/djangojs.po --- a/src/cm/locale/pt_BR/LC_MESSAGES/djangojs.po Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/locale/pt_BR/LC_MESSAGES/djangojs.po Tue Jun 25 11:56:01 2013 +0200 @@ -653,3 +653,18 @@ #~ msgstr[1] "" #~ "%(nb_comments)s os comentários serão removidos porque o texto a que eles " #~ "se referem foi alterado" + +#: media/js/client/c_icomment.js:330 +#, fuzzy +msgid "category" +msgstr "categoria" + +#: media/js/client/c_interface_form.js:52 +#, fuzzy +msgid "Category:" +msgstr "Categoria:" + +#: media/js/site/f_text_view_frame.js:123 +#, fuzzy +msgid "Categories" +msgstr "Categorias" diff -r 8ec189cc214d -r b2e0186daa5b src/cm/media/css/site/text_view_comments/c-style-comment.css --- a/src/cm/media/css/site/text_view_comments/c-style-comment.css Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/media/css/site/text_view_comments/c-style-comment.css Tue Jun 25 11:56:01 2013 +0200 @@ -28,7 +28,7 @@ font-weight: bold; } -.c-infos, .c-tags-infos, .c-state-actions,.c-iactions { +.c-infos, .c-tags-infos, .c-cat, .c-state-actions,.c-iactions { font-size: 77%; color: #565656; } @@ -158,10 +158,31 @@ .icomment-header .c-infos, .icomment-header .c-state-actions, .icomment-header .c-state-actions, -.icomment-header .c-tags { +.icomment-header .c-tags, +.icomment-header .c-cat-val { font: 11px/13px 'PT Sans', Verdana, sans-serif; } +.icomment-header .c-cat-val.c-cat-1 { + color: #1523f4; +} + +.icomment-header .c-cat-val.c-cat-2 { + color: #f4154f; +} + +.icomment-header .c-cat-val.c-cat-3 { + color: #09ff09; +} + +.icomment-header .c-cat-val.c-cat-4 { + color: #bc39cf; +} + +.icomment-header .c-cat-val.c-cat-5 { + color: #ffbd08; +} + .icomment-body { font: 13px/18px 'PT Sans', Verdana, sans-serif; } diff -r 8ec189cc214d -r b2e0186daa5b src/cm/media/css/site/text_view_comments/c-text-styles.css --- a/src/cm/media/css/site/text_view_comments/c-text-styles.css Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/media/css/site/text_view_comments/c-text-styles.css Tue Jun 25 11:56:01 2013 +0200 @@ -2,6 +2,7 @@ #textcontainer { font-size: 14px; line-height: 20px; + padding-left: 30px; } #textcontainer.modern { @@ -95,3 +96,127 @@ top: -0.25em; font-size: 0.75em; } + +.cat1 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4; +} + +.cat2 { + box-shadow: -15px 0 0 0 white, -17px 0 0 0 #f4154f; +} + +.cat3 { + box-shadow: -18px 0 0 0 white, -20px 0 0 0 #09ff09; +} + +.cat4 { + box-shadow: -21px 0 0 0 white, -23px 0 0 0 #bc39cf; +} + +.cat5 { + box-shadow: -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat1.cat2 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -15px 0 0 0 white, -17px 0 0 0 #f4154f; +} + +.cat1.cat3 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -18px 0 0 0 white, -20px 0 0 0 #09ff09; +} + +.cat1.cat4 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -21px 0 0 0 white, -23px 0 0 0 #bc39cf; +} + +.cat1.cat5 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat2.cat3 { + box-shadow: -15px 0 0 0 white, -17px 0 0 0 #f4154f, -18px 0 0 0 white, -20px 0 0 0 #09ff09; +} + +.cat2.cat4 { + box-shadow: -15px 0 0 0 white, -17px 0 0 0 #f4154f, -21px 0 0 0 white, -23px 0 0 0 #bc39cf; +} + +.cat2.cat5 { + box-shadow: -15px 0 0 0 white, -17px 0 0 0 #f4154f, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat3.cat4 { + box-shadow: -18px 0 0 0 white, -20px 0 0 0 #09ff09, -21px 0 0 0 white, -23px 0 0 0 #bc39cf; +} + +.cat3.cat5 { + box-shadow: -18px 0 0 0 white, -20px 0 0 0 #09ff09, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat4.cat5 { + box-shadow: -21px 0 0 0 white, -23px 0 0 0 #bc39cf, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat1.cat2.cat3 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -15px 0 0 0 white, -17px 0 0 0 #f4154f, -18px 0 0 0 white, -20px 0 0 0 #09ff09; +} + +.cat1.cat2.cat4 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -15px 0 0 0 white, -17px 0 0 0 #f4154f, -21px 0 0 0 white, -23px 0 0 0 #bc39cf; +} + +.cat1.cat2.cat5 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -15px 0 0 0 white, -17px 0 0 0 #f4154f, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat1.cat3.cat4 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -18px 0 0 0 white, -20px 0 0 0 #09ff09, -21px 0 0 0 white, -23px 0 0 0 #bc39cf; +} + +.cat1.cat3.cat5 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -18px 0 0 0 white, -20px 0 0 0 #09ff09, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat1.cat4.cat5 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -21px 0 0 0 white, -23px 0 0 0 #bc39cf, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat2.cat3.cat4 { + box-shadow: -15px 0 0 0 white, -17px 0 0 0 #f4154f, -18px 0 0 0 white, -20px 0 0 0 #09ff09, -21px 0 0 0 white, -23px 0 0 0 #bc39cf; +} + +.cat2.cat3.cat5 { + box-shadow: -15px 0 0 0 white, -17px 0 0 0 #f4154f, -18px 0 0 0 white, -20px 0 0 0 #09ff09, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat2.cat4.cat5 { + box-shadow: -15px 0 0 0 white, -17px 0 0 0 #f4154f, -21px 0 0 0 white, -23px 0 0 0 #bc39cf, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat3.cat4.cat5 { + box-shadow: -18px 0 0 0 white, -20px 0 0 0 #09ff09, -21px 0 0 0 white, -23px 0 0 0 #bc39cf, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat1.cat2.cat3.cat4 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -15px 0 0 0 white, -17px 0 0 0 #f4154f, -18px 0 0 0 white, -20px 0 0 0 #09ff09, -21px 0 0 0 white, -23px 0 0 0 #bc39cf; +} + +.cat1.cat2.cat3.cat5 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -15px 0 0 0 white, -17px 0 0 0 #f4154f, -18px 0 0 0 white, -20px 0 0 0 #09ff09, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat1.cat2.cat4.cat5 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -15px 0 0 0 white, -17px 0 0 0 #f4154f, -21px 0 0 0 white, -23px 0 0 0 #bc39cf, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat1.cat3.cat4.cat5 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -18px 0 0 0 white, -20px 0 0 0 #09ff09, -21px 0 0 0 white, -23px 0 0 0 #bc39cf, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat2.cat3.cat4.cat5 { + box-shadow: -15px 0 0 0 white, -17px 0 0 0 #f4154f, -18px 0 0 0 white, -20px 0 0 0 #09ff09, -21px 0 0 0 white, -23px 0 0 0 #bc39cf, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} + +.cat1.cat2.cat3.cat4.cat5 { + box-shadow: -12px 0 0 0 white, -14px 0 0 0 #1523f4, -15px 0 0 0 white, -17px 0 0 0 #f4154f, -18px 0 0 0 white, -20px 0 0 0 #09ff09, -21px 0 0 0 white, -23px 0 0 0 #bc39cf, -24px 0 0 0 white, -26px 0 0 0 #ffbd08; +} diff -r 8ec189cc214d -r b2e0186daa5b src/cm/media/js/client/c_addcomment_form.js --- a/src/cm/media/js/client/c_addcomment_form.js Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/media/js/client/c_addcomment_form.js Tue Jun 25 11:56:01 2013 +0200 @@ -8,6 +8,7 @@ 'titleInputId':CY.guid(), 'contentInputId':CY.guid(), 'tagsInputId':CY.guid(), + 'categoryInputId':CY.guid(), 'formatInputId':CY.guid(), 'startWrapperInputId':CY.guid(), 'endWrapperInputId':CY.guid(), diff -r 8ec189cc214d -r b2e0186daa5b src/cm/media/js/client/c_client-min.js --- a/src/cm/media/js/client/c_client-min.js Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/media/js/client/c_client-min.js Tue Jun 25 11:56:01 2013 +0200 @@ -1,1 +1,1 @@ -_afterDlg=function(d){var a=d[0];var c=d[1];var b=d[2];a.call(c,b);};_abortNewCommentConfirmed=function(a){if(isICommentFormVisible()){if(gLayout.isInFrame()){gSync.hideICommentForm({fn:function(){_afterDlg(a);}});gSync.resume();}}};_abortNewReplyConfirmed=function(a){if(gNewReplyHost!=null){if(gLayout.isInFrame()){cancelNewReplyForm();_afterDlg(a);}}};_abortNewEditConfirmed=function(a){if(gEditICommentHost!=null){if(gLayout.isInFrame()){cancelEditForm();_afterDlg(a);}}};checkForOpenedDialog=function(e,b,d,c){var a=[];if(e!=null){a=CY.Array.map(gDb.getThreads([gDb.getComment(e.commentId)]),function(f){return f.id;});}if(isICommentFormVisible()||(gNewReplyHost!=null&&(e==null||CY.Array.indexOf(a,gNewReplyHost.commentId)!=-1))||(gEditICommentHost!=null&&(e==null||CY.Array.indexOf(a,gEditICommentHost.commentId)!=-1))){if(gLayout.isInFrame()){if(isICommentFormVisible()){parent.f_yesNoDialog(gettext("New comment will be canceled, continue?"),gettext("Warning"),null,null,null,_abortNewCommentConfirmed,this,[b,d,c]);}else{if(gNewReplyHost!=null){parent.f_yesNoDialog(gettext("Started reply will be canceled, continue?"),gettext("Warning"),null,null,null,_abortNewReplyConfirmed,this,[b,d,c]);}else{if(gEditICommentHost!=null){parent.f_yesNoDialog(gettext("Started comment edition will be canceled, continue?"),gettext("Warning"),null,null,null,_abortNewEditConfirmed,this,[b,d,c]);}}}}}else{b.call(d,[]);}};gToc=null;instanciateToc=function(){gToc={tocId:CY.guid(),tocTitleId:CY.guid(),closeBtnId:CY.guid(),empty:false};var c={};c.headerContent='

';var a=getElementsByTagNames("h2,h3,h4,h5,h6",document.getElementById("maincontainer"));var h=document.createElement("div");if(a.length>=2){for(var f=0;f]*>/ig,"");g.className="page indent"+a[f].nodeName;h.appendChild(g);var j=a[f].id||"link"+f;g.href="#"+j;a[f].id=j;}}else{h.innerHTML="";gToc.empty=true;}c.bodyContent=h.innerHTML;var b=gLayout.getTopICommentsWidth();var e=new CY.Overlay({zIndex:3,shim:false,visible:false,headerContent:c.headerContent,bodyContent:c.bodyContent,xy:[3,30],width:b});e.get("contentBox").addClass("c-toc");e.get("contentBox").set("id","the-toc");e.render("#leftcolumn");CY.get("#"+gToc.tocTitleId).set("innerHTML",gettext("Table of contents"));gToc.overlay=e;var k=null;k=new CY.Anim({node:e.get("boundingBox"),duration:0.3,easing:CY.Easing.easeOut});gToc.animationHide=k;k.set("to",{opacity:0});gToc["animationHide-handle"]=k.on("end",onTocHideAnimEnd,gToc);var d=null;d=new CY.Anim({node:e.get("boundingBox"),duration:0.3,easing:CY.Easing.easeOut});gToc.animationShow=d;d.set("to",{opacity:1});gToc["animationShow-handle"]=d.on("end",onTocShowAnimEnd,gToc);getElementsByClassName("c-toc")[0].style.width=b+"px";};toggleTocFn=function(){if(isTocVisible()){hideToc();}else{showToc();}};hideToc=function(){gToc.overlay.hide();};onTocHideAnimEnd=function(){this.overlay.hide();gSync.resume();};onTocShowAnimEnd=function(){gSync.resume();};showToc=function(){removeFormErrMsg(gToc.tocId);gIComments.hide();gToc.overlay.show();};isTocVisible=function(){if(gToc!=null){return gToc.overlay.get("visible");}return false;};function getElementsByTagNames(g,h){if(!h){var h=document;}var a=g.split(",");var f=new Array();for(var e=0;e
'+t+'
-X
',bodyContent:'
'+p+' '+i+" 
"});this.overlay.get("contentBox").addClass("c-comment");this.overlay.render("#leftcolumn");this.animation=new CY.Anim({node:this.overlay.get("boundingBox"),duration:gPrefs.get("general","animduration"),easing:CY.Easing.easeOut});this.overlay.get("contentBox").query(".c-close").on("click",this.onCloseCommentClick,this);this.overlay.get("contentBox").query(".c-moderate").on("click",this.onModerateCommentClick,this);this.overlay.get("contentBox").query(".c-state-pending").on("click",this.onPendingCommentClick,this);this.overlay.get("contentBox").query(".c-state-approved").on("click",this.onApprovedCommentClick,this);this.overlay.get("contentBox").query(".c-state-unapproved").on("click",this.onUnapprovedCommentClick,this);this.overlay.get("contentBox").query(".c-state-cancel").on("click",this.onCancelStateChangeClick,this);this.overlay.get("contentBox").query(".c-edit").on("click",this.onEditCommentClick,this);this.overlay.get("contentBox").query(".c-delete").on("click",this.onDeleteCommentClick,this);this.overlay.get("contentBox").query(".c-reply").on("click",this.onReplyCommentClick,this);this.overlay.get("contentBox").query(".c-readreplies").on("click",this.onReadRepliesCommentClick,this);this.overlay.get("contentBox").query(".icomment-header").on("mouseenter",this.onMouseEnterHeader,this);this.overlay.get("contentBox").query(".icomment-header").on("mouseleave",this.onMouseLeaveHeader,this);this.overlay.get("contentBox").on("click",this.onCommentClick,this);};IComment.prototype={onCloseCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.closeComment(this);}},onModerateCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-iactions").addClass("displaynone");this.overlay.get("contentBox").query(".c-state-actions").removeClass("displaynone");}},onPendingCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.moderateComment(this,"pending");}},onApprovedCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.moderateComment(this,"approved");}},onUnapprovedCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.moderateComment(this,"unapproved");}},onCancelStateChangeClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-iactions").removeClass("displaynone");this.overlay.get("contentBox").query(".c-state-actions").addClass("displaynone");}},onDeleteCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.removeComment(this);}},onEditCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.showEditForm(this);}},onReplyCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.showReplyForm(this);}},onReadRepliesCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.openComment(this);}},onCommentClick:function(d){if(readyForAction()&&this.isVisible()){if(d.target.get("target")=="_blank"){var b=d.target;var g=sv_site_url+sv_text_view_show_comment_url;if(b.get("href").indexOf(g)==0){var a=(new RegExp("comment_id_key=([^&]*)","g")).exec(b.get("href"));if(a!=null){var c=a[1];var f=gDb.getCommentByIdKey(c);if(f!=null){d.halt();if(!b.hasClass("c-permalink")){checkForOpenedDialog(null,function(){gSync.showSingleComment(f);});}}}}}else{if(gShowingAllComments){if(!this._isHostingAForm()){var f=gDb.getComment(this.commentId);checkForOpenedDialog(null,function(){if(f!=null){gSync.showSingleComment(f);}});}}else{gSync.activate(this);}}}},onMouseEnterHeader:function(){if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-permalink").removeClass("displaynone");}},onMouseLeaveHeader:function(){if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-permalink").addClass("displaynone");}},setWidth:function(a){this.overlay.get("boundingBox").setStyle("width",a+"px");},activate:function(){this.overlay.get("boundingBox").addClass("c-focus-comment");},deactivate:function(){this.overlay.get("boundingBox").removeClass("c-focus-comment");},hide:function(){if(gIComments.isTopActive(this.commentId)){if(!gIComments.activateVisibleNext()){gIComments.deactivate();}}if(this.isVisible()){this.overlay.hide();this.overlay.blur();}},hideContent:function(){this.overlay.get("contentBox").query(".icomment-header").addClass("displaynone");this.overlay.get("contentBox").query(".icomment-body").addClass("displaynone");},showContent:function(){this.overlay.get("contentBox").query(".icomment-header").removeClass("displaynone");this.overlay.get("contentBox").query(".icomment-body").removeClass("displaynone");},isVisible:function(){return this.overlay.get("visible");},show:function(){this.hideReadRepliesLnk();return this.overlay.show();},showReadRepliesLnk:function(){this.overlay.get("contentBox").query(".c-readreplies").removeClass("displaynone");},hideReadRepliesLnk:function(){this.overlay.get("contentBox").query(".c-readreplies").addClass("displaynone");},changeModeration:function(b){var a=this.overlay.get("contentBox").query(".c-moderate");a.set("innerHTML",gettext(b.state));a.removeClass("c-state-approved");a.removeClass("c-state-pending");a.removeClass("c-state-unapproved");a.addClass("c-state-"+b.state);this.overlay.get("contentBox").query(".c-iactions").removeClass("displaynone");this.overlay.get("contentBox").query(".c-state-actions").addClass("displaynone");},isfetched:function(){return(this.commentId!=null);},unfetch:function(){this.commentId=null;},fetch:function(h){this.commentId=h.id;var b=this.overlay.get("boundingBox");if(h.start_wrapper!=-1){b.addClass("c-has-scope");b.removeClass("c-has-no-scope");}else{b.addClass("c-has-no-scope");b.removeClass("c-has-scope");}if(h.reply_to_id!=null){b.addClass("c-is-reply");}else{b.removeClass("c-is-reply");}var f=interpolate(gettext("last modified on %(date)s"),{date:h.modified_user_str},true);var k=(h.modified==h.created)?"":' * ';var i=gettext("Permalink to this comment");var n='¶ ';var j=interpolate(gettext("by %(name)s, created on %(date)s"),{name:h.name,date:h.created_user_str},true);var c='
'+h.title+n+'
'+j+"
";var d=CY.Node.create(c);var o=b.query(".c-header");if(o==null){b.query(".icomment-header").insertBefore(d,b.one(".c-iactions"));}else{o.get("parentNode").replaceChild(d,o);}var g=CY.Node.create('
tags:'+h.tags+"
");var m=b.query(".c-tags");if(m==null){b.query(".icomment-header").appendChild(g);}else{m.get("parentNode").replaceChild(g,m);}if(h.tags==""){g.addClass("displaynone");}var e=CY.Node.create(''+h.content_html+"");var a=b.query(".c-content");if(a==null){b.query(".icomment-body").appendChild(e);}else{a.get("parentNode").replaceChild(e,a);}if(sv_prefix==""){b.query(".c-permalink").set("href",sv_site_url+h.permalink);}else{comment_id_delta_prefix=sv_delta!=""?Array(parseInt(sv_delta)+1).join(","):"";b.query(".c-permalink").set("href",top.location.protocol+"//"+top.location.hostname+top.location.pathname+"?comment_id_key="+comment_id_delta_prefix+h.id_key);}this.changeModeration(h);var l=b.queryAll(".c-content a");if(l!=null){l.setAttribute("target","_blank");}l=b.queryAll(".c-header-title a");if(l!=null){l.setAttribute("target","_blank");}this.permAdapt(h);},permAdapt:function(e){var b=this.overlay.get("contentBox").query(".c-delete");if(b){if(!e.can_delete){b.addClass("displaynone");}else{b.removeClass("displaynone");}}var a=this.overlay.get("contentBox").query(".c-edit");if(a){if(!e.can_edit){a.addClass("displaynone");}else{a.removeClass("displaynone");}}var d=this.overlay.get("contentBox").query(".c-reply");if(d){if(!hasPerm("can_create_comment")){d.addClass("displaynone");}else{d.removeClass("displaynone");}}var c=this.overlay.get("contentBox").query(".c-moderate");if(c){if(!e.can_moderate){c.addClass("displaynone");}else{c.removeClass("displaynone");}}},setThreadPad:function(a){this.overlay.get("contentBox").query(".yui-widget-hd").setStyle("paddingLeft",a+"px");this.overlay.get("contentBox").query(".yui-widget-bd").setStyle("paddingLeft",a+"px");},setPosition:function(b){var a=this.overlay.get("boundingBox");a.setStyle("opacity",1);a.setXY(b);},getPosition:function(b){var a=this.overlay.get("boundingBox");return a.getXY();},onAnimationEnd:function(){if(!CY.Lang.isUndefined(this["animation-handle"])&&!CY.Lang.isNull(this["animation-handle"])){this["animation-handle"].detach();this["animation-handle"]=null;}gIComments.signalAnimationEnd();if(gIComments.animationsEnded()){gIComments.whenAnimationsEnd();}},onAnimationEndFocus:function(){if(!CY.Lang.isUndefined(this["animation-handle"])&&!CY.Lang.isNull(this["animation-handle"])){this["animation-handle"].detach();this["animation-handle"]=null;}gIComments.signalAnimationEnd();if(gIComments.animationsEnded()){gIComments.whenAnimationsEndFocus();}},onAnimationEndReply:function(){if(!CY.Lang.isUndefined(this["animation-handle"])&&!CY.Lang.isNull(this["animation-handle"])){this["animation-handle"].detach();this["animation-handle"]=null;}gIComments.signalAnimationEnd();if(gIComments.animationsEnded()){gIComments.whenAnimationsEndReply();}},setAnimationToPosition:function(d,a,c){var b=this.overlay.get("boundingBox");if(gPrefs.get("general","animduration")<0.011){b.setXY(d);}this.animation.set("to",{xy:d});this.animation.set("duration",gPrefs.get("general","animduration"));if(a){if(c){this["animation-handle"]=this.animation.on("end",this.onAnimationEndReply,this);}else{this["animation-handle"]=this.animation.on("end",this.onAnimationEndFocus,this);}}else{this["animation-handle"]=this.animation.on("end",this.onAnimationEnd,this);}return this.animation;},getHeight:function(){return this.overlay.get("boundingBox").get("offsetHeight");},scrollIntoView:function(){if(!this.overlay.get("contentBox").inViewportRegion()){this.overlay.get("contentBox").scrollIntoView(true);}},_isHostingAForm:function(){return(this.isVisible()&&((gNewReplyHost!=null&&gNewReplyHost==this)||(gEditICommentHost!=null&&gEditICommentHost==this)));}};hasPerm=function(a){return(-1!=CY.Array.indexOf(sv_user_permissions,a));};_afterDlg=function(g){var f=g[0];var h=g[1];var e=g[2];f.call(h,e);};_abortNewCommentConfirmed=function(b){if(isICommentFormVisible()){if(gLayout.isInFrame()){gSync.hideICommentForm({fn:function(){_afterDlg(b);}});gSync.resume();}}};_abortNewReplyConfirmed=function(b){if(gNewReplyHost!=null){if(gLayout.isInFrame()){cancelNewReplyForm();_afterDlg(b);}}};_abortNewEditConfirmed=function(b){if(gEditICommentHost!=null){if(gLayout.isInFrame()){cancelEditForm();_afterDlg(b);}}};checkForOpenedDialog=function(h,f,i,j){var g=[];if(h!=null){g=CY.Array.map(gDb.getThreads([gDb.getComment(h.commentId)]),function(a){return a.id;});}if(isICommentFormVisible()||(gNewReplyHost!=null&&(h==null||CY.Array.indexOf(g,gNewReplyHost.commentId)!=-1))||(gEditICommentHost!=null&&(h==null||CY.Array.indexOf(g,gEditICommentHost.commentId)!=-1))){if(gLayout.isInFrame()){if(isICommentFormVisible()){parent.f_yesNoDialog(gettext("New comment will be canceled, continue?"),gettext("Warning"),null,null,null,_abortNewCommentConfirmed,this,[f,i,j]);}else{if(gNewReplyHost!=null){parent.f_yesNoDialog(gettext("Started reply will be canceled, continue?"),gettext("Warning"),null,null,null,_abortNewReplyConfirmed,this,[f,i,j]);}else{if(gEditICommentHost!=null){parent.f_yesNoDialog(gettext("Started comment edition will be canceled, continue?"),gettext("Warning"),null,null,null,_abortNewEditConfirmed,this,[f,i,j]);}}}}}else{f.call(i,[]);}};gToc=null;instanciateToc=function(){gToc={tocId:CY.guid(),tocTitleId:CY.guid(),closeBtnId:CY.guid(),empty:false};var r={};r.headerContent='

';var t=getElementsByTagNames("h2,h3,h4,h5,h6",document.getElementById("maincontainer"));var m=document.createElement("div");if(t.length>=2){for(var o=0;o]*>/ig,"");n.className="page indent"+t[o].nodeName;m.appendChild(n);var l=t[o].id||"link"+o;n.href="#"+l;t[o].id=l;}}else{m.innerHTML="";gToc.empty=true;}r.bodyContent=m.innerHTML;var s=gLayout.getTopICommentsWidth();var p=new CY.Overlay({zIndex:3,shim:false,visible:false,headerContent:r.headerContent,bodyContent:r.bodyContent,xy:[3,30],width:s});p.get("contentBox").addClass("c-toc");p.get("contentBox").set("id","the-toc");p.render("#leftcolumn");CY.get("#"+gToc.tocTitleId).set("innerHTML",gettext("Table of contents"));gToc.overlay=p;var i=null;i=new CY.Anim({node:p.get("boundingBox"),duration:0.3,easing:CY.Easing.easeOut});gToc.animationHide=i;i.set("to",{opacity:0});gToc["animationHide-handle"]=i.on("end",onTocHideAnimEnd,gToc);var q=null;q=new CY.Anim({node:p.get("boundingBox"),duration:0.3,easing:CY.Easing.easeOut});gToc.animationShow=q;q.set("to",{opacity:1});gToc["animationShow-handle"]=q.on("end",onTocShowAnimEnd,gToc);getElementsByClassName("c-toc")[0].style.width=s+"px";};toggleTocFn=function(){if(isTocVisible()){hideToc();}else{showToc();}};hideToc=function(){gToc.overlay.hide();};onTocHideAnimEnd=function(){this.overlay.hide();gSync.resume();};onTocShowAnimEnd=function(){gSync.resume();};showToc=function(){removeFormErrMsg(gToc.tocId);gIComments.hide();gToc.overlay.show();};isTocVisible=function(){if(gToc!=null){return gToc.overlay.get("visible");}return false;};function getElementsByTagNames(l,k){if(!k){var k=document;}var j=l.split(",");var m=new Array();for(var n=0;n
'+u+'
-X
',bodyContent:'
'+y+' '+F+" 
"});this.overlay.get("contentBox").addClass("c-comment");this.overlay.render("#leftcolumn");this.animation=new CY.Anim({node:this.overlay.get("boundingBox"),duration:gPrefs.get("general","animduration"),easing:CY.Easing.easeOut});this.overlay.get("contentBox").query(".c-close").on("click",this.onCloseCommentClick,this);this.overlay.get("contentBox").query(".c-moderate").on("click",this.onModerateCommentClick,this);this.overlay.get("contentBox").query(".c-state-pending").on("click",this.onPendingCommentClick,this);this.overlay.get("contentBox").query(".c-state-approved").on("click",this.onApprovedCommentClick,this);this.overlay.get("contentBox").query(".c-state-unapproved").on("click",this.onUnapprovedCommentClick,this);this.overlay.get("contentBox").query(".c-state-cancel").on("click",this.onCancelStateChangeClick,this);this.overlay.get("contentBox").query(".c-edit").on("click",this.onEditCommentClick,this);this.overlay.get("contentBox").query(".c-delete").on("click",this.onDeleteCommentClick,this);this.overlay.get("contentBox").query(".c-reply").on("click",this.onReplyCommentClick,this);this.overlay.get("contentBox").query(".c-readreplies").on("click",this.onReadRepliesCommentClick,this);this.overlay.get("contentBox").query(".icomment-header").on("mouseenter",this.onMouseEnterHeader,this);this.overlay.get("contentBox").query(".icomment-header").on("mouseleave",this.onMouseLeaveHeader,this);this.overlay.get("contentBox").on("click",this.onCommentClick,this);};IComment.prototype={onCloseCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.closeComment(this);}},onModerateCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-iactions").addClass("displaynone");this.overlay.get("contentBox").query(".c-state-actions").removeClass("displaynone");}},onPendingCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.moderateComment(this,"pending");}},onApprovedCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.moderateComment(this,"approved");}},onUnapprovedCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.moderateComment(this,"unapproved");}},onCancelStateChangeClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-iactions").removeClass("displaynone");this.overlay.get("contentBox").query(".c-state-actions").addClass("displaynone");}},onDeleteCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.removeComment(this);}},onEditCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.showEditForm(this);}},onReplyCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.showReplyForm(this);}},onReadRepliesCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.openComment(this);}},onCommentClick:function(k){if(readyForAction()&&this.isVisible()){if(k.target.get("target")=="_blank"){var e=k.target;var i=sv_site_url+sv_text_view_show_comment_url;if(e.get("href").indexOf(i)==0){var h=(new RegExp("comment_id_key=([^&]*)","g")).exec(e.get("href"));if(h!=null){var l=h[1];var j=gDb.getCommentByIdKey(l);if(j!=null){k.halt();if(!e.hasClass("c-permalink")){checkForOpenedDialog(null,function(){gSync.showSingleComment(j);});}}}}}else{if(gShowingAllComments){if(!this._isHostingAForm()){var j=gDb.getComment(this.commentId);checkForOpenedDialog(null,function(){if(j!=null){gSync.showSingleComment(j);}});}}else{gSync.activate(this);}}}},onMouseEnterHeader:function(){if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-permalink").removeClass("displaynone");}},onMouseLeaveHeader:function(){if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-permalink").addClass("displaynone");}},setWidth:function(b){this.overlay.get("boundingBox").setStyle("width",b+"px");},activate:function(){this.overlay.get("boundingBox").addClass("c-focus-comment");},deactivate:function(){this.overlay.get("boundingBox").removeClass("c-focus-comment");},hide:function(){if(gIComments.isTopActive(this.commentId)){if(!gIComments.activateVisibleNext()){gIComments.deactivate();}}if(this.isVisible()){this.overlay.hide();this.overlay.blur();}},hideContent:function(){this.overlay.get("contentBox").query(".icomment-header").addClass("displaynone");this.overlay.get("contentBox").query(".icomment-body").addClass("displaynone");},showContent:function(){this.overlay.get("contentBox").query(".icomment-header").removeClass("displaynone");this.overlay.get("contentBox").query(".icomment-body").removeClass("displaynone");},isVisible:function(){return this.overlay.get("visible");},show:function(){this.hideReadRepliesLnk();return this.overlay.show();},showReadRepliesLnk:function(){this.overlay.get("contentBox").query(".c-readreplies").removeClass("displaynone");},hideReadRepliesLnk:function(){this.overlay.get("contentBox").query(".c-readreplies").addClass("displaynone");},changeModeration:function(c){var d=this.overlay.get("contentBox").query(".c-moderate");d.set("innerHTML",gettext(c.state));d.removeClass("c-state-approved");d.removeClass("c-state-pending");d.removeClass("c-state-unapproved");d.addClass("c-state-"+c.state);this.overlay.get("contentBox").query(".c-iactions").removeClass("displaynone");this.overlay.get("contentBox").query(".c-state-actions").addClass("displaynone");},isfetched:function(){return(this.commentId!=null);},unfetch:function(){this.commentId=null;},fetch:function(w){this.commentId=w.id;var C=this.overlay.get("boundingBox");if(w.start_wrapper!=-1){C.addClass("c-has-scope");C.removeClass("c-has-no-scope");}else{C.addClass("c-has-no-scope");C.removeClass("c-has-scope");}if(w.reply_to_id!=null){C.addClass("c-is-reply");}else{C.removeClass("c-is-reply");}var y=interpolate(gettext("last modified on %(date)s"),{date:w.modified_user_str},true);var t=(w.modified==w.created)?"":' * ';var v=gettext("Permalink to this comment");var q='¶ ';var u=interpolate(gettext("by %(name)s, created on %(date)s"),{name:w.name,date:w.created_user_str},true);var B='
'+w.title+q+'
'+u+"
";var A=CY.Node.create(B);var p=C.query(".c-header");if(p==null){C.query(".icomment-header").insertBefore(A,C.one(".c-iactions"));}else{p.get("parentNode").replaceChild(A,p);}var x=CY.Node.create('
tags:'+w.tags+"
");var r=C.query(".c-tags");if(r==null){C.query(".icomment-header").appendChild(x);}else{r.get("parentNode").replaceChild(x,r);}if(w.tags==""){x.addClass("displaynone");}var z=CY.Node.create(''+w.content_html+"");var D=C.query(".c-content");if(D==null){C.query(".icomment-body").appendChild(z);}else{D.get("parentNode").replaceChild(z,D);}if(sv_prefix==""){C.query(".c-permalink").set("href",sv_site_url+w.permalink);}else{comment_id_delta_prefix=sv_delta!=""?Array(parseInt(sv_delta)+1).join(","):"";C.query(".c-permalink").set("href",top.location.protocol+"//"+top.location.hostname+top.location.pathname+"?comment_id_key="+comment_id_delta_prefix+w.id_key);}this.changeModeration(w);var s=C.queryAll(".c-content a");if(s!=null){s.setAttribute("target","_blank");}s=C.queryAll(".c-header-title a");if(s!=null){s.setAttribute("target","_blank");}this.permAdapt(w);},permAdapt:function(h){var f=this.overlay.get("contentBox").query(".c-delete");if(f){if(!h.can_delete){f.addClass("displaynone");}else{f.removeClass("displaynone");}}var g=this.overlay.get("contentBox").query(".c-edit");if(g){if(!h.can_edit){g.addClass("displaynone");}else{g.removeClass("displaynone");}}var i=this.overlay.get("contentBox").query(".c-reply");if(i){if(!hasPerm("can_create_comment")){i.addClass("displaynone");}else{i.removeClass("displaynone");}}var j=this.overlay.get("contentBox").query(".c-moderate");if(j){if(!h.can_moderate){j.addClass("displaynone");}else{j.removeClass("displaynone");}}},setThreadPad:function(b){this.overlay.get("contentBox").query(".yui-widget-hd").setStyle("paddingLeft",b+"px");this.overlay.get("contentBox").query(".yui-widget-bd").setStyle("paddingLeft",b+"px");},setPosition:function(c){var d=this.overlay.get("boundingBox");d.setStyle("opacity",1);d.setXY(c);},getPosition:function(c){var d=this.overlay.get("boundingBox");return d.getXY();},onAnimationEnd:function(){if(!CY.Lang.isUndefined(this["animation-handle"])&&!CY.Lang.isNull(this["animation-handle"])){this["animation-handle"].detach();this["animation-handle"]=null;}gIComments.signalAnimationEnd();if(gIComments.animationsEnded()){gIComments.whenAnimationsEnd();}},onAnimationEndFocus:function(){if(!CY.Lang.isUndefined(this["animation-handle"])&&!CY.Lang.isNull(this["animation-handle"])){this["animation-handle"].detach();this["animation-handle"]=null;}gIComments.signalAnimationEnd();if(gIComments.animationsEnded()){gIComments.whenAnimationsEndFocus();}},onAnimationEndReply:function(){if(!CY.Lang.isUndefined(this["animation-handle"])&&!CY.Lang.isNull(this["animation-handle"])){this["animation-handle"].detach();this["animation-handle"]=null;}gIComments.signalAnimationEnd();if(gIComments.animationsEnded()){gIComments.whenAnimationsEndReply();}},setAnimationToPosition:function(g,f,h){var e=this.overlay.get("boundingBox");if(gPrefs.get("general","animduration")<0.011){e.setXY(g);}this.animation.set("to",{xy:g});this.animation.set("duration",gPrefs.get("general","animduration"));if(f){if(h){this["animation-handle"]=this.animation.on("end",this.onAnimationEndReply,this);}else{this["animation-handle"]=this.animation.on("end",this.onAnimationEndFocus,this);}}else{this["animation-handle"]=this.animation.on("end",this.onAnimationEnd,this);}return this.animation;},getHeight:function(){return this.overlay.get("boundingBox").get("offsetHeight");},scrollIntoView:function(){if(!this.overlay.get("contentBox").inViewportRegion()){this.overlay.get("contentBox").scrollIntoView(true);}},_isHostingAForm:function(){return(this.isVisible()&&((gNewReplyHost!=null&&gNewReplyHost==this)||(gEditICommentHost!=null&&gEditICommentHost==this)));}};hasPerm=function(b){return(-1!=CY.Array.indexOf(sv_user_permissions,b));};paintCommentScope=function(b){if(b.reply_to_id==null&&b.start_wrapper!=-1){var a={start:{elt:document.getElementById("sv_"+b.start_wrapper),offset:b.start_offset},end:{elt:document.getElementById("sv_"+b.end_wrapper),offset:b.end_offset}};if(document.getElementById("sv_"+b.start_wrapper)==null){warn_server({from:"paintCommentScope",start_wrapper:b.start_wrapper});}else{if(document.getElementById("sv_"+b.end_wrapper)==null){warn_server({from:"paintCommentScope",end_wrapper:b.end_wrapper});}else{a.start=_convertSelectionFromCSToCC(a.start);a.end=_convertSelectionFromCSToCC(a.end);renderComment(a,b.id);}}}};getCommentIdsFromClasses=function(b){var a=[];var e=b.className.split(" ");for(var d=0,c=e.length;d0){b.setAttribute("title",a+ngettext(" comment"," comments",a));if(a>25){CY.DOM.addClass(b,"c-count-25");}}};_convertSelectionFromCCToCS=function(b){var d=b.offset;var a=b.elt.parentNode;var c=b.elt.previousSibling;while(c!=null){d+=_getTextNodeContent(c).length;c=c.previousSibling;}return{elt:a,offset:d};};_convertSelectionFromCSToCC=function(d){var a={elt:null,offset:-1};var f=null;var e=d.elt.firstChild;var c=0;while(e!=null){var b=c;c+=_getTextNodeContent(e).length;if(c>=d.offset){a.elt=e;a.offset=d.offset-b;break;}e=e.nextSibling;}return a;};unpaintCommentScope=function(k){var j=k.id;var r="c-id-"+j;var m=[];var t=CY.all("."+r);if(t!=null){for(var h=0,d=t.size();h0){var l=r.getRangeAt(0);h=l.toString();if(h!=""){var E=document.createRange();E.setStart(r.anchorNode,r.anchorOffset);E.collapse(true);var B=document.createRange();B.setEnd(r.focusNode,r.focusOffset);B.collapse(false);var I=(B.compareBoundaryPoints(2,E)==1);J=(I)?r.anchorNode.parentNode:r.focusNode.parentNode;if(J.nodeName=="mi"||J.nodeName=="mo"){J=J.parentElement.parentElement.parentElement.parentElement;}innerStartNode=(I)?r.anchorNode:r.focusNode;m=(I)?r.focusNode.parentNode:r.anchorNode.parentNode;if(m.nodeName=="mi"||m.nodeName=="mo"){m=m.parentElement.parentElement.parentElement.parentElement;}innerEndNode=(I)?r.focusNode:r.anchorNode;D=(I)?r.anchorOffset:r.focusOffset;c=(I)?r.focusOffset:r.anchorOffset;if(!hasWrapperAncestor(m)&&hasWrapperAncestor(J)){var z=document.createRange();z.setStart(innerStartNode,D);var b=getWrapperAncestor(J);var q=b;z.setEndAfter(q);var f=parseInt(b.id.substring("sv_".length));while(z.toString().lengthv.compareBoundaryPoints(2,l))){J=k.firstChild;D=0;m=F.lastChild;c=CY.DOM.getText(F).length;w=true;break;}}if(w){break;}}}}}E.detach();B.detach();}else{return null;}}else{return null;}}else{if(document.selection){var d=document.selection.createRange();if(d.text.length==0){return null;}var a=d.parentElement();var H=d.duplicate();var u=d.duplicate();H.collapse(true);u.collapse(false);J=H.parentElement();while(H.moveStart("character",-1)!=0){if(H.parentElement()!=J){break;}D++;}m=u.parentElement();while(u.moveEnd("character",-1)!=0){if(u.parentElement()!=m){break;}c++;}h=d.text;}}if(!hasWrapperAncestor(J)||!hasWrapperAncestor(m)){return null;}return{text:h,start:{elt:J,offset:D},end:{elt:m,offset:c}};};Preferences=function(){this.prefs={};};Preferences.prototype={init:function(){this._read();},_read:function(){for(var b in gConf.defaultPrefs){this.prefs[b]={};for(var a in gConf.defaultPrefs[b]){var c=null;if(b=="user"&&(a=="name"||a=="email")){c=CY.Cookie.get("user_"+a);}else{c=CY.Cookie.getSub(b,a);}this.prefs[b][a]=(c==null)?gConf.defaultPrefs[b][a]:c;}}},persist:function(b,a,d){var c={path:"/",expires:(new Date()).setFullYear(2100,0,1)};if(b=="user"&&(a=="name"||a=="email")){CY.Cookie.set("user_"+a,d,c);}else{CY.Cookie.setSub(b,a,d,c);}this.prefs[b][a]=d;},get:function(b,a){return this.prefs[b][a];},readDefault:function(b,a){return gConf.defaultPrefs[b][a];},reset:function(a){for(var b=0;b',nameInput:gettext("Username:")+'
',emailInput:gettext("E-mail address:")+'
',titleInput:gettext("Title:")+'
',contentInput:gettext("Content:")+'
',tagsInput:gettext("Tag:")+'
',hidden:'',formEnd:"",changeScope:'
'+gettext("Modify comment's scope:")+'
',headerTitle:'
',currentSel:'
'+gettext("Comment will apply to this selection:")+'
'+gNoSelectionYet+"
#hiddeninput#
",btns:'
',closeIcon:'      '};getHtml=function(f){ret={};ret.headerContent="";if("closeBtnId" in f){ret.headerContent+=gFormHtml.closeIcon.replace("###",f.closeBtnId);}ret.headerContent+=gFormHtml.headerTitle.replace("###",f.formTitleId);var b="";if("changeScopeInputId" in f){b=gFormHtml.changeScope.replace("###",f.changeScopeInputId);}var e="
"+gFormHtml.hidden.replace("###",f.selectionPlaceId).replace("???","selection_place")+"
";var a=gFormHtml.currentSel.replace("###",f.currentSelId).replace("???",f.currentSelIdI).replace("#hiddeninput#",e);var d=gFormHtml.btns.replace("###",f.addBtnId).replace("???",f.cancelBtnId);var c=gFormHtml.formStart.replace("###",f.formId)+b+a;if("nameInputId" in f){c=c+gFormHtml.nameInput.replace("###",f.nameInputId);}if("emailInputId" in f){c=c+gFormHtml.emailInput.replace("###",f.emailInputId);}c=c+gFormHtml.titleInput.replace("###",f.titleInputId)+gFormHtml.contentInput.replace("###",f.contentInputId)+gFormHtml.tagsInput.replace("###",f.tagsInputId);c=c+gFormHtml.hidden.replace("###",f.formatInputId).replace("???","format");c=c+gFormHtml.hidden.replace("###",f.startWrapperInputId).replace("???","start_wrapper");c=c+gFormHtml.hidden.replace("###",f.endWrapperInputId).replace("???","end_wrapper");c=c+gFormHtml.hidden.replace("###",f.startOffsetInputId).replace("???","start_offset");c=c+gFormHtml.hidden.replace("###",f.endOffsetInputId).replace("???","end_offset");c=c+gFormHtml.hidden.replace("###",f.keyId).replace("???","comment_key");c=c+gFormHtml.hidden.replace("###",f.editCommentId).replace("???","edit_comment_id");c=c+d+gFormHtml.formEnd;ret.bodyContent=c;return ret;};changeFormFieldsWidth=function(d,c){var a=(c-20)+"px";var b=CY.all("#"+d+" input[type='text']");if(b!=null){b.setStyle("width",a);}b=CY.all("#"+d+" textarea");if(b!=null){b.setStyle("width",a);}};addFormErrMsg=function(j,g,d){var f=document.getElementById(j);var b,h,c,a;for(b=0,a=f.elements.length;b"+b+"";};urlEncode=function(h){if(!h){return"";}var c=[];for(var f in h){var e=h[f],b=encodeURIComponent(f);var g=typeof e;if(g=="undefined"){c.push(b,"=&");}else{if(g!="function"&&g!="object"){c.push(b,"=",encodeURIComponent(e),"&");}else{if(CY.Lang.isArray(e)){if(e.length){for(var d=0,a=e.length;de[d]){b=e[g];e[g]=e[d];e[d]=b;}return;}a=e[parseInt((g+d)/2)];e[parseInt((g+d)/2)]=e[g];e[g]=a;c=g+1;f=d;do{while(c<=f&&e[c]<=a){c++;}while(e[f]>a){f--;}if(c0){this._animateTo(a);}}},_showFocusSingleComment:function(d,c,b){if(d!=null){var a=0;if(d.start_wrapper!=-1){a=CY.get(".c-id-"+d.id).getY();}else{a=CY.get("document").get("scrollTop");}this._showComments([d.id],a,false);if(d.replies.length>0||b){this._animateToAndFocus(a,c.id,b);}}},showSingleComment:function(a){this._q.add({fn:CY.bind(this.setPreventClickOn,this)});this._showSingleComment(a);this._q.add({fn:CY.bind(this.setPreventClickOff,this)});this._q.run();},showFocusSingleComment:function(c,b,a){this._q.add({fn:CY.bind(this.setPreventClickOn,this)});this._showFocusSingleComment(c,b,a);this._q.add({fn:CY.bind(this.setPreventClickOff,this)});this._q.run();},browse:function(a,b){var c=gIComments.browse(a,b);if(c!=null){this.showSingleComment(c);}},_showComments:function(c,b,a){this._q.add({fn:function(){gShowingAllComments=a;gIComments.hide();hideToc();var d=CY.Array.map(c,function(g){return gDb.getComment(g);});var f=gDb.getThreads(d);gIComments.fetch(f);if(c.length>0){if(a){CY.get("document").set("scrollTop",0);}else{gIComments.activate(c[0]);var e=CY.get(".c-id-"+c[0]);if(e&&!e.inViewportRegion()){e.scrollIntoView(true);if(parent){parent.document.getElementById("outer-north").scrollIntoView(true);}}}}gIComments.setPosition([gConf.iCommentLeftPadding,b]);gIComments.show();}});},_animateTo:function(a){this._q.add({fn:function(){gIComments.setAnimationToPositions(a);}},{id:"animationRun",autoContinue:false,fn:CY.bind(gIComments.runAnimations,gIComments)});},_animateToAndFocus:function(a,c,b){this._q.add({fn:function(){gIComments.setAnimationToPositionsAndFocus(a,c,b);}},{id:"animationRun",autoContinue:false,fn:CY.bind(gIComments.runAnimations,gIComments)});},_animateToTop:function(){var a=gIComments.getTopPosition();if(a!=null){this._animateTo(a[1]);}},animateToTop:function(){this._q.add({fn:CY.bind(this.setPreventClickOn,this)});this._animateToTop();this._q.add({fn:CY.bind(this.setPreventClickOff,this)});this._q.run();},showAllComments:function(){checkForOpenedDialog(null,function(){gShowingAllComments=true;var a=CY.Array.map(gDb.comments,function(b){return b.id;});if(parent.$("#browse_by").val()=="scope"){a.sort(function(d,c){if(gDb.ordered_comment_ids.scope.indexOf(d)gDb.ordered_comment_ids.scope.indexOf(c)){return 1;}return 0;});}this.showComments(a,[0,30],true);},this,null);},showScopeRemovedComments:function(){checkForOpenedDialog(null,function(){gShowingAllComments=true;var b=CY.Array.filter(gDb.comments,function(c){return(c.start_wrapper==-1);});var a=CY.Array.map(b,function(d){return d.id;});if(parent.$("#browse_by").val()=="scope"){a.sort(function(d,c){if(gDb.ordered_comment_ids.scope.indexOf(d)gDb.ordered_comment_ids.scope.indexOf(c)){return 1;}return 0;});}this.showComments(a,[0,30],true);},this,null);},showComments:function(c,b,a){checkForOpenedDialog(null,function(){this._q.add({fn:CY.bind(this.setPreventClickOn,this)});this._showComments(c,b[1],a);this._animateTo(b[1]);this._q.add({fn:CY.bind(this.setPreventClickOff,this)});this._q.run();},this,null);},openComment:function(a){this._q.add({fn:CY.bind(this.setPreventClickOn,this)});var b=gIComments.getTopPosition()[1];this._q.add({fn:function(){gIComments.open(a.commentId);gIComments.refresh(a.commentId);}});this._animateTo(b);this._q.add({fn:CY.bind(this.setPreventClickOff,this)});this._q.run();},closeComment:function(a){checkForOpenedDialog(a,function(){this._q.add({fn:CY.bind(this.setPreventClickOn,this)});var b=gIComments.getTopPosition()[1];this._q.add({fn:function(){var c=gDb.getComment(a.commentId);gIComments.close(a.commentId);if(c.reply_to_id!=null){gIComments.refresh(c.reply_to_id);}}});this._animateTo(b);this._q.add({fn:CY.bind(this.setPreventClickOff,this)});this._q.run();},this,null);},activate:function(a){gIComments.activate(a.commentId);}};readyForAction=function(){return !gSync._iPreventClick;};gEditICommentHost=null;gEdit=null;dbgc=null;showEditForm=function(a){if(gEdit==null){gEdit={ids:{formId:CY.guid(),formTitleId:CY.guid(),nameInputId:CY.guid(),emailInputId:CY.guid(),titleInputId:CY.guid(),contentInputId:CY.guid(),tagsInputId:CY.guid(),formatInputId:CY.guid(),startWrapperInputId:CY.guid(),endWrapperInputId:CY.guid(),startOffsetInputId:CY.guid(),endOffsetInputId:CY.guid(),changeScopeInputId:CY.guid(),changeScopeInputWrapper:CY.guid(),selectionPlaceId:CY.guid(),keyId:CY.guid(),editCommentId:CY.guid(),currentSelId:CY.guid(),currentSelIdI:CY.guid(),addBtnId:CY.guid(),cancelBtnId:CY.guid()},handlers:{}};}gEditICommentHost=a;gEditICommentHost.hideContent();var c=getHtml(gEdit.ids);var b='
'+c.headerContent+"
";var e='
'+c.bodyContent+"
";gEditICommentHost.overlay.setStdModContent(CY.WidgetStdMod.HEADER,CY.Node.create(b),CY.WidgetStdMod.AFTER);gEditICommentHost.overlay.setStdModContent(CY.WidgetStdMod.BODY,CY.Node.create(e),CY.WidgetStdMod.AFTER);CY.get("#"+gEdit.ids["formTitleId"]).set("innerHTML",gettext("Edit comment"));var f=gDb.getComment(gEditICommentHost.commentId);CY.get("#"+gEdit.ids["editCommentId"]).set("value",f.id);CY.get("#"+gEdit.ids["keyId"]).set("value",f.key);CY.get("#"+gEdit.ids["changeScopeInputId"]+" input").set("checked",false);if(f.reply_to_id!=null){CY.get("#"+gEdit.ids["changeScopeInputId"]).addClass("displaynone");}changeScopeFormClick();CY.get("#"+gEdit.ids["nameInputId"]).set("value",f.name);CY.get("#"+gEdit.ids["emailInputId"]).set("value",f.email);if(f.logged_author){CY.get("#"+gEdit.ids["nameInputId"]).setAttribute("disabled",true);CY.get("#"+gEdit.ids["emailInputId"]).setAttribute("disabled",true);}CY.get("#"+gEdit.ids["titleInputId"]).set("value",f.title);CY.get("#"+gEdit.ids["contentInputId"]).set("value",f.content);CY.get("#"+gEdit.ids["tagsInputId"]).set("value",f.tags);CY.get("#"+gEdit.ids["formatInputId"]).set("value",gConf.defaultCommentFormat);var d=gLayout.getTopICommentsWidth();changeFormFieldsWidth(gEdit.ids["formId"],d);gEdit.handlers["addBtnId"]=CY.on("click",onEditSaveClick,"#"+gEdit.ids["addBtnId"]);gEdit.handlers["cancelBtnId"]=CY.on("click",onEditCancelClick,"#"+gEdit.ids["cancelBtnId"]);gEdit.handlers["changeScope"]=CY.on("click",onChangeScopeClick,"#"+gEdit.ids["changeScopeInputId"]);};onEditSaveClick=function(a){if(readyForAction()){gSync.editComment();}};onEditCancelClick=function(a){if(readyForAction()){gSync.cancelEdit();}};onChangeScopeClick=function(){if(readyForAction()){gSync.changeScopeFormClick();}else{var a=CY.get("#"+gEdit.ids["changeScopeInputId"]+" input");var b=a.get("checked");a.set("checked",!b);}};changeScopeFormClick=function(){var a=CY.get("#"+gEdit.ids["currentSelId"]);if(CY.get("#"+gEdit.ids["changeScopeInputId"]+" input").get("checked")){a.removeClass("displaynone");}else{a.addClass("displaynone");}};cancelEditForm=function(){if(gEditICommentHost!=null){for(var b in gEdit.handlers){if(gEdit.handlers[b]!=null){gEdit.handlers[b].detach();gEdit.handlers[b]=null;}}var a=gEditICommentHost.overlay.get("contentBox").query(".icomment-edit-body");a.get("parentNode").removeChild(a);a=gEditICommentHost.overlay.get("contentBox").query(".icomment-edit-header");a.get("parentNode").removeChild(a);gEditICommentHost.showContent();gEditICommentHost=null;}};gICommentForm=null;instanciateICommentForm=function(){gICommentForm={position:[CY.WidgetPositionExt.TL,CY.WidgetPositionExt.TL],formId:CY.guid(),formTitleId:CY.guid(),titleInputId:CY.guid(),contentInputId:CY.guid(),tagsInputId:CY.guid(),formatInputId:CY.guid(),startWrapperInputId:CY.guid(),endWrapperInputId:CY.guid(),startOffsetInputId:CY.guid(),endOffsetInputId:CY.guid(),selectionPlaceId:CY.guid(),keyId:CY.guid(),currentSelId:CY.guid(),currentSelIdI:CY.guid(),addBtnId:CY.guid(),cancelBtnId:CY.guid(),closeBtnId:CY.guid()};if(!sv_loggedIn){gICommentForm.nameInputId=CY.guid();gICommentForm.emailInputId=CY.guid();}var c=getHtml(gICommentForm);var e=gLayout.getTopICommentsWidth();var b=new CY.Overlay({zIndex:3,shim:false,visible:false,headerContent:c.headerContent,bodyContent:c.bodyContent,xy:[10,10],width:e});b.get("contentBox").addClass("c-newcomment");b.render("#leftcolumn");if(!sv_loggedIn){CY.get("#"+gICommentForm.nameInputId).set("value",gPrefs.get("user","name"));CY.get("#"+gICommentForm.emailInputId).set("value",gPrefs.get("user","email"));}CY.get("#"+gICommentForm.formTitleId).set("innerHTML",gettext("New comment"));CY.get("#"+gICommentForm.formatInputId).set("value",gConf.defaultCommentFormat);CY.on("click",onSubmitICommentFormClick,"#"+gICommentForm.addBtnId);CY.on("click",onCancelICommentFormClick,"#"+gICommentForm.cancelBtnId);CY.on("click",onCancelICommentFormClick,"#"+gICommentForm.closeBtnId);gICommentForm.overlay=b;var d=null;d=new CY.Anim({node:b.get("boundingBox"),duration:0.3,easing:CY.Easing.easeOut});gICommentForm.animationHide=d;d.set("to",{opacity:0});gICommentForm["animationHide-handle"]=d.on("end",onICommentFormHideAnimEnd,gICommentForm);var a=null;a=new CY.Anim({node:b.get("boundingBox"),duration:0.3,easing:CY.Easing.easeOut});gICommentForm.animationShow=a;a.set("to",{opacity:1});gICommentForm["animationShow-handle"]=a.on("end",onICommentFormShowAnimEnd,gICommentForm);changeFormFieldsWidth(gICommentForm.formId,e);};cleanICommentForm=function(){CY.get("#"+gICommentForm.currentSelIdI).set("innerHTML",gNoSelectionYet);var a=gICommentForm.overlay.getStdModNode(CY.WidgetStdMod.BODY);a.queryAll(".comment_input").set("value","");CY.get("#"+gICommentForm.formatInputId).set("value",gConf.defaultCommentFormat);if(!sv_loggedIn){a.queryAll(".user_input").set("value","");}};onICommentFormHideAnimEnd=function(){this.overlay.hide();gSync.resume();};onICommentFormShowAnimEnd=function(){gSync.resume();};onSubmitICommentFormClick=function(){if(!sv_loggedIn){var b=CY.get("#"+gICommentForm.nameInputId).get("value");gPrefs.persist("user","name",b);var a=CY.get("#"+gICommentForm.emailInputId).get("value");gPrefs.persist("user","email",a);}gSync.saveComment(gICommentForm.formId);};onCancelICommentFormClick=function(){gSync.cancelICommentForm();};_updateICommentFormSelection=function(c,e,b,a){var d=CY.Node.get("#"+c.currentSelIdI);if(d!=null){d.set("innerHTML",e);}d=CY.get("#"+c.startWrapperInputId);if(d!=null){d.set("value",b.elt.id.substring("sv_".length));}d=CY.get("#"+c.startOffsetInputId);if(d!=null){d.set("value",b.offset);}d=CY.get("#"+c.endWrapperInputId);if(d!=null){d.set("value",a.elt.id.substring("sv_".length));}d=CY.get("#"+c.endOffsetInputId);if(d!=null){d.set("value",a.offset);}};updateICommentFormSelection=function(h){var i=(h==null)?"":h.text;if(i!=""){var f=i;var b=100;if(i.length>b){var a=i.substring(0,(i.substring(0,b/2)).lastIndexOf(" "));var d=i.substring(i.length-b/2);var c=d.substring(d.indexOf(" "));f=a+" ... "+c;}var e=_convertSelectionFromCCToCS(h.start);var g=_convertSelectionFromCCToCS(h.end);_updateICommentFormSelection(gICommentForm,f,e,g);if(gEdit!=null){_updateICommentFormSelection(gEdit.ids,f,e,g);}positionICommentForm();}};showICommentForm=function(){removeFormErrMsg(gICommentForm.formId);if(!sv_loggedIn){if(CY.get("#"+gICommentForm.nameInputId).get("value")==""){CY.get("#"+gICommentForm.nameInputId).set("value",gPrefs.get("user","name"));}if(CY.get("#"+gICommentForm.emailInputId).get("value")==""){CY.get("#"+gICommentForm.emailInputId).set("value",gPrefs.get("user","email"));}}gIComments.hide();hideToc();positionICommentForm();gICommentForm.overlay.show();CY.get("#"+gICommentForm.titleInputId).focus();};isICommentFormVisible=function(){if(gICommentForm!=null){return gICommentForm.overlay.get("visible");}return false;};positionICommentForm=function(){if(gICommentForm!=null){var b=gICommentForm.overlay;var a=b.get("boundingBox");var c=a.get("offsetHeight");var e=a.get("winHeight");var d=gICommentForm.position;if(c>e){d=[CY.WidgetPositionExt.BL,CY.WidgetPositionExt.BL];}b.set("align",{points:d});if(c<=e){b.set("y",b.get("y")+30);}a.setX(a.getX()+gConf.iCommentLeftPadding);}};Db=function(){this.comments=null;this.allComments=null;this.commentsByDbId={};this.allCommentsByDbId={};this.ordered_comment_ids={};};Db.prototype={init:function(){this.allComments=CY.JSON.parse(sv_comments);if(sv_read_only){this.initToReadOnly();}this._computeAllCommentsByDbId();this._reorder();},_del:function(a,e,g){var f=e[g];for(var c=0;cc){c=a;}}return c;},_upd:function(a,f,g){var e=false;for(var d=0,b=a.length;d0){a=a.concat(this.getThreads(c[b].replies));}}return a;},_getPath:function(b,e){var a=[e];var d=e;while(d.reply_to_id!=null){d=b[d.reply_to_id];a.push(d);}return a;},getPath:function(a){return this._getPath(this.commentsByDbId,a);},getComment:function(a){return this.commentsByDbId[a];},getCommentByIdKey:function(a){for(var c in this.commentsByDbId){var b=this.commentsByDbId[c];if(b.id_key==a){return b;}}return null;},isChild:function(d,b){var c=this.commentsByDbId[d];var a=(d==b);while((!a)&&(c.reply_to_id!=null)){c=this.commentsByDbId[c.reply_to_id];a=(c.id==b);}return a;},initToReadOnly:function(f,c){for(var b=0,a=this.allComments.length;b0){var g=-1;if((f=="prev")||(f=="next")){for(var e=0;e=0)&&(ea.length){break;}}CY.error("internal error in db browse (could not find any filtered comment)");}return null;},computeFilterResults:function(n){var a={};if(n){for(key in n){if(key.indexOf("filter_")==0){a[key.substr("filter_".length)]=n[key];}}}else{if(gLayout.isInFrame()){a=parent.f_getFrameFilterData();}}var v=[];var w=[];var b="";if("name" in a){b=a.name;}this.filterByName(b,v,w);var p=[];var c=[];var C="";if("date" in a){C=a.date;}this.filterByDate(C,p,c);var g=[];var f=[];var t="";if("text" in a){t=a.text;}this.filterByText(t,g,f);var x=[];var m=[];var A="";if("tag" in a){A=a.tag;}this.filterByTag(A,x,m);var u=[];var e=[];var k="";if("state" in a){k=a.state;}this.filterByState(k,u,e);var d=[];var z=[];for(var y=0,j=v.length;yc){if(e.reply_to_id==null){d.push(e.id);}else{a.push(e.id);}}}},getCommentsAndRepliesCounts:function(d){var b=0;var f=0;var a=(d)?this.allComments:this.comments;var e=this.getThreads(a);for(var c=0;c0){b.showReadRepliesLnk();}else{b.hideReadRepliesLnk();}},remove:function(a){this._remove(this._getChildren(a));},close:function(a){CY.Array.each(this._getChildren(a),function(b){b.hide();});},open:function(a){CY.Array.each(this._getChildren(a),function(b){b.show();});},fetch:function(b){for(var a=0;a=f){this._a.push(c.setAnimationToPosition([k,h],f,b));}else{this._a.push(c.setAnimationToPosition([k,h]));}h+=c.getHeight();}}},_initAnimations:function(){this._a=[];this._nbEndedAnim=0;},runAnimations:function(){if(this._a.length==0){gSync.resetAutoContinue("animationRun");}else{CY.each(this._a,function(a){a.run();});}},whenAnimationsEnd:function(){gSync.resume();},whenAnimationsEndFocus:function(){gGETValues=CY.JSON.parse(sv_get_params);if("comment_id_key" in gGETValues){var b=gGETValues.comment_id_key;var a=gDb.getCommentByIdKey(b);if(a!=null){gIComments.getIComment(a.id).overlay.focus();}}gSync.resume();},whenAnimationsEndReply:function(){gGETValues=CY.JSON.parse(sv_get_params);if("comment_id_key" in gGETValues){var b=gGETValues.comment_id_key;var a=gDb.getCommentByIdKey(b);if(a!=null){gSync.showReplyForm(gIComments.getIComment(a.id));}}gSync.resume();},animationsEnded:function(){return((this._a.length==0)||(this._a.length==this._nbEndedAnim));},signalAnimationEnd:function(){this._nbEndedAnim++;},isTopActive:function(a){return((a!=null)&&(this._topActiveCommentDbId==a));},isAnyActive:function(){return(this._topActiveCommentDbId!=null);},activate:function(f){if(this._topActiveCommentDbId!=null){this.deactivate();}var e=gDb.getComment(f);var b=gDb.getPath(e);var a=b[b.length-1];var c=this._getChildren(a.id);CY.Array.each(c,function(g){g.activate();});this._topActiveCommentDbId=a.id;if(gLayout.isInFrame()){var d=gDb.browsingIndex(this._topActiveCommentDbId);parent.$("#browse_by option").each(function(){var g=1+d[this.value];parent.$("#c_browse_indx_"+this.value).html(""+g);});}showScope(a.id);},deactivate:function(){if(this._topActiveCommentDbId!=null){parent.$("#browse_by option").each(function(){parent.$("#c_browse_indx_"+this.value).html("-");});hideScopeAnyway();var a=this._getChildren(this._topActiveCommentDbId);CY.Array.each(a,function(b){b.deactivate();});this._topActiveCommentDbId=null;}},activateVisibleNext:function(){if(this._topActiveCommentDbId!=null){for(var d=0;d<2;d++){var f=(d==0)?0:this._c.length-1;var a=false;for(var e=f;(e>=0)&&e<=(this._c.length-1);){var c=this._c[e];if(c.commentId!=null&&c.isVisible()){a=a||(gDb.isChild(c.commentId,this._topActiveCommentDbId));if(a&&(!gDb.isChild(c.commentId,this._topActiveCommentDbId))){this.activate(c.commentId);return true;}}e=(d==0)?e+1:e-1;}}}return false;},browse:function(b,c){var a=c;if((c=="prev")&&!this.isAnyActive()){a="last";}if((c=="next")&&!this.isAnyActive()){a="first";}return gDb.browse(b,a,this._topActiveCommentDbId);}};gNewReplyHost=null;gNewReply=null;instanciateNewReplyForm=function(i){if(gNewReply==null){gNewReply={val:{name:gPrefs.get("user","name"),email:gPrefs.get("user","email"),title:"",content:"",tags:""},ids:{name:gPrefs.get("user","name"),email:gPrefs.get("user","email"),title:"",content:"",tags:"",formId:CY.guid(),nameInputId:CY.guid(),emailInputId:CY.guid(),titleInputId:CY.guid(),contentInputId:CY.guid(),keyInputId:CY.guid(),formatInputId:CY.guid(),tagsInputId:CY.guid(),parentCommentId:CY.guid(),addBtnId:CY.guid(),cancelBtnId:CY.guid()},handlers:{}};}gNewReplyHost=i;var b='
'+gettext("New reply")+"
";var e=gFormHtml.formStart.replace("###",gNewReply.ids["formId"]);if(!sv_loggedIn){e=e+gFormHtml.nameInput.replace("###",gNewReply.ids["nameInputId"])+gFormHtml.emailInput.replace("###",gNewReply.ids["emailInputId"]);}e=e+gFormHtml.titleInput.replace("###",gNewReply.ids["titleInputId"])+gFormHtml.contentInput.replace("###",gNewReply.ids["contentInputId"])+gFormHtml.tagsInput.replace("###",gNewReply.ids["tagsInputId"]);e=e+gFormHtml.hidden.replace("###",gNewReply.ids["keyInputId"]).replace("???","comment_key");e=e+gFormHtml.hidden.replace("###",gNewReply.ids["formatInputId"]).replace("???","format");e=e+gFormHtml.hidden.replace("###",gNewReply.ids["parentCommentId"]).replace("???","reply_to_id");var h=gFormHtml.btns.replace("###",gNewReply.ids["addBtnId"]).replace("???",gNewReply.ids["cancelBtnId"]);gNewReplyHost.overlay.setStdModContent(CY.WidgetStdMod.FOOTER,b+e+h);var c=gNewReplyHost.overlay.getStdModNode(CY.WidgetStdMod.FOOTER);var f=gDb.getComment(i.commentId);var a="Re: ";var g=(gNewReply.val["title"]==""||gNewReply.val["title"].substring(0,a.length)==a)?a+f.title:gNewReply.val["title"];if(!sv_loggedIn){c.query(".n_name").set("value",gNewReply.val["name"]);c.query(".n_email").set("value",gNewReply.val["email"]);}c.query(".n_title").set("value",g);c.query(".n_content").set("value",gNewReply.val["content"]);c.query(".n_tags").set("value",gNewReply.val["tags"]);c.query("#"+gNewReply.ids["parentCommentId"]).set("value",i.commentId);c.query("#"+gNewReply.ids["formatInputId"]).set("value",gConf.defaultCommentFormat);gNewReplyHost.overlay.get("contentBox").query(".c-reply").addClass("displaynone");gNewReply.handlers["addBtnId"]=CY.on("click",onAddNewReplyClick,"#"+gNewReply.ids["addBtnId"]);gNewReply.handlers["cancelBtnId"]=CY.on("click",onCancelNewReplyClick,"#"+gNewReply.ids["cancelBtnId"]);var d=gLayout.getTopICommentsWidth();changeFormFieldsWidth(gNewReply.ids["formId"],d);CY.get("#"+gNewReply.ids["contentInputId"]).focus();};cleanNewReplyForm=function(){if(gNewReplyHost!=null){var a=gNewReplyHost.overlay.getStdModNode(CY.WidgetStdMod.FOOTER);a.queryAll(".comment_input").set("value","");}};cancelNewReplyForm=function(){if(gNewReplyHost!=null){for(var b in gNewReply.handlers){if(gNewReply.handlers[b]!=null){gNewReply.handlers[b].detach();gNewReply.handlers[b]=null;}}gNewReplyHost.overlay.get("contentBox").query(".c-reply").removeClass("displaynone");var a=gNewReplyHost.overlay.getStdModNode(CY.WidgetStdMod.FOOTER);if(!sv_loggedIn){gNewReply.val["name"]=a.query(".n_name").get("value");gNewReply.val["email"]=a.query(".n_email").get("value");}gNewReply.val["title"]=a.query(".n_title").get("value");gNewReply.val["content"]=a.query(".n_content").get("value");gNewReply.val["tags"]=a.query(".n_tags").get("value");a.set("innerHTML","");gNewReplyHost=null;}};onAddNewReplyClick=function(){if(!sv_loggedIn){var b=CY.get("#"+gNewReply.ids["nameInputId"]).get("value");gPrefs.persist("user","name",b);var a=CY.get("#"+gNewReply.ids["emailInputId"]).get("value");gPrefs.persist("user","email",a);}gSync.saveComment(gNewReply.ids["formId"]);};onCancelNewReplyClick=function(){gSync.cancelReply();};c_persistPreference=function(b,a,c){gPrefs.persist(b,a,c);};c_readDefaultPreference=function(b,a){return gConf.defaultPrefs[b][a];};c_readPreference=function(b,a){return gPrefs.get(b,a);};c_resetPreferences=function(a){gPrefs.reset(a);};c_applyTextStyle=function(a){CY.use(a);};sliderValToPx=function(d){var a=CY.DOM.winWidth();if(gLayout.isInFrame()){a=parent.$(parent).width();}var b=d/100;b=Math.min(b,gConf.sliderFixedMin);b=Math.max(b,gConf.sliderFixedMax);var c=b*a;return Math.floor(c);};c_setCommentsColWidth=function(c){var a=sliderValToPx(c);gLayout.setLeftColumnWidth(a);var b=gLayout.getTopICommentsWidthFromWidth(a);gIComments.setWidth(b);gICommentForm.overlay.get("boundingBox").setStyle("width",b+"px");changeFormFieldsWidth(gICommentForm.formId,b);document.getElementById("the-toc").style.width=b+"px";if(gNewReply){changeFormFieldsWidth(gNewReply.ids["formId"],b);}if(gEdit){changeFormFieldsWidth(gEdit.ids["formId"],b);}};CY=null;gPrefs=null;gLayout=null;gDb=null;gIComments=null;gSync=null;gGETValues=null;gConf={iCommentLeftPadding:4,iCommentThreadPadding:12,defaultCommentFormat:"markdown",sliderFixedMin:0.9,sliderFixedMax:0.1,iCommentsInitAlloc:2,defaultPrefs:{text:{style:"text-modern-style"},user:{name:"",email:""},general:{animduration:"0.4"},comments:{threadpad:"1"},layout:{comments_col_width:"25"}}};if(sv_custom_font){gTextStyles={custom:gettext("custom"),modern:gettext("modern"),classic:gettext("classic"),code:gettext("code")};}else{gTextStyles={modern:gettext("modern"),classic:gettext("classic"),code:gettext("code")};}YUI({base:sv_media_url+"/js/lib/yui/"+c_yui_base+"/build/",timeout:10000}).use("text-modern-style","cookie","json","overlay","io-form","async-queue","event-mouseenter","anim","collection",function(a){CY=a;gPrefs=new Preferences();gPrefs.init();gLayout=new Layout();gLayout.init();if(sv_withComments){gDb=new Db();gDb.init();gIComments=new IComments();gIComments.init();}gSync=new Sync();gSync.init();CY.on("domready",onDomReady,this);});_reinit=function(a){gIComments.hide();gDb.initComments(a.commentIds);unpaintAllComments();renderCommentScopes();updateFilterResultsCount(a.nbDiscussions,a.nbComments,a.nbReplies);};reinit=function(b){var a=gDb.computeFilterResults(b);_reinit(a);};hideAll=function(){_reinit({commentIds:[],nbDiscussions:0,nbComments:0,nbReplies:0});};updateFilterResultsCount=function(f,a,b){var e=gDb.getCommentsAndRepliesCounts(true);var g=e[0],d=e[1];var c=(a!=0||b!=0)&&(g!=a||d!=b);if(gLayout.isInFrame()){parent.f_updateFilterCountDetailed(c);parent.f_updateFilterCountResult(f,a,b,g,d);}};updateResetFilterResultsCount=function(){var c=gDb.getCommentsAndRepliesCounts(false);var a=c[0],b=c[1];var d=a;updateFilterResultsCount(d,a,b);};renderCommentScopes=function(){for(var a=0;a0){checkForOpenedDialog(null,function(){gSync.showComments(a,[f.pageX,f.pageY],false);});}}}}};gLastScrollTime=null;checkForAlignement=function(){var a=(new Date()).getTime();if((gLastScrollTime!=null)&&(a-gLastScrollTime)>200){positionICommentForm();gLastScrollTime=null;}};onFrameScroll=function(){gLastScrollTime=(new Date()).getTime();};browse=function(a,b){gSync.browse(a,b);};initialConnect=function(){CY.on("mouseup",onTextMouseUp,"#textcontainer");gTimer=CY.Lang.later(200,this,checkForAlignement,[],true);CY.on("scroll",onFrameScroll,window,this,true);CY.on("resize",onFrameScroll,window,this,true);};preventLinksInText=function(){var a=function(g){var c=g.target;var d=null;while(c!=null&&d==null){c=c.get("parentNode");d=c.get("href");}if(c!=null&&d!=null){var b=window.location.href;var f=b.indexOf("#");if(f!=-1){b=b.substring(0,f);}if(d.indexOf(b)==-1){window.open(c.get("href"));g.preventDefault();}}};CY.all("#textcontainer a").on("click",a);};onDomReady=function(b){preventLinksInText();var a=new CY.AsyncQueue();a.add({fn:function(){if(gLayout.isInComentSite()){parent.toInitialSize();}if(sv_withComments){instanciateICommentForm();}instanciateToc();},timeout:5},{fn:function(){gGETValues=CY.JSON.parse(sv_get_params);CY.get("#maincontainer").setStyle("display","block");CY.get("#textcontainer").setStyle("display","block");var e=(sv_withComments)?gPrefs.get("layout","comments_col_width"):0;var d=sliderValToPx(e);gLayout.setLeftColumnWidth(d);if(gLayout.isInFrame()){parent.f_initFrame();parent.f_layoutFrames();if(sv_withComments){parent.f_fillTopToolbar();if(hasPerm("can_create_comment")){parent.$("#add_comment_btn").removeClass("initially_hidden");}parent.f_fillFilterTab();parent.f_fillPreferencesTab();var c=CY.JSON.parse(sv_filter_data);parent.f_updateFilterData(c);parent.f_setFilterValue(gGETValues);}parent.f_fillTextPreferencesTab();}if(gLayout.isInComentSite()){parent.$("#c_fullscreen_btn").show();}else{parent.$("#c_fullscreen_btn").hide();}if(gToc.empty){parent.$("#c_toc_btn").hide();}},timeout:5},{fn:function(){if(sv_withComments){reinit(gGETValues);initialConnect();}},timeout:5},{fn:function(){if(gLayout.isInFrame()){parent.f_interfaceUnfreeze();parent.f_removeLoadingMsg();}if("comment_id_key" in gGETValues){var e=gGETValues.comment_id_key;var g=gDb.getCommentByIdKey(e);if(g!=null){var f=gDb.getPath(g);var c=f[f.length-1];var d=gDb.getCommentByIdKey(e);if("comment_op" in gGETValues&&gGETValues.comment_op=="reply"){gSync.showFocusSingleComment(c,d,true);}else{gSync.showFocusSingleComment(c,d,false);}}}if("comments_auto_display" in gGETValues){gSync.showAllComments();}}});a.run();}; \ No newline at end of file +_afterDlg=function(d){var a=d[0];var c=d[1];var b=d[2];a.call(c,b);};_abortNewCommentConfirmed=function(a){if(isICommentFormVisible()){if(gLayout.isInFrame()){gSync.hideICommentForm({fn:function(){_afterDlg(a);}});gSync.resume();}}};_abortNewReplyConfirmed=function(a){if(gNewReplyHost!=null){if(gLayout.isInFrame()){cancelNewReplyForm();_afterDlg(a);}}};_abortNewEditConfirmed=function(a){if(gEditICommentHost!=null){if(gLayout.isInFrame()){cancelEditForm();_afterDlg(a);}}};checkForOpenedDialog=function(e,b,d,c){var a=[];if(e!=null){a=CY.Array.map(gDb.getThreads([gDb.getComment(e.commentId)]),function(f){return f.id;});}if(isICommentFormVisible()||(gNewReplyHost!=null&&(e==null||CY.Array.indexOf(a,gNewReplyHost.commentId)!=-1))||(gEditICommentHost!=null&&(e==null||CY.Array.indexOf(a,gEditICommentHost.commentId)!=-1))){if(gLayout.isInFrame()){if(isICommentFormVisible()){parent.f_yesNoDialog(gettext("New comment will be canceled, continue?"),gettext("Warning"),null,null,null,_abortNewCommentConfirmed,this,[b,d,c]);}else{if(gNewReplyHost!=null){parent.f_yesNoDialog(gettext("Started reply will be canceled, continue?"),gettext("Warning"),null,null,null,_abortNewReplyConfirmed,this,[b,d,c]);}else{if(gEditICommentHost!=null){parent.f_yesNoDialog(gettext("Started comment edition will be canceled, continue?"),gettext("Warning"),null,null,null,_abortNewEditConfirmed,this,[b,d,c]);}}}}}else{b.call(d,[]);}};gToc=null;instanciateToc=function(){gToc={tocId:CY.guid(),tocTitleId:CY.guid(),closeBtnId:CY.guid(),empty:false};var c={};c.headerContent='

';var a=getElementsByTagNames("h2,h3,h4,h5,h6",document.getElementById("maincontainer"));var h=document.createElement("div");if(a.length>=2){for(var f=0;f]*>/ig,"");g.className="page indent"+a[f].nodeName;h.appendChild(g);var j=a[f].id||"link"+f;g.href="#"+j;a[f].id=j;}}else{h.innerHTML="";gToc.empty=true;}c.bodyContent=h.innerHTML;var b=gLayout.getTopICommentsWidth();var e=new CY.Overlay({zIndex:3,shim:false,visible:false,headerContent:c.headerContent,bodyContent:c.bodyContent,xy:[3,30],width:b});e.get("contentBox").addClass("c-toc");e.get("contentBox").set("id","the-toc");e.render("#leftcolumn");CY.get("#"+gToc.tocTitleId).set("innerHTML",gettext("Table of contents"));gToc.overlay=e;var k=null;k=new CY.Anim({node:e.get("boundingBox"),duration:0.3,easing:CY.Easing.easeOut});gToc.animationHide=k;k.set("to",{opacity:0});gToc["animationHide-handle"]=k.on("end",onTocHideAnimEnd,gToc);var d=null;d=new CY.Anim({node:e.get("boundingBox"),duration:0.3,easing:CY.Easing.easeOut});gToc.animationShow=d;d.set("to",{opacity:1});gToc["animationShow-handle"]=d.on("end",onTocShowAnimEnd,gToc);getElementsByClassName("c-toc")[0].style.width=b+"px";};toggleTocFn=function(){if(isTocVisible()){hideToc();}else{showToc();}};hideToc=function(){gToc.overlay.hide();};onTocHideAnimEnd=function(){this.overlay.hide();gSync.resume();};onTocShowAnimEnd=function(){gSync.resume();};showToc=function(){removeFormErrMsg(gToc.tocId);gIComments.hide();gToc.overlay.show();};isTocVisible=function(){if(gToc!=null){return gToc.overlay.get("visible");}return false;};function getElementsByTagNames(g,h){if(!h){var h=document;}var a=g.split(",");var f=new Array();for(var e=0;e
'+t+'
-X
',bodyContent:'"});this.overlay.get("contentBox").addClass("c-comment");this.overlay.render("#leftcolumn");this.animation=new CY.Anim({node:this.overlay.get("boundingBox"),duration:gPrefs.get("general","animduration"),easing:CY.Easing.easeOut});this.overlay.get("contentBox").query(".c-close").on("click",this.onCloseCommentClick,this);this.overlay.get("contentBox").query(".c-moderate").on("click",this.onModerateCommentClick,this);this.overlay.get("contentBox").query(".c-state-pending").on("click",this.onPendingCommentClick,this);this.overlay.get("contentBox").query(".c-state-approved").on("click",this.onApprovedCommentClick,this);this.overlay.get("contentBox").query(".c-state-unapproved").on("click",this.onUnapprovedCommentClick,this);this.overlay.get("contentBox").query(".c-state-cancel").on("click",this.onCancelStateChangeClick,this);this.overlay.get("contentBox").query(".c-edit").on("click",this.onEditCommentClick,this);this.overlay.get("contentBox").query(".c-delete").on("click",this.onDeleteCommentClick,this);this.overlay.get("contentBox").query(".c-reply").on("click",this.onReplyCommentClick,this);this.overlay.get("contentBox").query(".c-readreplies").on("click",this.onReadRepliesCommentClick,this);this.overlay.get("contentBox").query(".icomment-header").on("mouseenter",this.onMouseEnterHeader,this);this.overlay.get("contentBox").query(".icomment-header").on("mouseleave",this.onMouseLeaveHeader,this);this.overlay.get("contentBox").on("click",this.onCommentClick,this);};IComment.prototype={onCloseCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.closeComment(this);}},onModerateCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-iactions").addClass("displaynone");this.overlay.get("contentBox").query(".c-state-actions").removeClass("displaynone");}},onPendingCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.moderateComment(this,"pending");}},onApprovedCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.moderateComment(this,"approved");}},onUnapprovedCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.moderateComment(this,"unapproved");}},onCancelStateChangeClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-iactions").removeClass("displaynone");this.overlay.get("contentBox").query(".c-state-actions").addClass("displaynone");}},onDeleteCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.removeComment(this);}},onEditCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.showEditForm(this);}},onReplyCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.showReplyForm(this);}},onReadRepliesCommentClick:function(a){a.halt();if(readyForAction()&&this.isVisible()){gSync.openComment(this);}},onCommentClick:function(d){if(readyForAction()&&this.isVisible()){if(d.target.get("target")=="_blank"){var b=d.target;var g=sv_site_url+sv_text_view_show_comment_url;if(b.get("href").indexOf(g)==0){var a=(new RegExp("comment_id_key=([^&]*)","g")).exec(b.get("href"));if(a!=null){var c=a[1];var f=gDb.getCommentByIdKey(c);if(f!=null){d.halt();if(!b.hasClass("c-permalink")){checkForOpenedDialog(null,function(){gSync.showSingleComment(f);});}}}}}else{if(gShowingAllComments){if(!this._isHostingAForm()){var f=gDb.getComment(this.commentId);checkForOpenedDialog(null,function(){if(f!=null){gSync.showSingleComment(f);}});}}else{gSync.activate(this);}}}},onMouseEnterHeader:function(){if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-permalink").removeClass("displaynone");}},onMouseLeaveHeader:function(){if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-permalink").addClass("displaynone");}},setWidth:function(a){this.overlay.get("boundingBox").setStyle("width",a+"px");},activate:function(){this.overlay.get("boundingBox").addClass("c-focus-comment");},deactivate:function(){this.overlay.get("boundingBox").removeClass("c-focus-comment");},hide:function(){if(gIComments.isTopActive(this.commentId)){if(!gIComments.activateVisibleNext()){gIComments.deactivate();}}if(this.isVisible()){this.overlay.hide();this.overlay.blur();}},hideContent:function(){this.overlay.get("contentBox").query(".icomment-header").addClass("displaynone");this.overlay.get("contentBox").query(".icomment-body").addClass("displaynone");},showContent:function(){this.overlay.get("contentBox").query(".icomment-header").removeClass("displaynone");this.overlay.get("contentBox").query(".icomment-body").removeClass("displaynone");},isVisible:function(){return this.overlay.get("visible");},show:function(){this.hideReadRepliesLnk();return this.overlay.show();},showReadRepliesLnk:function(){this.overlay.get("contentBox").query(".c-readreplies").removeClass("displaynone");},hideReadRepliesLnk:function(){this.overlay.get("contentBox").query(".c-readreplies").addClass("displaynone");},changeModeration:function(b){var a=this.overlay.get("contentBox").query(".c-moderate");a.set("innerHTML",gettext(b.state));a.removeClass("c-state-approved");a.removeClass("c-state-pending");a.removeClass("c-state-unapproved");a.addClass("c-state-"+b.state);this.overlay.get("contentBox").query(".c-iactions").removeClass("displaynone");this.overlay.get("contentBox").query(".c-state-actions").addClass("displaynone");},isfetched:function(){return(this.commentId!=null);},unfetch:function(){this.commentId=null;},fetch:function(i){this.commentId=i.id;var c=this.overlay.get("boundingBox");if(i.start_wrapper!=-1){c.addClass("c-has-scope");c.removeClass("c-has-no-scope");}else{c.addClass("c-has-no-scope");c.removeClass("c-has-scope");}if(i.reply_to_id!=null){c.addClass("c-is-reply");}else{c.removeClass("c-is-reply");}var g=interpolate(gettext("last modified on %(date)s"),{date:i.modified_user_str},true);var m=(i.modified==i.created)?"":' * ';var k=gettext("Permalink to this comment");var p='¶ ';var l=interpolate(gettext("by %(name)s, created on %(date)s"),{name:i.name,date:i.created_user_str},true);var d='
'+i.title+p+'
'+l+"
";var e=CY.Node.create(d);var q=c.query(".c-header");if(q==null){c.query(".icomment-header").insertBefore(e,c.one(".c-iactions"));}else{q.get("parentNode").replaceChild(e,q);}var h=CY.Node.create('
tags:'+i.tags+"
");var o=c.query(".c-tags");if(o==null){c.query(".icomment-header").appendChild(h);}else{o.get("parentNode").replaceChild(h,o);}if(i.tags==""){h.addClass("displaynone");}var a=CY.Node.create('
'+gettext("category")+': '+categories[i.category]+"
");var j=c.query(".c-cat");if(j==null){c.query(".icomment-header").appendChild(a);}else{j.get("parentNode").replaceChild(a,j);}if(i.category==0){a.addClass("displaynone");}var f=CY.Node.create(''+i.content_html+"");var b=c.query(".c-content");if(b==null){c.query(".icomment-body").appendChild(f);}else{b.get("parentNode").replaceChild(f,b);}if(sv_prefix==""){c.query(".c-permalink").set("href",sv_site_url+i.permalink);}else{comment_id_delta_prefix=sv_delta!=""?Array(parseInt(sv_delta)+1).join(","):"";c.query(".c-permalink").set("href",top.location.protocol+"//"+top.location.hostname+top.location.pathname+"?comment_id_key="+comment_id_delta_prefix+i.id_key);}this.changeModeration(i);var n=c.queryAll(".c-content a");if(n!=null){n.setAttribute("target","_blank");}n=c.queryAll(".c-header-title a");if(n!=null){n.setAttribute("target","_blank");}this.permAdapt(i);},permAdapt:function(e){var b=this.overlay.get("contentBox").query(".c-delete");if(b){if(!e.can_delete){b.addClass("displaynone");}else{b.removeClass("displaynone");}}var a=this.overlay.get("contentBox").query(".c-edit");if(a){if(!e.can_edit){a.addClass("displaynone");}else{a.removeClass("displaynone");}}var d=this.overlay.get("contentBox").query(".c-reply");if(d){if(!hasPerm("can_create_comment")){d.addClass("displaynone");}else{d.removeClass("displaynone");}}var c=this.overlay.get("contentBox").query(".c-moderate");if(c){if(!e.can_moderate){c.addClass("displaynone");}else{c.removeClass("displaynone");}}},setThreadPad:function(a){this.overlay.get("contentBox").query(".yui-widget-hd").setStyle("paddingLeft",a+"px");this.overlay.get("contentBox").query(".yui-widget-bd").setStyle("paddingLeft",a+"px");},setPosition:function(b){var a=this.overlay.get("boundingBox");a.setStyle("opacity",1);a.setXY(b);},getPosition:function(b){var a=this.overlay.get("boundingBox");return a.getXY();},onAnimationEnd:function(){if(!CY.Lang.isUndefined(this["animation-handle"])&&!CY.Lang.isNull(this["animation-handle"])){this["animation-handle"].detach();this["animation-handle"]=null;}gIComments.signalAnimationEnd();if(gIComments.animationsEnded()){gIComments.whenAnimationsEnd();}},onAnimationEndFocus:function(){if(!CY.Lang.isUndefined(this["animation-handle"])&&!CY.Lang.isNull(this["animation-handle"])){this["animation-handle"].detach();this["animation-handle"]=null;}gIComments.signalAnimationEnd();if(gIComments.animationsEnded()){gIComments.whenAnimationsEndFocus();}},onAnimationEndReply:function(){if(!CY.Lang.isUndefined(this["animation-handle"])&&!CY.Lang.isNull(this["animation-handle"])){this["animation-handle"].detach();this["animation-handle"]=null;}gIComments.signalAnimationEnd();if(gIComments.animationsEnded()){gIComments.whenAnimationsEndReply();}},setAnimationToPosition:function(d,a,c){var b=this.overlay.get("boundingBox");if(gPrefs.get("general","animduration")<0.011){b.setXY(d);}this.animation.set("to",{xy:d});this.animation.set("duration",gPrefs.get("general","animduration"));if(a){if(c){this["animation-handle"]=this.animation.on("end",this.onAnimationEndReply,this);}else{this["animation-handle"]=this.animation.on("end",this.onAnimationEndFocus,this);}}else{this["animation-handle"]=this.animation.on("end",this.onAnimationEnd,this);}return this.animation;},getHeight:function(){return this.overlay.get("boundingBox").get("offsetHeight");},scrollIntoView:function(){if(!this.overlay.get("contentBox").inViewportRegion()){this.overlay.get("contentBox").scrollIntoView(true);}},_isHostingAForm:function(){return(this.isVisible()&&((gNewReplyHost!=null&&gNewReplyHost==this)||(gEditICommentHost!=null&&gEditICommentHost==this)));}};hasPerm=function(a){return(-1!=CY.Array.indexOf(sv_user_permissions,a));};_afterDlg=function(g){var f=g[0];var h=g[1];var e=g[2];f.call(h,e);};_abortNewCommentConfirmed=function(b){if(isICommentFormVisible()){if(gLayout.isInFrame()){gSync.hideICommentForm({fn:function(){_afterDlg(b);}});gSync.resume();}}};_abortNewReplyConfirmed=function(b){if(gNewReplyHost!=null){if(gLayout.isInFrame()){cancelNewReplyForm();_afterDlg(b);}}};_abortNewEditConfirmed=function(b){if(gEditICommentHost!=null){if(gLayout.isInFrame()){cancelEditForm();_afterDlg(b);}}};checkForOpenedDialog=function(h,f,i,j){var g=[];if(h!=null){g=CY.Array.map(gDb.getThreads([gDb.getComment(h.commentId)]),function(a){return a.id;});}if(isICommentFormVisible()||(gNewReplyHost!=null&&(h==null||CY.Array.indexOf(g,gNewReplyHost.commentId)!=-1))||(gEditICommentHost!=null&&(h==null||CY.Array.indexOf(g,gEditICommentHost.commentId)!=-1))){if(gLayout.isInFrame()){if(isICommentFormVisible()){parent.f_yesNoDialog(gettext("New comment will be canceled, continue?"),gettext("Warning"),null,null,null,_abortNewCommentConfirmed,this,[f,i,j]);}else{if(gNewReplyHost!=null){parent.f_yesNoDialog(gettext("Started reply will be canceled, continue?"),gettext("Warning"),null,null,null,_abortNewReplyConfirmed,this,[f,i,j]);}else{if(gEditICommentHost!=null){parent.f_yesNoDialog(gettext("Started comment edition will be canceled, continue?"),gettext("Warning"),null,null,null,_abortNewEditConfirmed,this,[f,i,j]);}}}}}else{f.call(i,[]);}};gToc=null;instanciateToc=function(){gToc={tocId:CY.guid(),tocTitleId:CY.guid(),closeBtnId:CY.guid(),empty:false};var r={};r.headerContent='

';var t=getElementsByTagNames("h2,h3,h4,h5,h6",document.getElementById("maincontainer"));var m=document.createElement("div");if(t.length>=2){for(var o=0;o]*>/ig,"");n.className="page indent"+t[o].nodeName;m.appendChild(n);var l=t[o].id||"link"+o;n.href="#"+l;t[o].id=l;}}else{m.innerHTML="";gToc.empty=true;}r.bodyContent=m.innerHTML;var s=gLayout.getTopICommentsWidth();var p=new CY.Overlay({zIndex:3,shim:false,visible:false,headerContent:r.headerContent,bodyContent:r.bodyContent,xy:[3,30],width:s});p.get("contentBox").addClass("c-toc");p.get("contentBox").set("id","the-toc");p.render("#leftcolumn");CY.get("#"+gToc.tocTitleId).set("innerHTML",gettext("Table of contents"));gToc.overlay=p;var i=null;i=new CY.Anim({node:p.get("boundingBox"),duration:0.3,easing:CY.Easing.easeOut});gToc.animationHide=i;i.set("to",{opacity:0});gToc["animationHide-handle"]=i.on("end",onTocHideAnimEnd,gToc);var q=null;q=new CY.Anim({node:p.get("boundingBox"),duration:0.3,easing:CY.Easing.easeOut});gToc.animationShow=q;q.set("to",{opacity:1});gToc["animationShow-handle"]=q.on("end",onTocShowAnimEnd,gToc);getElementsByClassName("c-toc")[0].style.width=s+"px";};toggleTocFn=function(){if(isTocVisible()){hideToc();}else{showToc();}};hideToc=function(){gToc.overlay.hide();};onTocHideAnimEnd=function(){this.overlay.hide();gSync.resume();};onTocShowAnimEnd=function(){gSync.resume();};showToc=function(){removeFormErrMsg(gToc.tocId);gIComments.hide();gToc.overlay.show();};isTocVisible=function(){if(gToc!=null){return gToc.overlay.get("visible");}return false;};function getElementsByTagNames(l,k){if(!k){var k=document;}var j=l.split(",");var m=new Array();for(var n=0;n
'+u+'
-X
',bodyContent:'"});this.overlay.get("contentBox").addClass("c-comment");this.overlay.render("#leftcolumn");this.animation=new CY.Anim({node:this.overlay.get("boundingBox"),duration:gPrefs.get("general","animduration"),easing:CY.Easing.easeOut});this.overlay.get("contentBox").query(".c-close").on("click",this.onCloseCommentClick,this);this.overlay.get("contentBox").query(".c-moderate").on("click",this.onModerateCommentClick,this);this.overlay.get("contentBox").query(".c-state-pending").on("click",this.onPendingCommentClick,this);this.overlay.get("contentBox").query(".c-state-approved").on("click",this.onApprovedCommentClick,this);this.overlay.get("contentBox").query(".c-state-unapproved").on("click",this.onUnapprovedCommentClick,this);this.overlay.get("contentBox").query(".c-state-cancel").on("click",this.onCancelStateChangeClick,this);this.overlay.get("contentBox").query(".c-edit").on("click",this.onEditCommentClick,this);this.overlay.get("contentBox").query(".c-delete").on("click",this.onDeleteCommentClick,this);this.overlay.get("contentBox").query(".c-reply").on("click",this.onReplyCommentClick,this);this.overlay.get("contentBox").query(".c-readreplies").on("click",this.onReadRepliesCommentClick,this);this.overlay.get("contentBox").query(".icomment-header").on("mouseenter",this.onMouseEnterHeader,this);this.overlay.get("contentBox").query(".icomment-header").on("mouseleave",this.onMouseLeaveHeader,this);this.overlay.get("contentBox").on("click",this.onCommentClick,this);};IComment.prototype={onCloseCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.closeComment(this);}},onModerateCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-iactions").addClass("displaynone");this.overlay.get("contentBox").query(".c-state-actions").removeClass("displaynone");}},onPendingCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.moderateComment(this,"pending");}},onApprovedCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.moderateComment(this,"approved");}},onUnapprovedCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.moderateComment(this,"unapproved");}},onCancelStateChangeClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-iactions").removeClass("displaynone");this.overlay.get("contentBox").query(".c-state-actions").addClass("displaynone");}},onDeleteCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.removeComment(this);}},onEditCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.showEditForm(this);}},onReplyCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.showReplyForm(this);}},onReadRepliesCommentClick:function(b){b.halt();if(readyForAction()&&this.isVisible()){gSync.openComment(this);}},onCommentClick:function(k){if(readyForAction()&&this.isVisible()){if(k.target.get("target")=="_blank"){var e=k.target;var i=sv_site_url+sv_text_view_show_comment_url;if(e.get("href").indexOf(i)==0){var h=(new RegExp("comment_id_key=([^&]*)","g")).exec(e.get("href"));if(h!=null){var l=h[1];var j=gDb.getCommentByIdKey(l);if(j!=null){k.halt();if(!e.hasClass("c-permalink")){checkForOpenedDialog(null,function(){gSync.showSingleComment(j);});}}}}}else{if(gShowingAllComments){if(!this._isHostingAForm()){var j=gDb.getComment(this.commentId);checkForOpenedDialog(null,function(){if(j!=null){gSync.showSingleComment(j);}});}}else{gSync.activate(this);}}}},onMouseEnterHeader:function(){if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-permalink").removeClass("displaynone");}},onMouseLeaveHeader:function(){if(readyForAction()&&this.isVisible()){this.overlay.get("contentBox").query(".c-permalink").addClass("displaynone");}},setWidth:function(b){this.overlay.get("boundingBox").setStyle("width",b+"px");},activate:function(){this.overlay.get("boundingBox").addClass("c-focus-comment");},deactivate:function(){this.overlay.get("boundingBox").removeClass("c-focus-comment");},hide:function(){if(gIComments.isTopActive(this.commentId)){if(!gIComments.activateVisibleNext()){gIComments.deactivate();}}if(this.isVisible()){this.overlay.hide();this.overlay.blur();}},hideContent:function(){this.overlay.get("contentBox").query(".icomment-header").addClass("displaynone");this.overlay.get("contentBox").query(".icomment-body").addClass("displaynone");},showContent:function(){this.overlay.get("contentBox").query(".icomment-header").removeClass("displaynone");this.overlay.get("contentBox").query(".icomment-body").removeClass("displaynone");},isVisible:function(){return this.overlay.get("visible");},show:function(){this.hideReadRepliesLnk();return this.overlay.show();},showReadRepliesLnk:function(){this.overlay.get("contentBox").query(".c-readreplies").removeClass("displaynone");},hideReadRepliesLnk:function(){this.overlay.get("contentBox").query(".c-readreplies").addClass("displaynone");},changeModeration:function(c){var d=this.overlay.get("contentBox").query(".c-moderate");d.set("innerHTML",gettext(c.state));d.removeClass("c-state-approved");d.removeClass("c-state-pending");d.removeClass("c-state-unapproved");d.addClass("c-state-"+c.state);this.overlay.get("contentBox").query(".c-iactions").removeClass("displaynone");this.overlay.get("contentBox").query(".c-state-actions").addClass("displaynone");},isfetched:function(){return(this.commentId!=null);},unfetch:function(){this.commentId=null;},fetch:function(z){this.commentId=z.id;var F=this.overlay.get("boundingBox");if(z.start_wrapper!=-1){F.addClass("c-has-scope");F.removeClass("c-has-no-scope");}else{F.addClass("c-has-no-scope");F.removeClass("c-has-scope");}if(z.reply_to_id!=null){F.addClass("c-is-reply");}else{F.removeClass("c-is-reply");}var B=interpolate(gettext("last modified on %(date)s"),{date:z.modified_user_str},true);var v=(z.modified==z.created)?"":' * ';var x=gettext("Permalink to this comment");var s='¶ ';var w=interpolate(gettext("by %(name)s, created on %(date)s"),{name:z.name,date:z.created_user_str},true);var E='
'+z.title+s+'
'+w+"
";var D=CY.Node.create(E);var r=F.query(".c-header");if(r==null){F.query(".icomment-header").insertBefore(D,F.one(".c-iactions"));}else{r.get("parentNode").replaceChild(D,r);}var A=CY.Node.create('
tags:'+z.tags+"
");var t=F.query(".c-tags");if(t==null){F.query(".icomment-header").appendChild(A);}else{t.get("parentNode").replaceChild(A,t);}if(z.tags==""){A.addClass("displaynone");}var H=CY.Node.create('
'+gettext("category")+': '+categories[z.category]+"
");var y=F.query(".c-cat");if(y==null){F.query(".icomment-header").appendChild(H);}else{y.get("parentNode").replaceChild(H,y);}if(z.category==0){H.addClass("displaynone");}var C=CY.Node.create(''+z.content_html+"");var G=F.query(".c-content");if(G==null){F.query(".icomment-body").appendChild(C);}else{G.get("parentNode").replaceChild(C,G);}if(sv_prefix==""){F.query(".c-permalink").set("href",sv_site_url+z.permalink);}else{comment_id_delta_prefix=sv_delta!=""?Array(parseInt(sv_delta)+1).join(","):"";F.query(".c-permalink").set("href",top.location.protocol+"//"+top.location.hostname+top.location.pathname+"?comment_id_key="+comment_id_delta_prefix+z.id_key);}this.changeModeration(z);var u=F.queryAll(".c-content a");if(u!=null){u.setAttribute("target","_blank");}u=F.queryAll(".c-header-title a");if(u!=null){u.setAttribute("target","_blank");}this.permAdapt(z);},permAdapt:function(h){var f=this.overlay.get("contentBox").query(".c-delete");if(f){if(!h.can_delete){f.addClass("displaynone");}else{f.removeClass("displaynone");}}var g=this.overlay.get("contentBox").query(".c-edit");if(g){if(!h.can_edit){g.addClass("displaynone");}else{g.removeClass("displaynone");}}var i=this.overlay.get("contentBox").query(".c-reply");if(i){if(!hasPerm("can_create_comment")){i.addClass("displaynone");}else{i.removeClass("displaynone");}}var j=this.overlay.get("contentBox").query(".c-moderate");if(j){if(!h.can_moderate){j.addClass("displaynone");}else{j.removeClass("displaynone");}}},setThreadPad:function(b){this.overlay.get("contentBox").query(".yui-widget-hd").setStyle("paddingLeft",b+"px");this.overlay.get("contentBox").query(".yui-widget-bd").setStyle("paddingLeft",b+"px");},setPosition:function(c){var d=this.overlay.get("boundingBox");d.setStyle("opacity",1);d.setXY(c);},getPosition:function(c){var d=this.overlay.get("boundingBox");return d.getXY();},onAnimationEnd:function(){if(!CY.Lang.isUndefined(this["animation-handle"])&&!CY.Lang.isNull(this["animation-handle"])){this["animation-handle"].detach();this["animation-handle"]=null;}gIComments.signalAnimationEnd();if(gIComments.animationsEnded()){gIComments.whenAnimationsEnd();}},onAnimationEndFocus:function(){if(!CY.Lang.isUndefined(this["animation-handle"])&&!CY.Lang.isNull(this["animation-handle"])){this["animation-handle"].detach();this["animation-handle"]=null;}gIComments.signalAnimationEnd();if(gIComments.animationsEnded()){gIComments.whenAnimationsEndFocus();}},onAnimationEndReply:function(){if(!CY.Lang.isUndefined(this["animation-handle"])&&!CY.Lang.isNull(this["animation-handle"])){this["animation-handle"].detach();this["animation-handle"]=null;}gIComments.signalAnimationEnd();if(gIComments.animationsEnded()){gIComments.whenAnimationsEndReply();}},setAnimationToPosition:function(g,f,h){var e=this.overlay.get("boundingBox");if(gPrefs.get("general","animduration")<0.011){e.setXY(g);}this.animation.set("to",{xy:g});this.animation.set("duration",gPrefs.get("general","animduration"));if(f){if(h){this["animation-handle"]=this.animation.on("end",this.onAnimationEndReply,this);}else{this["animation-handle"]=this.animation.on("end",this.onAnimationEndFocus,this);}}else{this["animation-handle"]=this.animation.on("end",this.onAnimationEnd,this);}return this.animation;},getHeight:function(){return this.overlay.get("boundingBox").get("offsetHeight");},scrollIntoView:function(){if(!this.overlay.get("contentBox").inViewportRegion()){this.overlay.get("contentBox").scrollIntoView(true);}},_isHostingAForm:function(){return(this.isVisible()&&((gNewReplyHost!=null&&gNewReplyHost==this)||(gEditICommentHost!=null&&gEditICommentHost==this)));}};hasPerm=function(b){return(-1!=CY.Array.indexOf(sv_user_permissions,b));};paintCommentScope=function(b){if(b.reply_to_id==null&&b.start_wrapper!=-1){var a={start:{elt:document.getElementById("sv_"+b.start_wrapper),offset:b.start_offset},end:{elt:document.getElementById("sv_"+b.end_wrapper),offset:b.end_offset}};if(document.getElementById("sv_"+b.start_wrapper)==null){warn_server({from:"paintCommentScope",start_wrapper:b.start_wrapper});}else{if(document.getElementById("sv_"+b.end_wrapper)==null){warn_server({from:"paintCommentScope",end_wrapper:b.end_wrapper});}else{a.start=_convertSelectionFromCSToCC(a.start);a.end=_convertSelectionFromCSToCC(a.end);renderComment(a,b.id);}}}};getCommentIdsFromClasses=function(b){var a=[];var e=b.className.split(" ");for(var d=0,c=e.length;d=e){if(g.category){CY.DOM.addClass(f,"cat"+g.category);}}}}};_recAddComment=function(a,b){if(CY.DOM.hasClass(a,"c-c")){_addIdClass(a,b);}else{var d=a.firstChild;while(d!=null){_recAddComment(d,b);d=d.nextSibling;}}};_findCommonAncestor=function(c,a){if(_bruteContains(c,a)){return c;}else{var b=a;while((b!=null)&&!_bruteContains(b,c)){b=b.parentNode;}return b;}};_cregexCache={};_cgetRegExp=function(b,a){a=a||"";if(!_cregexCache[b+a]){_cregexCache[b+a]=new RegExp(b,a);}return _cregexCache[b+a];};_updateCommentCounter=function(b){var c=_cgetRegExp("(?:^|\\s+)c-id-(?:\\d+)","g");var d=b.className.match(c);var a=(d==null)?0:d.length;c=_cgetRegExp("(?:^|\\s+)c-count-(?:\\d+)","g");b.className=b.className.replace(c," ");CY.DOM.addClass(b,"c-count-"+a+" ");if(a>0){b.setAttribute("title",a+ngettext(" comment"," comments",a));if(a>25){CY.DOM.addClass(b,"c-count-25");}}};_convertSelectionFromCCToCS=function(b){var d=b.offset;var a=b.elt.parentNode;var c=b.elt.previousSibling;while(c!=null){d+=_getTextNodeContent(c).length;c=c.previousSibling;}return{elt:a,offset:d};};_convertSelectionFromCSToCC=function(d){var a={elt:null,offset:-1};var f=null;var e=d.elt.firstChild;var c=0;while(e!=null){var b=c;c+=_getTextNodeContent(e).length;if(c>=d.offset){a.elt=e;a.offset=d.offset-b;break;}e=e.nextSibling;}return a;};unpaintCommentScope=function(k){var j=k.id;var r="c-id-"+j;var m=[];var t=CY.all("."+r);if(t!=null){for(var h=0,d=t.size();h0){var l=r.getRangeAt(0);h=l.toString();if(h!=""){var E=document.createRange();E.setStart(r.anchorNode,r.anchorOffset);E.collapse(true);var B=document.createRange();B.setEnd(r.focusNode,r.focusOffset);B.collapse(false);var I=(B.compareBoundaryPoints(2,E)==1);J=(I)?r.anchorNode.parentNode:r.focusNode.parentNode;if(J.nodeName=="mi"||J.nodeName=="mo"){J=J.parentElement.parentElement.parentElement.parentElement;}innerStartNode=(I)?r.anchorNode:r.focusNode;m=(I)?r.focusNode.parentNode:r.anchorNode.parentNode;if(m.nodeName=="mi"||m.nodeName=="mo"){m=m.parentElement.parentElement.parentElement.parentElement;}innerEndNode=(I)?r.focusNode:r.anchorNode;D=(I)?r.anchorOffset:r.focusOffset;c=(I)?r.focusOffset:r.anchorOffset;if(!hasWrapperAncestor(m)&&hasWrapperAncestor(J)){var z=document.createRange();z.setStart(innerStartNode,D);var b=getWrapperAncestor(J);var q=b;z.setEndAfter(q);var f=parseInt(b.id.substring("sv_".length));while(z.toString().lengthv.compareBoundaryPoints(2,l))){J=k.firstChild;D=0;m=F.lastChild;c=CY.DOM.getText(F).length;w=true;break;}}if(w){break;}}}}}E.detach();B.detach();}else{return null;}}else{return null;}}else{if(document.selection){var d=document.selection.createRange();if(d.text.length==0){return null;}var a=d.parentElement();var H=d.duplicate();var u=d.duplicate();H.collapse(true);u.collapse(false);J=H.parentElement();while(H.moveStart("character",-1)!=0){if(H.parentElement()!=J){break;}D++;}m=u.parentElement();while(u.moveEnd("character",-1)!=0){if(u.parentElement()!=m){break;}c++;}h=d.text;}}if(!hasWrapperAncestor(J)||!hasWrapperAncestor(m)){return null;}return{text:h,start:{elt:J,offset:D},end:{elt:m,offset:c}};};Preferences=function(){this.prefs={};};Preferences.prototype={init:function(){this._read();},_read:function(){for(var b in gConf.defaultPrefs){this.prefs[b]={};for(var a in gConf.defaultPrefs[b]){var c=null;if(b=="user"&&(a=="name"||a=="email")){c=CY.Cookie.get("user_"+a);}else{c=CY.Cookie.getSub(b,a);}this.prefs[b][a]=(c==null)?gConf.defaultPrefs[b][a]:c;}}},persist:function(b,a,d){var c={path:"/",expires:(new Date()).setFullYear(2100,0,1)};if(b=="user"&&(a=="name"||a=="email")){CY.Cookie.set("user_"+a,d,c);}else{CY.Cookie.setSub(b,a,d,c);}this.prefs[b][a]=d;},get:function(b,a){return this.prefs[b][a];},readDefault:function(b,a){return gConf.defaultPrefs[b][a];},reset:function(a){for(var b=0;b',nameInput:gettext("Username:")+'
',emailInput:gettext("E-mail address:")+'
',titleInput:gettext("Title:")+'
',contentInput:gettext("Content:")+'
',tagsInput:gettext("Tag:")+'
',hidden:'',formEnd:"",changeScope:'
'+gettext("Modify comment's scope:")+'
',headerTitle:'
',currentSel:'
'+gettext("Comment will apply to this selection:")+'
'+gNoSelectionYet+"
#hiddeninput#
",btns:'
',closeIcon:'      '};getHtml=function(g){ret={};ret.headerContent="";if("closeBtnId" in g){ret.headerContent+=gFormHtml.closeIcon.replace("###",g.closeBtnId);}ret.headerContent+=gFormHtml.headerTitle.replace("###",g.formTitleId);var b="";if("changeScopeInputId" in g){b=gFormHtml.changeScope.replace("###",g.changeScopeInputId);}var f="
"+gFormHtml.hidden.replace("###",g.selectionPlaceId).replace("???","selection_place")+"
";var a=gFormHtml.currentSel.replace("###",g.currentSelId).replace("???",g.currentSelIdI).replace("#hiddeninput#",f);var e=gFormHtml.btns.replace("###",g.addBtnId).replace("???",g.cancelBtnId);var d=gFormHtml.formStart.replace("###",g.formId)+b+a;if("nameInputId" in g){d=d+gFormHtml.nameInput.replace("###",g.nameInputId);}if("emailInputId" in g){d=d+gFormHtml.emailInput.replace("###",g.emailInputId);}d=d+gFormHtml.titleInput.replace("###",g.titleInputId)+gFormHtml.contentInput.replace("###",g.contentInputId);categories=CY.JSON.parse(sv_categories);if(categories.hasOwnProperty("0")){category_options="";for(c in categories){category_options+='";}gFormHtml.categoryInput=gettext("Category:")+' ";d=d+''+gFormHtml.categoryInput.replace("###",g.categoryInputId)+"
";}d=d+gFormHtml.tagsInput.replace("###",g.tagsInputId);d=d+gFormHtml.hidden.replace("###",g.formatInputId).replace("???","format");d=d+gFormHtml.hidden.replace("###",g.startWrapperInputId).replace("???","start_wrapper");d=d+gFormHtml.hidden.replace("###",g.endWrapperInputId).replace("???","end_wrapper");d=d+gFormHtml.hidden.replace("###",g.startOffsetInputId).replace("???","start_offset");d=d+gFormHtml.hidden.replace("###",g.endOffsetInputId).replace("???","end_offset");d=d+gFormHtml.hidden.replace("###",g.keyId).replace("???","comment_key");d=d+gFormHtml.hidden.replace("###",g.editCommentId).replace("???","edit_comment_id");d=d+e+gFormHtml.formEnd;ret.bodyContent=d;return ret;};changeFormFieldsWidth=function(e,d){var a=(d-20)+"px";var b=CY.all("#"+e+" input[type='text']");if(b!=null){b.setStyle("width",a);}b=CY.all("#"+e+" textarea");if(b!=null){b.setStyle("width",a);}};addFormErrMsg=function(k,h,f){var g=document.getElementById(k);var b,j,d,a;for(b=0,a=g.elements.length;b"+b+"";};urlEncode=function(h){if(!h){return"";}var c=[];for(var f in h){var e=h[f],b=encodeURIComponent(f);var g=typeof e;if(g=="undefined"){c.push(b,"=&");}else{if(g!="function"&&g!="object"){c.push(b,"=",encodeURIComponent(e),"&");}else{if(CY.Lang.isArray(e)){if(e.length){for(var d=0,a=e.length;de[d]){b=e[g];e[g]=e[d];e[d]=b;}return;}a=e[parseInt((g+d)/2)];e[parseInt((g+d)/2)]=e[g];e[g]=a;c=g+1;f=d;do{while(c<=f&&e[c]<=a){c++;}while(e[f]>a){f--;}if(c0){this._animateTo(a);}}},_showFocusSingleComment:function(d,c,b){if(d!=null){var a=0;if(d.start_wrapper!=-1){a=CY.get(".c-id-"+d.id).getY();}else{a=CY.get("document").get("scrollTop");}this._showComments([d.id],a,false);if(d.replies.length>0||b){this._animateToAndFocus(a,c.id,b);}}},showSingleComment:function(a){this._q.add({fn:CY.bind(this.setPreventClickOn,this)});this._showSingleComment(a);this._q.add({fn:CY.bind(this.setPreventClickOff,this)});this._q.run();},showFocusSingleComment:function(c,b,a){this._q.add({fn:CY.bind(this.setPreventClickOn,this)});this._showFocusSingleComment(c,b,a);this._q.add({fn:CY.bind(this.setPreventClickOff,this)});this._q.run();},browse:function(a,b){var c=gIComments.browse(a,b);if(c!=null){this.showSingleComment(c);}},_showComments:function(c,b,a){this._q.add({fn:function(){gShowingAllComments=a;gIComments.hide();hideToc();var d=CY.Array.map(c,function(g){return gDb.getComment(g);});var f=gDb.getThreads(d);gIComments.fetch(f);if(c.length>0){if(a){CY.get("document").set("scrollTop",0);}else{gIComments.activate(c[0]);var e=CY.get(".c-id-"+c[0]);if(e&&!e.inViewportRegion()){e.scrollIntoView(true);if(parent){parent.document.getElementById("outer-north").scrollIntoView(true);}}}}gIComments.setPosition([gConf.iCommentLeftPadding,b]);gIComments.show();}});},_animateTo:function(a){this._q.add({fn:function(){gIComments.setAnimationToPositions(a);}},{id:"animationRun",autoContinue:false,fn:CY.bind(gIComments.runAnimations,gIComments)});},_animateToAndFocus:function(a,c,b){this._q.add({fn:function(){gIComments.setAnimationToPositionsAndFocus(a,c,b);}},{id:"animationRun",autoContinue:false,fn:CY.bind(gIComments.runAnimations,gIComments)});},_animateToTop:function(){var a=gIComments.getTopPosition();if(a!=null){this._animateTo(a[1]);}},animateToTop:function(){this._q.add({fn:CY.bind(this.setPreventClickOn,this)});this._animateToTop();this._q.add({fn:CY.bind(this.setPreventClickOff,this)});this._q.run();},showAllComments:function(){checkForOpenedDialog(null,function(){gShowingAllComments=true;var a=CY.Array.map(gDb.comments,function(b){return b.id;});if(parent.$("#browse_by").val()=="scope"){a.sort(function(d,c){if(gDb.ordered_comment_ids.scope.indexOf(d)gDb.ordered_comment_ids.scope.indexOf(c)){return 1;}return 0;});}this.showComments(a,[0,30],true);},this,null);},showScopeRemovedComments:function(){checkForOpenedDialog(null,function(){gShowingAllComments=true;var b=CY.Array.filter(gDb.comments,function(c){return(c.start_wrapper==-1);});var a=CY.Array.map(b,function(d){return d.id;});if(parent.$("#browse_by").val()=="scope"){a.sort(function(d,c){if(gDb.ordered_comment_ids.scope.indexOf(d)gDb.ordered_comment_ids.scope.indexOf(c)){return 1;}return 0;});}this.showComments(a,[0,30],true);},this,null);},showComments:function(c,b,a){checkForOpenedDialog(null,function(){this._q.add({fn:CY.bind(this.setPreventClickOn,this)});this._showComments(c,b[1],a);this._animateTo(b[1]);this._q.add({fn:CY.bind(this.setPreventClickOff,this)});this._q.run();},this,null);},openComment:function(a){this._q.add({fn:CY.bind(this.setPreventClickOn,this)});var b=gIComments.getTopPosition()[1];this._q.add({fn:function(){gIComments.open(a.commentId);gIComments.refresh(a.commentId);}});this._animateTo(b);this._q.add({fn:CY.bind(this.setPreventClickOff,this)});this._q.run();},closeComment:function(a){checkForOpenedDialog(a,function(){this._q.add({fn:CY.bind(this.setPreventClickOn,this)});var b=gIComments.getTopPosition()[1];this._q.add({fn:function(){var c=gDb.getComment(a.commentId);gIComments.close(a.commentId);if(c.reply_to_id!=null){gIComments.refresh(c.reply_to_id);}}});this._animateTo(b);this._q.add({fn:CY.bind(this.setPreventClickOff,this)});this._q.run();},this,null);},activate:function(a){gIComments.activate(a.commentId);}};readyForAction=function(){return !gSync._iPreventClick;};gEditICommentHost=null;gEdit=null;dbgc=null;showEditForm=function(a){if(gEdit==null){gEdit={ids:{formId:CY.guid(),formTitleId:CY.guid(),nameInputId:CY.guid(),emailInputId:CY.guid(),titleInputId:CY.guid(),contentInputId:CY.guid(),tagsInputId:CY.guid(),categoryInputId:CY.guid(),formatInputId:CY.guid(),startWrapperInputId:CY.guid(),endWrapperInputId:CY.guid(),startOffsetInputId:CY.guid(),endOffsetInputId:CY.guid(),changeScopeInputId:CY.guid(),changeScopeInputWrapper:CY.guid(),selectionPlaceId:CY.guid(),keyId:CY.guid(),editCommentId:CY.guid(),currentSelId:CY.guid(),currentSelIdI:CY.guid(),addBtnId:CY.guid(),cancelBtnId:CY.guid()},handlers:{}};}gEditICommentHost=a;gEditICommentHost.hideContent();var c=getHtml(gEdit.ids);var b='
'+c.headerContent+"
";var e='
'+c.bodyContent+"
";gEditICommentHost.overlay.setStdModContent(CY.WidgetStdMod.HEADER,CY.Node.create(b),CY.WidgetStdMod.AFTER);gEditICommentHost.overlay.setStdModContent(CY.WidgetStdMod.BODY,CY.Node.create(e),CY.WidgetStdMod.AFTER);CY.get("#"+gEdit.ids["formTitleId"]).set("innerHTML",gettext("Edit comment"));var f=gDb.getComment(gEditICommentHost.commentId);CY.get("#"+gEdit.ids["editCommentId"]).set("value",f.id);CY.get("#"+gEdit.ids["keyId"]).set("value",f.key);CY.get("#"+gEdit.ids["changeScopeInputId"]+" input").set("checked",false);if(f.reply_to_id!=null){CY.get("#"+gEdit.ids["changeScopeInputId"]).addClass("displaynone");CY.get("#"+gEdit.ids["categoryInputId"]).addClass("displaynone");CY.get("#"+gEdit.ids["categoryInputId"]).ancestor().addClass("displaynone");}changeScopeFormClick();CY.get("#"+gEdit.ids["nameInputId"]).set("value",f.name);CY.get("#"+gEdit.ids["emailInputId"]).set("value",f.email);if(f.logged_author){CY.get("#"+gEdit.ids["nameInputId"]).setAttribute("disabled",true);CY.get("#"+gEdit.ids["emailInputId"]).setAttribute("disabled",true);}CY.get("#"+gEdit.ids["titleInputId"]).set("value",f.title);CY.get("#"+gEdit.ids["contentInputId"]).set("value",f.content);CY.get("#"+gEdit.ids["tagsInputId"]).set("value",f.tags);if(CY.get("#"+gEdit.ids["categoryInputId"])){CY.get("#"+gEdit.ids["categoryInputId"]).set("value",f.category);}CY.get("#"+gEdit.ids["formatInputId"]).set("value",gConf.defaultCommentFormat);var d=gLayout.getTopICommentsWidth();changeFormFieldsWidth(gEdit.ids["formId"],d);gEdit.handlers["addBtnId"]=CY.on("click",onEditSaveClick,"#"+gEdit.ids["addBtnId"]);gEdit.handlers["cancelBtnId"]=CY.on("click",onEditCancelClick,"#"+gEdit.ids["cancelBtnId"]);gEdit.handlers["changeScope"]=CY.on("click",onChangeScopeClick,"#"+gEdit.ids["changeScopeInputId"]);};onEditSaveClick=function(a){if(readyForAction()){gSync.editComment();}};onEditCancelClick=function(a){if(readyForAction()){gSync.cancelEdit();}};onChangeScopeClick=function(){if(readyForAction()){gSync.changeScopeFormClick();}else{var a=CY.get("#"+gEdit.ids["changeScopeInputId"]+" input");var b=a.get("checked");a.set("checked",!b);}};changeScopeFormClick=function(){var a=CY.get("#"+gEdit.ids["currentSelId"]);if(CY.get("#"+gEdit.ids["changeScopeInputId"]+" input").get("checked")){a.removeClass("displaynone");}else{a.addClass("displaynone");}};cancelEditForm=function(){if(gEditICommentHost!=null){for(var b in gEdit.handlers){if(gEdit.handlers[b]!=null){gEdit.handlers[b].detach();gEdit.handlers[b]=null;}}var a=gEditICommentHost.overlay.get("contentBox").query(".icomment-edit-body");a.get("parentNode").removeChild(a);a=gEditICommentHost.overlay.get("contentBox").query(".icomment-edit-header");a.get("parentNode").removeChild(a);gEditICommentHost.showContent();gEditICommentHost=null;}};gICommentForm=null;instanciateICommentForm=function(){gICommentForm={position:[CY.WidgetPositionExt.TL,CY.WidgetPositionExt.TL],formId:CY.guid(),formTitleId:CY.guid(),titleInputId:CY.guid(),contentInputId:CY.guid(),tagsInputId:CY.guid(),categoryInputId:CY.guid(),formatInputId:CY.guid(),startWrapperInputId:CY.guid(),endWrapperInputId:CY.guid(),startOffsetInputId:CY.guid(),endOffsetInputId:CY.guid(),selectionPlaceId:CY.guid(),keyId:CY.guid(),currentSelId:CY.guid(),currentSelIdI:CY.guid(),addBtnId:CY.guid(),cancelBtnId:CY.guid(),closeBtnId:CY.guid()};if(!sv_loggedIn){gICommentForm.nameInputId=CY.guid();gICommentForm.emailInputId=CY.guid();}var c=getHtml(gICommentForm);var e=gLayout.getTopICommentsWidth();var b=new CY.Overlay({zIndex:3,shim:false,visible:false,headerContent:c.headerContent,bodyContent:c.bodyContent,xy:[10,10],width:e});b.get("contentBox").addClass("c-newcomment");b.render("#leftcolumn");if(!sv_loggedIn){CY.get("#"+gICommentForm.nameInputId).set("value",gPrefs.get("user","name"));CY.get("#"+gICommentForm.emailInputId).set("value",gPrefs.get("user","email"));}CY.get("#"+gICommentForm.formTitleId).set("innerHTML",gettext("New comment"));CY.get("#"+gICommentForm.formatInputId).set("value",gConf.defaultCommentFormat);CY.on("click",onSubmitICommentFormClick,"#"+gICommentForm.addBtnId);CY.on("click",onCancelICommentFormClick,"#"+gICommentForm.cancelBtnId);CY.on("click",onCancelICommentFormClick,"#"+gICommentForm.closeBtnId);gICommentForm.overlay=b;var d=null;d=new CY.Anim({node:b.get("boundingBox"),duration:0.3,easing:CY.Easing.easeOut});gICommentForm.animationHide=d;d.set("to",{opacity:0});gICommentForm["animationHide-handle"]=d.on("end",onICommentFormHideAnimEnd,gICommentForm);var a=null;a=new CY.Anim({node:b.get("boundingBox"),duration:0.3,easing:CY.Easing.easeOut});gICommentForm.animationShow=a;a.set("to",{opacity:1});gICommentForm["animationShow-handle"]=a.on("end",onICommentFormShowAnimEnd,gICommentForm);changeFormFieldsWidth(gICommentForm.formId,e);};cleanICommentForm=function(){CY.get("#"+gICommentForm.currentSelIdI).set("innerHTML",gNoSelectionYet);var a=gICommentForm.overlay.getStdModNode(CY.WidgetStdMod.BODY);a.queryAll(".comment_input").set("value","");CY.get("#"+gICommentForm.formatInputId).set("value",gConf.defaultCommentFormat);if(!sv_loggedIn){a.queryAll(".user_input").set("value","");}};onICommentFormHideAnimEnd=function(){this.overlay.hide();gSync.resume();};onICommentFormShowAnimEnd=function(){gSync.resume();};onSubmitICommentFormClick=function(){if(!sv_loggedIn){var b=CY.get("#"+gICommentForm.nameInputId).get("value");gPrefs.persist("user","name",b);var a=CY.get("#"+gICommentForm.emailInputId).get("value");gPrefs.persist("user","email",a);}gSync.saveComment(gICommentForm.formId);};onCancelICommentFormClick=function(){gSync.cancelICommentForm();};_updateICommentFormSelection=function(c,e,b,a){var d=CY.Node.get("#"+c.currentSelIdI);if(d!=null){d.set("innerHTML",e);}d=CY.get("#"+c.startWrapperInputId);if(d!=null){d.set("value",b.elt.id.substring("sv_".length));}d=CY.get("#"+c.startOffsetInputId);if(d!=null){d.set("value",b.offset);}d=CY.get("#"+c.endWrapperInputId);if(d!=null){d.set("value",a.elt.id.substring("sv_".length));}d=CY.get("#"+c.endOffsetInputId);if(d!=null){d.set("value",a.offset);}};updateICommentFormSelection=function(h){var i=(h==null)?"":h.text;if(i!=""){var f=i;var b=100;if(i.length>b){var a=i.substring(0,(i.substring(0,b/2)).lastIndexOf(" "));var d=i.substring(i.length-b/2);var c=d.substring(d.indexOf(" "));f=a+" ... "+c;}var e=_convertSelectionFromCCToCS(h.start);var g=_convertSelectionFromCCToCS(h.end);_updateICommentFormSelection(gICommentForm,f,e,g);if(gEdit!=null){_updateICommentFormSelection(gEdit.ids,f,e,g);}positionICommentForm();}};showICommentForm=function(){removeFormErrMsg(gICommentForm.formId);if(!sv_loggedIn){if(CY.get("#"+gICommentForm.nameInputId).get("value")==""){CY.get("#"+gICommentForm.nameInputId).set("value",gPrefs.get("user","name"));}if(CY.get("#"+gICommentForm.emailInputId).get("value")==""){CY.get("#"+gICommentForm.emailInputId).set("value",gPrefs.get("user","email"));}}gIComments.hide();hideToc();positionICommentForm();gICommentForm.overlay.show();CY.get("#"+gICommentForm.titleInputId).focus();};isICommentFormVisible=function(){if(gICommentForm!=null){return gICommentForm.overlay.get("visible");}return false;};positionICommentForm=function(){if(gICommentForm!=null){var b=gICommentForm.overlay;var a=b.get("boundingBox");var c=a.get("offsetHeight");var e=a.get("winHeight");var d=gICommentForm.position;if(c>e){d=[CY.WidgetPositionExt.BL,CY.WidgetPositionExt.BL];}b.set("align",{points:d});if(c<=e){b.set("y",b.get("y")+30);}a.setX(a.getX()+gConf.iCommentLeftPadding);}};Db=function(){this.comments=null;this.allComments=null;this.commentsByDbId={};this.allCommentsByDbId={};this.ordered_comment_ids={};};Db.prototype={init:function(){this.allComments=CY.JSON.parse(sv_comments);if(sv_read_only){this.initToReadOnly();}this._computeAllCommentsByDbId();this._reorder();},_del:function(a,e,g){var f=e[g];for(var c=0;cc){c=a;}}return c;},_upd:function(a,f,g){var e=false;for(var d=0,b=a.length;d0){a=a.concat(this.getThreads(c[b].replies));}}return a;},_getPath:function(b,e){var a=[e];var d=e;while(d.reply_to_id!=null){d=b[d.reply_to_id];a.push(d);}return a;},getPath:function(a){return this._getPath(this.commentsByDbId,a);},getComment:function(a){return this.commentsByDbId[a];},getCommentByIdKey:function(a){for(var c in this.commentsByDbId){var b=this.commentsByDbId[c];if(b.id_key==a){return b;}}return null;},isChild:function(d,b){var c=this.commentsByDbId[d];var a=(d==b);while((!a)&&(c.reply_to_id!=null)){c=this.commentsByDbId[c.reply_to_id];a=(c.id==b);}return a;},initToReadOnly:function(f,c){for(var b=0,a=this.allComments.length;b0){var g=-1;if((f=="prev")||(f=="next")){for(var e=0;e=0)&&(ea.length){break;}}CY.error("internal error in db browse (could not find any filtered comment)");}return null;},computeFilterResults:function(q){var a={};if(q){for(key in q){if(key.indexOf("filter_")==0){a[key.substr("filter_".length)]=q[key];}}}else{if(gLayout.isInFrame()){a=parent.f_getFrameFilterData();}}var y=[];var z=[];var c="";if("name" in a){c=a.name;}this.filterByName(c,y,z);var s=[];var e=[];var F="";if("date" in a){F=a.date;}this.filterByDate(F,s,e);var k=[];var j=[];var w="";if("text" in a){w=a.text;}this.filterByText(w,k,j);var A=[];var p=[];var D="";if("tag" in a){D=a.tag;}this.filterByTag(D,A,p);var b=[];var g=[];var d="";if("cat" in a){d=a.cat;}this.filterByCat(d,b,g);var x=[];var h=[];var n="";if("state" in a){n=a.state;}this.filterByState(n,x,h);var f=[];var C=[];for(var B=0,m=y.length;Bc){if(e.reply_to_id==null){d.push(e.id);}else{a.push(e.id);}}}},getCommentsAndRepliesCounts:function(d){var b=0;var f=0;var a=(d)?this.allComments:this.comments;var e=this.getThreads(a);for(var c=0;c0){b.showReadRepliesLnk();}else{b.hideReadRepliesLnk();}},remove:function(a){this._remove(this._getChildren(a));},close:function(a){CY.Array.each(this._getChildren(a),function(b){b.hide();});},open:function(a){CY.Array.each(this._getChildren(a),function(b){b.show();});},fetch:function(b){for(var a=0;a=f){this._a.push(c.setAnimationToPosition([k,h],f,b));}else{this._a.push(c.setAnimationToPosition([k,h]));}h+=c.getHeight();}}},_initAnimations:function(){this._a=[];this._nbEndedAnim=0;},runAnimations:function(){if(this._a.length==0){gSync.resetAutoContinue("animationRun");}else{CY.each(this._a,function(a){a.run();});}},whenAnimationsEnd:function(){gSync.resume();},whenAnimationsEndFocus:function(){gGETValues=CY.JSON.parse(sv_get_params);if("comment_id_key" in gGETValues){var b=gGETValues.comment_id_key;var a=gDb.getCommentByIdKey(b);if(a!=null){gIComments.getIComment(a.id).overlay.focus();}}gSync.resume();},whenAnimationsEndReply:function(){gGETValues=CY.JSON.parse(sv_get_params);if("comment_id_key" in gGETValues){var b=gGETValues.comment_id_key;var a=gDb.getCommentByIdKey(b);if(a!=null){gSync.showReplyForm(gIComments.getIComment(a.id));}}gSync.resume();},animationsEnded:function(){return((this._a.length==0)||(this._a.length==this._nbEndedAnim));},signalAnimationEnd:function(){this._nbEndedAnim++;},isTopActive:function(a){return((a!=null)&&(this._topActiveCommentDbId==a));},isAnyActive:function(){return(this._topActiveCommentDbId!=null);},activate:function(f){if(this._topActiveCommentDbId!=null){this.deactivate();}var e=gDb.getComment(f);var b=gDb.getPath(e);var a=b[b.length-1];var c=this._getChildren(a.id);CY.Array.each(c,function(g){g.activate();});this._topActiveCommentDbId=a.id;if(gLayout.isInFrame()){var d=gDb.browsingIndex(this._topActiveCommentDbId);parent.$("#browse_by option").each(function(){var g=1+d[this.value];parent.$("#c_browse_indx_"+this.value).html(""+g);});}showScope(a.id);},deactivate:function(){if(this._topActiveCommentDbId!=null){parent.$("#browse_by option").each(function(){parent.$("#c_browse_indx_"+this.value).html("-");});hideScopeAnyway();var a=this._getChildren(this._topActiveCommentDbId);CY.Array.each(a,function(b){b.deactivate();});this._topActiveCommentDbId=null;}},activateVisibleNext:function(){if(this._topActiveCommentDbId!=null){for(var d=0;d<2;d++){var f=(d==0)?0:this._c.length-1;var a=false;for(var e=f;(e>=0)&&e<=(this._c.length-1);){var c=this._c[e];if(c.commentId!=null&&c.isVisible()){a=a||(gDb.isChild(c.commentId,this._topActiveCommentDbId));if(a&&(!gDb.isChild(c.commentId,this._topActiveCommentDbId))){this.activate(c.commentId);return true;}}e=(d==0)?e+1:e-1;}}}return false;},browse:function(b,c){var a=c;if((c=="prev")&&!this.isAnyActive()){a="last";}if((c=="next")&&!this.isAnyActive()){a="first";}return gDb.browse(b,a,this._topActiveCommentDbId);}};gNewReplyHost=null;gNewReply=null;instanciateNewReplyForm=function(i){if(gNewReply==null){gNewReply={val:{name:gPrefs.get("user","name"),email:gPrefs.get("user","email"),title:"",content:"",tags:""},ids:{name:gPrefs.get("user","name"),email:gPrefs.get("user","email"),title:"",content:"",tags:"",formId:CY.guid(),nameInputId:CY.guid(),emailInputId:CY.guid(),titleInputId:CY.guid(),contentInputId:CY.guid(),keyInputId:CY.guid(),formatInputId:CY.guid(),tagsInputId:CY.guid(),parentCommentId:CY.guid(),addBtnId:CY.guid(),cancelBtnId:CY.guid()},handlers:{}};}gNewReplyHost=i;var b='
'+gettext("New reply")+"
";var e=gFormHtml.formStart.replace("###",gNewReply.ids["formId"]);if(!sv_loggedIn){e=e+gFormHtml.nameInput.replace("###",gNewReply.ids["nameInputId"])+gFormHtml.emailInput.replace("###",gNewReply.ids["emailInputId"]);}e=e+gFormHtml.titleInput.replace("###",gNewReply.ids["titleInputId"])+gFormHtml.contentInput.replace("###",gNewReply.ids["contentInputId"])+gFormHtml.tagsInput.replace("###",gNewReply.ids["tagsInputId"]);e=e+gFormHtml.hidden.replace("###",gNewReply.ids["keyInputId"]).replace("???","comment_key");e=e+gFormHtml.hidden.replace("###",gNewReply.ids["formatInputId"]).replace("???","format");e=e+gFormHtml.hidden.replace("###",gNewReply.ids["parentCommentId"]).replace("???","reply_to_id");var h=gFormHtml.btns.replace("###",gNewReply.ids["addBtnId"]).replace("???",gNewReply.ids["cancelBtnId"]);gNewReplyHost.overlay.setStdModContent(CY.WidgetStdMod.FOOTER,b+e+h);var c=gNewReplyHost.overlay.getStdModNode(CY.WidgetStdMod.FOOTER);var f=gDb.getComment(i.commentId);var a="Re: ";var g=(gNewReply.val["title"]==""||gNewReply.val["title"].substring(0,a.length)==a)?a+f.title:gNewReply.val["title"];if(!sv_loggedIn){c.query(".n_name").set("value",gNewReply.val["name"]);c.query(".n_email").set("value",gNewReply.val["email"]);}c.query(".n_title").set("value",g);c.query(".n_content").set("value",gNewReply.val["content"]);c.query(".n_tags").set("value",gNewReply.val["tags"]);c.query("#"+gNewReply.ids["parentCommentId"]).set("value",i.commentId);c.query("#"+gNewReply.ids["formatInputId"]).set("value",gConf.defaultCommentFormat);gNewReplyHost.overlay.get("contentBox").query(".c-reply").addClass("displaynone");gNewReply.handlers["addBtnId"]=CY.on("click",onAddNewReplyClick,"#"+gNewReply.ids["addBtnId"]);gNewReply.handlers["cancelBtnId"]=CY.on("click",onCancelNewReplyClick,"#"+gNewReply.ids["cancelBtnId"]);var d=gLayout.getTopICommentsWidth();changeFormFieldsWidth(gNewReply.ids["formId"],d);CY.get("#"+gNewReply.ids["contentInputId"]).focus();};cleanNewReplyForm=function(){if(gNewReplyHost!=null){var a=gNewReplyHost.overlay.getStdModNode(CY.WidgetStdMod.FOOTER);a.queryAll(".comment_input").set("value","");}};cancelNewReplyForm=function(){if(gNewReplyHost!=null){for(var b in gNewReply.handlers){if(gNewReply.handlers[b]!=null){gNewReply.handlers[b].detach();gNewReply.handlers[b]=null;}}gNewReplyHost.overlay.get("contentBox").query(".c-reply").removeClass("displaynone");var a=gNewReplyHost.overlay.getStdModNode(CY.WidgetStdMod.FOOTER);if(!sv_loggedIn){gNewReply.val["name"]=a.query(".n_name").get("value");gNewReply.val["email"]=a.query(".n_email").get("value");}gNewReply.val["title"]=a.query(".n_title").get("value");gNewReply.val["content"]=a.query(".n_content").get("value");gNewReply.val["tags"]=a.query(".n_tags").get("value");a.set("innerHTML","");gNewReplyHost=null;}};onAddNewReplyClick=function(){if(!sv_loggedIn){var b=CY.get("#"+gNewReply.ids["nameInputId"]).get("value");gPrefs.persist("user","name",b);var a=CY.get("#"+gNewReply.ids["emailInputId"]).get("value");gPrefs.persist("user","email",a);}gSync.saveComment(gNewReply.ids["formId"]);};onCancelNewReplyClick=function(){gSync.cancelReply();};c_persistPreference=function(b,a,c){gPrefs.persist(b,a,c);};c_readDefaultPreference=function(b,a){return gConf.defaultPrefs[b][a];};c_readPreference=function(b,a){return gPrefs.get(b,a);};c_resetPreferences=function(a){gPrefs.reset(a);};c_applyTextStyle=function(a){CY.use(a);};sliderValToPx=function(d){var a=CY.DOM.winWidth();if(gLayout.isInFrame()){a=parent.$(parent).width();}var b=d/100;b=Math.min(b,gConf.sliderFixedMin);b=Math.max(b,gConf.sliderFixedMax);var c=b*a;return Math.floor(c);};c_setCommentsColWidth=function(c){var a=sliderValToPx(c);gLayout.setLeftColumnWidth(a);var b=gLayout.getTopICommentsWidthFromWidth(a);gIComments.setWidth(b);gICommentForm.overlay.get("boundingBox").setStyle("width",b+"px");changeFormFieldsWidth(gICommentForm.formId,b);document.getElementById("the-toc").style.width=b+"px";if(gNewReply){changeFormFieldsWidth(gNewReply.ids["formId"],b);}if(gEdit){changeFormFieldsWidth(gEdit.ids["formId"],b);}};CY=null;gPrefs=null;gLayout=null;gDb=null;gIComments=null;gSync=null;gGETValues=null;gConf={iCommentLeftPadding:4,iCommentThreadPadding:12,defaultCommentFormat:"markdown",sliderFixedMin:0.9,sliderFixedMax:0.1,iCommentsInitAlloc:2,defaultPrefs:{text:{style:"text-modern-style"},user:{name:"",email:""},general:{animduration:"0.4"},comments:{threadpad:"1"},layout:{comments_col_width:"25"}}};if(sv_custom_font){gTextStyles={custom:gettext("custom"),modern:gettext("modern"),classic:gettext("classic"),code:gettext("code")};}else{gTextStyles={modern:gettext("modern"),classic:gettext("classic"),code:gettext("code")};}YUI({base:sv_media_url+"/js/lib/yui/"+c_yui_base+"/build/",timeout:10000}).use("text-modern-style","cookie","json","overlay","io-form","async-queue","event-mouseenter","anim","collection",function(a){CY=a;gPrefs=new Preferences();gPrefs.init();gLayout=new Layout();gLayout.init();if(sv_withComments){gDb=new Db();gDb.init();gIComments=new IComments();gIComments.init();}gSync=new Sync();gSync.init();CY.on("domready",onDomReady,this);});_reinit=function(a){gIComments.hide();gDb.initComments(a.commentIds);unpaintAllComments();renderCommentScopes();updateFilterResultsCount(a.nbDiscussions,a.nbComments,a.nbReplies);};reinit=function(b){var a=gDb.computeFilterResults(b);_reinit(a);};hideAll=function(){_reinit({commentIds:[],nbDiscussions:0,nbComments:0,nbReplies:0});};updateFilterResultsCount=function(f,a,b){var e=gDb.getCommentsAndRepliesCounts(true);var g=e[0],d=e[1];var c=(a!=0||b!=0)&&(g!=a||d!=b);if(gLayout.isInFrame()){parent.f_updateFilterCountDetailed(c);parent.f_updateFilterCountResult(f,a,b,g,d);}};updateResetFilterResultsCount=function(){var c=gDb.getCommentsAndRepliesCounts(false);var a=c[0],b=c[1];var d=a;updateFilterResultsCount(d,a,b);};renderCommentScopes=function(){for(var a=0;a0){checkForOpenedDialog(null,function(){gSync.showComments(a,[f.pageX,f.pageY],false);});}}}}};gLastScrollTime=null;checkForAlignement=function(){var a=(new Date()).getTime();if((gLastScrollTime!=null)&&(a-gLastScrollTime)>200){positionICommentForm();gLastScrollTime=null;}};onFrameScroll=function(){gLastScrollTime=(new Date()).getTime();};browse=function(a,b){gSync.browse(a,b);};initialConnect=function(){CY.on("mouseup",onTextMouseUp,"#textcontainer");gTimer=CY.Lang.later(200,this,checkForAlignement,[],true);CY.on("scroll",onFrameScroll,window,this,true);CY.on("resize",onFrameScroll,window,this,true);};preventLinksInText=function(){var a=function(g){var c=g.target;var d=null;while(c!=null&&d==null){c=c.get("parentNode");d=c.get("href");}if(c!=null&&d!=null){var b=window.location.href;var f=b.indexOf("#");if(f!=-1){b=b.substring(0,f);}if(d.indexOf(b)==-1){window.open(c.get("href"));g.preventDefault();}}};CY.all("#textcontainer a").on("click",a);};onDomReady=function(b){preventLinksInText();var a=new CY.AsyncQueue();a.add({fn:function(){if(gLayout.isInComentSite()){parent.toInitialSize();}if(sv_withComments){instanciateICommentForm();}instanciateToc();},timeout:5},{fn:function(){gGETValues=CY.JSON.parse(sv_get_params);CY.get("#maincontainer").setStyle("display","block");CY.get("#textcontainer").setStyle("display","block");var e=(sv_withComments)?gPrefs.get("layout","comments_col_width"):0;var d=sliderValToPx(e);gLayout.setLeftColumnWidth(d);if(gLayout.isInFrame()){parent.f_initFrame();parent.f_layoutFrames();if(sv_withComments){parent.f_fillTopToolbar();if(hasPerm("can_create_comment")){parent.$("#add_comment_btn").removeClass("initially_hidden");}parent.f_fillFilterTab();parent.f_fillPreferencesTab();var c=CY.JSON.parse(sv_filter_data);parent.f_updateFilterData(c);parent.f_setFilterValue(gGETValues);}parent.f_fillTextPreferencesTab();}if(gLayout.isInComentSite()){parent.$("#c_fullscreen_btn").show();}else{parent.$("#c_fullscreen_btn").hide();}if(gToc.empty){parent.$("#c_toc_btn").hide();}},timeout:5},{fn:function(){if(sv_withComments){reinit(gGETValues);initialConnect();}},timeout:5},{fn:function(){if(gLayout.isInFrame()){parent.f_interfaceUnfreeze();parent.f_removeLoadingMsg();}if("comment_id_key" in gGETValues){var e=gGETValues.comment_id_key;var g=gDb.getCommentByIdKey(e);if(g!=null){var f=gDb.getPath(g);var c=f[f.length-1];var d=gDb.getCommentByIdKey(e);if("comment_op" in gGETValues&&gGETValues.comment_op=="reply"){gSync.showFocusSingleComment(c,d,true);}else{gSync.showFocusSingleComment(c,d,false);}}}if("comments_auto_display" in gGETValues){gSync.showAllComments();}}});a.run();}; \ No newline at end of file diff -r 8ec189cc214d -r b2e0186daa5b src/cm/media/js/client/c_db.js --- a/src/cm/media/js/client/c_db.js Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/media/js/client/c_db.js Tue Jun 25 11:56:01 2013 +0200 @@ -376,6 +376,13 @@ filterTag = filterData['tag'] ; this.filterByTag(filterTag, cWithTagIds, rWithTagIds) ; + var cWithCatIds = [] ; + var rWithCatIds = [] ; + var filterCat = "" ; + if ('cat' in filterData) + filterCat = filterData['cat'] ; + this.filterByCat(filterCat, cWithCatIds, rWithCatIds) ; + var cWithStateIds = [] ; var rWithStateIds = [] ; var filterState = "" ; @@ -389,14 +396,14 @@ // find intersections for (var i = 0, ilen = cWithNameIds.length ; i < ilen ; i++) { var id = cWithNameIds[i] ; - if ((CY.Array.indexOf(cAfterDateIds, id) != -1) && (CY.Array.indexOf(cWithTextIds,id) != -1) && (CY.Array.indexOf(cWithTagIds,id) != -1) && (CY.Array.indexOf(cWithStateIds,id) != -1)) { + if ((CY.Array.indexOf(cAfterDateIds, id) != -1) && (CY.Array.indexOf(cWithTextIds,id) != -1) && (CY.Array.indexOf(cWithTagIds,id) != -1) && (CY.Array.indexOf(cWithCatIds,id) != -1) && (CY.Array.indexOf(cWithStateIds,id) != -1)) { commentIds.push(id) ; } } for (var i = 0, ilen = rWithNameIds.length ; i < ilen ; i++) { var id = rWithNameIds[i] ; - if ((CY.Array.indexOf(rAfterDateIds,id) != -1) && (CY.Array.indexOf(rWithTextIds,id) != -1) && (CY.Array.indexOf(rWithTagIds,id) != -1) && (CY.Array.indexOf(rWithStateIds,id) != -1)) { + if ((CY.Array.indexOf(rAfterDateIds,id) != -1) && (CY.Array.indexOf(rWithTextIds,id) != -1) && (CY.Array.indexOf(rWithTagIds,id) != -1) && (CY.Array.indexOf(rWithCatIds,id) != -1) && (CY.Array.indexOf(rWithStateIds,id) != -1)) { replyIds.push(id) ; } } @@ -467,6 +474,22 @@ } }, + filterByCat : function(cat, cWithCatIds, rWithCatIds) { + for (var id in this.allCommentsByDbId) { + var comment = this.allCommentsByDbId[id] ; + if (cat == "" || comment.category == cat) { + if (comment.reply_to_id == null) { + cWithCatIds.push(comment.id); + if (comment.replies.length) { + for (var reply in comment.replies) { + rWithCatIds.push(comment.replies[reply].id) ; + } + } + } + } + } + }, + filterByState : function(state, cWithStateIds, rWithStateIds) { for (var id in this.allCommentsByDbId) { var comment = this.allCommentsByDbId[id] ; diff -r 8ec189cc214d -r b2e0186daa5b src/cm/media/js/client/c_edit_form.js --- a/src/cm/media/js/client/c_edit_form.js Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/media/js/client/c_edit_form.js Tue Jun 25 11:56:01 2013 +0200 @@ -14,6 +14,7 @@ 'titleInputId':CY.guid(), 'contentInputId':CY.guid(), 'tagsInputId':CY.guid(), + 'categoryInputId':CY.guid(), 'formatInputId':CY.guid(), 'startWrapperInputId':CY.guid(), 'endWrapperInputId':CY.guid(), @@ -56,8 +57,13 @@ CY.get("#"+gEdit['ids']['keyId']).set('value', comment.key) ; CY.get("#"+gEdit['ids']['changeScopeInputId']+" input").set('checked', false) ; - if (comment.reply_to_id != null) + // Edit scope and category just for the first comment in a thread + // => hides these inputs for a reply. + if (comment.reply_to_id != null) { CY.get("#"+gEdit['ids']['changeScopeInputId']).addClass('displaynone') + CY.get("#"+gEdit['ids']['categoryInputId']).addClass('displaynone') + CY.get("#"+gEdit['ids']['categoryInputId']).ancestor().addClass('displaynone') + } changeScopeFormClick() ; // to adapt CY.get("#"+gEdit['ids']['nameInputId']).set('value', comment.name) ; @@ -72,6 +78,8 @@ CY.get("#"+gEdit['ids']['titleInputId']).set('value', comment['title']) ; CY.get("#"+gEdit['ids']['contentInputId']).set('value', comment['content']) ; CY.get("#"+gEdit['ids']['tagsInputId']).set('value', comment['tags']) ; + if ( CY.get("#"+gEdit['ids']['categoryInputId'])) + CY.get("#"+gEdit['ids']['categoryInputId']).set('value', comment['category']) ; CY.get("#"+gEdit['ids']['formatInputId']).set('value',gConf['defaultCommentFormat']) ;// for now ... diff -r 8ec189cc214d -r b2e0186daa5b src/cm/media/js/client/c_icomment.js --- a/src/cm/media/js/client/c_icomment.js Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/media/js/client/c_icomment.js Tue Jun 25 11:56:01 2013 +0200 @@ -326,6 +326,17 @@ if (comment.tags == "") newTagNode.addClass('displaynone') ; + // CATEGORY + var newCatNode = CY.Node.create('
' + gettext("category") + ': ' + categories[comment.category] + '
') ; + var prevCatNode = boundingBoxNode.query(".c-cat") ; + if (prevCatNode == null) + boundingBoxNode.query('.icomment-header').appendChild(newCatNode) ; + else + prevCatNode.get('parentNode').replaceChild(newCatNode, prevCatNode) ; + // NO CATEGORY ? + if (comment.category == 0) + newCatNode.addClass('displaynone') ; + // CONTENT var newContentNode = CY.Node.create('' + comment.content_html + '') ; var prevContentNode = boundingBoxNode.query(".c-content") ; diff -r 8ec189cc214d -r b2e0186daa5b src/cm/media/js/client/c_interface_forms.js --- a/src/cm/media/js/client/c_interface_forms.js Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/media/js/client/c_interface_forms.js Tue Jun 25 11:56:01 2013 +0200 @@ -41,7 +41,20 @@ if ('emailInputId' in ids) html = html + gFormHtml['emailInput'].replace('###', ids['emailInputId']) ; - html = html + gFormHtml['titleInput'].replace('###', ids['titleInputId']) + gFormHtml['contentInput'].replace('###', ids['contentInputId']) + gFormHtml['tagsInput'].replace('###', ids['tagsInputId']); + html = html + gFormHtml['titleInput'].replace('###', ids['titleInputId']) + gFormHtml['contentInput'].replace('###', ids['contentInputId']); + + categories = CY.JSON.parse(sv_categories); + if (categories.hasOwnProperty('0')) { + category_options = ''; + for (c in categories) { + category_options += ''; + } + gFormHtml['categoryInput'] = gettext("Category:") + ' '; + html = html + '' + gFormHtml['categoryInput'].replace('###', ids['categoryInputId']) + '
'; + } + + html = html + gFormHtml['tagsInput'].replace('###', ids['tagsInputId']); + html = html + gFormHtml['hidden'].replace('###', ids['formatInputId']).replace('???', 'format') ; html = html + gFormHtml['hidden'].replace('###', ids['startWrapperInputId']).replace('???', 'start_wrapper') ; html = html + gFormHtml['hidden'].replace('###', ids['endWrapperInputId']).replace('???', 'end_wrapper') ; diff -r 8ec189cc214d -r b2e0186daa5b src/cm/media/js/client/c_scopes.js --- a/src/cm/media/js/client/c_scopes.js Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/media/js/client/c_scopes.js Tue Jun 25 11:56:01 2013 +0200 @@ -266,12 +266,22 @@ //elt is supposed to be c-c classed _addIdClass = function (elt, commentId) { CY.DOM.addClass(elt, 'c-id-' + commentId) ; + var block_elt = _findParentBlockElt(elt); + if (block_elt != null) { + _unpaintCategories(block_elt); + _repaintCategories(elt, block_elt); + } _updateCommentCounter(elt) ; } ; //elt is supposed to be c-c classed _removeIdClass = function (elt, commentId) { CY.DOM.removeClass(elt, 'c-id-' + commentId) ; + var block_elt = _findParentBlockElt(elt); + if (block_elt != null) { + _unpaintCategories(block_elt); + _repaintCategories(elt, block_elt, commentId); + } _updateCommentCounter(elt) ; } ; @@ -280,8 +290,51 @@ var re = _cgetRegExp('(?:^|\\s+)c-id-(?:\\d+)', 'g'); elt['className'] = elt['className'].replace(re, " ") ; _updateCommentCounter(elt) ; + var block_elt = _findParentBlockElt(elt); + if (block_elt != null) { + _unpaintCategories(block_elt); + } } ; +// Finds the closest parent of an element which is a block. +_findParentBlockElt = function(elt) { + var block_elt = elt; + var block_elt_style = block_elt.currentStyle || window.getComputedStyle(block_elt, ""); + var block_elt_display = block_elt_style.display; + while (block_elt != null && block_elt_display != 'block') { + block_elt = block_elt.parentElement; + block_elt_style = block_elt.currentStyle || window.getComputedStyle(block_elt, ""); + block_elt_display = block_elt_style.display; + } + return block_elt; +}; + +// Removes all vertical bars from a block element. +_unpaintCategories = function(block_elt) { + CY.DOM.removeClass(block_elt, 'cat1'); + CY.DOM.removeClass(block_elt, 'cat2'); + CY.DOM.removeClass(block_elt, 'cat3'); + CY.DOM.removeClass(block_elt, 'cat4'); + CY.DOM.removeClass(block_elt, 'cat5'); +} + +// Paints all vertical bars of a block element but the one for commentId if not null. +_repaintCategories = function(elt, block_elt, commentId) { + // Loop through all comments in this wrapper id + var wrapper_id = parseInt(getWrapperAncestor(elt).id.substr(3)); + var len = gDb.comments.length; + for (var i=0; i= wrapper_id) { + if (comment.category) { + CY.DOM.addClass(block_elt, 'cat' + comment.category); + } + } + } + } +} + _recAddComment = function (elt, commentId) { if (CY.DOM.hasClass(elt, 'c-c')) { _addIdClass(elt, commentId) ; diff -r 8ec189cc214d -r b2e0186daa5b src/cm/media/js/client/f_client-min.js --- a/src/cm/media/js/client/f_client-min.js Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/media/js/client/f_client-min.js Tue Jun 25 11:56:01 2013 +0200 @@ -1,1 +1,1 @@ -gFormats=[{actions:["print"],extension:"html",label:gettext("print from the browser")},{actions:["export"],extension:"html",label:gettext("download html file (.html)")},{actions:["export"],extension:"markdown",label:gettext("download markdown file (.mkd)")},{actions:["print"],extension:"pdf",label:gettext("print in PDF format")},{actions:["export"],extension:"pdf",label:gettext("download portable object format file (.pdf)")},{actions:["export"],extension:"latex",label:gettext("download latex file (.tex)")},{actions:["export"],extension:"odt",label:gettext("download open document file (.odt)")},{actions:["export"],extension:"doc",label:gettext("download microsoft word file (.doc)")},{actions:["export"],extension:"docx",label:gettext("download microsoft word 2007 file (.docx)")}];var pandoc_version_ary=sv_pandoc_version.split(".");if(parseInt(pandoc_version_ary[0])>1||(parseInt(pandoc_version_ary[0])==1&&parseInt(pandoc_version_ary[1])>8)){gFormats.push({actions:["export"],extension:"epub",label:gettext("download ebook (.epub)")});}gFormats.push({actions:["export"],extension:"xml",label:gettext("download XML file for re-importing text and comments")});gActions={print:{dialogTitle:gettext("Print text"),chooseFormatLabel:gettext("How do you want to print?"),defaultMethod:"pdf",defaultWithColors:"no",defaultWhichComments:"all"},"export":{dialogTitle:gettext("Export text"),chooseFormatLabel:gettext("Choose file format"),defaultMethod:"pdf",defaultWithColors:"no",defaultWhichComments:"all"}};gCurrentAction=null;_populateMethod=function(g){var f=$("#p_method").val();$("#p_method").html("");for(var d=0,c=gFormats.length;d"+gFormats[d]["label"]+"").appendTo("#p_method");}}}if(f){$("#p_method").val(f);}else{$("#p_method").val(gActions[gCurrentAction]["defaultMethod"]);}};_populateMarkersColorsChoice=function(b){var a=$("#p_color").val();$("#p_color").html("");$("").appendTo("#p_color");$("").appendTo("#p_color");if(a){$("#p_color").val(a);}else{$("#p_color").val(gActions[gCurrentAction]["defaultWithColors"]);}};_populateWhichComments=function(){var c=$("#p_comments").val();$("#p_comments").html("");var a=interpolate(gettext("all (%(nb_comments)s)"),{nb_comments:frames.text_view_comments.gDb.getCommentsNb(true)},true);var b=interpolate(gettext("current filtered ones (%(nb_comments)s)"),{nb_comments:frames.text_view_comments.gDb.getCommentsNb(false)},true);$("").appendTo($("#p_comments"));$("").appendTo($("#p_comments"));$("").appendTo($("#p_comments"));if(c){$("#p_comments").val(c);}else{$("#p_comments").val(gActions[gCurrentAction]["defaultWhichComments"]);}};_manageMarkersColorsChoice=function(){var f=$("#p_method").val();var e=$("#p_comments").val();var c=frames.text_view_comments.gDb.getCommentsNb(true);var d=frames.text_view_comments.gDb.getCommentsNb(false);var b=(e=="all")?c:d;var a;if(gCurrentAction=="print"){a=((b==0)||(e=="none"));}if(gCurrentAction=="export"){a=((b==0)||(e=="none")||(f=="markdown")||(f=="latex")||(f=="epub")||(f=="odt")||(f=="doc")||(f=="xml"));}if(a){$("#p_color").val("no");}$("#p_color").attr("disabled",a);};_initPrintDialog=function(){$("#p_comments").add($("#p_method")).change(function(){_manageMarkersColorsChoice();_prepareOpenInNewWindow();});var a={};a[gettext("Go !")]=function(){var d=$("#p_comments").val();var c=$("#p_color").val();var e=$("#p_method").val();var b=(gCurrentAction=="export")?"1":(e=="html")?"0":"1";var f=$("#print_export_form").attr("target_action").replace(/FoRmAt/,e).replace(/DoWnLoAd/,b).replace(/WhIcHCoMmEnT/,d).replace(/WiThCoLoR/,c);$("#print_export_form").attr("action",f);document.print_export_form.submit();$(this).dialog("close");};a[gettext("Cancel")]=function(){$(this).dialog("close");};$("#dialog_print_export").dialog({bgiframe:true,autoOpen:false,width:500,modal:true,buttons:a,close:function(){}});};openPrintDialog=function(){_openPrintExportDialog("print");};openExportDialog=function(){_openPrintExportDialog("export");};_prepareOpenInNewWindow=function(){var a=$("#p_method").val();if((a=="html")&&(gCurrentAction=="print")){$("#print_export_form").attr("target","_blank");}else{$("#print_export_form").removeAttr("target");}};_openPrintExportDialog=function(a){gCurrentAction=a;$("#ui-dialog-title-dialog_print_export").html(gActions[gCurrentAction]["dialogTitle"]);$("#how").html(gActions[gCurrentAction]["chooseFormatLabel"]);$("#print_export_action").val(a);_populateWhichComments();_populateMarkersColorsChoice();_populateMethod();_manageMarkersColorsChoice();_prepareOpenInNewWindow();$("#dialog_print_export").dialog("open");};onFadeEnd=function(){$(this).remove();};gLoadingMsg=null;enqueueLoadingMsg=function(){gLoadingMsg=_enqueueMsg(gettext("loading..."),"",null);};removeLoadingMsg=function(){if(gLoadingMsg!=null){gLoadingMsg.remove();gLoadingMsg=null;}};_enqueueMsg=function(d,b,c){var a=$(""+d+"").appendTo("#c-msg-wrapper").addClass("f-msg-cls").addClass(b);if(c){a.animate({opacity:0.95},c).fadeOut(2000,onFadeEnd);}return a;};enqueueMsg=function(c){var a="f-msg";var b=8000;_enqueueMsg(c,a,b);};enqueueErrorMsg=function(c){var a="f-msg-e";var b=4000;_enqueueMsg(c,a,b);};var gResetOtherFieldsOnFilterFieldChange=true;var myDefaultOuterLayoutSettings={center:{paneSelector:".outer-center"},north:{size:50,spacing_open:0,closable:false,resizable:false}};var innerNorthPaneDefaults={innerNorthPaneOpened:"0",selectedTab:"0"};onInnerNorthPaneClose=function(){_setCookie("innerNorthPaneOpened","0");$("#add_comment_btn").css("top",63);if(document.getElementById("text_view_comments").contentDocument!=null){document.getElementById("text_view_comments").contentDocument.getElementById("the-toc").style.height=(parseInt(document.getElementById("text_view_comments").clientHeight)-50).toString()+"px";}return true;};onInnerNorthPaneOpen=function(){_setCookie("innerNorthPaneOpened","1");$("#add_comment_btn").css("top",149);if(document.getElementById("text_view_comments").contentDocument!=null){document.getElementById("text_view_comments").contentDocument.getElementById("the-toc").style.height=(parseInt(document.getElementById("text_view_comments").clientHeight)-50).toString()+"px";}return true;};var myDefaultInnerLayoutSettings={north:{size:88,spacing_open:8,spacing_closed:8,slidable:false,resizable:false,togglerLength_closed:"100%",togglerLength_open:"100%",togglerAlign_closed:"center",togglerTip_closed:gettext("click to show options"),togglerTip_open:gettext("click to hide options"),togglerContent_open:"arrow up",togglerContent_closed:"arrow down",initClosed:false,paneSelector:".inner-north",onopen:"onInnerNorthPaneOpen",onclose:"onInnerNorthPaneClose"}};var outerLayout,innerLayout;layoutFrames=function(){var a=$.cookie("innerNorthPaneOpened");myDefaultInnerLayoutSettings.north.initClosed=(a===null)?(innerNorthPaneDefaults.innerNorthPaneOpened=="0"):(a=="0");outerLayout=$("body").layout(myDefaultOuterLayoutSettings);innerLayout=$("div.outer-center").layout(myDefaultInnerLayoutSettings);if(myDefaultInnerLayoutSettings.north.initClosed){onInnerNorthPaneClose();}else{onInnerNorthPaneOpen();}};fillFilterTab=function(){var b=$("#c_filter");var a='
'+gettext("Text")+' 
'+gettext("Authors")+'  '+gettext("States")+' 
'+gettext("Dates")+'  '+gettext("Tags")+' 
';b.append($(a));$("#c_filter input[type='text']").add("#c_filter select").addClass("c_filter_field");$("#filter_name").add("#filter_date").add("#filter_tag").add("#filter_state").change(function(){if(frames.text_view_comments.readyForAction()){var c=$(this);frames.text_view_comments.checkForOpenedDialog(null,function(){applyFilter(c);});}});$("#c_filter_btn").click(function(){if(frames.text_view_comments.readyForAction()){var c=$("#filter_text");frames.text_view_comments.checkForOpenedDialog(null,function(){applyFilter(c);});}});$("#filter_text").keyup(function(c){if(c.keyCode==13){$("#c_filter_btn").click();}});$("#c_filterreset_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){resetFilter();});}});$("#c_filterhideall_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.hideAll();});}});};fillTopToolbar=function(){var l=$("#outer-north");var g=gettext("view previous comment");var h=gettext("view next comment");var k=gettext("view first comment");var b=gettext("view last next comment");var d=gettext("view all comments");var p=gettext("view all detached comments");var m=gettext("toggle advance interface");var r=gettext("toggle table of contents");var c=gettext("print document with/without comments");var q=gettext("export document with/without comments");var a=gettext("toggle full screen view");var i=gettext("text feed");var j=gettext("add a comment");var n='
'+a+''+c+''+q+''+i+'
-/   ('+gettext("filter:")+' /  /), '+gettext("browse by:")+' '+k+''+g+''+h+''+b+''+d+''+p+''+r+'
';l.prepend($(n));$("#add_comment_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.gSync.showCommentForm(null);});}});var f=function(){$("#browse_by option").each(function(){$("#c_browse_indx_"+this.value).hide();});$("#c_browse_indx_"+$("#browse_by").val()).show();};var e=$.cookie("browse_by");e=(e==null)?"location":e;_setCookie("browse_by",$("#browse_by").val());$("#browse_by option[value="+e+"]").attr("selected",true);f();$("#browse_by").change(function(){_setCookie("browse_by",$("#browse_by").val());f();});var o=function(s){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.browse($("#browse_by").val(),s);});}};$("#c_browse_prev").click(function(){o("prev");});$("#c_browse_next").click(function(){o("next");});$("#c_browse_first").click(function(){o("first");});$("#c_browse_last").click(function(){o("last");});$("#c_browse_all").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.gSync.showAllComments();});}});$("#c_browse_scope_removed").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.gSync.showScopeRemovedComments();});}});$("#c_print_btn").click(function(){if(frames.text_view_comments.readyForAction()){var s=frames.text_view_comments.gDb.getFilteredCommentIdsAsString();frames.text_view_comments.CY.log($("#filteredIds").val(s));openPrintDialog();}});$("#c_export_btn").click(function(){if(frames.text_view_comments.readyForAction()){var s=frames.text_view_comments.gDb.getFilteredCommentIdsAsString();frames.text_view_comments.CY.log($("#filteredIds").val(s));openExportDialog();}});if(frames.text_view_comments.gLayout.isInComentSite()){$("#c_fullscreen_btn").click(function(){toggleFrameSize();});}$("#c_advanced_btn").click(function(){$(".ui-layout-toggler").click();});setThreadPref=function(){var t=frames.text_view_comments.c_readPreference("comments","threadpad");var u=sv_media_url+"/img/unthread_box.png";var s=gettext("unthread discussions");if(t=="0"){u=sv_media_url+"/img/thread_box.png";s=gettext("thread discussions");}$("#c_thread_unthread_img").attr("src",u).attr("alt",s).attr("title",s);};setThreadPref();$("#c_thread_unthread").click(function(){var t=frames.text_view_comments.c_readPreference("comments","threadpad");var s=(t=="0")?"1":"0";frames.text_view_comments.c_persistPreference("comments","threadpad",s);setThreadPref();frames.text_view_comments.gSync.animateToTop();});$("#c_toc_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.toggleTocFn();});}});};onSliderStop=function(){var a=$("#c_slider").slider("value");if(a>(frames.text_view_comments.gConf.sliderFixedMin*100)){$("#c_slider").slider("value",[90]);}if(a<(frames.text_view_comments.gConf.sliderFixedMax*100)){$("#c_slider").slider("value",[10]);}frames.text_view_comments.c_setCommentsColWidth(a);frames.text_view_comments.c_persistPreference("layout","comments_col_width",a);};fillTextPreferencesTab=function(){var d=$("#c_text_preferences");d.append($("
"+gettext("Text style")+' 
'));var e=frames.text_view_comments.gTextStyles;for(var c in e){$("#c_textpref_style").append($(""));}var a=function(){var g=frames.text_view_comments.gTextStyles;var h=$("#c_textpref_style").val();for(var f in g){if(f==h){frames.text_view_comments.CY.get("#textcontainer").addClass(f);}else{frames.text_view_comments.CY.get("#textcontainer").removeClass(f);}}};var b=function(){var f=frames.text_view_comments.c_readPreference("text","style");$("#c_textpref_style").val(f);};$("#c_textpref_style").change(function(f){frames.text_view_comments.c_persistPreference("text","style",$("#c_textpref_style").val());a();});b();a();};fillPreferencesTab=function(){var b=$("#c_preferences");var a='
'+gettext("Animation duration")+' 
'+gettext("(0.001 to 1 second)")+"
";b.append($(a));setPreferencesFieldsValue=function(){var c=frames.text_view_comments.c_readPreference("general","animduration");$("#c_pref_animduration").val(c);};setPreferencesFieldsValue();$("#c_pref_animduration").blur(function(){var c=parseFloat($(this).val());if(isNaN(c)||(c<=0)||(c>1)){c=frames.text_view_comments.c_readDefaultPreference("general","animduration");}$(this).val(c);});$("#c_pref_reset_btn").click(function(){frames.text_view_comments.c_resetPreferences(["general"]);setPreferencesFieldsValue();enqueueMsg(gettext("preferences reset (will apply on next load)"));});$("#c_pref_save_btn").click(function(){frames.text_view_comments.c_persistPreference("general","animduration",$("#c_pref_animduration").val());enqueueMsg(gettext("preferences saved (will apply on next load)"));});};initFrame=function(){_initYesNoDialog();_initPrintDialog();$(window).resize(function(){onSliderStop();});$("#c_slider").slider({animate:true,range:"min",value:frames.text_view_comments.c_readPreference("layout","comments_col_width"),min:1,iframeFix:true,max:100,slide:function(a,b){var c=b.value;frames.text_view_comments.c_setCommentsColWidth(c);},stop:function(a,b){onSliderStop();}});_initTabs();f_interfaceFreeze();};_initTabs=function(){$(".inner-north").tabs();var a=$.cookie("selectedTab");a=(a===null)?innerNorthPaneDefaults.selectedTab:parseInt(a);$(".inner-north").tabs("select",a);$(".inner-north").bind("tabsselect",function(b,c){_setCookie("selectedTab",c.index);});};_initYesNoDialog=function(){$("#dialog_h").dialog({autoOpen:false,modal:true});};_setCookie=function(a,c){var b=new Date();b.setFullYear(2100,0,1);$.cookie(a,c,{expires:b,path:"/"});};f_getFrameFilterData=function(){var c=$("#filter_name").val();var b=$("#filter_date").val();var e=$("#filter_text").val();var a=$("#filter_tag").val();var d=$("#filter_state").val();return{name:c,date:b,text:e,tag:a,state:d};};f_setFilterValue=function(a){for(key in a){if(key.indexOf("filter_")==0){$("#"+key).val(a[key]);}}};f_isFrameFilterFieldsInit=function(){var b=f_getFrameFilterData();var a=true;for(key in b){a=a&&(b[key]=="");}return a;};initFilterFields=function(){$(".c_filter_field").val("");};resetFilter=function(){initFilterFields();frames.text_view_comments.reinit();enqueueMsg(gettext("filter reset"));};applyFilter=function(a){var b=a.val();if(gResetOtherFieldsOnFilterFieldChange){initFilterFields();a.val(b);}frames.text_view_comments.reinit();enqueueMsg(gettext("filter applied"));};f_updateFilterCountResult=function(d,a,b,e,c){$("#c_f_res_nb_dis").html(d);$("#c_f_res_nb_dis_txt").html(ngettext("discussion","discussions",d));$("#c_f_res_nb_com").html(a);$("#c_f_res_nb_tot_com").html(e);$("#c_f_res_nb_com_txt").html(ngettext("comment","comments",a));$("#c_f_res_nb_rep").html(b);$("#c_f_res_nb_tot_rep").html(c);$("#c_f_res_nb_rep_txt").html(" "+ngettext("reply","replies",b));$("#c_filter_results").show();};f_updateFilterCountDetailed=function(a){if(a){$("#c_f_res_details").show();$("c_browse_all").val("View all (filtered) comments");}else{$("#c_f_res_details").hide();$("#c_browse_all").val("View all comments");}};f_updateFilterData=function(e){var g=$("#filter_name option:selected").attr("name");var k=gettext("all");$("#filter_name option").remove();$("#filter_name").append($(""));for(var c=0,b=e.names.length;c"+l.display+" ("+l.nb_comments+")"));}$("#filter_name option[name="+g+"]").attr("selected",true);var a=$("#filter_date option:selected").attr("name");$("#filter_date option").remove();$("#filter_date").append($(""));for(var c=0,b=e.dates.length;c"+j+""));}$("#filter_date option[name="+a+"]").attr("selected",true);var h=$("#filter_tag option:selected").attr("name");$("#filter_tag option").remove();$("#filter_tag").append($(""));for(var c=0,b=e.tags.length;c"+l.name+" ("+l.nb_comments+")"));}$("#filter_tag option[name="+h+"]").attr("selected",true);var d=$("#filter_state option:selected").attr("state");$("#filter_state option").remove();$("#filter_state").append($(""));for(var c=0,b=e.states.length;c"+gettext(l.state)+" ("+l.nb_comments+")"));}$("#filter_state option[name="+d+"]").attr("selected",true);};f_interfaceUnfreeze=function(){for(var b=0,a=$(".c_tab").length;b1||(parseInt(pandoc_version_ary[0])==1&&parseInt(pandoc_version_ary[1])>8)){gFormats.push({actions:["export"],extension:"epub",label:gettext("download ebook (.epub)")});}gFormats.push({actions:["export"],extension:"xml",label:gettext("download XML file for re-importing text and comments")});gActions={print:{dialogTitle:gettext("Print text"),chooseFormatLabel:gettext("How do you want to print?"),defaultMethod:"pdf",defaultWithColors:"no",defaultWhichComments:"all"},"export":{dialogTitle:gettext("Export text"),chooseFormatLabel:gettext("Choose file format"),defaultMethod:"pdf",defaultWithColors:"no",defaultWhichComments:"all"}};gCurrentAction=null;_populateMethod=function(g){var f=$("#p_method").val();$("#p_method").html("");for(var d=0,c=gFormats.length;d"+gFormats[d]["label"]+"").appendTo("#p_method");}}}if(f){$("#p_method").val(f);}else{$("#p_method").val(gActions[gCurrentAction]["defaultMethod"]);}};_populateMarkersColorsChoice=function(b){var a=$("#p_color").val();$("#p_color").html("");$("").appendTo("#p_color");$("").appendTo("#p_color");if(a){$("#p_color").val(a);}else{$("#p_color").val(gActions[gCurrentAction]["defaultWithColors"]);}};_populateWhichComments=function(){var c=$("#p_comments").val();$("#p_comments").html("");var a=interpolate(gettext("all (%(nb_comments)s)"),{nb_comments:frames.text_view_comments.gDb.getCommentsNb(true)},true);var b=interpolate(gettext("current filtered ones (%(nb_comments)s)"),{nb_comments:frames.text_view_comments.gDb.getCommentsNb(false)},true);$("").appendTo($("#p_comments"));$("").appendTo($("#p_comments"));$("").appendTo($("#p_comments"));if(c){$("#p_comments").val(c);}else{$("#p_comments").val(gActions[gCurrentAction]["defaultWhichComments"]);}};_manageMarkersColorsChoice=function(){var f=$("#p_method").val();var e=$("#p_comments").val();var c=frames.text_view_comments.gDb.getCommentsNb(true);var d=frames.text_view_comments.gDb.getCommentsNb(false);var b=(e=="all")?c:d;var a;if(gCurrentAction=="print"){a=((b==0)||(e=="none"));}if(gCurrentAction=="export"){a=((b==0)||(e=="none")||(f=="markdown")||(f=="latex")||(f=="epub")||(f=="odt")||(f=="doc")||(f=="xml"));}if(a){$("#p_color").val("no");}$("#p_color").attr("disabled",a);};_initPrintDialog=function(){$("#p_comments").add($("#p_method")).change(function(){_manageMarkersColorsChoice();_prepareOpenInNewWindow();});var a={};a[gettext("Go !")]=function(){var d=$("#p_comments").val();var c=$("#p_color").val();var e=$("#p_method").val();var b=(gCurrentAction=="export")?"1":(e=="html")?"0":"1";var f=$("#print_export_form").attr("target_action").replace(/FoRmAt/,e).replace(/DoWnLoAd/,b).replace(/WhIcHCoMmEnT/,d).replace(/WiThCoLoR/,c);$("#print_export_form").attr("action",f);document.print_export_form.submit();$(this).dialog("close");};a[gettext("Cancel")]=function(){$(this).dialog("close");};$("#dialog_print_export").dialog({bgiframe:true,autoOpen:false,width:500,modal:true,buttons:a,close:function(){}});};openPrintDialog=function(){_openPrintExportDialog("print");};openExportDialog=function(){_openPrintExportDialog("export");};_prepareOpenInNewWindow=function(){var a=$("#p_method").val();if((a=="html")&&(gCurrentAction=="print")){$("#print_export_form").attr("target","_blank");}else{$("#print_export_form").removeAttr("target");}};_openPrintExportDialog=function(a){gCurrentAction=a;$("#ui-dialog-title-dialog_print_export").html(gActions[gCurrentAction]["dialogTitle"]);$("#how").html(gActions[gCurrentAction]["chooseFormatLabel"]);$("#print_export_action").val(a);_populateWhichComments();_populateMarkersColorsChoice();_populateMethod();_manageMarkersColorsChoice();_prepareOpenInNewWindow();$("#dialog_print_export").dialog("open");};onFadeEnd=function(){$(this).remove();};gLoadingMsg=null;enqueueLoadingMsg=function(){gLoadingMsg=_enqueueMsg(gettext("loading..."),"",null);};removeLoadingMsg=function(){if(gLoadingMsg!=null){gLoadingMsg.remove();gLoadingMsg=null;}};_enqueueMsg=function(d,b,c){var a=$(""+d+"").appendTo("#c-msg-wrapper").addClass("f-msg-cls").addClass(b);if(c){a.animate({opacity:0.95},c).fadeOut(2000,onFadeEnd);}return a;};enqueueMsg=function(c){var a="f-msg";var b=8000;_enqueueMsg(c,a,b);};enqueueErrorMsg=function(c){var a="f-msg-e";var b=4000;_enqueueMsg(c,a,b);};var gResetOtherFieldsOnFilterFieldChange=true;var myDefaultOuterLayoutSettings={center:{paneSelector:".outer-center"},north:{size:50,spacing_open:0,closable:false,resizable:false}};var innerNorthPaneDefaults={innerNorthPaneOpened:"0",selectedTab:"0"};onInnerNorthPaneClose=function(){_setCookie("innerNorthPaneOpened","0");$("#add_comment_btn").css("top",63);if(document.getElementById("text_view_comments").contentDocument!=null){document.getElementById("text_view_comments").contentDocument.getElementById("the-toc").style.height=(parseInt(document.getElementById("text_view_comments").clientHeight)-50).toString()+"px";}return true;};onInnerNorthPaneOpen=function(){_setCookie("innerNorthPaneOpened","1");$("#add_comment_btn").css("top",149);if(document.getElementById("text_view_comments").contentDocument!=null){document.getElementById("text_view_comments").contentDocument.getElementById("the-toc").style.height=(parseInt(document.getElementById("text_view_comments").clientHeight)-50).toString()+"px";}return true;};var myDefaultInnerLayoutSettings={north:{size:88,spacing_open:8,spacing_closed:8,slidable:false,resizable:false,togglerLength_closed:"100%",togglerLength_open:"100%",togglerAlign_closed:"center",togglerTip_closed:gettext("click to show options"),togglerTip_open:gettext("click to hide options"),togglerContent_open:"arrow up",togglerContent_closed:"arrow down",initClosed:false,paneSelector:".inner-north",onopen:"onInnerNorthPaneOpen",onclose:"onInnerNorthPaneClose"}};var outerLayout,innerLayout;layoutFrames=function(){var a=$.cookie("innerNorthPaneOpened");myDefaultInnerLayoutSettings.north.initClosed=(a===null)?(innerNorthPaneDefaults.innerNorthPaneOpened=="0"):(a=="0");outerLayout=$("body").layout(myDefaultOuterLayoutSettings);innerLayout=$("div.outer-center").layout(myDefaultInnerLayoutSettings);if(myDefaultInnerLayoutSettings.north.initClosed){onInnerNorthPaneClose();}else{onInnerNorthPaneOpen();}};fillFilterTab=function(){var b=$("#c_filter");var a='
'+gettext("Text")+' 
'+gettext("Authors")+'  '+gettext("States")+'  '+gettext("Categories")+' 
'+gettext("Dates")+'  '+gettext("Tags")+' 
';b.append($(a));$("#c_filter input[type='text']").add("#c_filter select").addClass("c_filter_field");$("#filter_name").add("#filter_date").add("#filter_tag").add("#filter_cat").add("#filter_state").change(function(){if(frames.text_view_comments.readyForAction()){var c=$(this);frames.text_view_comments.checkForOpenedDialog(null,function(){applyFilter(c);});}});$("#c_filter_btn").click(function(){if(frames.text_view_comments.readyForAction()){var c=$("#filter_text");frames.text_view_comments.checkForOpenedDialog(null,function(){applyFilter(c);});}});$("#filter_text").keyup(function(c){if(c.keyCode==13){$("#c_filter_btn").click();}});$("#c_filterreset_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){resetFilter();});}});$("#c_filterhideall_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.hideAll();});}});};fillTopToolbar=function(){var l=$("#outer-north");var g=gettext("view previous comment");var h=gettext("view next comment");var k=gettext("view first comment");var b=gettext("view last next comment");var d=gettext("view all comments");var p=gettext("view all detached comments");var m=gettext("toggle advance interface");var r=gettext("toggle table of contents");var c=gettext("print document with/without comments");var q=gettext("export document with/without comments");var a=gettext("toggle full screen view");var i=gettext("text feed");var j=gettext("add a comment");var n='
'+a+''+c+''+q+''+i+'
-/   ('+gettext("filter:")+' /  /), '+gettext("browse by:")+' '+k+''+g+''+h+''+b+''+d+''+p+''+r+'
';l.prepend($(n));$("#add_comment_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.gSync.showCommentForm(null);});}});var f=function(){$("#browse_by option").each(function(){$("#c_browse_indx_"+this.value).hide();});$("#c_browse_indx_"+$("#browse_by").val()).show();};var e=$.cookie("browse_by");e=(e==null)?"location":e;_setCookie("browse_by",$("#browse_by").val());$("#browse_by option[value="+e+"]").attr("selected",true);f();$("#browse_by").change(function(){_setCookie("browse_by",$("#browse_by").val());f();});var o=function(s){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.browse($("#browse_by").val(),s);});}};$("#c_browse_prev").click(function(){o("prev");});$("#c_browse_next").click(function(){o("next");});$("#c_browse_first").click(function(){o("first");});$("#c_browse_last").click(function(){o("last");});$("#c_browse_all").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.gSync.showAllComments();});}});$("#c_browse_scope_removed").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.gSync.showScopeRemovedComments();});}});$("#c_print_btn").click(function(){if(frames.text_view_comments.readyForAction()){var s=frames.text_view_comments.gDb.getFilteredCommentIdsAsString();frames.text_view_comments.CY.log($("#filteredIds").val(s));openPrintDialog();}});$("#c_export_btn").click(function(){if(frames.text_view_comments.readyForAction()){var s=frames.text_view_comments.gDb.getFilteredCommentIdsAsString();frames.text_view_comments.CY.log($("#filteredIds").val(s));openExportDialog();}});if(frames.text_view_comments.gLayout.isInComentSite()){$("#c_fullscreen_btn").click(function(){toggleFrameSize();});}$("#c_advanced_btn").click(function(){$(".ui-layout-toggler").click();});setThreadPref=function(){var t=frames.text_view_comments.c_readPreference("comments","threadpad");var u=sv_media_url+"/img/unthread_box.png";var s=gettext("unthread discussions");if(t=="0"){u=sv_media_url+"/img/thread_box.png";s=gettext("thread discussions");}$("#c_thread_unthread_img").attr("src",u).attr("alt",s).attr("title",s);};setThreadPref();$("#c_thread_unthread").click(function(){var t=frames.text_view_comments.c_readPreference("comments","threadpad");var s=(t=="0")?"1":"0";frames.text_view_comments.c_persistPreference("comments","threadpad",s);setThreadPref();frames.text_view_comments.gSync.animateToTop();});$("#c_toc_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.toggleTocFn();});}});};onSliderStop=function(){var a=$("#c_slider").slider("value");if(a>(frames.text_view_comments.gConf.sliderFixedMin*100)){$("#c_slider").slider("value",[90]);}if(a<(frames.text_view_comments.gConf.sliderFixedMax*100)){$("#c_slider").slider("value",[10]);}frames.text_view_comments.c_setCommentsColWidth(a);frames.text_view_comments.c_persistPreference("layout","comments_col_width",a);};fillTextPreferencesTab=function(){var d=$("#c_text_preferences");d.append($("
"+gettext("Text style")+' 
'));var e=frames.text_view_comments.gTextStyles;for(var c in e){$("#c_textpref_style").append($(""));}var a=function(){var g=frames.text_view_comments.gTextStyles;var h=$("#c_textpref_style").val();for(var f in g){if(f==h){frames.text_view_comments.CY.get("#textcontainer").addClass(f);}else{frames.text_view_comments.CY.get("#textcontainer").removeClass(f);}}};var b=function(){var f=frames.text_view_comments.c_readPreference("text","style");$("#c_textpref_style").val(f);};$("#c_textpref_style").change(function(f){frames.text_view_comments.c_persistPreference("text","style",$("#c_textpref_style").val());a();});b();a();};fillPreferencesTab=function(){var b=$("#c_preferences");var a='
'+gettext("Animation duration")+' 
'+gettext("(0.001 to 1 second)")+"
";b.append($(a));setPreferencesFieldsValue=function(){var c=frames.text_view_comments.c_readPreference("general","animduration");$("#c_pref_animduration").val(c);};setPreferencesFieldsValue();$("#c_pref_animduration").blur(function(){var c=parseFloat($(this).val());if(isNaN(c)||(c<=0)||(c>1)){c=frames.text_view_comments.c_readDefaultPreference("general","animduration");}$(this).val(c);});$("#c_pref_reset_btn").click(function(){frames.text_view_comments.c_resetPreferences(["general"]);setPreferencesFieldsValue();enqueueMsg(gettext("preferences reset (will apply on next load)"));});$("#c_pref_save_btn").click(function(){frames.text_view_comments.c_persistPreference("general","animduration",$("#c_pref_animduration").val());enqueueMsg(gettext("preferences saved (will apply on next load)"));});};initFrame=function(){_initYesNoDialog();_initPrintDialog();$(window).resize(function(){onSliderStop();});$("#c_slider").slider({animate:true,range:"min",value:frames.text_view_comments.c_readPreference("layout","comments_col_width"),min:1,iframeFix:true,max:100,slide:function(a,b){var c=b.value;frames.text_view_comments.c_setCommentsColWidth(c);},stop:function(a,b){onSliderStop();}});_initTabs();f_interfaceFreeze();};_initTabs=function(){$(".inner-north").tabs();var a=$.cookie("selectedTab");a=(a===null)?innerNorthPaneDefaults.selectedTab:parseInt(a);$(".inner-north").tabs("select",a);$(".inner-north").bind("tabsselect",function(b,c){_setCookie("selectedTab",c.index);});};_initYesNoDialog=function(){$("#dialog_h").dialog({autoOpen:false,modal:true});};_setCookie=function(a,c){var b=new Date();b.setFullYear(2100,0,1);$.cookie(a,c,{expires:b,path:"/"});};f_getFrameFilterData=function(){var d=$("#filter_name").val();var c=$("#filter_date").val();var f=$("#filter_text").val();var b=$("#filter_tag").val();var a=$("#filter_cat").val();var e=$("#filter_state").val();return{name:d,date:c,text:f,tag:b,cat:a,state:e};};f_setFilterValue=function(a){for(key in a){if(key.indexOf("filter_")==0){$("#"+key).val(a[key]);}}};f_isFrameFilterFieldsInit=function(){var b=f_getFrameFilterData();var a=true;for(key in b){a=a&&(b[key]=="");}return a;};initFilterFields=function(){$(".c_filter_field").val("");};resetFilter=function(){initFilterFields();frames.text_view_comments.reinit();enqueueMsg(gettext("filter reset"));};applyFilter=function(a){var b=a.val();if(gResetOtherFieldsOnFilterFieldChange){initFilterFields();a.val(b);}frames.text_view_comments.reinit();enqueueMsg(gettext("filter applied"));};f_updateFilterCountResult=function(d,a,b,e,c){$("#c_f_res_nb_dis").html(d);$("#c_f_res_nb_dis_txt").html(ngettext("discussion","discussions",d));$("#c_f_res_nb_com").html(a);$("#c_f_res_nb_tot_com").html(e);$("#c_f_res_nb_com_txt").html(ngettext("comment","comments",a));$("#c_f_res_nb_rep").html(b);$("#c_f_res_nb_tot_rep").html(c);$("#c_f_res_nb_rep_txt").html(" "+ngettext("reply","replies",b));$("#c_filter_results").show();};f_updateFilterCountDetailed=function(a){if(a){$("#c_f_res_details").show();$("c_browse_all").val("View all (filtered) comments");}else{$("#c_f_res_details").hide();$("#c_browse_all").val("View all comments");}};f_updateFilterData=function(f){var h=$("#filter_name option:selected").attr("name");var l=gettext("all");$("#filter_name option").remove();$("#filter_name").append($(""));for(var c=0,b=f.names.length;c"+m.display+" ("+m.nb_comments+")"));}$("#filter_name option[name="+h+"]").attr("selected",true);var a=$("#filter_date option:selected").attr("name");$("#filter_date option").remove();$("#filter_date").append($(""));for(var c=0,b=f.dates.length;c"+k+""));}$("#filter_date option[name="+a+"]").attr("selected",true);var j=$("#filter_tag option:selected").attr("name");$("#filter_tag option").remove();$("#filter_tag").append($(""));for(var c=0,b=f.tags.length;c"+m.name+" ("+m.nb_comments+")"));}$("#filter_tag option[name="+j+"]").attr("selected",true);var e=$("#filter_cat option:selected").attr("cat");$("#filter_cat option").remove();categories=frames.text_view_comments.CY.JSON.parse(frames.text_view_comments.sv_categories);if(categories.hasOwnProperty("0")){$("#filter_cat").append($(""));for(var c=0,b=f.categories.length;c"+categories[m.cat]+" ("+m.nb_comments+")"));}$("#filter_cat option[name="+e+"]").attr("selected",true);}else{$("#filter_cat").remove();$("#filter_cat_label").remove();}var d=$("#filter_state option:selected").attr("state");$("#filter_state option").remove();$("#filter_state").append($(""));for(var c=0,b=f.states.length;c"+gettext(m.state)+" ("+m.nb_comments+")"));}$("#filter_state option[name="+d+"]").attr("selected",true);};f_interfaceUnfreeze=function(){for(var b=0,a=$(".c_tab").length;b' + '' + '' + + ' ' + + '' + + gettext('Categories') + + '' + + ' ' + + '' + + '' + + '' + '' + '' + '' + @@ -141,7 +149,7 @@ $("#c_filter input[type='text']").add("#c_filter select").addClass('c_filter_field') ; - $("#filter_name").add("#filter_date").add("#filter_tag").add("#filter_state").change(function() { + $("#filter_name").add("#filter_date").add("#filter_tag").add("#filter_cat").add("#filter_state").change(function() { if (frames['text_view_comments'].readyForAction()) { var elt = $(this) ; frames['text_view_comments'].checkForOpenedDialog(null, function() { @@ -546,8 +554,9 @@ var date_str = $('#filter_date').val(); ; var text = $('#filter_text').val(); ; var tag = $('#filter_tag').val(); ; + var cat = $('#filter_cat').val(); ; var state = $('#filter_state').val(); ; - return {'name':name, 'date':date_str, 'text':text, 'tag':tag, 'state':state} ; + return {'name':name, 'date':date_str, 'text':text, 'tag':tag, 'cat':cat, 'state':state} ; } f_setFilterValue = function (obj) { @@ -658,6 +667,25 @@ } $("#filter_tag option[name="+selectedTagOption+"]").attr("selected", true); + // categories + var selectedCatOption = $("#filter_cat option:selected").attr("cat") ; + + $("#filter_cat option").remove() ; + + categories = frames['text_view_comments'].CY.JSON.parse(frames['text_view_comments'].sv_categories); + if (categories.hasOwnProperty('0')) { + $("#filter_cat").append($("")) ; + for (var i=0, ilen=newFilterData['categories'].length; i < ilen ; i++) { + var item = newFilterData['categories'][i] ; + $("#filter_cat").append($("")) ; + } + $("#filter_cat option[name="+selectedCatOption+"]").attr("selected", true); + } + else { + $("#filter_cat").remove() + $("#filter_cat_label").remove() + } + // states var selectedStateOption = $("#filter_state option:selected").attr("state") ; diff -r 8ec189cc214d -r b2e0186daa5b src/cm/migrations/0009_auto__chg_field_attachment_text_version.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/migrations/0009_auto__chg_field_attachment_text_version.py Tue Jun 25 11:56:01 2013 +0200 @@ -0,0 +1,199 @@ +# encoding: utf-8 +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + +class Migration(SchemaMigration): + + def forwards(self, orm): + + # Changing field 'Attachment.text_version' + db.alter_column('cm_attachment', 'text_version_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['cm.TextVersion'], null=True)) + + + def backwards(self, orm): + + # Changing field 'Attachment.text_version' + db.alter_column('cm_attachment', 'text_version_id', self.gf('django.db.models.fields.related.ForeignKey')(default=None, to=orm['cm.TextVersion'])) + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '75'}) + }, + 'cm.activity': { + 'Meta': {'object_name': 'Activity'}, + 'comment': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.Comment']", 'null': 'True', 'blank': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ip': ('django.db.models.fields.IPAddressField', [], {'default': 'None', 'max_length': '15', 'null': 'True', 'blank': 'True'}), + 'originator_user': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'originator_activity'", 'null': 'True', 'blank': 'True', 'to': "orm['auth.User']"}), + 'text': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.Text']", 'null': 'True', 'blank': 'True'}), + 'text_version': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.TextVersion']", 'null': 'True', 'blank': 'True'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.attachment': { + 'Meta': {'object_name': 'Attachment'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'data': ('django.db.models.fields.files.FileField', [], {'max_length': '1000'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'text_version': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.TextVersion']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.comment': { + 'Meta': {'object_name': 'Comment'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'content': ('django.db.models.fields.TextField', [], {}), + 'content_html': ('django.db.models.fields.TextField', [], {}), + 'created': ('django.db.models.fields.DateTimeField', [], {}), + 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'end_offset': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'end_wrapper': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'format': ('django.db.models.fields.CharField', [], {'default': "'markdown'", 'max_length': '20'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'id_key': ('django.db.models.fields.CharField', [], {'default': "'QYwLbYEYNE8'", 'max_length': '20', 'db_index': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'modified': ('django.db.models.fields.DateTimeField', [], {}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'reply_to': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Comment']", 'null': 'True', 'blank': 'True'}), + 'start_offset': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'start_wrapper': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'state': ('django.db.models.fields.CharField', [], {'max_length': '16'}), + 'tags': ('tagging.fields.TagField', [], {}), + 'text_version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.TextVersion']"}), + 'title': ('django.db.models.fields.TextField', [], {}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.configuration': { + 'Meta': {'object_name': 'Configuration'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.TextField', [], {}), + 'raw_value': ('django.db.models.fields.TextField', [], {}) + }, + 'cm.email': { + 'Meta': {'object_name': 'Email'}, + 'bcc': ('django.db.models.fields.TextField', [], {}), + 'body': ('django.db.models.fields.TextField', [], {}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'from_email': ('django.db.models.fields.TextField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'message': ('django.db.models.fields.TextField', [], {}), + 'subject': ('django.db.models.fields.TextField', [], {}), + 'to': ('django.db.models.fields.TextField', [], {}) + }, + 'cm.notification': { + 'Meta': {'object_name': 'Notification'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'text': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Text']", 'null': 'True', 'blank': 'True'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.role': { + 'Meta': {'object_name': 'Role'}, + 'anon': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'description': ('django.db.models.fields.TextField', [], {}), + 'global_scope': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'symmetrical': 'False', 'to': "orm['auth.Permission']"}) + }, + 'cm.text': { + 'Meta': {'object_name': 'Text'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'last_text_version': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'related_text'", 'null': 'True', 'to': "orm['cm.TextVersion']"}), + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'private_feed_key': ('django.db.models.fields.CharField', [], {'null': 'True', 'default': 'None', 'max_length': '20', 'blank': 'True', 'unique': 'True', 'db_index': 'True'}), + 'state': ('django.db.models.fields.CharField', [], {'max_length': '16'}), + 'title': ('django.db.models.fields.TextField', [], {}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.textversion': { + 'Meta': {'object_name': 'TextVersion'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'content': ('django.db.models.fields.TextField', [], {}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'format': ('django.db.models.fields.CharField', [], {'default': "'markdown'", 'max_length': '20'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'mod_posteriori': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'note': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'tags': ('tagging.fields.TagField', [], {'max_length': '1000'}), + 'text': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Text']"}), + 'title': ('django.db.models.fields.TextField', [], {}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.userprofile': { + 'Meta': {'object_name': 'UserProfile'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'allow_contact': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_email_error': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_suspended': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_temp': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'preferred_language': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '2'}), + 'tags': ('tagging.fields.TagField', [], {'max_length': '1000'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'unique': 'True'}) + }, + 'cm.userrole': { + 'Meta': {'unique_together': "(('role', 'user', 'text'),)", 'object_name': 'UserRole'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Role']", 'null': 'True', 'blank': 'True'}), + 'text': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Text']", 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + } + } + + complete_apps = ['cm'] diff -r 8ec189cc214d -r b2e0186daa5b src/cm/migrations/0010_auto__add_field_textversion_category_1__add_field_textversion_category.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/migrations/0010_auto__add_field_textversion_category_1__add_field_textversion_category.py Tue Jun 25 11:56:01 2013 +0200 @@ -0,0 +1,228 @@ +# encoding: utf-8 +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + +class Migration(SchemaMigration): + + def forwards(self, orm): + + # Adding field 'TextVersion.category_1' + db.add_column('cm_textversion', 'category_1', self.gf('django.db.models.fields.CharField')(default=u'platinium', max_length=20, null=True, blank=True), keep_default=False) + + # Adding field 'TextVersion.category_2' + db.add_column('cm_textversion', 'category_2', self.gf('django.db.models.fields.CharField')(default=u'gold', max_length=20, null=True, blank=True), keep_default=False) + + # Adding field 'TextVersion.category_3' + db.add_column('cm_textversion', 'category_3', self.gf('django.db.models.fields.CharField')(default=u'silver', max_length=20, null=True, blank=True), keep_default=False) + + # Adding field 'TextVersion.category_4' + db.add_column('cm_textversion', 'category_4', self.gf('django.db.models.fields.CharField')(default=u'bronze', max_length=20, null=True, blank=True), keep_default=False) + + # Adding field 'TextVersion.category_5' + db.add_column('cm_textversion', 'category_5', self.gf('django.db.models.fields.CharField')(default=u'iron', max_length=20, null=True, blank=True), keep_default=False) + + + def backwards(self, orm): + + # Deleting field 'TextVersion.category_1' + db.delete_column('cm_textversion', 'category_1') + + # Deleting field 'TextVersion.category_2' + db.delete_column('cm_textversion', 'category_2') + + # Deleting field 'TextVersion.category_3' + db.delete_column('cm_textversion', 'category_3') + + # Deleting field 'TextVersion.category_4' + db.delete_column('cm_textversion', 'category_4') + + # Deleting field 'TextVersion.category_5' + db.delete_column('cm_textversion', 'category_5') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '75'}) + }, + 'cm.activity': { + 'Meta': {'object_name': 'Activity'}, + 'comment': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.Comment']", 'null': 'True', 'blank': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ip': ('django.db.models.fields.IPAddressField', [], {'default': 'None', 'max_length': '15', 'null': 'True', 'blank': 'True'}), + 'originator_user': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'originator_activity'", 'null': 'True', 'blank': 'True', 'to': "orm['auth.User']"}), + 'text': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.Text']", 'null': 'True', 'blank': 'True'}), + 'text_version': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.TextVersion']", 'null': 'True', 'blank': 'True'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.attachment': { + 'Meta': {'object_name': 'Attachment'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'data': ('django.db.models.fields.files.FileField', [], {'max_length': '1000'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'text_version': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.TextVersion']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.comment': { + 'Meta': {'object_name': 'Comment'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'content': ('django.db.models.fields.TextField', [], {}), + 'content_html': ('django.db.models.fields.TextField', [], {}), + 'created': ('django.db.models.fields.DateTimeField', [], {}), + 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'end_offset': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'end_wrapper': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'format': ('django.db.models.fields.CharField', [], {'default': "'markdown'", 'max_length': '20'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'id_key': ('django.db.models.fields.CharField', [], {'default': "'pDtCnVJJPgf'", 'max_length': '20', 'db_index': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'modified': ('django.db.models.fields.DateTimeField', [], {}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'reply_to': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Comment']", 'null': 'True', 'blank': 'True'}), + 'start_offset': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'start_wrapper': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'state': ('django.db.models.fields.CharField', [], {'max_length': '16'}), + 'tags': ('tagging.fields.TagField', [], {}), + 'text_version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.TextVersion']"}), + 'title': ('django.db.models.fields.TextField', [], {}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.configuration': { + 'Meta': {'object_name': 'Configuration'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.TextField', [], {}), + 'raw_value': ('django.db.models.fields.TextField', [], {}) + }, + 'cm.email': { + 'Meta': {'object_name': 'Email'}, + 'bcc': ('django.db.models.fields.TextField', [], {}), + 'body': ('django.db.models.fields.TextField', [], {}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'from_email': ('django.db.models.fields.TextField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'message': ('django.db.models.fields.TextField', [], {}), + 'subject': ('django.db.models.fields.TextField', [], {}), + 'to': ('django.db.models.fields.TextField', [], {}) + }, + 'cm.notification': { + 'Meta': {'object_name': 'Notification'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'text': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Text']", 'null': 'True', 'blank': 'True'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.role': { + 'Meta': {'object_name': 'Role'}, + 'anon': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'description': ('django.db.models.fields.TextField', [], {}), + 'global_scope': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'symmetrical': 'False', 'to': "orm['auth.Permission']"}) + }, + 'cm.text': { + 'Meta': {'object_name': 'Text'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'last_text_version': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'related_text'", 'null': 'True', 'to': "orm['cm.TextVersion']"}), + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'private_feed_key': ('django.db.models.fields.CharField', [], {'null': 'True', 'default': 'None', 'max_length': '20', 'blank': 'True', 'unique': 'True', 'db_index': 'True'}), + 'state': ('django.db.models.fields.CharField', [], {'max_length': '16'}), + 'title': ('django.db.models.fields.TextField', [], {}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.textversion': { + 'Meta': {'object_name': 'TextVersion'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'category_1': ('django.db.models.fields.CharField', [], {'default': "u'platinium'", 'max_length': '20', 'null': 'True', 'blank': 'True'}), + 'category_2': ('django.db.models.fields.CharField', [], {'default': "u'gold'", 'max_length': '20', 'null': 'True', 'blank': 'True'}), + 'category_3': ('django.db.models.fields.CharField', [], {'default': "u'silver'", 'max_length': '20', 'null': 'True', 'blank': 'True'}), + 'category_4': ('django.db.models.fields.CharField', [], {'default': "u'bronze'", 'max_length': '20', 'null': 'True', 'blank': 'True'}), + 'category_5': ('django.db.models.fields.CharField', [], {'default': "u'iron'", 'max_length': '20', 'null': 'True', 'blank': 'True'}), + 'content': ('django.db.models.fields.TextField', [], {}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'format': ('django.db.models.fields.CharField', [], {'default': "'markdown'", 'max_length': '20'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'mod_posteriori': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'note': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'tags': ('tagging.fields.TagField', [], {'max_length': '1000'}), + 'text': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Text']"}), + 'title': ('django.db.models.fields.TextField', [], {}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.userprofile': { + 'Meta': {'object_name': 'UserProfile'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'allow_contact': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_email_error': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_suspended': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_temp': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'preferred_language': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '2'}), + 'tags': ('tagging.fields.TagField', [], {'max_length': '1000'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'unique': 'True'}) + }, + 'cm.userrole': { + 'Meta': {'unique_together': "(('role', 'user', 'text'),)", 'object_name': 'UserRole'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Role']", 'null': 'True', 'blank': 'True'}), + 'text': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Text']", 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + } + } + + complete_apps = ['cm'] diff -r 8ec189cc214d -r b2e0186daa5b src/cm/migrations/0011_auto__add_field_comment_category.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/migrations/0011_auto__add_field_comment_category.py Tue Jun 25 11:56:01 2013 +0200 @@ -0,0 +1,205 @@ +# encoding: utf-8 +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + +class Migration(SchemaMigration): + + def forwards(self, orm): + + # Adding field 'Comment.category' + db.add_column('cm_comment', 'category', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=0), keep_default=False) + + + def backwards(self, orm): + + # Deleting field 'Comment.category' + db.delete_column('cm_comment', 'category') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '75'}) + }, + 'cm.activity': { + 'Meta': {'object_name': 'Activity'}, + 'comment': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.Comment']", 'null': 'True', 'blank': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ip': ('django.db.models.fields.IPAddressField', [], {'default': 'None', 'max_length': '15', 'null': 'True', 'blank': 'True'}), + 'originator_user': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'originator_activity'", 'null': 'True', 'blank': 'True', 'to': "orm['auth.User']"}), + 'text': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.Text']", 'null': 'True', 'blank': 'True'}), + 'text_version': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.TextVersion']", 'null': 'True', 'blank': 'True'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.attachment': { + 'Meta': {'object_name': 'Attachment'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'data': ('django.db.models.fields.files.FileField', [], {'max_length': '1000'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'text_version': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['cm.TextVersion']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.comment': { + 'Meta': {'object_name': 'Comment'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'category': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}), + 'content': ('django.db.models.fields.TextField', [], {}), + 'content_html': ('django.db.models.fields.TextField', [], {}), + 'created': ('django.db.models.fields.DateTimeField', [], {}), + 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'end_offset': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'end_wrapper': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'format': ('django.db.models.fields.CharField', [], {'default': "'markdown'", 'max_length': '20'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'id_key': ('django.db.models.fields.CharField', [], {'default': "'gDcMRuTvHtD'", 'max_length': '20', 'db_index': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'modified': ('django.db.models.fields.DateTimeField', [], {}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'reply_to': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Comment']", 'null': 'True', 'blank': 'True'}), + 'start_offset': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'start_wrapper': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'state': ('django.db.models.fields.CharField', [], {'max_length': '16'}), + 'tags': ('tagging.fields.TagField', [], {}), + 'text_version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.TextVersion']"}), + 'title': ('django.db.models.fields.TextField', [], {}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.configuration': { + 'Meta': {'object_name': 'Configuration'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.TextField', [], {}), + 'raw_value': ('django.db.models.fields.TextField', [], {}) + }, + 'cm.email': { + 'Meta': {'object_name': 'Email'}, + 'bcc': ('django.db.models.fields.TextField', [], {}), + 'body': ('django.db.models.fields.TextField', [], {}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'from_email': ('django.db.models.fields.TextField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'message': ('django.db.models.fields.TextField', [], {}), + 'subject': ('django.db.models.fields.TextField', [], {}), + 'to': ('django.db.models.fields.TextField', [], {}) + }, + 'cm.notification': { + 'Meta': {'object_name': 'Notification'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'text': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Text']", 'null': 'True', 'blank': 'True'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.role': { + 'Meta': {'object_name': 'Role'}, + 'anon': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'description': ('django.db.models.fields.TextField', [], {}), + 'global_scope': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'roles'", 'symmetrical': 'False', 'to': "orm['auth.Permission']"}) + }, + 'cm.text': { + 'Meta': {'object_name': 'Text'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'last_text_version': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'related_text'", 'null': 'True', 'to': "orm['cm.TextVersion']"}), + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'private_feed_key': ('django.db.models.fields.CharField', [], {'null': 'True', 'default': 'None', 'max_length': '20', 'blank': 'True', 'unique': 'True', 'db_index': 'True'}), + 'state': ('django.db.models.fields.CharField', [], {'max_length': '16'}), + 'title': ('django.db.models.fields.TextField', [], {}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.textversion': { + 'Meta': {'object_name': 'TextVersion'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'category_1': ('django.db.models.fields.CharField', [], {'default': "u'platinium'", 'max_length': '20', 'null': 'True', 'blank': 'True'}), + 'category_2': ('django.db.models.fields.CharField', [], {'default': "u'gold'", 'max_length': '20', 'null': 'True', 'blank': 'True'}), + 'category_3': ('django.db.models.fields.CharField', [], {'default': "u'silver'", 'max_length': '20', 'null': 'True', 'blank': 'True'}), + 'category_4': ('django.db.models.fields.CharField', [], {'default': "u'bronze'", 'max_length': '20', 'null': 'True', 'blank': 'True'}), + 'category_5': ('django.db.models.fields.CharField', [], {'default': "u'iron'", 'max_length': '20', 'null': 'True', 'blank': 'True'}), + 'content': ('django.db.models.fields.TextField', [], {}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'format': ('django.db.models.fields.CharField', [], {'default': "'markdown'", 'max_length': '20'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'mod_posteriori': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'note': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'tags': ('tagging.fields.TagField', [], {'max_length': '1000'}), + 'text': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Text']"}), + 'title': ('django.db.models.fields.TextField', [], {}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cm.userprofile': { + 'Meta': {'object_name': 'UserProfile'}, + 'adminkey': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'allow_contact': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_email_error': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_suspended': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_temp': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}), + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'preferred_language': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '2'}), + 'tags': ('tagging.fields.TagField', [], {'max_length': '1000'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'unique': 'True'}) + }, + 'cm.userrole': { + 'Meta': {'unique_together': "(('role', 'user', 'text'),)", 'object_name': 'UserRole'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Role']", 'null': 'True', 'blank': 'True'}), + 'text': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cm.Text']", 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + } + } + + complete_apps = ['cm'] diff -r 8ec189cc214d -r b2e0186daa5b src/cm/models.py --- a/src/cm/models.py Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/models.py Tue Jun 25 11:56:01 2013 +0200 @@ -26,6 +26,75 @@ from django.db import connection from datetime import datetime +# default conf values +DEFAULT_CONF = { + 'workspace_name' : 'Workspace', + 'site_url' : settings.SITE_URL, + 'email_from' : settings.DEFAULT_FROM_EMAIL, + } + +from cm.role_models import change_role_model + +class ConfigurationManager(models.Manager): + def set_workspace_name(self, workspace_name): + if workspace_name: + self.set_key('workspace_name', workspace_name) + + def get_key(self, key, default_value=None): + try: + return self.get(key=key).value + except Configuration.DoesNotExist: + return DEFAULT_CONF.get(key, default_value) + + def del_key(self, key): + try: + self.get(key=key).delete() + except Configuration.DoesNotExist: + return None + + def set_key(self, key, value): + conf, created = self.get_or_create(key=key) + if created or conf.value != value: + conf.value = value + conf.save() + if key == 'workspace_role_model': + change_role_model(value) + + def __getitem__(self, key): + if not key.startswith('f_'): + return self.get_key(key, None) + else: + return getattr(self,key)() + + def f_get_logo_url(self): + key = self.get_key('workspace_logo_file_key', None) + if key: + attach = Attachment.objects.get(key=key) + return attach.data.url + else: + return None + +import base64 + +class Configuration(models.Model): + key = models.TextField(blank=False) # , unique=True cannot be added: creates error on mysql (?) + raw_value = models.TextField(blank=False) + + def get_value(self): + return pickle.loads(base64.b64decode(self.raw_value.encode('utf8'))) + + def set_value(self, value): + self.raw_value = base64.b64encode(pickle.dumps(value, 0)).encode('utf8') + + value = property(get_value, set_value) + + objects = ConfigurationManager() + + def __unicode__(self): + return '%s: %s' % (self.key, self.value) + +ApplicationConfiguration = Configuration.objects + class TextManager(Manager): def create_text(self, title, format, content, note, name, email, tags, user=None, state='approved', **kwargs): content = on_content_receive(content, format) @@ -192,6 +261,14 @@ mod_posteriori = models.BooleanField(ugettext_lazy('Moderation a posteriori?'), default=True) + from django.utils.safestring import mark_safe + + category_1 = models.CharField(ugettext_lazy("Label for the first category of comments"), help_text=mark_safe(_("Paragraphs including at least one comment of this category will have a vertical bar with this color: ") + ' 
' + _("Leave blank to use the value configured for the workspace.") + '
' + _("To disable this category for this text whatever the configuration for the workspace, enter: ") + 'none'), max_length=20, null=True, blank=True, default=ApplicationConfiguration['workspace_category_1']) + category_2 = models.CharField(ugettext_lazy("Label for the second category of comments"), help_text=mark_safe(_("Paragraphs including at least one comment of this category will have a vertical bar with this color: ") + ' 
' + _("Leave blank to use the value configured for the workspace. ") + '
' + _("To disable this category for this text whatever the configuration for the workspace, enter: ") + 'none'), max_length=20, null=True, blank=True, default=ApplicationConfiguration['workspace_category_2']) + category_3 = models.CharField(ugettext_lazy("Label for the third category of comments"), help_text=mark_safe(_("Paragraphs including at least one comment of this category will have a vertical bar with this color: ") + ' 
' + _("Leave blank to use the value configured for the workspace. ") + '
' + _("To disable this category for this text whatever the configuration for the workspace, enter: ") + 'none'), max_length=20, null=True, blank=True, default=ApplicationConfiguration['workspace_category_3']) + category_4 = models.CharField(ugettext_lazy("Label for the fourth category of comments"), help_text=mark_safe(_("Paragraphs including at least one comment of this category will have a vertical bar with this color: ") + ' 
' + _("Leave blank to use the value configured for the workspace. ") + '
' + _("To disable this category for this text whatever the configuration for the workspace, enter: ") + 'none'), max_length=20, null=True, blank=True, default=ApplicationConfiguration['workspace_category_4']) + category_5 = models.CharField(ugettext_lazy("Label for the fifth category of comments"), help_text=mark_safe(_("Paragraphs including at least one comment of this category will have a vertical bar with this color: ") + ' 
' + _("Leave blank to use the value configured for the workspace. ") + '
' + _("To disable this category for this text whatever the configuration for the workspace, enter: ") + 'none'), max_length=20, null=True, blank=True, default=ApplicationConfiguration['workspace_category_5']) + text = models.ForeignKey("Text") objects = TextVersionManager() @@ -279,6 +356,8 @@ format = models.CharField(_("Format:"), max_length=20, blank=False, default=DEFAULT_INPUT_FORMAT, choices=CHOICES_INPUT_FORMATS) tags = TagField() + + category = models.PositiveSmallIntegerField(default=0) start_wrapper = models.IntegerField(null=True, blank=True) end_wrapper = models.IntegerField(null=True, blank=True) @@ -340,75 +419,6 @@ # http://docs.djangoproject.com/en/dev/topics/files/#topics-files -# default conf values -DEFAULT_CONF = { - 'workspace_name' : 'Workspace', - 'site_url' : settings.SITE_URL, - 'email_from' : settings.DEFAULT_FROM_EMAIL, - } - -from cm.role_models import change_role_model - -class ConfigurationManager(models.Manager): - def set_workspace_name(self, workspace_name): - if workspace_name: - self.set_key('workspace_name', workspace_name) - - def get_key(self, key, default_value=None): - try: - return self.get(key=key).value - except Configuration.DoesNotExist: - return DEFAULT_CONF.get(key, default_value) - - def del_key(self, key): - try: - self.get(key=key).delete() - except Configuration.DoesNotExist: - return None - - def set_key(self, key, value): - conf, created = self.get_or_create(key=key) - if created or conf.value != value: - conf.value = value - conf.save() - if key == 'workspace_role_model': - change_role_model(value) - - def __getitem__(self, key): - if not key.startswith('f_'): - return self.get_key(key, None) - else: - return getattr(self,key)() - - def f_get_logo_url(self): - key = self.get_key('workspace_logo_file_key', None) - if key: - attach = Attachment.objects.get(key=key) - return attach.data.url - else: - return None - -import base64 - -class Configuration(models.Model): - key = models.TextField(blank=False) # , unique=True cannot be added: creates error on mysql (?) - raw_value = models.TextField(blank=False) - - def get_value(self): - return pickle.loads(base64.b64decode(self.raw_value.encode('utf8'))) - - def set_value(self, value): - self.raw_value = base64.b64encode(pickle.dumps(value, 0)).encode('utf8') - - value = property(get_value, set_value) - - objects = ConfigurationManager() - - def __unicode__(self): - return '%s: %s' % (self.key, self.value) - -ApplicationConfiguration = Configuration.objects - class AttachmentManager(KeyManager): def create_attachment(self, text_version, filename, data): attach = self.create(text_version=text_version) @@ -418,7 +428,7 @@ class Attachment(KeyModel): data = models.FileField(upload_to="attachments/%Y/%m/%d/", max_length=1000) - text_version = models.ForeignKey(TextVersion, null=True) + text_version = models.ForeignKey(TextVersion, null=True, blank=True, default=None) objects = AttachmentManager() diff -r 8ec189cc214d -r b2e0186daa5b src/cm/monkey_patches.py --- a/src/cm/monkey_patches.py Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/monkey_patches.py Tue Jun 25 11:56:01 2013 +0200 @@ -1,4 +1,4 @@ -from south.management.commands.migrate import Command +from south.management.commands.migrate import Command, list_migrations from south.db import DEFAULT_DB_ALIAS from south import migration import sys diff -r 8ec189cc214d -r b2e0186daa5b src/cm/templates/site/text_view_comments.html --- a/src/cm/templates/site/text_view_comments.html Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/templates/site/text_view_comments.html Tue Jun 25 11:56:01 2013 +0200 @@ -80,6 +80,7 @@ sv_key = "{{ text.key|escapejs }}"; sv_version_key = "{{ text_version.key|escapejs }}"; sv_format = "{{ text_version.format }}"; +sv_categories = "{{ categories|escapejs }}"; sv_withComments = true ; // TODO will bug when false (!) c_yui_base = "{{ YUI_VERSION }}" ; @@ -119,7 +120,7 @@ {% else %} - + {% endif %} diff -r 8ec189cc214d -r b2e0186daa5b src/cm/templates/site/text_view_frame.html --- a/src/cm/templates/site/text_view_frame.html Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/templates/site/text_view_frame.html Tue Jun 25 11:56:01 2013 +0200 @@ -37,7 +37,7 @@ {% else %} - + {% endif %}