From 26a4a07bdacdaa7013bf45cc235df207708acfde Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Tue, 2 May 2006 14:36:00 +0000 Subject: [PATCH] webcit_before_automake is now the trunk --- webcit/.cvsignore | 13 + webcit/COPYING.txt | 271 + webcit/Doxyfile | 1239 ++++ webcit/Makefile.in | 133 + webcit/README.txt | 299 + webcit/auth.c | 562 ++ webcit/autocompletion.c | 49 + webcit/availability.c | 262 + webcit/bootstrap | 3 + webcit/buildpackages | 56 + webcit/calendar.c | 1008 +++ webcit/calendar_tools.c | 302 + webcit/calendar_view.c | 1071 +++ webcit/config.guess | 1391 ++++ webcit/config.h | 10 + webcit/config.rpath | 548 ++ webcit/config.sub | 1489 ++++ webcit/configure.in | 365 + webcit/context_loop.c | 493 ++ webcit/cookie_conversion.c | 98 + webcit/crypto.c | 521 ++ webcit/debian/README.Debian | 6 + webcit/debian/changelog | 18 + webcit/debian/citadel-webcit-apache.config | 20 + webcit/debian/citadel-webcit-apache.postinst | 100 + webcit/debian/citadel-webcit-apache.postrm | 89 + .../citadel-webcit-apache.postrm.debhelper | 6 + webcit/debian/citadel-webcit-apache.substvars | 1 + webcit/debian/citadel-webcit-apache.templates | 21 + webcit/debian/citadel-webcit.config | 19 + webcit/debian/citadel-webcit.postinst | 196 + webcit/debian/citadel-webcit.postrm | 110 + webcit/debian/citadel-webcit.postrm.debhelper | 6 + webcit/debian/citadel-webcit.substvars | 2 + webcit/debian/citadel-webcit.templates | 24 + webcit/debian/compat | 1 + webcit/debian/control | 23 + webcit/debian/copyright | 10 + webcit/debian/dirs | 2 + webcit/debian/docs | 3 + webcit/debian/rules | 125 + webcit/debian/webcit.substvars | 1 + webcit/doxygen_groups.c | 109 + webcit/event.c | 721 ++ webcit/floors.c | 198 + webcit/fmt_date.c | 225 + webcit/gettext.c | 300 + webcit/graphics.c | 116 + webcit/groupdav.h | 14 + webcit/groupdav_delete.c | 90 + webcit/groupdav_get.c | 143 + webcit/groupdav_main.c | 246 + webcit/groupdav_options.c | 97 + webcit/groupdav_propfind.c | 438 ++ webcit/groupdav_put.c | 205 + webcit/html2html.c | 374 + webcit/http_datestring.c | 67 + webcit/ical_dezonify.c | 171 + webcit/iconbar.c | 774 +++ webcit/inetconf.c | 202 + webcit/install-sh | 250 + webcit/listsub.c | 234 + webcit/locate_host.c | 44 + webcit/mainmenu.c | 400 ++ webcit/messages.c | 3182 +++++++++ webcit/mime_parser.c | 662 ++ webcit/mime_parser.h | 57 + webcit/missing | 188 + webcit/mkinstalldirs | 111 + webcit/netconf.c | 320 + webcit/notes.c | 134 + webcit/packageversion | 1 + webcit/paging.c | 499 ++ webcit/po/Makefile.in | 20 + webcit/po/create-pot.sh | 14 + webcit/po/de.po | 2930 ++++++++ webcit/po/en_GB.po | 2727 ++++++++ webcit/po/es.po | 2828 ++++++++ webcit/po/it.po | 2844 ++++++++ webcit/po/webcit.pot | 2728 ++++++++ webcit/preferences.c | 428 ++ webcit/roomops.c | 3055 +++++++++ webcit/rss.c | 349 + webcit/serv_func.c | 401 ++ webcit/setup.c | 683 ++ webcit/setup_wizard.c | 56 + webcit/siteconfig.c | 650 ++ webcit/snprintf.c | 99 + webcit/static/BubbleTooltips.js | 126 + webcit/static/activeuser_24x.gif | Bin 0 -> 1209 bytes webcit/static/addevent_24x.gif | Bin 0 -> 1200 bytes webcit/static/addnewcontact_24x.gif | Bin 0 -> 1167 bytes webcit/static/advanpage2_32x.gif | Bin 0 -> 1476 bytes webcit/static/advanpage2_48x.gif | Bin 0 -> 2005 bytes webcit/static/beginbox.html | 6 + webcit/static/beginbox_nt.html | 5 + webcit/static/bgcolor.gif | Bin 0 -> 148 bytes webcit/static/blackdot.gif | Bin 0 -> 807 bytes webcit/static/blank.gif | Bin 0 -> 42 bytes webcit/static/body-background.gif | Bin 0 -> 93 bytes webcit/static/bold.gif | Bin 0 -> 81 bytes webcit/static/bt.css | 18 + webcit/static/bt.gif | Bin 0 -> 2131 bytes webcit/static/calarea_16x.gif | Bin 0 -> 224 bytes webcit/static/calarea_32x.gif | Bin 0 -> 1460 bytes webcit/static/calarea_48x.gif | Bin 0 -> 911 bytes webcit/static/centre.gif | Bin 0 -> 76 bytes webcit/static/chatframeset.html | 27 + webcit/static/chatrooms_16x.gif | Bin 0 -> 231 bytes webcit/static/chatrooms_32x.gif | Bin 0 -> 567 bytes webcit/static/chatrooms_48x.gif | Bin 0 -> 704 bytes webcit/static/citadel-logo.gif | Bin 0 -> 2245 bytes webcit/static/citadelchat_16x.gif | Bin 0 -> 556 bytes webcit/static/citadelchat_24x.gif | Bin 0 -> 1064 bytes webcit/static/citadelchat_32x.gif | Bin 0 -> 1205 bytes webcit/static/citadelchat_48x.gif | Bin 0 -> 920 bytes webcit/static/controls.js | 699 ++ webcit/static/copy.gif | Bin 0 -> 118 bytes webcit/static/cut.gif | Bin 0 -> 100 bytes webcit/static/diskette_24x.gif | Bin 0 -> 1192 bytes webcit/static/down_pointer.gif | Bin 0 -> 165 bytes webcit/static/dragdrop.js | 545 ++ webcit/static/effects.js | 707 ++ webcit/static/empty.html | 7 + webcit/static/endbox.html | 3 + webcit/static/enternewnote_24x.gif | Bin 0 -> 1242 bytes webcit/static/error.gif | Bin 0 -> 1332 bytes webcit/static/favicon.ico | Bin 0 -> 1150 bytes webcit/static/folder_closed.gif | Bin 0 -> 385 bytes webcit/static/folder_open.gif | Bin 0 -> 366 bytes webcit/static/head.html | 15 + webcit/static/hr.gif | Bin 0 -> 77 bytes webcit/static/hyperlink.gif | Bin 0 -> 196 bytes webcit/static/image.gif | Bin 0 -> 203 bytes webcit/static/inactiveuser_24x.gif | Bin 0 -> 750 bytes webcit/static/indent.gif | Bin 0 -> 96 bytes webcit/static/instant_messenger.html | 209 + webcit/static/italic.gif | Bin 0 -> 84 bytes webcit/static/justifyfull.gif | Bin 0 -> 76 bytes webcit/static/lastnode.gif | Bin 0 -> 852 bytes webcit/static/left_just.gif | Bin 0 -> 76 bytes webcit/static/line.gif | Bin 0 -> 114 bytes webcit/static/list.gif | Bin 0 -> 88 bytes webcit/static/login.html | 39 + webcit/static/logoff_32x.gif | Bin 0 -> 1265 bytes webcit/static/markngo_24x.gif | Bin 0 -> 1211 bytes webcit/static/menubar.html | 92 + webcit/static/minus.gif | Bin 0 -> 142 bytes webcit/static/minus_last.gif | Bin 0 -> 138 bytes webcit/static/minus_last_no_root.gif | Bin 0 -> 135 bytes webcit/static/minus_no_root.gif | Bin 0 -> 140 bytes webcit/static/minus_nolines.gif | Bin 0 -> 134 bytes webcit/static/monthview2_24x.gif | Bin 0 -> 1239 bytes webcit/static/nanotree.js | 910 +++ webcit/static/newmess2_24x.gif | Bin 0 -> 1221 bytes webcit/static/newmess3_24x.gif | Bin 0 -> 1192 bytes webcit/static/newstartpage.html | 22 + webcit/static/nextdate_32x.gif | Bin 0 -> 1312 bytes webcit/static/niftyCorners.css | 35 + webcit/static/niftycube.js | 298 + webcit/static/nocookies.html | 15 + webcit/static/numbered_list.gif | Bin 0 -> 90 bytes webcit/static/outdent.gif | Bin 0 -> 96 bytes webcit/static/page.gif | Bin 0 -> 144 bytes webcit/static/page16x16.gif | Bin 0 -> 1012 bytes webcit/static/palette.htm | 124 + webcit/static/paste.gif | Bin 0 -> 152 bytes webcit/static/plus.gif | Bin 0 -> 145 bytes webcit/static/plus_last.gif | Bin 0 -> 143 bytes webcit/static/plus_last_no_root.gif | Bin 0 -> 140 bytes webcit/static/plus_no_root.gif | Bin 0 -> 143 bytes webcit/static/plus_nolines.gif | Bin 0 -> 137 bytes webcit/static/prevdate_32x.gif | Bin 0 -> 1333 bytes webcit/static/privatemess_16x.gif | Bin 0 -> 570 bytes webcit/static/privatemess_32x.gif | Bin 0 -> 1272 bytes webcit/static/privatemess_48x.gif | Bin 0 -> 1588 bytes webcit/static/prototype.js | 1257 ++++ webcit/static/readallmess3_24x.gif | Bin 0 -> 1226 bytes webcit/static/redo.gif | Bin 0 -> 88 bytes webcit/static/right_just.gif | Bin 0 -> 76 bytes webcit/static/robots.txt | 3 + webcit/static/roombanner.html | 23 + webcit/static/rte.css | 36 + webcit/static/savecontact_16x.gif | Bin 0 -> 625 bytes webcit/static/savecontact_32x.gif | Bin 0 -> 880 bytes webcit/static/savecontact_48x.gif | Bin 0 -> 1156 bytes webcit/static/scriptaculous.js | 26 + webcit/static/skipthisroom_24x.gif | Bin 0 -> 1172 bytes webcit/static/sort_none.gif | Bin 0 -> 133 bytes webcit/static/spellcheck.gif | Bin 0 -> 107 bytes webcit/static/square.gif | Bin 0 -> 170 bytes webcit/static/storenotes_16x.gif | Bin 0 -> 599 bytes webcit/static/storenotes_32x.gif | Bin 0 -> 1296 bytes webcit/static/storenotes_48x.gif | Bin 0 -> 1456 bytes webcit/static/summscreen_32x.gif | Bin 0 -> 1356 bytes webcit/static/summscreen_48x.gif | Bin 0 -> 1642 bytes webcit/static/t.gif | Bin 0 -> 855 bytes webcit/static/t_no_root.gif | Bin 0 -> 852 bytes webcit/static/taskday2_24x.gif | Bin 0 -> 769 bytes webcit/static/taskmanag_16x.gif | Bin 0 -> 585 bytes webcit/static/taskmanag_24x.gif | Bin 0 -> 1154 bytes webcit/static/taskmanag_32x.gif | Bin 0 -> 1267 bytes webcit/static/taskmanag_48x.gif | Bin 0 -> 1512 bytes webcit/static/textcolor.gif | Bin 0 -> 109 bytes webcit/static/trailing.html | 3 + webcit/static/underline.gif | Bin 0 -> 93 bytes webcit/static/undo.gif | Bin 0 -> 89 bytes webcit/static/ungoto2_24x.gif | Bin 0 -> 681 bytes webcit/static/unittest.js | 381 ++ webcit/static/up_pointer.gif | Bin 0 -> 165 bytes webcit/static/usermanag_32x.gif | Bin 0 -> 1493 bytes webcit/static/usermanag_48x.gif | Bin 0 -> 2008 bytes webcit/static/util.js | 429 ++ webcit/static/viewcontacts_16x.gif | Bin 0 -> 1035 bytes webcit/static/viewcontacts_24x.gif | Bin 0 -> 1269 bytes webcit/static/viewcontacts_32x.gif | Bin 0 -> 1548 bytes webcit/static/viewcontacts_48x.gif | Bin 0 -> 2182 bytes webcit/static/viewnotes_24x.gif | Bin 0 -> 1205 bytes webcit/static/wclib.js | 483 ++ webcit/static/webcit-tinymce.css | 6 + webcit/static/webcit.css | 574 ++ webcit/static/week_view.gif | Bin 0 -> 315 bytes webcit/static/white.gif | Bin 0 -> 837 bytes webcit/static/xml_button.gif | Bin 0 -> 429 bytes webcit/static/year_view.gif | Bin 0 -> 313 bytes webcit/subst.c | 258 + webcit/summary.c | 288 + webcit/sysmsgs.c | 106 + webcit/tabs.c | 90 + webcit/tcp_sockets.c | 237 + webcit/tiny_mce/blank.htm | 9 + webcit/tiny_mce/langs/ar.js | 43 + webcit/tiny_mce/langs/ca.js | 41 + webcit/tiny_mce/langs/cs.js | 52 + webcit/tiny_mce/langs/cy.js | 41 + webcit/tiny_mce/langs/da.js | 41 + webcit/tiny_mce/langs/de.js | 41 + webcit/tiny_mce/langs/el.js | 41 + webcit/tiny_mce/langs/en.js | 41 + webcit/tiny_mce/langs/es.js | 50 + webcit/tiny_mce/langs/fa.js | 46 + webcit/tiny_mce/langs/fi.js | 42 + webcit/tiny_mce/langs/fr.js | 43 + webcit/tiny_mce/langs/fr_ca.js | 40 + webcit/tiny_mce/langs/he.js | 41 + webcit/tiny_mce/langs/hu.js | 41 + webcit/tiny_mce/langs/is.js | 41 + webcit/tiny_mce/langs/it.js | 41 + webcit/tiny_mce/langs/ja.js | 41 + webcit/tiny_mce/langs/ko.js | 40 + webcit/tiny_mce/langs/nb.js | 41 + webcit/tiny_mce/langs/nl.js | 42 + webcit/tiny_mce/langs/nn.js | 41 + webcit/tiny_mce/langs/pl.js | 44 + webcit/tiny_mce/langs/pt.js | 42 + webcit/tiny_mce/langs/pt_br.js | 50 + webcit/tiny_mce/langs/readme.txt | 2 + webcit/tiny_mce/langs/ru.js | 43 + webcit/tiny_mce/langs/ru_KOI8-R.js | 43 + webcit/tiny_mce/langs/ru_UTF-8.js | 43 + webcit/tiny_mce/langs/sk.js | 50 + webcit/tiny_mce/langs/sv.js | 43 + webcit/tiny_mce/langs/th.js | 40 + webcit/tiny_mce/langs/zh_cn.js | 41 + webcit/tiny_mce/langs/zh_tw.js | 42 + webcit/tiny_mce/langs/zh_tw_utf8.js | 42 + webcit/tiny_mce/license.txt | 437 ++ .../plugins/_template/editor_plugin.js | 118 + .../plugins/_template/editor_plugin_src.js | 132 + .../plugins/_template/images/template.gif | Bin 0 -> 87 bytes webcit/tiny_mce/plugins/_template/langs/da.js | 8 + webcit/tiny_mce/plugins/_template/langs/de.js | 9 + webcit/tiny_mce/plugins/_template/langs/en.js | 8 + webcit/tiny_mce/plugins/_template/langs/es.js | 14 + webcit/tiny_mce/plugins/_template/langs/fr.js | 9 + .../tiny_mce/plugins/_template/langs/fr_ca.js | 8 + webcit/tiny_mce/plugins/_template/langs/he.js | 8 + webcit/tiny_mce/plugins/_template/langs/hu.js | 8 + webcit/tiny_mce/plugins/_template/langs/is.js | 8 + webcit/tiny_mce/plugins/_template/langs/nb.js | 8 + webcit/tiny_mce/plugins/_template/langs/nl.js | 8 + webcit/tiny_mce/plugins/_template/langs/nn.js | 8 + webcit/tiny_mce/plugins/_template/langs/pl.js | 8 + .../tiny_mce/plugins/_template/langs/pt_br.js | 13 + webcit/tiny_mce/plugins/_template/langs/ru.js | 8 + .../plugins/_template/langs/ru_KOI8-R.js | 8 + .../plugins/_template/langs/ru_UTF-8.js | 8 + .../tiny_mce/plugins/_template/langs/zh_cn.js | 8 + .../tiny_mce/plugins/_template/langs/zh_tw.js | 7 + .../plugins/_template/langs/zh_tw_utf8.js | 7 + webcit/tiny_mce/plugins/_template/popup.htm | 48 + webcit/tiny_mce/plugins/_template/readme.txt | 1 + .../tiny_mce/plugins/advhr/editor_plugin.js | 1 + .../plugins/advhr/editor_plugin_src.js | 75 + .../tiny_mce/plugins/advhr/images/advhr.gif | Bin 0 -> 153 bytes .../tiny_mce/plugins/advhr/jscripts/rule.js | 41 + webcit/tiny_mce/plugins/advhr/langs/cs.js | 14 + webcit/tiny_mce/plugins/advhr/langs/cy.js | 8 + webcit/tiny_mce/plugins/advhr/langs/da.js | 8 + webcit/tiny_mce/plugins/advhr/langs/de.js | 8 + webcit/tiny_mce/plugins/advhr/langs/en.js | 8 + webcit/tiny_mce/plugins/advhr/langs/es.js | 10 + webcit/tiny_mce/plugins/advhr/langs/fa.js | 13 + webcit/tiny_mce/plugins/advhr/langs/fi.js | 8 + webcit/tiny_mce/plugins/advhr/langs/fr.js | 9 + webcit/tiny_mce/plugins/advhr/langs/fr_ca.js | 8 + webcit/tiny_mce/plugins/advhr/langs/he.js | 8 + webcit/tiny_mce/plugins/advhr/langs/hu.js | 8 + webcit/tiny_mce/plugins/advhr/langs/is.js | 8 + webcit/tiny_mce/plugins/advhr/langs/nb.js | 8 + webcit/tiny_mce/plugins/advhr/langs/nl.js | 8 + webcit/tiny_mce/plugins/advhr/langs/nn.js | 8 + webcit/tiny_mce/plugins/advhr/langs/pl.js | 11 + webcit/tiny_mce/plugins/advhr/langs/pt_br.js | 16 + webcit/tiny_mce/plugins/advhr/langs/ru.js | 8 + .../tiny_mce/plugins/advhr/langs/ru_KOI8-R.js | 8 + .../tiny_mce/plugins/advhr/langs/ru_UTF-8.js | 8 + webcit/tiny_mce/plugins/advhr/langs/sk.js | 16 + webcit/tiny_mce/plugins/advhr/langs/sv.js | 8 + webcit/tiny_mce/plugins/advhr/langs/zh_cn.js | 8 + webcit/tiny_mce/plugins/advhr/langs/zh_tw.js | 10 + .../plugins/advhr/langs/zh_tw_utf8.js | 10 + webcit/tiny_mce/plugins/advhr/readme.txt | 1 + webcit/tiny_mce/plugins/advhr/rule.htm | 59 + .../plugins/advimage/css/advimage.css | 66 + .../plugins/advimage/editor_plugin.js | 1 + .../plugins/advimage/editor_plugin_src.js | 113 + webcit/tiny_mce/plugins/advimage/image.htm | 240 + .../plugins/advimage/images/sample.gif | Bin 0 -> 1624 bytes .../plugins/advimage/jscripts/functions.js | 545 ++ webcit/tiny_mce/plugins/advimage/langs/cs.js | 8 + webcit/tiny_mce/plugins/advimage/langs/cy.js | 27 + webcit/tiny_mce/plugins/advimage/langs/da.js | 26 + webcit/tiny_mce/plugins/advimage/langs/de.js | 27 + webcit/tiny_mce/plugins/advimage/langs/en.js | 27 + webcit/tiny_mce/plugins/advimage/langs/es.js | 35 + webcit/tiny_mce/plugins/advimage/langs/fa.js | 13 + .../tiny_mce/plugins/advimage/langs/fa_ca.js | 8 + webcit/tiny_mce/plugins/advimage/langs/fr.js | 47 + .../tiny_mce/plugins/advimage/langs/fr_ca.js | 8 + webcit/tiny_mce/plugins/advimage/langs/he.js | 27 + webcit/tiny_mce/plugins/advimage/langs/hu.js | 27 + webcit/tiny_mce/plugins/advimage/langs/is.js | 27 + webcit/tiny_mce/plugins/advimage/langs/ko.js | 8 + webcit/tiny_mce/plugins/advimage/langs/nb.js | 27 + webcit/tiny_mce/plugins/advimage/langs/nl.js | 27 + webcit/tiny_mce/plugins/advimage/langs/nn.js | 27 + webcit/tiny_mce/plugins/advimage/langs/pl.js | 28 + .../tiny_mce/plugins/advimage/langs/pt_br.js | 35 + webcit/tiny_mce/plugins/advimage/langs/ru.js | 26 + .../plugins/advimage/langs/ru_KOI8-R.js | 26 + .../plugins/advimage/langs/ru_UTF-8.js | 26 + webcit/tiny_mce/plugins/advimage/langs/sk.js | 16 + webcit/tiny_mce/plugins/advimage/langs/sv.js | 27 + .../tiny_mce/plugins/advimage/langs/zh_cn.js | 27 + .../tiny_mce/plugins/advimage/langs/zh_tw.js | 29 + .../plugins/advimage/langs/zh_tw_utf8.js | 29 + webcit/tiny_mce/plugins/advimage/readme.txt | 1 + .../tiny_mce/plugins/advlink/css/advlink.css | 35 + .../tiny_mce/plugins/advlink/editor_plugin.js | 1 + .../plugins/advlink/editor_plugin_src.js | 69 + .../plugins/advlink/jscripts/functions.js | 564 ++ webcit/tiny_mce/plugins/advlink/langs/cs.js | 28 + webcit/tiny_mce/plugins/advlink/langs/cy.js | 46 + webcit/tiny_mce/plugins/advlink/langs/da.js | 46 + webcit/tiny_mce/plugins/advlink/langs/de.js | 47 + webcit/tiny_mce/plugins/advlink/langs/en.js | 46 + webcit/tiny_mce/plugins/advlink/langs/es.js | 54 + webcit/tiny_mce/plugins/advlink/langs/fa.js | 27 + webcit/tiny_mce/plugins/advlink/langs/fr.js | 22 + .../tiny_mce/plugins/advlink/langs/fr_ca.js | 22 + webcit/tiny_mce/plugins/advlink/langs/he.js | 46 + webcit/tiny_mce/plugins/advlink/langs/hu.js | 46 + webcit/tiny_mce/plugins/advlink/langs/is.js | 46 + webcit/tiny_mce/plugins/advlink/langs/ko.js | 21 + webcit/tiny_mce/plugins/advlink/langs/nb.js | 46 + webcit/tiny_mce/plugins/advlink/langs/nl.js | 46 + webcit/tiny_mce/plugins/advlink/langs/nn.js | 46 + webcit/tiny_mce/plugins/advlink/langs/pl.js | 49 + .../tiny_mce/plugins/advlink/langs/pt_br.js | 54 + webcit/tiny_mce/plugins/advlink/langs/ru.js | 47 + .../plugins/advlink/langs/ru_KOI8-R.js | 46 + .../plugins/advlink/langs/ru_UTF-8.js | 46 + webcit/tiny_mce/plugins/advlink/langs/sk.js | 30 + webcit/tiny_mce/plugins/advlink/langs/sv.js | 46 + .../tiny_mce/plugins/advlink/langs/zh_cn.js | 46 + .../tiny_mce/plugins/advlink/langs/zh_tw.js | 47 + .../plugins/advlink/langs/zh_tw_utf8.js | 47 + webcit/tiny_mce/plugins/advlink/link.htm | 334 + webcit/tiny_mce/plugins/advlink/readme.txt | 1 + .../plugins/autosave/editor_plugin.js | 1 + .../plugins/autosave/editor_plugin_src.js | 30 + webcit/tiny_mce/plugins/autosave/langs/cs.js | 11 + webcit/tiny_mce/plugins/autosave/langs/cy.js | 5 + webcit/tiny_mce/plugins/autosave/langs/da.js | 5 + webcit/tiny_mce/plugins/autosave/langs/de.js | 5 + webcit/tiny_mce/plugins/autosave/langs/en.js | 5 + webcit/tiny_mce/plugins/autosave/langs/es.js | 13 + webcit/tiny_mce/plugins/autosave/langs/fr.js | 5 + webcit/tiny_mce/plugins/autosave/langs/he.js | 5 + webcit/tiny_mce/plugins/autosave/langs/hu.js | 5 + webcit/tiny_mce/plugins/autosave/langs/is.js | 5 + webcit/tiny_mce/plugins/autosave/langs/nb.js | 6 + webcit/tiny_mce/plugins/autosave/langs/nl.js | 5 + webcit/tiny_mce/plugins/autosave/langs/nn.js | 6 + webcit/tiny_mce/plugins/autosave/langs/pl.js | 8 + .../tiny_mce/plugins/autosave/langs/pt_br.js | 12 + webcit/tiny_mce/plugins/autosave/langs/ru.js | 5 + .../plugins/autosave/langs/ru_KOI8-R.js | 5 + .../plugins/autosave/langs/ru_UTF-8.js | 5 + webcit/tiny_mce/plugins/autosave/langs/sk.js | 13 + webcit/tiny_mce/plugins/autosave/langs/sv.js | 6 + .../tiny_mce/plugins/autosave/langs/zh_cn.js | 5 + .../tiny_mce/plugins/autosave/langs/zh_tw.js | 6 + .../plugins/autosave/langs/zh_tw_utf8.js | 6 + webcit/tiny_mce/plugins/autosave/readme.txt | 1 + .../plugins/contextmenu/css/contextmenu.css | 60 + .../plugins/contextmenu/editor_plugin.js | 1 + .../plugins/contextmenu/editor_plugin_src.js | 309 + .../plugins/contextmenu/images/spacer.gif | Bin 0 -> 43 bytes .../tiny_mce/plugins/contextmenu/readme.txt | 1 + .../plugins/directionality/editor_plugin.js | 1 + .../directionality/editor_plugin_src.js | 81 + .../plugins/directionality/images/ltr.gif | Bin 0 -> 155 bytes .../plugins/directionality/images/rtl.gif | Bin 0 -> 153 bytes .../plugins/directionality/langs/cs.js | 12 + .../plugins/directionality/langs/cy.js | 6 + .../plugins/directionality/langs/da.js | 6 + .../plugins/directionality/langs/de.js | 6 + .../plugins/directionality/langs/en.js | 6 + .../plugins/directionality/langs/es.js | 14 + .../plugins/directionality/langs/fr.js | 6 + .../plugins/directionality/langs/fr_ca.js | 6 + .../plugins/directionality/langs/he.js | 6 + .../plugins/directionality/langs/hu.js | 6 + .../plugins/directionality/langs/is.js | 6 + .../plugins/directionality/langs/nb.js | 6 + .../plugins/directionality/langs/nl.js | 6 + .../plugins/directionality/langs/nn.js | 6 + .../plugins/directionality/langs/pl.js | 8 + .../plugins/directionality/langs/pt_br.js | 13 + .../plugins/directionality/langs/ru.js | 6 + .../plugins/directionality/langs/ru_KOI8-R.js | 6 + .../plugins/directionality/langs/ru_UTF-8.js | 6 + .../plugins/directionality/langs/sk.js | 14 + .../plugins/directionality/langs/sv.js | 6 + .../plugins/directionality/langs/zh_cn.js | 6 + .../plugins/directionality/langs/zh_tw.js | 7 + .../directionality/langs/zh_tw_utf8.js | 7 + .../plugins/directionality/readme.txt | 1 + .../plugins/emotions/editor_plugin.js | 1 + .../plugins/emotions/editor_plugin_src.js | 51 + webcit/tiny_mce/plugins/emotions/emotions.htm | 40 + .../plugins/emotions/images/emotions.gif | Bin 0 -> 357 bytes .../plugins/emotions/images/readme.txt | 2 + .../plugins/emotions/images/smiley-cool.gif | Bin 0 -> 354 bytes .../plugins/emotions/images/smiley-cry.gif | Bin 0 -> 329 bytes .../emotions/images/smiley-embarassed.gif | Bin 0 -> 331 bytes .../emotions/images/smiley-foot-in-mouth.gif | Bin 0 -> 344 bytes .../plugins/emotions/images/smiley-frown.gif | Bin 0 -> 340 bytes .../emotions/images/smiley-innocent.gif | Bin 0 -> 336 bytes .../plugins/emotions/images/smiley-kiss.gif | Bin 0 -> 338 bytes .../emotions/images/smiley-laughing.gif | Bin 0 -> 344 bytes .../emotions/images/smiley-money-mouth.gif | Bin 0 -> 321 bytes .../plugins/emotions/images/smiley-sealed.gif | Bin 0 -> 325 bytes .../plugins/emotions/images/smiley-smile.gif | Bin 0 -> 345 bytes .../emotions/images/smiley-surprised.gif | Bin 0 -> 342 bytes .../emotions/images/smiley-tongue-out.gif | Bin 0 -> 328 bytes .../emotions/images/smiley-undecided.gif | Bin 0 -> 337 bytes .../plugins/emotions/images/smiley-wink.gif | Bin 0 -> 351 bytes .../plugins/emotions/images/smiley-yell.gif | Bin 0 -> 336 bytes .../plugins/emotions/jscripts/functions.js | 21 + webcit/tiny_mce/plugins/emotions/langs/cs.js | 12 + webcit/tiny_mce/plugins/emotions/langs/cy.js | 22 + webcit/tiny_mce/plugins/emotions/langs/da.js | 22 + webcit/tiny_mce/plugins/emotions/langs/de.js | 22 + webcit/tiny_mce/plugins/emotions/langs/el.js | 6 + webcit/tiny_mce/plugins/emotions/langs/en.js | 22 + webcit/tiny_mce/plugins/emotions/langs/es.js | 30 + webcit/tiny_mce/plugins/emotions/langs/fa.js | 11 + webcit/tiny_mce/plugins/emotions/langs/fr.js | 22 + .../tiny_mce/plugins/emotions/langs/fr_ca.js | 6 + webcit/tiny_mce/plugins/emotions/langs/he.js | 22 + webcit/tiny_mce/plugins/emotions/langs/hu.js | 22 + webcit/tiny_mce/plugins/emotions/langs/is.js | 22 + webcit/tiny_mce/plugins/emotions/langs/it.js | 6 + webcit/tiny_mce/plugins/emotions/langs/ko.js | 6 + webcit/tiny_mce/plugins/emotions/langs/nb.js | 22 + webcit/tiny_mce/plugins/emotions/langs/nl.js | 22 + webcit/tiny_mce/plugins/emotions/langs/nn.js | 22 + webcit/tiny_mce/plugins/emotions/langs/pl.js | 25 + .../tiny_mce/plugins/emotions/langs/pt_br.js | 29 + webcit/tiny_mce/plugins/emotions/langs/ru.js | 22 + .../plugins/emotions/langs/ru_KOI8-R.js | 22 + .../plugins/emotions/langs/ru_UTF-8.js | 22 + webcit/tiny_mce/plugins/emotions/langs/sk.js | 14 + webcit/tiny_mce/plugins/emotions/langs/sv.js | 22 + .../tiny_mce/plugins/emotions/langs/zh_cn.js | 22 + .../tiny_mce/plugins/emotions/langs/zh_tw.js | 23 + .../plugins/emotions/langs/zh_tw_utf8.js | 23 + webcit/tiny_mce/plugins/emotions/readme.txt | 1 + webcit/tiny_mce/plugins/flash/css/content.css | 7 + webcit/tiny_mce/plugins/flash/css/flash.css | 11 + .../tiny_mce/plugins/flash/editor_plugin.js | 1 + .../plugins/flash/editor_plugin_src.js | 270 + webcit/tiny_mce/plugins/flash/flash.htm | 70 + .../tiny_mce/plugins/flash/images/flash.gif | Bin 0 -> 241 bytes .../tiny_mce/plugins/flash/jscripts/flash.js | 107 + webcit/tiny_mce/plugins/flash/langs/cs.js | 14 + webcit/tiny_mce/plugins/flash/langs/cy.js | 11 + webcit/tiny_mce/plugins/flash/langs/da.js | 11 + webcit/tiny_mce/plugins/flash/langs/de.js | 11 + webcit/tiny_mce/plugins/flash/langs/en.js | 11 + webcit/tiny_mce/plugins/flash/langs/es.js | 19 + webcit/tiny_mce/plugins/flash/langs/fa.js | 13 + webcit/tiny_mce/plugins/flash/langs/fr.js | 11 + webcit/tiny_mce/plugins/flash/langs/fr_ca.js | 9 + webcit/tiny_mce/plugins/flash/langs/he.js | 11 + webcit/tiny_mce/plugins/flash/langs/hu.js | 11 + webcit/tiny_mce/plugins/flash/langs/is.js | 11 + webcit/tiny_mce/plugins/flash/langs/nb.js | 11 + webcit/tiny_mce/plugins/flash/langs/nl.js | 11 + webcit/tiny_mce/plugins/flash/langs/nn.js | 11 + webcit/tiny_mce/plugins/flash/langs/pl.js | 14 + webcit/tiny_mce/plugins/flash/langs/pt_br.js | 19 + webcit/tiny_mce/plugins/flash/langs/ru.js | 11 + .../tiny_mce/plugins/flash/langs/ru_KOI8-R.js | 11 + .../tiny_mce/plugins/flash/langs/ru_UTF-8.js | 11 + webcit/tiny_mce/plugins/flash/langs/sk.js | 16 + webcit/tiny_mce/plugins/flash/langs/sv.js | 11 + webcit/tiny_mce/plugins/flash/langs/zh_cn.js | 11 + webcit/tiny_mce/plugins/flash/langs/zh_tw.js | 12 + .../plugins/flash/langs/zh_tw_utf8.js | 12 + webcit/tiny_mce/plugins/flash/readme.txt | 1 + .../plugins/fullscreen/editor_plugin.js | 1 + .../plugins/fullscreen/editor_plugin_src.js | 45 + .../plugins/fullscreen/fullscreen.htm | 73 + .../plugins/fullscreen/images/fullscreen.gif | Bin 0 -> 198 bytes .../tiny_mce/plugins/fullscreen/langs/cs.js | 12 + .../tiny_mce/plugins/fullscreen/langs/cy.js | 6 + .../tiny_mce/plugins/fullscreen/langs/da.js | 6 + .../tiny_mce/plugins/fullscreen/langs/de.js | 6 + .../tiny_mce/plugins/fullscreen/langs/en.js | 6 + .../tiny_mce/plugins/fullscreen/langs/es.js | 8 + .../tiny_mce/plugins/fullscreen/langs/fr.js | 6 + .../plugins/fullscreen/langs/fr_ca.js | 6 + .../tiny_mce/plugins/fullscreen/langs/he.js | 6 + .../tiny_mce/plugins/fullscreen/langs/hu.js | 6 + .../tiny_mce/plugins/fullscreen/langs/is.js | 6 + .../tiny_mce/plugins/fullscreen/langs/nb.js | 6 + .../tiny_mce/plugins/fullscreen/langs/nl.js | 6 + .../tiny_mce/plugins/fullscreen/langs/nn.js | 6 + .../tiny_mce/plugins/fullscreen/langs/pl.js | 9 + .../plugins/fullscreen/langs/pt_br.js | 14 + .../tiny_mce/plugins/fullscreen/langs/ru.js | 6 + .../plugins/fullscreen/langs/ru_KOI8-R.js | 6 + .../plugins/fullscreen/langs/ru_UTF-8.js | 6 + .../tiny_mce/plugins/fullscreen/langs/sk.js | 14 + .../tiny_mce/plugins/fullscreen/langs/sv.js | 6 + .../plugins/fullscreen/langs/zh_cn.js | 6 + .../plugins/fullscreen/langs/zh_tw.js | 7 + .../plugins/fullscreen/langs/zh_tw_utf8.js | 7 + webcit/tiny_mce/plugins/fullscreen/readme.txt | 1 + .../tiny_mce/plugins/iespell/editor_plugin.js | 1 + .../plugins/iespell/editor_plugin_src.js | 49 + .../plugins/iespell/images/iespell.gif | Bin 0 -> 124 bytes webcit/tiny_mce/plugins/iespell/langs/cs.js | 12 + webcit/tiny_mce/plugins/iespell/langs/cy.js | 7 + webcit/tiny_mce/plugins/iespell/langs/da.js | 7 + webcit/tiny_mce/plugins/iespell/langs/de.js | 7 + webcit/tiny_mce/plugins/iespell/langs/el.js | 7 + webcit/tiny_mce/plugins/iespell/langs/en.js | 7 + webcit/tiny_mce/plugins/iespell/langs/es.js | 15 + webcit/tiny_mce/plugins/iespell/langs/fr.js | 7 + .../tiny_mce/plugins/iespell/langs/fr_ca.js | 6 + webcit/tiny_mce/plugins/iespell/langs/he.js | 6 + webcit/tiny_mce/plugins/iespell/langs/hu.js | 7 + webcit/tiny_mce/plugins/iespell/langs/is.js | 7 + webcit/tiny_mce/plugins/iespell/langs/it.js | 7 + webcit/tiny_mce/plugins/iespell/langs/ko.js | 7 + webcit/tiny_mce/plugins/iespell/langs/nb.js | 6 + webcit/tiny_mce/plugins/iespell/langs/nl.js | 6 + webcit/tiny_mce/plugins/iespell/langs/nn.js | 6 + webcit/tiny_mce/plugins/iespell/langs/pl.js | 8 + .../tiny_mce/plugins/iespell/langs/pt_br.js | 14 + webcit/tiny_mce/plugins/iespell/langs/ru.js | 7 + .../plugins/iespell/langs/ru_KOI8-R.js | 7 + .../plugins/iespell/langs/ru_UTF-8.js | 7 + webcit/tiny_mce/plugins/iespell/langs/sk.js | 14 + webcit/tiny_mce/plugins/iespell/langs/sv.js | 6 + .../tiny_mce/plugins/iespell/langs/zh_cn.js | 6 + .../tiny_mce/plugins/iespell/langs/zh_tw.js | 7 + .../plugins/iespell/langs/zh_tw_utf8.js | 8 + webcit/tiny_mce/plugins/iespell/readme.txt | 1 + .../plugins/inlinepopups/css/inlinepopup.css | 69 + .../plugins/inlinepopups/editor_plugin.js | 1 + .../plugins/inlinepopups/editor_plugin_src.js | 653 ++ .../plugins/inlinepopups/images/spacer.gif | Bin 0 -> 43 bytes .../inlinepopups/images/window_close.gif | Bin 0 -> 110 bytes .../inlinepopups/images/window_maximize.gif | Bin 0 -> 111 bytes .../inlinepopups/images/window_minimize.gif | Bin 0 -> 112 bytes .../inlinepopups/images/window_resize.gif | Bin 0 -> 74 bytes .../inlinepopups/jscripts/mcwindows.js | 455 ++ .../tiny_mce/plugins/inlinepopups/readme.txt | 0 .../plugins/insertdatetime/editor_plugin.js | 1 + .../insertdatetime/editor_plugin_src.js | 82 + .../insertdatetime/images/insertdate.gif | Bin 0 -> 287 bytes .../insertdatetime/images/inserttime.gif | Bin 0 -> 239 bytes .../plugins/insertdatetime/langs/cs.js | 18 + .../plugins/insertdatetime/langs/cy.js | 12 + .../plugins/insertdatetime/langs/da.js | 12 + .../plugins/insertdatetime/langs/de.js | 12 + .../plugins/insertdatetime/langs/el.js | 12 + .../plugins/insertdatetime/langs/en.js | 12 + .../plugins/insertdatetime/langs/es.js | 20 + .../plugins/insertdatetime/langs/fa.js | 13 + .../plugins/insertdatetime/langs/fi.js | 12 + .../plugins/insertdatetime/langs/fr.js | 12 + .../plugins/insertdatetime/langs/fr_ca.js | 10 + .../plugins/insertdatetime/langs/he.js | 12 + .../plugins/insertdatetime/langs/hu.js | 12 + .../plugins/insertdatetime/langs/is.js | 12 + .../plugins/insertdatetime/langs/it.js | 12 + .../plugins/insertdatetime/langs/ko.js | 12 + .../plugins/insertdatetime/langs/nb.js | 12 + .../plugins/insertdatetime/langs/nl.js | 12 + .../plugins/insertdatetime/langs/nn.js | 12 + .../plugins/insertdatetime/langs/pl.js | 15 + .../plugins/insertdatetime/langs/pt_br.js | 20 + .../plugins/insertdatetime/langs/ru.js | 12 + .../plugins/insertdatetime/langs/ru_KOI8-R.js | 12 + .../plugins/insertdatetime/langs/ru_UTF-8.js | 12 + .../plugins/insertdatetime/langs/sk.js | 20 + .../plugins/insertdatetime/langs/sv.js | 12 + .../plugins/insertdatetime/langs/zh_cn.js | 12 + .../plugins/insertdatetime/langs/zh_tw.js | 13 + .../insertdatetime/langs/zh_tw_utf8.js | 13 + .../plugins/insertdatetime/readme.txt | 1 + .../plugins/noneditable/css/noneditable.css | 17 + .../plugins/noneditable/editor_plugin.js | 1 + .../plugins/noneditable/editor_plugin_src.js | 149 + .../tiny_mce/plugins/noneditable/readme.txt | 1 + webcit/tiny_mce/plugins/paste/blank.htm | 19 + webcit/tiny_mce/plugins/paste/css/blank.css | 13 + .../tiny_mce/plugins/paste/css/pasteword.css | 3 + .../tiny_mce/plugins/paste/editor_plugin.js | 1 + .../plugins/paste/editor_plugin_src.js | 333 + .../plugins/paste/images/pastetext.gif | Bin 0 -> 294 bytes .../plugins/paste/images/pasteword.gif | Bin 0 -> 299 bytes .../plugins/paste/images/selectall.gif | Bin 0 -> 205 bytes .../plugins/paste/jscripts/pastetext.js | 34 + .../plugins/paste/jscripts/pasteword.js | 46 + webcit/tiny_mce/plugins/paste/langs/cs.js | 16 + webcit/tiny_mce/plugins/paste/langs/cy.js | 10 + webcit/tiny_mce/plugins/paste/langs/da.js | 10 + webcit/tiny_mce/plugins/paste/langs/de.js | 10 + webcit/tiny_mce/plugins/paste/langs/en.js | 10 + webcit/tiny_mce/plugins/paste/langs/es.js | 12 + webcit/tiny_mce/plugins/paste/langs/fi.js | 10 + webcit/tiny_mce/plugins/paste/langs/fr.js | 10 + webcit/tiny_mce/plugins/paste/langs/fr_ca.js | 10 + webcit/tiny_mce/plugins/paste/langs/he.js | 10 + webcit/tiny_mce/plugins/paste/langs/hu.js | 10 + webcit/tiny_mce/plugins/paste/langs/is.js | 10 + webcit/tiny_mce/plugins/paste/langs/nb.js | 10 + webcit/tiny_mce/plugins/paste/langs/nl.js | 10 + webcit/tiny_mce/plugins/paste/langs/nn.js | 10 + webcit/tiny_mce/plugins/paste/langs/pl.js | 12 + webcit/tiny_mce/plugins/paste/langs/pt_br.js | 17 + webcit/tiny_mce/plugins/paste/langs/ru.js | 10 + .../tiny_mce/plugins/paste/langs/ru_KOI8-R.js | 10 + .../tiny_mce/plugins/paste/langs/ru_UTF-8.js | 10 + webcit/tiny_mce/plugins/paste/langs/sk.js | 18 + webcit/tiny_mce/plugins/paste/langs/sv.js | 10 + webcit/tiny_mce/plugins/paste/langs/zh_cn.js | 10 + webcit/tiny_mce/plugins/paste/langs/zh_tw.js | 11 + .../plugins/paste/langs/zh_tw_utf8.js | 11 + webcit/tiny_mce/plugins/paste/pastetext.htm | 34 + webcit/tiny_mce/plugins/paste/pasteword.htm | 29 + webcit/tiny_mce/plugins/paste/readme.txt | 1 + .../tiny_mce/plugins/preview/editor_plugin.js | 1 + .../plugins/preview/editor_plugin_src.js | 72 + webcit/tiny_mce/plugins/preview/example.html | 13 + .../plugins/preview/images/preview.gif | Bin 0 -> 286 bytes webcit/tiny_mce/plugins/preview/langs/cs.js | 11 + webcit/tiny_mce/plugins/preview/langs/cy.js | 5 + webcit/tiny_mce/plugins/preview/langs/da.js | 5 + webcit/tiny_mce/plugins/preview/langs/de.js | 5 + webcit/tiny_mce/plugins/preview/langs/el.js | 5 + webcit/tiny_mce/plugins/preview/langs/en.js | 5 + webcit/tiny_mce/plugins/preview/langs/es.js | 7 + webcit/tiny_mce/plugins/preview/langs/fa.js | 10 + webcit/tiny_mce/plugins/preview/langs/fr.js | 6 + .../tiny_mce/plugins/preview/langs/fr_ca.js | 5 + webcit/tiny_mce/plugins/preview/langs/he.js | 5 + webcit/tiny_mce/plugins/preview/langs/hu.js | 5 + webcit/tiny_mce/plugins/preview/langs/is.js | 5 + webcit/tiny_mce/plugins/preview/langs/it.js | 5 + webcit/tiny_mce/plugins/preview/langs/ko.js | 5 + webcit/tiny_mce/plugins/preview/langs/nb.js | 5 + webcit/tiny_mce/plugins/preview/langs/nl.js | 5 + webcit/tiny_mce/plugins/preview/langs/nn.js | 5 + webcit/tiny_mce/plugins/preview/langs/pl.js | 7 + webcit/tiny_mce/plugins/preview/langs/pt.js | 5 + .../tiny_mce/plugins/preview/langs/pt_br.js | 13 + webcit/tiny_mce/plugins/preview/langs/ru.js | 5 + .../plugins/preview/langs/ru_KOI8-R.js | 5 + .../plugins/preview/langs/ru_UTF-8.js | 5 + webcit/tiny_mce/plugins/preview/langs/sk.js | 13 + webcit/tiny_mce/plugins/preview/langs/sv.js | 5 + .../tiny_mce/plugins/preview/langs/zh_cn.js | 5 + .../tiny_mce/plugins/preview/langs/zh_tw.js | 6 + .../plugins/preview/langs/zh_tw_utf8.js | 6 + webcit/tiny_mce/plugins/preview/readme.txt | 1 + .../tiny_mce/plugins/print/editor_plugin.js | 1 + .../plugins/print/editor_plugin_src.js | 37 + .../tiny_mce/plugins/print/images/print.gif | Bin 0 -> 211 bytes webcit/tiny_mce/plugins/print/langs/cs.js | 11 + webcit/tiny_mce/plugins/print/langs/cy.js | 5 + webcit/tiny_mce/plugins/print/langs/da.js | 5 + webcit/tiny_mce/plugins/print/langs/de.js | 5 + webcit/tiny_mce/plugins/print/langs/en.js | 5 + webcit/tiny_mce/plugins/print/langs/es.js | 7 + webcit/tiny_mce/plugins/print/langs/fa.js | 10 + webcit/tiny_mce/plugins/print/langs/fi.js | 5 + webcit/tiny_mce/plugins/print/langs/fr.js | 5 + webcit/tiny_mce/plugins/print/langs/fr_ca.js | 5 + webcit/tiny_mce/plugins/print/langs/he.js | 5 + webcit/tiny_mce/plugins/print/langs/hu.js | 5 + webcit/tiny_mce/plugins/print/langs/is.js | 5 + webcit/tiny_mce/plugins/print/langs/nb.js | 5 + webcit/tiny_mce/plugins/print/langs/nl.js | 5 + webcit/tiny_mce/plugins/print/langs/nn.js | 5 + webcit/tiny_mce/plugins/print/langs/pl.js | 5 + webcit/tiny_mce/plugins/print/langs/pt_br.js | 13 + webcit/tiny_mce/plugins/print/langs/ru.js | 5 + .../tiny_mce/plugins/print/langs/ru_KOI8-R.js | 5 + .../tiny_mce/plugins/print/langs/ru_UTF-8.js | 5 + webcit/tiny_mce/plugins/print/langs/sk.js | 13 + webcit/tiny_mce/plugins/print/langs/sv.js | 5 + webcit/tiny_mce/plugins/print/langs/zh_cn.js | 6 + webcit/tiny_mce/plugins/print/langs/zh_tw.js | 6 + .../plugins/print/langs/zh_tw_utf8.js | 6 + webcit/tiny_mce/plugins/print/readme.txt | 1 + webcit/tiny_mce/plugins/readme.txt | 1 + webcit/tiny_mce/plugins/save/editor_plugin.js | 1 + .../plugins/save/editor_plugin_src.js | 58 + webcit/tiny_mce/plugins/save/images/save.gif | Bin 0 -> 285 bytes webcit/tiny_mce/plugins/save/langs/cs.js | 11 + webcit/tiny_mce/plugins/save/langs/cy.js | 5 + webcit/tiny_mce/plugins/save/langs/da.js | 5 + webcit/tiny_mce/plugins/save/langs/de.js | 5 + webcit/tiny_mce/plugins/save/langs/en.js | 5 + webcit/tiny_mce/plugins/save/langs/es.js | 7 + webcit/tiny_mce/plugins/save/langs/fa.js | 11 + webcit/tiny_mce/plugins/save/langs/fi.js | 5 + webcit/tiny_mce/plugins/save/langs/fr.js | 6 + webcit/tiny_mce/plugins/save/langs/fr_ca.js | 6 + webcit/tiny_mce/plugins/save/langs/he.js | 5 + webcit/tiny_mce/plugins/save/langs/hu.js | 5 + webcit/tiny_mce/plugins/save/langs/is.js | 5 + webcit/tiny_mce/plugins/save/langs/nb.js | 5 + webcit/tiny_mce/plugins/save/langs/nl.js | 5 + webcit/tiny_mce/plugins/save/langs/nn.js | 5 + webcit/tiny_mce/plugins/save/langs/pl.js | 5 + webcit/tiny_mce/plugins/save/langs/pt_br.js | 13 + webcit/tiny_mce/plugins/save/langs/ru.js | 5 + .../tiny_mce/plugins/save/langs/ru_KOI8-R.js | 5 + .../tiny_mce/plugins/save/langs/ru_UTF-8.js | 5 + webcit/tiny_mce/plugins/save/langs/sk.js | 13 + webcit/tiny_mce/plugins/save/langs/sv.js | 5 + webcit/tiny_mce/plugins/save/langs/zh_cn.js | 7 + webcit/tiny_mce/plugins/save/langs/zh_tw.js | 6 + .../tiny_mce/plugins/save/langs/zh_tw_utf8.js | 6 + webcit/tiny_mce/plugins/save/readme.txt | 1 + .../plugins/searchreplace/editor_plugin.js | 1 + .../searchreplace/editor_plugin_src.js | 195 + .../plugins/searchreplace/images/replace.gif | Bin 0 -> 125 bytes .../plugins/searchreplace/images/search.gif | Bin 0 -> 191 bytes .../plugins/searchreplace/jscripts/replace.js | 40 + .../plugins/searchreplace/jscripts/search.js | 36 + .../plugins/searchreplace/langs/cs.js | 27 + .../plugins/searchreplace/langs/cy.js | 22 + .../plugins/searchreplace/langs/da.js | 21 + .../plugins/searchreplace/langs/de.js | 22 + .../plugins/searchreplace/langs/en.js | 21 + .../plugins/searchreplace/langs/es.js | 30 + .../plugins/searchreplace/langs/fa.js | 26 + .../plugins/searchreplace/langs/fi.js | 21 + .../plugins/searchreplace/langs/fr.js | 22 + .../plugins/searchreplace/langs/fr_ca.js | 21 + .../plugins/searchreplace/langs/he.js | 21 + .../plugins/searchreplace/langs/hu.js | 21 + .../plugins/searchreplace/langs/is.js | 22 + .../plugins/searchreplace/langs/nb.js | 21 + .../plugins/searchreplace/langs/nl.js | 21 + .../plugins/searchreplace/langs/nn.js | 21 + .../plugins/searchreplace/langs/pl.js | 23 + .../plugins/searchreplace/langs/pt_br.js | 29 + .../plugins/searchreplace/langs/ru.js | 22 + .../plugins/searchreplace/langs/ru_KOI8-R.js | 21 + .../plugins/searchreplace/langs/ru_UTF-8.js | 21 + .../plugins/searchreplace/langs/sk.js | 29 + .../plugins/searchreplace/langs/sv.js | 21 + .../plugins/searchreplace/langs/zh_cn.js | 21 + .../plugins/searchreplace/langs/zh_tw.js | 22 + .../plugins/searchreplace/langs/zh_tw_utf8.js | 22 + .../tiny_mce/plugins/searchreplace/readme.txt | 1 + .../plugins/searchreplace/replace.htm | 49 + .../tiny_mce/plugins/searchreplace/search.htm | 42 + webcit/tiny_mce/plugins/table/cell.htm | 182 + webcit/tiny_mce/plugins/table/css/cell.css | 17 + webcit/tiny_mce/plugins/table/css/row.css | 25 + webcit/tiny_mce/plugins/table/css/table.css | 13 + .../tiny_mce/plugins/table/editor_plugin.js | 1 + .../plugins/table/editor_plugin_src.js | 1041 +++ .../tiny_mce/plugins/table/images/buttons.gif | Bin 0 -> 1356 bytes .../tiny_mce/plugins/table/images/table.gif | Bin 0 -> 287 bytes .../plugins/table/images/table_cell_props.gif | Bin 0 -> 189 bytes .../plugins/table/images/table_delete.gif | Bin 0 -> 372 bytes .../plugins/table/images/table_delete_col.gif | Bin 0 -> 163 bytes .../plugins/table/images/table_delete_row.gif | Bin 0 -> 171 bytes .../table/images/table_insert_col_after.gif | Bin 0 -> 165 bytes .../table/images/table_insert_col_before.gif | Bin 0 -> 165 bytes .../table/images/table_insert_row_after.gif | Bin 0 -> 163 bytes .../table/images/table_insert_row_before.gif | Bin 0 -> 159 bytes .../table/images/table_merge_cells.gif | Bin 0 -> 198 bytes .../plugins/table/images/table_row_props.gif | Bin 0 -> 187 bytes .../table/images/table_split_cells.gif | Bin 0 -> 210 bytes .../tiny_mce/plugins/table/jscripts/cell.js | 249 + .../plugins/table/jscripts/merge_cells.js | 19 + webcit/tiny_mce/plugins/table/jscripts/row.js | 200 + .../tiny_mce/plugins/table/jscripts/table.js | 327 + webcit/tiny_mce/plugins/table/langs/ar.js | 43 + webcit/tiny_mce/plugins/table/langs/cs.js | 49 + webcit/tiny_mce/plugins/table/langs/cy.js | 76 + webcit/tiny_mce/plugins/table/langs/da.js | 69 + webcit/tiny_mce/plugins/table/langs/de.js | 76 + webcit/tiny_mce/plugins/table/langs/el.js | 43 + webcit/tiny_mce/plugins/table/langs/en.js | 75 + webcit/tiny_mce/plugins/table/langs/es.js | 84 + webcit/tiny_mce/plugins/table/langs/fa.js | 47 + webcit/tiny_mce/plugins/table/langs/fi.js | 77 + webcit/tiny_mce/plugins/table/langs/fr.js | 77 + webcit/tiny_mce/plugins/table/langs/fr_ca.js | 43 + webcit/tiny_mce/plugins/table/langs/he.js | 75 + webcit/tiny_mce/plugins/table/langs/hu.js | 75 + webcit/tiny_mce/plugins/table/langs/is.js | 76 + webcit/tiny_mce/plugins/table/langs/it.js | 43 + webcit/tiny_mce/plugins/table/langs/ja.js | 43 + webcit/tiny_mce/plugins/table/langs/ko.js | 43 + webcit/tiny_mce/plugins/table/langs/nb.js | 75 + webcit/tiny_mce/plugins/table/langs/nl.js | 75 + webcit/tiny_mce/plugins/table/langs/nn.js | 76 + webcit/tiny_mce/plugins/table/langs/pl.js | 78 + webcit/tiny_mce/plugins/table/langs/pt.js | 84 + webcit/tiny_mce/plugins/table/langs/pt_br.js | 85 + .../tiny_mce/plugins/table/langs/readme.txt | 4 + webcit/tiny_mce/plugins/table/langs/ru.js | 77 + .../tiny_mce/plugins/table/langs/ru_KOI8-R.js | 75 + .../tiny_mce/plugins/table/langs/ru_UTF-8.js | 75 + webcit/tiny_mce/plugins/table/langs/sk.js | 51 + webcit/tiny_mce/plugins/table/langs/sv.js | 76 + webcit/tiny_mce/plugins/table/langs/tw.js | 43 + webcit/tiny_mce/plugins/table/langs/zh_cn.js | 75 + webcit/tiny_mce/plugins/table/langs/zh_tw.js | 76 + .../plugins/table/langs/zh_tw_utf8.js | 76 + webcit/tiny_mce/plugins/table/merge_cells.htm | 37 + webcit/tiny_mce/plugins/table/readme.txt | 1 + webcit/tiny_mce/plugins/table/row.htm | 159 + webcit/tiny_mce/plugins/table/table.htm | 155 + webcit/tiny_mce/plugins/zoom/editor_plugin.js | 6 + .../plugins/zoom/editor_plugin_src.js | 47 + webcit/tiny_mce/plugins/zoom/langs/es.js | 3 + webcit/tiny_mce/plugins/zoom/langs/fr.js | 3 + webcit/tiny_mce/plugins/zoom/langs/he.js | 5 + webcit/tiny_mce/plugins/zoom/langs/pt_br.js | 10 + webcit/tiny_mce/plugins/zoom/langs/ru.js | 5 + .../tiny_mce/plugins/zoom/langs/ru_KOI8-R.js | 5 + .../tiny_mce/plugins/zoom/langs/ru_UTF-8.js | 5 + webcit/tiny_mce/plugins/zoom/langs/zh_tw.js | 6 + .../tiny_mce/plugins/zoom/langs/zh_tw_utf8.js | 6 + webcit/tiny_mce/plugins/zoom/readme.txt | 1 + webcit/tiny_mce/themes/advanced/about.htm | 53 + webcit/tiny_mce/themes/advanced/anchor.htm | 33 + webcit/tiny_mce/themes/advanced/charmap.htm | 53 + .../tiny_mce/themes/advanced/color_picker.htm | 13 + .../themes/advanced/css/editor_content.css | 55 + .../themes/advanced/css/editor_popup.css | 319 + .../themes/advanced/css/editor_ui.css | 173 + .../themes/advanced/docs/cs/about.htm | 31 + .../advanced/docs/cs/common_buttons.htm | 170 + .../docs/cs/images/insert_image_window.png | Bin 0 -> 4799 bytes .../docs/cs/images/insert_link_window.png | Bin 0 -> 3833 bytes .../docs/cs/images/insert_table_window.png | Bin 0 -> 4620 bytes .../themes/advanced/docs/cs/index.htm | 26 + .../advanced/docs/cs/insert_image_button.htm | 66 + .../advanced/docs/cs/insert_link_button.htm | 34 + .../advanced/docs/cs/insert_table_button.htm | 68 + .../themes/advanced/docs/cs/style.css | 28 + .../themes/advanced/docs/da/about.htm | 31 + .../advanced/docs/da/common_buttons.htm | 162 + .../docs/da/create_accessible_content.htm | 76 + .../docs/da/images/insert_anchor_window.gif | Bin 0 -> 5189 bytes .../docs/da/images/insert_image_window.gif | Bin 0 -> 7195 bytes .../docs/da/images/insert_link_window.gif | Bin 0 -> 5658 bytes .../docs/da/images/insert_table_window.gif | Bin 0 -> 10359 bytes .../themes/advanced/docs/da/index.htm | 28 + .../advanced/docs/da/insert_anchor_button.htm | 33 + .../advanced/docs/da/insert_image_button.htm | 67 + .../advanced/docs/da/insert_link_button.htm | 34 + .../advanced/docs/da/insert_table_button.htm | 72 + .../themes/advanced/docs/da/style.css | 28 + .../themes/advanced/docs/de/about.htm | 31 + .../advanced/docs/de/common_buttons.htm | 107 + .../docs/de/images/insert_image_window.gif | Bin 0 -> 4822 bytes .../docs/de/images/insert_link_window.gif | Bin 0 -> 5135 bytes .../themes/advanced/docs/de/index.htm | 24 + .../advanced/docs/de/insert_image_button.htm | 33 + .../advanced/docs/de/insert_link_button.htm | 34 + .../themes/advanced/docs/de/style.css | 28 + .../themes/advanced/docs/en/about.htm | 31 + .../advanced/docs/en/common_buttons.htm | 162 + .../docs/en/create_accessible_content.htm | 45 + .../docs/en/images/insert_anchor_window.gif | Bin 0 -> 5189 bytes .../docs/en/images/insert_image_window.gif | Bin 0 -> 7195 bytes .../docs/en/images/insert_link_window.gif | Bin 0 -> 5658 bytes .../docs/en/images/insert_table_window.gif | Bin 0 -> 7094 bytes .../themes/advanced/docs/en/index.htm | 27 + .../advanced/docs/en/insert_anchor_button.htm | 32 + .../advanced/docs/en/insert_image_button.htm | 65 + .../advanced/docs/en/insert_link_button.htm | 33 + .../advanced/docs/en/insert_table_button.htm | 71 + .../themes/advanced/docs/en/style.css | 28 + .../themes/advanced/docs/es/about.htm | 28 + .../advanced/docs/es/common_buttons.htm | 155 + .../docs/es/images/insert_image_window.gif | Bin 0 -> 7195 bytes .../docs/es/images/insert_link_window.gif | Bin 0 -> 5658 bytes .../docs/es/images/insert_table_window.gif | Bin 0 -> 6747 bytes .../themes/advanced/docs/es/index.htm | 25 + .../advanced/docs/es/insert_image_button.htm | 64 + .../advanced/docs/es/insert_link_button.htm | 32 + .../advanced/docs/es/insert_table_button.htm | 67 + .../themes/advanced/docs/es/style.css | 28 + .../themes/advanced/docs/fi/about.htm | 28 + .../advanced/docs/fi/common_buttons.htm | 156 + .../docs/fi/images/insert_image_window.gif | Bin 0 -> 8825 bytes .../docs/fi/images/insert_link_window.gif | Bin 0 -> 8223 bytes .../docs/fi/images/insert_table_window.gif | Bin 0 -> 8442 bytes .../themes/advanced/docs/fi/index.htm | 25 + .../advanced/docs/fi/insert_image_button.htm | 65 + .../advanced/docs/fi/insert_link_button.htm | 35 + .../advanced/docs/fi/insert_table_button.htm | 67 + .../themes/advanced/docs/fi/style.css | 28 + .../themes/advanced/docs/fr/about.htm | 32 + .../advanced/docs/fr/common_buttons.htm | 160 + .../docs/fr/images/insert_image_window.gif | Bin 0 -> 38920 bytes .../docs/fr/images/insert_link_window.gif | Bin 0 -> 20970 bytes .../docs/fr/images/insert_table_window.gif | Bin 0 -> 32353 bytes .../themes/advanced/docs/fr/index.htm | 25 + .../advanced/docs/fr/insert_image_button.htm | 66 + .../advanced/docs/fr/insert_link_button.htm | 34 + .../advanced/docs/fr/insert_table_button.htm | 71 + .../themes/advanced/docs/fr/style.css | 28 + .../themes/advanced/docs/fr_ca/about.htm | 32 + .../advanced/docs/fr_ca/common_buttons.htm | 160 + .../fr_ca/images/insert_anchor_window.gif | Bin 0 -> 12662 bytes .../docs/fr_ca/images/insert_image_window.gif | Bin 0 -> 38920 bytes .../docs/fr_ca/images/insert_link_window.gif | Bin 0 -> 20970 bytes .../docs/fr_ca/images/insert_table_window.gif | Bin 0 -> 32353 bytes .../themes/advanced/docs/fr_ca/index.htm | 25 + .../docs/fr_ca/insert_anchor_button.htm | 32 + .../docs/fr_ca/insert_image_button.htm | 66 + .../docs/fr_ca/insert_link_button.htm | 34 + .../docs/fr_ca/insert_table_button.htm | 71 + .../themes/advanced/docs/fr_ca/style.css | 28 + .../themes/advanced/docs/hu/about.htm | 28 + .../advanced/docs/hu/common_buttons.htm | 106 + .../docs/hu/images/insert_image_window.gif | Bin 0 -> 5486 bytes .../docs/hu/images/insert_link_window.gif | Bin 0 -> 5762 bytes .../themes/advanced/docs/hu/index.htm | 24 + .../advanced/docs/hu/insert_image_button.htm | 32 + .../advanced/docs/hu/insert_link_button.htm | 31 + .../themes/advanced/docs/hu/style.css | 28 + .../themes/advanced/docs/images/table.gif | Bin 0 -> 1018 bytes .../advanced/docs/images/table_delete_col.gif | Bin 0 -> 929 bytes .../advanced/docs/images/table_delete_row.gif | Bin 0 -> 942 bytes .../docs/images/table_insert_col_after.gif | Bin 0 -> 936 bytes .../docs/images/table_insert_col_before.gif | Bin 0 -> 935 bytes .../docs/images/table_insert_row_after.gif | Bin 0 -> 928 bytes .../docs/images/table_insert_row_before.gif | Bin 0 -> 928 bytes .../themes/advanced/docs/it/about.htm | 37 + .../advanced/docs/it/common_buttons.htm | 180 + .../docs/it/images/insert_anchor_window.gif | Bin 0 -> 5336 bytes .../docs/it/images/insert_image_window.gif | Bin 0 -> 7248 bytes .../docs/it/images/insert_link_window.gif | Bin 0 -> 5909 bytes .../docs/it/images/insert_table_window.gif | Bin 0 -> 7379 bytes .../themes/advanced/docs/it/index.htm | 30 + .../advanced/docs/it/insert_anchor_button.htm | 32 + .../advanced/docs/it/insert_image_button.htm | 66 + .../advanced/docs/it/insert_link_button.htm | 41 + .../advanced/docs/it/insert_table_button.htm | 71 + .../themes/advanced/docs/it/style.css | 28 + .../themes/advanced/docs/nb/about.htm | 32 + .../advanced/docs/nb/common_buttons.htm | 163 + .../docs/nb/images/insert_anchor_window.gif | Bin 0 -> 5229 bytes .../docs/nb/images/insert_image_window.gif | Bin 0 -> 7844 bytes .../docs/nb/images/insert_link_window.gif | Bin 0 -> 5767 bytes .../docs/nb/images/insert_table_window.gif | Bin 0 -> 7099 bytes .../themes/advanced/docs/nb/index.htm | 27 + .../advanced/docs/nb/insert_anchor_button.htm | 34 + .../advanced/docs/nb/insert_image_button.htm | 71 + .../advanced/docs/nb/insert_link_button.htm | 33 + .../advanced/docs/nb/insert_table_button.htm | 72 + .../themes/advanced/docs/nb/style.css | 28 + .../themes/advanced/docs/nl/about.htm | 31 + .../advanced/docs/nl/common_buttons.htm | 188 + .../docs/nl/images/html_source_window.gif | Bin 0 -> 16012 bytes .../docs/nl/images/insert_anchor_window.gif | Bin 0 -> 4031 bytes .../docs/nl/images/insert_image_window.gif | Bin 0 -> 8363 bytes .../docs/nl/images/insert_link_window.gif | Bin 0 -> 5569 bytes .../docs/nl/images/insert_specchar_window.gif | Bin 0 -> 10407 bytes .../docs/nl/images/insert_table_window.gif | Bin 0 -> 7337 bytes .../themes/advanced/docs/nl/index.htm | 27 + .../advanced/docs/nl/insert_anchor_button.htm | 37 + .../advanced/docs/nl/insert_image_button.htm | 65 + .../advanced/docs/nl/insert_link_button.htm | 35 + .../docs/nl/insert_specchar_button.htm | 32 + .../advanced/docs/nl/insert_table_button.htm | 73 + .../themes/advanced/docs/nl/style.css | 28 + .../themes/advanced/docs/nn/about.htm | 32 + .../advanced/docs/nn/common_buttons.htm | 163 + .../docs/nn/images/html_source_window.gif | Bin 0 -> 16012 bytes .../docs/nn/images/insert_anchor_window.gif | Bin 0 -> 5229 bytes .../docs/nn/images/insert_image_window.gif | Bin 0 -> 7844 bytes .../docs/nn/images/insert_link_window.gif | Bin 0 -> 5767 bytes .../docs/nn/images/insert_specchar_window.gif | Bin 0 -> 10407 bytes .../docs/nn/images/insert_table_window.gif | Bin 0 -> 7099 bytes .../themes/advanced/docs/nn/index.htm | 27 + .../advanced/docs/nn/insert_anchor_button.htm | 34 + .../advanced/docs/nn/insert_image_button.htm | 71 + .../advanced/docs/nn/insert_link_button.htm | 33 + .../advanced/docs/nn/insert_table_button.htm | 72 + .../themes/advanced/docs/nn/style.css | 28 + .../themes/advanced/docs/pl/about.htm | 33 + .../advanced/docs/pl/common_buttons.htm | 164 + .../docs/pl/images/insert_anchor_window.gif | Bin 0 -> 5401 bytes .../docs/pl/images/insert_image_window.gif | Bin 0 -> 7532 bytes .../docs/pl/images/insert_link_window.gif | Bin 0 -> 5781 bytes .../docs/pl/images/insert_table_window.gif | Bin 0 -> 7418 bytes .../themes/advanced/docs/pl/index.htm | 28 + .../advanced/docs/pl/insert_anchor_button.htm | 33 + .../advanced/docs/pl/insert_image_button.htm | 65 + .../advanced/docs/pl/insert_link_button.htm | 35 + .../advanced/docs/pl/insert_table_button.htm | 73 + .../themes/advanced/docs/pl/style.css | 28 + .../themes/advanced/docs/sk/about.htm | 32 + .../advanced/docs/sk/common_buttons.htm | 170 + .../docs/sk/images/insert_image_window.png | Bin 0 -> 4799 bytes .../docs/sk/images/insert_link_window.png | Bin 0 -> 3833 bytes .../docs/sk/images/insert_table_window.png | Bin 0 -> 4620 bytes .../themes/advanced/docs/sk/index.htm | 26 + .../advanced/docs/sk/insert_image_button.htm | 66 + .../advanced/docs/sk/insert_link_button.htm | 34 + .../advanced/docs/sk/insert_table_button.htm | 68 + .../themes/advanced/docs/sk/style.css | 28 + .../themes/advanced/docs/sv/about.htm | 32 + .../advanced/docs/sv/common_buttons.htm | 163 + .../docs/sv/images/insert_anchor_window.gif | Bin 0 -> 5229 bytes .../docs/sv/images/insert_image_window.gif | Bin 0 -> 7844 bytes .../docs/sv/images/insert_link_window.gif | Bin 0 -> 5767 bytes .../docs/sv/images/insert_table_window.gif | Bin 0 -> 7099 bytes .../themes/advanced/docs/sv/index.htm | 27 + .../advanced/docs/sv/insert_anchor_button.htm | 34 + .../advanced/docs/sv/insert_image_button.htm | 71 + .../advanced/docs/sv/insert_link_button.htm | 33 + .../advanced/docs/sv/insert_table_button.htm | 72 + .../themes/advanced/docs/sv/style.css | 28 + .../themes/advanced/docs/zh_cn/about.htm | 29 + .../advanced/docs/zh_cn/common_buttons.htm | 160 + .../zh_cn/images/insert_anchor_window.gif | Bin 0 -> 10444 bytes .../docs/zh_cn/images/insert_image_window.gif | Bin 0 -> 21752 bytes .../docs/zh_cn/images/insert_link_window.gif | Bin 0 -> 12005 bytes .../docs/zh_cn/images/insert_table_window.gif | Bin 0 -> 19062 bytes .../themes/advanced/docs/zh_cn/index.htm | 27 + .../docs/zh_cn/insert_anchor_button.htm | 31 + .../docs/zh_cn/insert_image_button.htm | 63 + .../docs/zh_cn/insert_link_button.htm | 32 + .../docs/zh_cn/insert_table_button.htm | 71 + .../themes/advanced/docs/zh_cn/style.css | 28 + .../themes/advanced/editor_template.js | 12 + .../themes/advanced/editor_template_src.js | 1208 ++++ webcit/tiny_mce/themes/advanced/image.htm | 91 + .../themes/advanced/images/anchor.gif | Bin 0 -> 171 bytes .../themes/advanced/images/anchor_symbol.gif | Bin 0 -> 70 bytes .../themes/advanced/images/backcolor.gif | Bin 0 -> 174 bytes .../tiny_mce/themes/advanced/images/bold.gif | Bin 0 -> 76 bytes .../themes/advanced/images/bold_de_se.gif | Bin 0 -> 73 bytes .../themes/advanced/images/bold_es.gif | Bin 0 -> 80 bytes .../themes/advanced/images/bold_fr.gif | Bin 0 -> 78 bytes .../themes/advanced/images/bold_ru.gif | Bin 0 -> 77 bytes .../themes/advanced/images/bold_tw.gif | Bin 0 -> 207 bytes .../themes/advanced/images/browse.gif | Bin 0 -> 113 bytes .../themes/advanced/images/bullist.gif | Bin 0 -> 108 bytes .../themes/advanced/images/buttons.gif | Bin 0 -> 3286 bytes .../advanced/images/cancel_button_bg.gif | Bin 0 -> 677 bytes .../themes/advanced/images/charmap.gif | Bin 0 -> 245 bytes .../themes/advanced/images/cleanup.gif | Bin 0 -> 256 bytes .../tiny_mce/themes/advanced/images/close.gif | Bin 0 -> 102 bytes .../tiny_mce/themes/advanced/images/code.gif | Bin 0 -> 110 bytes .../tiny_mce/themes/advanced/images/color.gif | Bin 0 -> 125 bytes .../tiny_mce/themes/advanced/images/copy.gif | Bin 0 -> 263 bytes .../themes/advanced/images/custom_1.gif | Bin 0 -> 76 bytes .../tiny_mce/themes/advanced/images/cut.gif | Bin 0 -> 187 bytes .../themes/advanced/images/forecolor.gif | Bin 0 -> 272 bytes .../tiny_mce/themes/advanced/images/help.gif | Bin 0 -> 295 bytes webcit/tiny_mce/themes/advanced/images/hr.gif | Bin 0 -> 63 bytes .../tiny_mce/themes/advanced/images/image.gif | Bin 0 -> 194 bytes .../themes/advanced/images/indent.gif | Bin 0 -> 112 bytes .../advanced/images/insert_button_bg.gif | Bin 0 -> 703 bytes .../themes/advanced/images/italic.gif | Bin 0 -> 79 bytes .../themes/advanced/images/italic_de_se.gif | Bin 0 -> 75 bytes .../themes/advanced/images/italic_es.gif | Bin 0 -> 74 bytes .../themes/advanced/images/italic_ru.gif | Bin 0 -> 78 bytes .../themes/advanced/images/italic_tw.gif | Bin 0 -> 274 bytes .../themes/advanced/images/justifycenter.gif | Bin 0 -> 70 bytes .../themes/advanced/images/justifyfull.gif | Bin 0 -> 71 bytes .../themes/advanced/images/justifyleft.gif | Bin 0 -> 71 bytes .../themes/advanced/images/justifyright.gif | Bin 0 -> 70 bytes .../tiny_mce/themes/advanced/images/link.gif | Bin 0 -> 175 bytes .../themes/advanced/images/newdocument.gif | Bin 0 -> 170 bytes .../themes/advanced/images/numlist.gif | Bin 0 -> 111 bytes .../themes/advanced/images/opacity.png | Bin 0 -> 147 bytes .../themes/advanced/images/outdent.gif | Bin 0 -> 110 bytes .../tiny_mce/themes/advanced/images/paste.gif | Bin 0 -> 286 bytes .../tiny_mce/themes/advanced/images/redo.gif | Bin 0 -> 169 bytes .../themes/advanced/images/removeformat.gif | Bin 0 -> 168 bytes .../themes/advanced/images/spacer.gif | Bin 0 -> 43 bytes .../advanced/images/statusbar_resize.gif | Bin 0 -> 79 bytes .../themes/advanced/images/strikethrough.gif | Bin 0 -> 83 bytes .../tiny_mce/themes/advanced/images/sub.gif | Bin 0 -> 148 bytes .../tiny_mce/themes/advanced/images/sup.gif | Bin 0 -> 147 bytes .../tiny_mce/themes/advanced/images/table.gif | Bin 0 -> 287 bytes .../advanced/images/table_delete_col.gif | Bin 0 -> 163 bytes .../advanced/images/table_delete_row.gif | Bin 0 -> 171 bytes .../images/table_insert_col_after.gif | Bin 0 -> 165 bytes .../images/table_insert_col_before.gif | Bin 0 -> 165 bytes .../images/table_insert_row_after.gif | Bin 0 -> 163 bytes .../images/table_insert_row_before.gif | Bin 0 -> 159 bytes .../themes/advanced/images/underline.gif | Bin 0 -> 88 bytes .../themes/advanced/images/underline_es.gif | Bin 0 -> 79 bytes .../themes/advanced/images/underline_fr.gif | Bin 0 -> 79 bytes .../themes/advanced/images/underline_ru.gif | Bin 0 -> 77 bytes .../themes/advanced/images/underline_tw.gif | Bin 0 -> 245 bytes .../tiny_mce/themes/advanced/images/undo.gif | Bin 0 -> 175 bytes .../themes/advanced/images/unlink.gif | Bin 0 -> 190 bytes .../themes/advanced/images/visualaid.gif | Bin 0 -> 206 bytes .../themes/advanced/images/xp/tab_bg.gif | Bin 0 -> 694 bytes .../themes/advanced/images/xp/tab_end.gif | Bin 0 -> 169 bytes .../themes/advanced/images/xp/tab_sel_bg.gif | Bin 0 -> 428 bytes .../themes/advanced/images/xp/tab_sel_end.gif | Bin 0 -> 101 bytes .../themes/advanced/images/xp/tabs_bg.gif | Bin 0 -> 48 bytes .../themes/advanced/jscripts/about.js | 74 + .../themes/advanced/jscripts/anchor.js | 59 + .../themes/advanced/jscripts/charmap.js | 324 + .../themes/advanced/jscripts/color_picker.js | 107 + .../themes/advanced/jscripts/image.js | 81 + .../tiny_mce/themes/advanced/jscripts/link.js | 69 + .../themes/advanced/jscripts/source_editor.js | 53 + webcit/tiny_mce/themes/advanced/langs/ar.js | 63 + webcit/tiny_mce/themes/advanced/langs/ca.js | 64 + webcit/tiny_mce/themes/advanced/langs/cs.js | 70 + webcit/tiny_mce/themes/advanced/langs/cy.js | 76 + webcit/tiny_mce/themes/advanced/langs/da.js | 75 + webcit/tiny_mce/themes/advanced/langs/de.js | 76 + webcit/tiny_mce/themes/advanced/langs/el.js | 64 + webcit/tiny_mce/themes/advanced/langs/en.js | 76 + webcit/tiny_mce/themes/advanced/langs/es.js | 101 + webcit/tiny_mce/themes/advanced/langs/fa.js | 65 + webcit/tiny_mce/themes/advanced/langs/fi.js | 77 + webcit/tiny_mce/themes/advanced/langs/fr.js | 78 + .../tiny_mce/themes/advanced/langs/fr_ca.js | 64 + webcit/tiny_mce/themes/advanced/langs/he.js | 76 + webcit/tiny_mce/themes/advanced/langs/hu.js | 75 + webcit/tiny_mce/themes/advanced/langs/is.js | 76 + webcit/tiny_mce/themes/advanced/langs/it.js | 64 + webcit/tiny_mce/themes/advanced/langs/ja.js | 62 + webcit/tiny_mce/themes/advanced/langs/ko.js | 65 + webcit/tiny_mce/themes/advanced/langs/nb.js | 77 + webcit/tiny_mce/themes/advanced/langs/nl.js | 76 + webcit/tiny_mce/themes/advanced/langs/nn.js | 77 + webcit/tiny_mce/themes/advanced/langs/pl.js | 79 + webcit/tiny_mce/themes/advanced/langs/pt.js | 65 + .../tiny_mce/themes/advanced/langs/pt_br.js | 115 + .../tiny_mce/themes/advanced/langs/readme.txt | 4 + webcit/tiny_mce/themes/advanced/langs/ru.js | 76 + .../themes/advanced/langs/ru_KOI8-R.js | 76 + .../themes/advanced/langs/ru_UTF-8.js | 76 + webcit/tiny_mce/themes/advanced/langs/sk.js | 72 + webcit/tiny_mce/themes/advanced/langs/sv.js | 77 + webcit/tiny_mce/themes/advanced/langs/tw.js | 91 + .../tiny_mce/themes/advanced/langs/zh_cn.js | 76 + .../tiny_mce/themes/advanced/langs/zh_tw.js | 78 + .../themes/advanced/langs/zh_tw_utf8.js | 78 + webcit/tiny_mce/themes/advanced/link.htm | 92 + .../themes/advanced/source_editor.htm | 30 + .../themes/simple/css/editor_content.css | 27 + .../themes/simple/css/editor_popup.css | 41 + .../tiny_mce/themes/simple/css/editor_ui.css | 92 + .../tiny_mce/themes/simple/editor_template.js | 20 + .../themes/simple/editor_template_src.js | 70 + webcit/tiny_mce/themes/simple/images/bold.gif | Bin 0 -> 76 bytes .../themes/simple/images/bold_de_se.gif | Bin 0 -> 73 bytes .../tiny_mce/themes/simple/images/bold_fr.gif | Bin 0 -> 78 bytes .../tiny_mce/themes/simple/images/bold_ru.gif | Bin 0 -> 77 bytes .../tiny_mce/themes/simple/images/bold_tw.gif | Bin 0 -> 207 bytes .../tiny_mce/themes/simple/images/bullist.gif | Bin 0 -> 108 bytes .../tiny_mce/themes/simple/images/cleanup.gif | Bin 0 -> 256 bytes .../tiny_mce/themes/simple/images/italic.gif | Bin 0 -> 79 bytes .../themes/simple/images/italic_de_se.gif | Bin 0 -> 75 bytes .../themes/simple/images/italic_ru.gif | Bin 0 -> 78 bytes .../themes/simple/images/italic_tw.gif | Bin 0 -> 274 bytes .../tiny_mce/themes/simple/images/numlist.gif | Bin 0 -> 111 bytes webcit/tiny_mce/themes/simple/images/redo.gif | Bin 0 -> 169 bytes .../tiny_mce/themes/simple/images/spacer.gif | Bin 0 -> 43 bytes .../themes/simple/images/strikethrough.gif | Bin 0 -> 83 bytes .../themes/simple/images/underline.gif | Bin 0 -> 88 bytes .../themes/simple/images/underline_fr.gif | Bin 0 -> 79 bytes .../themes/simple/images/underline_ru.gif | Bin 0 -> 77 bytes .../themes/simple/images/underline_tw.gif | Bin 0 -> 245 bytes webcit/tiny_mce/themes/simple/images/undo.gif | Bin 0 -> 175 bytes webcit/tiny_mce/tiny_mce.js | 3 + webcit/tiny_mce/tiny_mce_popup.js | 253 + webcit/tiny_mce/tiny_mce_src.js | 6077 +++++++++++++++++ webcit/tiny_mce/utils/form_utils.js | 203 + webcit/tiny_mce/utils/mctabs.js | 76 + webcit/tiny_mce/utils/validate.js | 50 + webcit/tools.c | 618 ++ webcit/useredit.c | 500 ++ webcit/userlist.c | 174 + webcit/vcard.c | 376 + webcit/vcard.h | 39 + webcit/vcard_edit.c | 459 ++ webcit/webcit.c | 1668 +++++ webcit/webcit.h | 745 ++ webcit/webserver.c | 811 +++ webcit/webserver.h | 12 + webcit/who.c | 281 + webcit/wiki.c | 110 + 1249 files changed, 93258 insertions(+) create mode 100644 webcit/.cvsignore create mode 100644 webcit/COPYING.txt create mode 100644 webcit/Doxyfile create mode 100644 webcit/Makefile.in create mode 100644 webcit/README.txt create mode 100644 webcit/auth.c create mode 100644 webcit/autocompletion.c create mode 100644 webcit/availability.c create mode 100755 webcit/bootstrap create mode 100755 webcit/buildpackages create mode 100644 webcit/calendar.c create mode 100644 webcit/calendar_tools.c create mode 100644 webcit/calendar_view.c create mode 100755 webcit/config.guess create mode 100644 webcit/config.h create mode 100755 webcit/config.rpath create mode 100755 webcit/config.sub create mode 100644 webcit/configure.in create mode 100644 webcit/context_loop.c create mode 100644 webcit/cookie_conversion.c create mode 100644 webcit/crypto.c create mode 100644 webcit/debian/README.Debian create mode 100644 webcit/debian/changelog create mode 100644 webcit/debian/citadel-webcit-apache.config create mode 100644 webcit/debian/citadel-webcit-apache.postinst create mode 100644 webcit/debian/citadel-webcit-apache.postrm create mode 100644 webcit/debian/citadel-webcit-apache.postrm.debhelper create mode 100644 webcit/debian/citadel-webcit-apache.substvars create mode 100644 webcit/debian/citadel-webcit-apache.templates create mode 100755 webcit/debian/citadel-webcit.config create mode 100644 webcit/debian/citadel-webcit.postinst create mode 100644 webcit/debian/citadel-webcit.postrm create mode 100644 webcit/debian/citadel-webcit.postrm.debhelper create mode 100644 webcit/debian/citadel-webcit.substvars create mode 100644 webcit/debian/citadel-webcit.templates create mode 100644 webcit/debian/compat create mode 100644 webcit/debian/control create mode 100644 webcit/debian/copyright create mode 100644 webcit/debian/dirs create mode 100644 webcit/debian/docs create mode 100755 webcit/debian/rules create mode 100644 webcit/debian/webcit.substvars create mode 100644 webcit/doxygen_groups.c create mode 100644 webcit/event.c create mode 100644 webcit/floors.c create mode 100644 webcit/fmt_date.c create mode 100644 webcit/gettext.c create mode 100644 webcit/graphics.c create mode 100644 webcit/groupdav.h create mode 100644 webcit/groupdav_delete.c create mode 100644 webcit/groupdav_get.c create mode 100644 webcit/groupdav_main.c create mode 100644 webcit/groupdav_options.c create mode 100644 webcit/groupdav_propfind.c create mode 100644 webcit/groupdav_put.c create mode 100644 webcit/html2html.c create mode 100644 webcit/http_datestring.c create mode 100644 webcit/ical_dezonify.c create mode 100644 webcit/iconbar.c create mode 100644 webcit/inetconf.c create mode 100755 webcit/install-sh create mode 100644 webcit/listsub.c create mode 100644 webcit/locate_host.c create mode 100644 webcit/mainmenu.c create mode 100644 webcit/messages.c create mode 100644 webcit/mime_parser.c create mode 100644 webcit/mime_parser.h create mode 100755 webcit/missing create mode 100755 webcit/mkinstalldirs create mode 100644 webcit/netconf.c create mode 100644 webcit/notes.c create mode 100644 webcit/packageversion create mode 100644 webcit/paging.c create mode 100644 webcit/po/Makefile.in create mode 100644 webcit/po/create-pot.sh create mode 100644 webcit/po/de.po create mode 100644 webcit/po/en_GB.po create mode 100644 webcit/po/es.po create mode 100644 webcit/po/it.po create mode 100644 webcit/po/webcit.pot create mode 100644 webcit/preferences.c create mode 100644 webcit/roomops.c create mode 100644 webcit/rss.c create mode 100644 webcit/serv_func.c create mode 100644 webcit/setup.c create mode 100644 webcit/setup_wizard.c create mode 100644 webcit/siteconfig.c create mode 100644 webcit/snprintf.c create mode 100644 webcit/static/BubbleTooltips.js create mode 100644 webcit/static/activeuser_24x.gif create mode 100644 webcit/static/addevent_24x.gif create mode 100644 webcit/static/addnewcontact_24x.gif create mode 100644 webcit/static/advanpage2_32x.gif create mode 100644 webcit/static/advanpage2_48x.gif create mode 100644 webcit/static/beginbox.html create mode 100644 webcit/static/beginbox_nt.html create mode 100644 webcit/static/bgcolor.gif create mode 100644 webcit/static/blackdot.gif create mode 100644 webcit/static/blank.gif create mode 100644 webcit/static/body-background.gif create mode 100644 webcit/static/bold.gif create mode 100644 webcit/static/bt.css create mode 100644 webcit/static/bt.gif create mode 100644 webcit/static/calarea_16x.gif create mode 100644 webcit/static/calarea_32x.gif create mode 100644 webcit/static/calarea_48x.gif create mode 100644 webcit/static/centre.gif create mode 100644 webcit/static/chatframeset.html create mode 100644 webcit/static/chatrooms_16x.gif create mode 100644 webcit/static/chatrooms_32x.gif create mode 100644 webcit/static/chatrooms_48x.gif create mode 100644 webcit/static/citadel-logo.gif create mode 100644 webcit/static/citadelchat_16x.gif create mode 100644 webcit/static/citadelchat_24x.gif create mode 100644 webcit/static/citadelchat_32x.gif create mode 100644 webcit/static/citadelchat_48x.gif create mode 100644 webcit/static/controls.js create mode 100644 webcit/static/copy.gif create mode 100644 webcit/static/cut.gif create mode 100644 webcit/static/diskette_24x.gif create mode 100644 webcit/static/down_pointer.gif create mode 100644 webcit/static/dragdrop.js create mode 100644 webcit/static/effects.js create mode 100644 webcit/static/empty.html create mode 100644 webcit/static/endbox.html create mode 100644 webcit/static/enternewnote_24x.gif create mode 100644 webcit/static/error.gif create mode 100644 webcit/static/favicon.ico create mode 100644 webcit/static/folder_closed.gif create mode 100644 webcit/static/folder_open.gif create mode 100644 webcit/static/head.html create mode 100644 webcit/static/hr.gif create mode 100644 webcit/static/hyperlink.gif create mode 100644 webcit/static/image.gif create mode 100644 webcit/static/inactiveuser_24x.gif create mode 100644 webcit/static/indent.gif create mode 100644 webcit/static/instant_messenger.html create mode 100644 webcit/static/italic.gif create mode 100644 webcit/static/justifyfull.gif create mode 100644 webcit/static/lastnode.gif create mode 100644 webcit/static/left_just.gif create mode 100644 webcit/static/line.gif create mode 100644 webcit/static/list.gif create mode 100644 webcit/static/login.html create mode 100644 webcit/static/logoff_32x.gif create mode 100644 webcit/static/markngo_24x.gif create mode 100644 webcit/static/menubar.html create mode 100644 webcit/static/minus.gif create mode 100644 webcit/static/minus_last.gif create mode 100644 webcit/static/minus_last_no_root.gif create mode 100644 webcit/static/minus_no_root.gif create mode 100644 webcit/static/minus_nolines.gif create mode 100644 webcit/static/monthview2_24x.gif create mode 100644 webcit/static/nanotree.js create mode 100644 webcit/static/newmess2_24x.gif create mode 100644 webcit/static/newmess3_24x.gif create mode 100644 webcit/static/newstartpage.html create mode 100644 webcit/static/nextdate_32x.gif create mode 100644 webcit/static/niftyCorners.css create mode 100644 webcit/static/niftycube.js create mode 100644 webcit/static/nocookies.html create mode 100644 webcit/static/numbered_list.gif create mode 100644 webcit/static/outdent.gif create mode 100644 webcit/static/page.gif create mode 100644 webcit/static/page16x16.gif create mode 100644 webcit/static/palette.htm create mode 100644 webcit/static/paste.gif create mode 100644 webcit/static/plus.gif create mode 100644 webcit/static/plus_last.gif create mode 100644 webcit/static/plus_last_no_root.gif create mode 100644 webcit/static/plus_no_root.gif create mode 100644 webcit/static/plus_nolines.gif create mode 100644 webcit/static/prevdate_32x.gif create mode 100644 webcit/static/privatemess_16x.gif create mode 100644 webcit/static/privatemess_32x.gif create mode 100644 webcit/static/privatemess_48x.gif create mode 100644 webcit/static/prototype.js create mode 100644 webcit/static/readallmess3_24x.gif create mode 100644 webcit/static/redo.gif create mode 100644 webcit/static/right_just.gif create mode 100644 webcit/static/robots.txt create mode 100644 webcit/static/roombanner.html create mode 100644 webcit/static/rte.css create mode 100644 webcit/static/savecontact_16x.gif create mode 100644 webcit/static/savecontact_32x.gif create mode 100644 webcit/static/savecontact_48x.gif create mode 100644 webcit/static/scriptaculous.js create mode 100644 webcit/static/skipthisroom_24x.gif create mode 100644 webcit/static/sort_none.gif create mode 100644 webcit/static/spellcheck.gif create mode 100644 webcit/static/square.gif create mode 100644 webcit/static/storenotes_16x.gif create mode 100644 webcit/static/storenotes_32x.gif create mode 100644 webcit/static/storenotes_48x.gif create mode 100644 webcit/static/summscreen_32x.gif create mode 100644 webcit/static/summscreen_48x.gif create mode 100644 webcit/static/t.gif create mode 100644 webcit/static/t_no_root.gif create mode 100644 webcit/static/taskday2_24x.gif create mode 100644 webcit/static/taskmanag_16x.gif create mode 100644 webcit/static/taskmanag_24x.gif create mode 100644 webcit/static/taskmanag_32x.gif create mode 100644 webcit/static/taskmanag_48x.gif create mode 100644 webcit/static/textcolor.gif create mode 100644 webcit/static/trailing.html create mode 100644 webcit/static/underline.gif create mode 100644 webcit/static/undo.gif create mode 100644 webcit/static/ungoto2_24x.gif create mode 100644 webcit/static/unittest.js create mode 100644 webcit/static/up_pointer.gif create mode 100644 webcit/static/usermanag_32x.gif create mode 100644 webcit/static/usermanag_48x.gif create mode 100644 webcit/static/util.js create mode 100644 webcit/static/viewcontacts_16x.gif create mode 100644 webcit/static/viewcontacts_24x.gif create mode 100644 webcit/static/viewcontacts_32x.gif create mode 100644 webcit/static/viewcontacts_48x.gif create mode 100644 webcit/static/viewnotes_24x.gif create mode 100644 webcit/static/wclib.js create mode 100644 webcit/static/webcit-tinymce.css create mode 100644 webcit/static/webcit.css create mode 100644 webcit/static/week_view.gif create mode 100644 webcit/static/white.gif create mode 100644 webcit/static/xml_button.gif create mode 100644 webcit/static/year_view.gif create mode 100644 webcit/subst.c create mode 100644 webcit/summary.c create mode 100644 webcit/sysmsgs.c create mode 100644 webcit/tabs.c create mode 100644 webcit/tcp_sockets.c create mode 100644 webcit/tiny_mce/blank.htm create mode 100644 webcit/tiny_mce/langs/ar.js create mode 100644 webcit/tiny_mce/langs/ca.js create mode 100644 webcit/tiny_mce/langs/cs.js create mode 100644 webcit/tiny_mce/langs/cy.js create mode 100644 webcit/tiny_mce/langs/da.js create mode 100644 webcit/tiny_mce/langs/de.js create mode 100644 webcit/tiny_mce/langs/el.js create mode 100644 webcit/tiny_mce/langs/en.js create mode 100644 webcit/tiny_mce/langs/es.js create mode 100644 webcit/tiny_mce/langs/fa.js create mode 100644 webcit/tiny_mce/langs/fi.js create mode 100644 webcit/tiny_mce/langs/fr.js create mode 100644 webcit/tiny_mce/langs/fr_ca.js create mode 100644 webcit/tiny_mce/langs/he.js create mode 100644 webcit/tiny_mce/langs/hu.js create mode 100644 webcit/tiny_mce/langs/is.js create mode 100644 webcit/tiny_mce/langs/it.js create mode 100644 webcit/tiny_mce/langs/ja.js create mode 100644 webcit/tiny_mce/langs/ko.js create mode 100644 webcit/tiny_mce/langs/nb.js create mode 100644 webcit/tiny_mce/langs/nl.js create mode 100644 webcit/tiny_mce/langs/nn.js create mode 100644 webcit/tiny_mce/langs/pl.js create mode 100644 webcit/tiny_mce/langs/pt.js create mode 100644 webcit/tiny_mce/langs/pt_br.js create mode 100644 webcit/tiny_mce/langs/readme.txt create mode 100644 webcit/tiny_mce/langs/ru.js create mode 100644 webcit/tiny_mce/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/langs/sk.js create mode 100644 webcit/tiny_mce/langs/sv.js create mode 100644 webcit/tiny_mce/langs/th.js create mode 100644 webcit/tiny_mce/langs/zh_cn.js create mode 100644 webcit/tiny_mce/langs/zh_tw.js create mode 100644 webcit/tiny_mce/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/license.txt create mode 100644 webcit/tiny_mce/plugins/_template/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/_template/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/_template/images/template.gif create mode 100644 webcit/tiny_mce/plugins/_template/langs/da.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/de.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/en.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/es.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/he.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/is.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/_template/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/_template/popup.htm create mode 100644 webcit/tiny_mce/plugins/_template/readme.txt create mode 100644 webcit/tiny_mce/plugins/advhr/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/advhr/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/advhr/images/advhr.gif create mode 100644 webcit/tiny_mce/plugins/advhr/jscripts/rule.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/da.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/de.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/en.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/es.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/fa.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/fi.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/he.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/is.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/advhr/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/advhr/readme.txt create mode 100644 webcit/tiny_mce/plugins/advhr/rule.htm create mode 100644 webcit/tiny_mce/plugins/advimage/css/advimage.css create mode 100644 webcit/tiny_mce/plugins/advimage/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/advimage/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/advimage/image.htm create mode 100644 webcit/tiny_mce/plugins/advimage/images/sample.gif create mode 100644 webcit/tiny_mce/plugins/advimage/jscripts/functions.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/da.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/de.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/en.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/es.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/fa.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/fa_ca.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/he.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/is.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/ko.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/advimage/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/advimage/readme.txt create mode 100644 webcit/tiny_mce/plugins/advlink/css/advlink.css create mode 100644 webcit/tiny_mce/plugins/advlink/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/advlink/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/advlink/jscripts/functions.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/da.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/de.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/en.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/es.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/fa.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/he.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/is.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/ko.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/advlink/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/advlink/link.htm create mode 100644 webcit/tiny_mce/plugins/advlink/readme.txt create mode 100644 webcit/tiny_mce/plugins/autosave/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/autosave/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/da.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/de.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/en.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/es.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/he.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/is.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/autosave/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/autosave/readme.txt create mode 100644 webcit/tiny_mce/plugins/contextmenu/css/contextmenu.css create mode 100644 webcit/tiny_mce/plugins/contextmenu/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/contextmenu/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/contextmenu/images/spacer.gif create mode 100644 webcit/tiny_mce/plugins/contextmenu/readme.txt create mode 100644 webcit/tiny_mce/plugins/directionality/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/directionality/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/directionality/images/ltr.gif create mode 100644 webcit/tiny_mce/plugins/directionality/images/rtl.gif create mode 100644 webcit/tiny_mce/plugins/directionality/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/da.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/de.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/en.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/es.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/he.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/is.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/directionality/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/directionality/readme.txt create mode 100644 webcit/tiny_mce/plugins/emotions/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/emotions/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/emotions/emotions.htm create mode 100644 webcit/tiny_mce/plugins/emotions/images/emotions.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/readme.txt create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-cool.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-cry.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-embarassed.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-foot-in-mouth.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-frown.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-innocent.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-kiss.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-laughing.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-money-mouth.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-sealed.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-smile.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-surprised.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-undecided.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-wink.gif create mode 100644 webcit/tiny_mce/plugins/emotions/images/smiley-yell.gif create mode 100644 webcit/tiny_mce/plugins/emotions/jscripts/functions.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/da.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/de.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/el.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/en.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/es.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/fa.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/he.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/is.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/it.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/ko.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/emotions/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/emotions/readme.txt create mode 100644 webcit/tiny_mce/plugins/flash/css/content.css create mode 100644 webcit/tiny_mce/plugins/flash/css/flash.css create mode 100644 webcit/tiny_mce/plugins/flash/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/flash/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/flash/flash.htm create mode 100644 webcit/tiny_mce/plugins/flash/images/flash.gif create mode 100644 webcit/tiny_mce/plugins/flash/jscripts/flash.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/da.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/de.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/en.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/es.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/fa.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/he.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/is.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/flash/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/flash/readme.txt create mode 100644 webcit/tiny_mce/plugins/fullscreen/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/fullscreen.htm create mode 100644 webcit/tiny_mce/plugins/fullscreen/images/fullscreen.gif create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/da.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/de.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/en.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/es.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/he.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/is.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/fullscreen/readme.txt create mode 100644 webcit/tiny_mce/plugins/iespell/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/iespell/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/iespell/images/iespell.gif create mode 100644 webcit/tiny_mce/plugins/iespell/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/da.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/de.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/el.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/en.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/es.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/he.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/is.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/it.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/ko.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/iespell/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/iespell/readme.txt create mode 100644 webcit/tiny_mce/plugins/inlinepopups/css/inlinepopup.css create mode 100644 webcit/tiny_mce/plugins/inlinepopups/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/inlinepopups/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/inlinepopups/images/spacer.gif create mode 100644 webcit/tiny_mce/plugins/inlinepopups/images/window_close.gif create mode 100644 webcit/tiny_mce/plugins/inlinepopups/images/window_maximize.gif create mode 100644 webcit/tiny_mce/plugins/inlinepopups/images/window_minimize.gif create mode 100644 webcit/tiny_mce/plugins/inlinepopups/images/window_resize.gif create mode 100644 webcit/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js create mode 100644 webcit/tiny_mce/plugins/inlinepopups/readme.txt create mode 100644 webcit/tiny_mce/plugins/insertdatetime/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/images/insertdate.gif create mode 100644 webcit/tiny_mce/plugins/insertdatetime/images/inserttime.gif create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/da.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/de.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/el.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/en.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/es.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/fa.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/fi.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/he.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/is.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/it.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/ko.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/insertdatetime/readme.txt create mode 100644 webcit/tiny_mce/plugins/noneditable/css/noneditable.css create mode 100644 webcit/tiny_mce/plugins/noneditable/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/noneditable/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/noneditable/readme.txt create mode 100644 webcit/tiny_mce/plugins/paste/blank.htm create mode 100644 webcit/tiny_mce/plugins/paste/css/blank.css create mode 100644 webcit/tiny_mce/plugins/paste/css/pasteword.css create mode 100644 webcit/tiny_mce/plugins/paste/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/paste/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/paste/images/pastetext.gif create mode 100644 webcit/tiny_mce/plugins/paste/images/pasteword.gif create mode 100644 webcit/tiny_mce/plugins/paste/images/selectall.gif create mode 100644 webcit/tiny_mce/plugins/paste/jscripts/pastetext.js create mode 100644 webcit/tiny_mce/plugins/paste/jscripts/pasteword.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/da.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/de.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/en.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/es.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/fi.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/he.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/is.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/paste/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/paste/pastetext.htm create mode 100644 webcit/tiny_mce/plugins/paste/pasteword.htm create mode 100644 webcit/tiny_mce/plugins/paste/readme.txt create mode 100644 webcit/tiny_mce/plugins/preview/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/preview/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/preview/example.html create mode 100644 webcit/tiny_mce/plugins/preview/images/preview.gif create mode 100644 webcit/tiny_mce/plugins/preview/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/da.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/de.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/el.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/en.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/es.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/fa.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/he.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/is.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/it.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/ko.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/pt.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/preview/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/preview/readme.txt create mode 100644 webcit/tiny_mce/plugins/print/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/print/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/print/images/print.gif create mode 100644 webcit/tiny_mce/plugins/print/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/print/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/print/langs/da.js create mode 100644 webcit/tiny_mce/plugins/print/langs/de.js create mode 100644 webcit/tiny_mce/plugins/print/langs/en.js create mode 100644 webcit/tiny_mce/plugins/print/langs/es.js create mode 100644 webcit/tiny_mce/plugins/print/langs/fa.js create mode 100644 webcit/tiny_mce/plugins/print/langs/fi.js create mode 100644 webcit/tiny_mce/plugins/print/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/print/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/print/langs/he.js create mode 100644 webcit/tiny_mce/plugins/print/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/print/langs/is.js create mode 100644 webcit/tiny_mce/plugins/print/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/print/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/print/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/print/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/print/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/print/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/print/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/print/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/print/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/print/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/print/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/print/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/print/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/print/readme.txt create mode 100644 webcit/tiny_mce/plugins/readme.txt create mode 100644 webcit/tiny_mce/plugins/save/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/save/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/save/images/save.gif create mode 100644 webcit/tiny_mce/plugins/save/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/save/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/save/langs/da.js create mode 100644 webcit/tiny_mce/plugins/save/langs/de.js create mode 100644 webcit/tiny_mce/plugins/save/langs/en.js create mode 100644 webcit/tiny_mce/plugins/save/langs/es.js create mode 100644 webcit/tiny_mce/plugins/save/langs/fa.js create mode 100644 webcit/tiny_mce/plugins/save/langs/fi.js create mode 100644 webcit/tiny_mce/plugins/save/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/save/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/save/langs/he.js create mode 100644 webcit/tiny_mce/plugins/save/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/save/langs/is.js create mode 100644 webcit/tiny_mce/plugins/save/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/save/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/save/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/save/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/save/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/save/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/save/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/save/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/save/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/save/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/save/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/save/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/save/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/save/readme.txt create mode 100644 webcit/tiny_mce/plugins/searchreplace/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/images/replace.gif create mode 100644 webcit/tiny_mce/plugins/searchreplace/images/search.gif create mode 100644 webcit/tiny_mce/plugins/searchreplace/jscripts/replace.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/jscripts/search.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/da.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/de.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/en.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/es.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/fa.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/fi.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/he.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/is.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/searchreplace/readme.txt create mode 100644 webcit/tiny_mce/plugins/searchreplace/replace.htm create mode 100644 webcit/tiny_mce/plugins/searchreplace/search.htm create mode 100644 webcit/tiny_mce/plugins/table/cell.htm create mode 100644 webcit/tiny_mce/plugins/table/css/cell.css create mode 100644 webcit/tiny_mce/plugins/table/css/row.css create mode 100644 webcit/tiny_mce/plugins/table/css/table.css create mode 100644 webcit/tiny_mce/plugins/table/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/table/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/table/images/buttons.gif create mode 100644 webcit/tiny_mce/plugins/table/images/table.gif create mode 100644 webcit/tiny_mce/plugins/table/images/table_cell_props.gif create mode 100644 webcit/tiny_mce/plugins/table/images/table_delete.gif create mode 100644 webcit/tiny_mce/plugins/table/images/table_delete_col.gif create mode 100644 webcit/tiny_mce/plugins/table/images/table_delete_row.gif create mode 100644 webcit/tiny_mce/plugins/table/images/table_insert_col_after.gif create mode 100644 webcit/tiny_mce/plugins/table/images/table_insert_col_before.gif create mode 100644 webcit/tiny_mce/plugins/table/images/table_insert_row_after.gif create mode 100644 webcit/tiny_mce/plugins/table/images/table_insert_row_before.gif create mode 100644 webcit/tiny_mce/plugins/table/images/table_merge_cells.gif create mode 100644 webcit/tiny_mce/plugins/table/images/table_row_props.gif create mode 100644 webcit/tiny_mce/plugins/table/images/table_split_cells.gif create mode 100644 webcit/tiny_mce/plugins/table/jscripts/cell.js create mode 100644 webcit/tiny_mce/plugins/table/jscripts/merge_cells.js create mode 100644 webcit/tiny_mce/plugins/table/jscripts/row.js create mode 100644 webcit/tiny_mce/plugins/table/jscripts/table.js create mode 100644 webcit/tiny_mce/plugins/table/langs/ar.js create mode 100644 webcit/tiny_mce/plugins/table/langs/cs.js create mode 100644 webcit/tiny_mce/plugins/table/langs/cy.js create mode 100644 webcit/tiny_mce/plugins/table/langs/da.js create mode 100644 webcit/tiny_mce/plugins/table/langs/de.js create mode 100644 webcit/tiny_mce/plugins/table/langs/el.js create mode 100644 webcit/tiny_mce/plugins/table/langs/en.js create mode 100644 webcit/tiny_mce/plugins/table/langs/es.js create mode 100644 webcit/tiny_mce/plugins/table/langs/fa.js create mode 100644 webcit/tiny_mce/plugins/table/langs/fi.js create mode 100644 webcit/tiny_mce/plugins/table/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/table/langs/fr_ca.js create mode 100644 webcit/tiny_mce/plugins/table/langs/he.js create mode 100644 webcit/tiny_mce/plugins/table/langs/hu.js create mode 100644 webcit/tiny_mce/plugins/table/langs/is.js create mode 100644 webcit/tiny_mce/plugins/table/langs/it.js create mode 100644 webcit/tiny_mce/plugins/table/langs/ja.js create mode 100644 webcit/tiny_mce/plugins/table/langs/ko.js create mode 100644 webcit/tiny_mce/plugins/table/langs/nb.js create mode 100644 webcit/tiny_mce/plugins/table/langs/nl.js create mode 100644 webcit/tiny_mce/plugins/table/langs/nn.js create mode 100644 webcit/tiny_mce/plugins/table/langs/pl.js create mode 100644 webcit/tiny_mce/plugins/table/langs/pt.js create mode 100644 webcit/tiny_mce/plugins/table/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/table/langs/readme.txt create mode 100644 webcit/tiny_mce/plugins/table/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/table/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/table/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/table/langs/sk.js create mode 100644 webcit/tiny_mce/plugins/table/langs/sv.js create mode 100644 webcit/tiny_mce/plugins/table/langs/tw.js create mode 100644 webcit/tiny_mce/plugins/table/langs/zh_cn.js create mode 100644 webcit/tiny_mce/plugins/table/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/table/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/table/merge_cells.htm create mode 100644 webcit/tiny_mce/plugins/table/readme.txt create mode 100644 webcit/tiny_mce/plugins/table/row.htm create mode 100644 webcit/tiny_mce/plugins/table/table.htm create mode 100644 webcit/tiny_mce/plugins/zoom/editor_plugin.js create mode 100644 webcit/tiny_mce/plugins/zoom/editor_plugin_src.js create mode 100644 webcit/tiny_mce/plugins/zoom/langs/es.js create mode 100644 webcit/tiny_mce/plugins/zoom/langs/fr.js create mode 100644 webcit/tiny_mce/plugins/zoom/langs/he.js create mode 100644 webcit/tiny_mce/plugins/zoom/langs/pt_br.js create mode 100644 webcit/tiny_mce/plugins/zoom/langs/ru.js create mode 100644 webcit/tiny_mce/plugins/zoom/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/plugins/zoom/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/plugins/zoom/langs/zh_tw.js create mode 100644 webcit/tiny_mce/plugins/zoom/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/plugins/zoom/readme.txt create mode 100644 webcit/tiny_mce/themes/advanced/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/anchor.htm create mode 100644 webcit/tiny_mce/themes/advanced/charmap.htm create mode 100644 webcit/tiny_mce/themes/advanced/color_picker.htm create mode 100644 webcit/tiny_mce/themes/advanced/css/editor_content.css create mode 100644 webcit/tiny_mce/themes/advanced/css/editor_popup.css create mode 100644 webcit/tiny_mce/themes/advanced/css/editor_ui.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/cs/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/cs/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/cs/images/insert_image_window.png create mode 100644 webcit/tiny_mce/themes/advanced/docs/cs/images/insert_link_window.png create mode 100644 webcit/tiny_mce/themes/advanced/docs/cs/images/insert_table_window.png create mode 100644 webcit/tiny_mce/themes/advanced/docs/cs/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/cs/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/cs/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/cs/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/cs/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/da/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/da/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/da/create_accessible_content.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/da/images/insert_anchor_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/da/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/da/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/da/images/insert_table_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/da/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/da/insert_anchor_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/da/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/da/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/da/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/da/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/de/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/de/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/de/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/de/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/de/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/de/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/de/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/de/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/en/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/en/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/en/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/en/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/en/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/en/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/en/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/es/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/es/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/es/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/es/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/es/images/insert_table_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/es/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/es/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/es/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/es/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/es/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/fi/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fi/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fi/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/fi/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/fi/images/insert_table_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/fi/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fi/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fi/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fi/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fi/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr/images/insert_table_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr_ca/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr_ca/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr_ca/images/insert_anchor_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr_ca/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr_ca/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr_ca/images/insert_table_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr_ca/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_anchor_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/fr_ca/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/hu/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/hu/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/hu/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/hu/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/hu/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/hu/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/hu/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/hu/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/images/table.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/images/table_delete_col.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/images/table_delete_row.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/images/table_insert_col_after.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/images/table_insert_col_before.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/images/table_insert_row_after.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/images/table_insert_row_before.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/it/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/it/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/it/images/insert_anchor_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/it/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/it/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/it/images/insert_table_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/it/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/it/insert_anchor_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/it/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/it/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/it/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/it/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/nb/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nb/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nb/images/insert_anchor_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nb/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nb/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nb/images/insert_table_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nb/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nb/insert_anchor_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nb/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nb/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nb/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nb/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/images/html_source_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/images/insert_anchor_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/images/insert_specchar_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/images/insert_table_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/insert_anchor_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/insert_specchar_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nl/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/nn/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nn/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nn/images/html_source_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nn/images/insert_anchor_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nn/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nn/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nn/images/insert_specchar_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nn/images/insert_table_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/nn/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nn/insert_anchor_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nn/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nn/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nn/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/nn/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/pl/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/pl/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/pl/images/insert_anchor_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/pl/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/pl/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/pl/images/insert_table_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/pl/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/pl/insert_anchor_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/pl/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/pl/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/pl/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/pl/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/sk/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/sk/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/sk/images/insert_image_window.png create mode 100644 webcit/tiny_mce/themes/advanced/docs/sk/images/insert_link_window.png create mode 100644 webcit/tiny_mce/themes/advanced/docs/sk/images/insert_table_window.png create mode 100644 webcit/tiny_mce/themes/advanced/docs/sk/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/sk/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/sk/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/sk/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/sk/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/sv/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/sv/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/sv/images/insert_anchor_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/sv/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/sv/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/sv/images/insert_table_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/sv/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/sv/insert_anchor_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/sv/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/sv/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/sv/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/sv/style.css create mode 100644 webcit/tiny_mce/themes/advanced/docs/zh_cn/about.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/zh_cn/common_buttons.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/zh_cn/images/insert_anchor_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/zh_cn/images/insert_image_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/zh_cn/images/insert_link_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/zh_cn/images/insert_table_window.gif create mode 100644 webcit/tiny_mce/themes/advanced/docs/zh_cn/index.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_anchor_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_image_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_link_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_table_button.htm create mode 100644 webcit/tiny_mce/themes/advanced/docs/zh_cn/style.css create mode 100644 webcit/tiny_mce/themes/advanced/editor_template.js create mode 100644 webcit/tiny_mce/themes/advanced/editor_template_src.js create mode 100644 webcit/tiny_mce/themes/advanced/image.htm create mode 100644 webcit/tiny_mce/themes/advanced/images/anchor.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/anchor_symbol.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/backcolor.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/bold.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/bold_de_se.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/bold_es.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/bold_fr.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/bold_ru.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/bold_tw.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/browse.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/bullist.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/buttons.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/cancel_button_bg.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/charmap.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/cleanup.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/close.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/code.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/color.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/copy.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/custom_1.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/cut.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/forecolor.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/help.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/hr.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/image.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/indent.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/insert_button_bg.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/italic.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/italic_de_se.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/italic_es.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/italic_ru.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/italic_tw.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/justifycenter.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/justifyfull.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/justifyleft.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/justifyright.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/link.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/newdocument.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/numlist.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/opacity.png create mode 100644 webcit/tiny_mce/themes/advanced/images/outdent.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/paste.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/redo.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/removeformat.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/spacer.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/statusbar_resize.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/strikethrough.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/sub.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/sup.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/table.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/table_delete_col.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/table_delete_row.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/table_insert_col_after.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/table_insert_col_before.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/table_insert_row_after.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/table_insert_row_before.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/underline.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/underline_es.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/underline_fr.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/underline_ru.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/underline_tw.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/undo.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/unlink.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/visualaid.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/xp/tab_bg.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/xp/tab_end.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif create mode 100644 webcit/tiny_mce/themes/advanced/images/xp/tabs_bg.gif create mode 100644 webcit/tiny_mce/themes/advanced/jscripts/about.js create mode 100644 webcit/tiny_mce/themes/advanced/jscripts/anchor.js create mode 100644 webcit/tiny_mce/themes/advanced/jscripts/charmap.js create mode 100644 webcit/tiny_mce/themes/advanced/jscripts/color_picker.js create mode 100644 webcit/tiny_mce/themes/advanced/jscripts/image.js create mode 100644 webcit/tiny_mce/themes/advanced/jscripts/link.js create mode 100644 webcit/tiny_mce/themes/advanced/jscripts/source_editor.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/ar.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/ca.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/cs.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/cy.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/da.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/de.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/el.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/en.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/es.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/fa.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/fi.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/fr.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/fr_ca.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/he.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/hu.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/is.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/it.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/ja.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/ko.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/nb.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/nl.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/nn.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/pl.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/pt.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/pt_br.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/readme.txt create mode 100644 webcit/tiny_mce/themes/advanced/langs/ru.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/ru_KOI8-R.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/ru_UTF-8.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/sk.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/sv.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/tw.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/zh_cn.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/zh_tw.js create mode 100644 webcit/tiny_mce/themes/advanced/langs/zh_tw_utf8.js create mode 100644 webcit/tiny_mce/themes/advanced/link.htm create mode 100644 webcit/tiny_mce/themes/advanced/source_editor.htm create mode 100644 webcit/tiny_mce/themes/simple/css/editor_content.css create mode 100644 webcit/tiny_mce/themes/simple/css/editor_popup.css create mode 100644 webcit/tiny_mce/themes/simple/css/editor_ui.css create mode 100644 webcit/tiny_mce/themes/simple/editor_template.js create mode 100644 webcit/tiny_mce/themes/simple/editor_template_src.js create mode 100644 webcit/tiny_mce/themes/simple/images/bold.gif create mode 100644 webcit/tiny_mce/themes/simple/images/bold_de_se.gif create mode 100644 webcit/tiny_mce/themes/simple/images/bold_fr.gif create mode 100644 webcit/tiny_mce/themes/simple/images/bold_ru.gif create mode 100644 webcit/tiny_mce/themes/simple/images/bold_tw.gif create mode 100644 webcit/tiny_mce/themes/simple/images/bullist.gif create mode 100644 webcit/tiny_mce/themes/simple/images/cleanup.gif create mode 100644 webcit/tiny_mce/themes/simple/images/italic.gif create mode 100644 webcit/tiny_mce/themes/simple/images/italic_de_se.gif create mode 100644 webcit/tiny_mce/themes/simple/images/italic_ru.gif create mode 100644 webcit/tiny_mce/themes/simple/images/italic_tw.gif create mode 100644 webcit/tiny_mce/themes/simple/images/numlist.gif create mode 100644 webcit/tiny_mce/themes/simple/images/redo.gif create mode 100644 webcit/tiny_mce/themes/simple/images/spacer.gif create mode 100644 webcit/tiny_mce/themes/simple/images/strikethrough.gif create mode 100644 webcit/tiny_mce/themes/simple/images/underline.gif create mode 100644 webcit/tiny_mce/themes/simple/images/underline_fr.gif create mode 100644 webcit/tiny_mce/themes/simple/images/underline_ru.gif create mode 100644 webcit/tiny_mce/themes/simple/images/underline_tw.gif create mode 100644 webcit/tiny_mce/themes/simple/images/undo.gif create mode 100644 webcit/tiny_mce/tiny_mce.js create mode 100644 webcit/tiny_mce/tiny_mce_popup.js create mode 100644 webcit/tiny_mce/tiny_mce_src.js create mode 100644 webcit/tiny_mce/utils/form_utils.js create mode 100644 webcit/tiny_mce/utils/mctabs.js create mode 100644 webcit/tiny_mce/utils/validate.js create mode 100644 webcit/tools.c create mode 100644 webcit/useredit.c create mode 100644 webcit/userlist.c create mode 100644 webcit/vcard.c create mode 100644 webcit/vcard.h create mode 100644 webcit/vcard_edit.c create mode 100644 webcit/webcit.c create mode 100644 webcit/webcit.h create mode 100644 webcit/webserver.c create mode 100644 webcit/webserver.h create mode 100644 webcit/who.c create mode 100644 webcit/wiki.c diff --git a/webcit/.cvsignore b/webcit/.cvsignore new file mode 100644 index 000000000..25ec64440 --- /dev/null +++ b/webcit/.cvsignore @@ -0,0 +1,13 @@ +*.o +Makefile +config.cache +config.log +config.status +config.h.in +configure +webcit +webserver +content +autom4te.cache +setup +keys diff --git a/webcit/COPYING.txt b/webcit/COPYING.txt new file mode 100644 index 000000000..045e20142 --- /dev/null +++ b/webcit/COPYING.txt @@ -0,0 +1,271 @@ +GNU GENERAL PUBLIC LICENSE + +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to +share and change it. By contrast, the GNU General Public License is intended +to guarantee your freedom to share and change free software--to make sure +the software is free for all its users. This General Public License applies +to most of the Free Software Foundation's software and to any other program +whose authors commit to using it. (Some other Free Software Foundation +software is covered by the GNU Library General Public License instead.) You +can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom +to distribute copies of free software (and charge for this service if you +wish), that you receive source code or can get it if you want it, that you +can change the software or use pieces of it in new free programs; and that +you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to +deny you these rights or to ask you to surrender the rights. These +restrictions translate to certain responsibilities for you if you distribute +copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or +for a fee, you must give the recipients all the rights that you have. You +must make sure that they, too, receive or can get the source code. And you +must show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, distribute +and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If +the software is modified by someone else and passed on, we want its +recipients to know that what they have is not the original, so that any +problems introduced by others will not reflect on the original authors' +reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that redistributors of a free program will +individually obtain patent licenses, in effect making the program +proprietary. To prevent this, we have made it clear that any patent must be +licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the terms +of this General Public License. The "Program", below, refers to any such +program or work, and a "work based on the Program" means either the Program +or any derivative work under copyright law: that is to say, a work +containing the Program or a portion of it, either verbatim or with +modifications and/or translated into another language. (Hereinafter, +translation is included without limitation in the term "modification".) Each +licensee is addressed as "you". + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running the Program +is not restricted, and the output from the Program is covered only if its +contents constitute a work based on the Program (independent of having been +made by running the Program). Whether that is true depends on what the +Program does. + +1. You may copy and distribute verbatim copies of the Program's source code +as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this +License and to the absence of any warranty; and give any other recipients of +the Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you +may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, +thus forming a work based on the Program, and copy and distribute such +modifications or work under the terms of Section 1 above, provided that you +also meet all of these conditions: + + * a) You must cause the modified files to carry prominent notices stating + that you changed the files and the date of any change. + + * b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any part + thereof, to be licensed as a whole at no charge to all third parties + under the terms of this License. + + * c) If the modified program normally reads commands interactively when + run, you must cause it, when started running for such interactive use + in the most ordinary way, to print or display an announcement including + an appropriate copyright notice and a notice that there is no warranty + (or else, saying that you provide a warranty) and that users may + redistribute the program under these conditions, and telling the user + how to view a copy of this License. (Exception: if the Program itself + is interactive but does not normally print such an announcement, your + work based on the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be +reasonably considered independent and separate works in themselves, then +this License, and its terms, do not apply to those sections when you +distribute them as separate works. But when you distribute the same sections +as part of a whole which is a work based on the Program, the distribution of +the whole must be on the terms of this License, whose permissions for other +licensees extend to the entire whole, and thus to each and every part +regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise +the right to control the distribution of derivative or collective works +based on the Program. + +In addition, mere aggregation of another work not based on the Program with +the Program (or with a work based on the Program) on a volume of a storage +or distribution medium does not bring the other work under the scope of this +License. + +3. You may copy and distribute the Program (or a work based on it, under +Section 2) in object code or executable form under the terms of Sections 1 +and 2 above provided that you also do one of the following: + + * a) Accompany it with the complete corresponding machine-readable source + code, which must be distributed under the terms of Sections 1 and 2 + above on a medium customarily used for software interchange; or, + + * b) Accompany it with a written offer, valid for at least three years, + to give any third party, for a charge no more than your cost of + physically performing source distribution, a complete machine-readable + copy of the corresponding source code, to be distributed under the + terms of Sections 1 and 2 above on a medium customarily used for + software interchange; or, + + * c) Accompany it with the information you received as to the offer to + distribute corresponding source code. (This alternative is allowed only + for noncommercial distribution and only if you received the program in + object code or executable form with such an offer, in accord with + Subsection b above.) + +The source code for a work means the preferred form of the work for making +modifications to it. For an executable work, complete source code means all +the source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and +installation of the executable. However, as a special exception, the source +code distributed need not include anything that is normally distributed (in +either source or binary form) with the major components (compiler, kernel, +and so on) of the operating system on which the executable runs, unless that +component itself accompanies the executable. + +If distribution of executable or object code is made by offering access to +copy from a designated place, then offering equivalent access to copy the +source code from the same place counts as distribution of the source code, +even though third parties are not compelled to copy the source along with +the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as +expressly provided under this License. Any attempt otherwise to copy, +modify, sublicense or distribute the Program is void, and will automatically +terminate your rights under this License. However, parties who have received +copies, or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed +it. However, nothing else grants you permission to modify or distribute the +Program or its derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or distributing the +Program (or any work based on the Program), you indicate your acceptance of +this License to do so, and all its terms and conditions for copying, +distributing or modifying the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these terms +and conditions. You may not impose any further restrictions on the +recipients' exercise of the rights granted herein. You are not responsible +for enforcing compliance by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot distribute so +as to satisfy simultaneously your obligations under this License and any +other pertinent obligations, then as a consequence you may not distribute +the Program at all. For example, if a patent license would not permit +royalty-free redistribution of the Program by all those who receive copies +directly or indirectly through you, then the only way you could satisfy both +it and this License would be to refrain entirely from distribution of the +Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents +or other property right claims or to contest validity of any such claims; +this section has the sole purpose of protecting the integrity of the free +software distribution system, which is implemented by public license +practices. Many people have made generous contributions to the wide range of +software distributed through that system in reliance on consistent +application of that system; it is up to the author/donor to decide if he or +she is willing to distribute software through any other system and a +licensee cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain +countries either by patents or by copyrighted interfaces, the original +copyright holder who places the Program under this License may add an +explicit geographical distribution limitation excluding those countries, so +that distribution is permitted only in or among countries not thus excluded. +In such case, this License incorporates the limitation as if written in the +body of this License. + +9. The Free Software Foundation may publish revised and/or new versions of +the General Public License from time to time. Such new versions will be +similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + +10. If you wish to incorporate parts of the Program into other free programs +whose distribution conditions are different, write to the author to ask for +permission. For software which is copyrighted by the Free Software +Foundation, write to the Free Software Foundation; we sometimes make +exceptions for this. Our decision will be guided by the two goals of +preserving the free status of all derivatives of our free software and of +promoting the sharing and reuse of software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO +THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM +PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO +LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR +THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS diff --git a/webcit/Doxyfile b/webcit/Doxyfile new file mode 100644 index 000000000..65f044bb0 --- /dev/null +++ b/webcit/Doxyfile @@ -0,0 +1,1239 @@ +# Doxyfile 1.4.6 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = webcit + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 6.70 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doxygen + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, +# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, +# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, +# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, +# Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for +# all platforms other than Windows). + +USE_WINDOWS_ENCODING = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to +# include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO +#! +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py + +FILE_PATTERNS = *.c and *.h + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = yes + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = no +#!yes + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = no + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = WEBCIT_WITH_CALENDAR_SERVICE HAVE_OPENSSL ENABLE_NLS HAVE_ICONV HAVE_ZLIB + + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = NO + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = YES + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that a graph may be further truncated if the graph's +# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH +# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), +# the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/webcit/Makefile.in b/webcit/Makefile.in new file mode 100644 index 000000000..fc8032c13 --- /dev/null +++ b/webcit/Makefile.in @@ -0,0 +1,133 @@ +# $Id$ + +AUTOCONF=@AUTOCONF@ +CC=@CC@ +CFLAGS=@CFLAGS@ +DEFS=@DEFS@ +INSTALL=@INSTALL@ +LIBOBJS=@LIBOBJS@ +LIBS=@LIBS@ +LDFLAGS=@LDFLAGS@ +SED=@SED@ +SETUP_LIBS=@SETUP_LIBS@ +PTHREAD_DEFS=@PTHREAD_DEFS@ +srcdir=@srcdir@ +prefix=@prefix@ +top_builddir=`pwd` + +LIB_SUBDIRS= +PROG_SUBDIRS=@PROG_SUBDIRS@ +SUBDIRS=$(LIB_SUBDIRS) $(PROG_SUBDIRS) + +# End of configuration section + +all: all-progs-recursive webserver setup + + +.SUFFIXES: .cpp .c .o + +clean: + rm -f *.o webcit webserver + rm -fr locale/* + +distclean: clean + rm -f Makefile config.cache config.log config.status \ + po/Makefile \ + $(srcdir)/TAGS + +setup: setup.o tools.o + $(CC) setup.o tools.o \ + $(LIBOBJS) $(LIBS) $(LDFLAGS) $(SETUP_LIBS) -o setup + +webserver: webserver.o context_loop.o tools.o ical_dezonify.o \ + cookie_conversion.o locate_host.o floors.o summary.o \ + webcit.o auth.o tcp_sockets.o mainmenu.o serv_func.o who.o \ + roomops.o messages.o userlist.o paging.o sysmsgs.o useredit.o \ + vcard.o vcard_edit.o preferences.o html2html.o listsub.o \ + mime_parser.o graphics.o netconf.o siteconfig.o subst.o rss.o \ + calendar.o calendar_tools.o calendar_view.o event.o \ + availability.o iconbar.o crypto.o inetconf.o notes.o wiki.o \ + groupdav_main.o groupdav_get.o groupdav_propfind.o fmt_date.o \ + groupdav_options.o autocompletion.o gettext.o tabs.o \ + groupdav_delete.o groupdav_put.o http_datestring.o setup_wizard.o \ + $(LIBOBJS) + $(CC) webserver.o context_loop.o tools.o cookie_conversion.o \ + webcit.o auth.o tcp_sockets.o mainmenu.o serv_func.o who.o listsub.o \ + roomops.o messages.o userlist.o paging.o sysmsgs.o useredit.o \ + locate_host.o siteconfig.o subst.o vcard.o vcard_edit.o floors.o \ + mime_parser.o graphics.o netconf.o preferences.o html2html.o rss.o \ + summary.o calendar.o calendar_tools.o calendar_view.o event.o wiki.o \ + availability.o ical_dezonify.o iconbar.o crypto.o inetconf.o notes.o \ + groupdav_main.o groupdav_get.o groupdav_propfind.o groupdav_delete.o \ + groupdav_options.o autocompletion.o tabs.o \ + groupdav_put.o http_datestring.o setup_wizard.o fmt_date.o \ + gettext.o \ + $(LIBOBJS) $(LIBS) $(LDFLAGS) -o webserver + +.c.o: + $(CC) $(CFLAGS) $(DEFS) -c $(PTHREAD_DEFS) -DWEBCITDIR=\"$(prefix)\" -DLOCALEDIR=\"$(prefix)/locale\" $< + +.cpp.o: + $(CC) $(CFLAGS) $(DEFS) -c $(PTHREAD_DEFS) -DWEBCITDIR=\"$(prefix)\" -DLOCALEDIR=\"$(prefix)/locale\" $< + +Makefile: $(srcdir)/Makefile.in config.status + CONFIG_FILES="Makefile" CONFIG_HEADERS= $(SHELL) ./config.status + +config.status: $(srcdir)/configure + $(SHELL) ./config.status --recheck + +$(srcdir)/configure: $(srcdir)/configure.in + cd $(srcdir) && $(AUTOCONF) + +install: + test -d $(root)$(prefix) || mkdir $(root)$(prefix) + test -d $(root)$(prefix)/static || mkdir $(root)$(prefix)/static + for i in `find tiny_mce -type d | grep -v .svn` \ + ; do \ + test -d $(root)$(prefix)/$$i || mkdir $(root)$(prefix)/$$i; \ + done + for i in `find locale -type d | grep -v .svn` \ + ; do \ + test -d $(root)$(prefix)/$$i || mkdir $(root)$(prefix)/$$i; \ + done + for i in \ + webserver \ + setup \ + `find static -type f | grep -v .svn` \ + `find tiny_mce -type f | grep -v .svn` \ + `find locale -type f | grep -v .svn` \ + ; do \ + $(INSTALL) $$i $(root)$(prefix)/$$i; \ + done + +TAGS clean-recursive distclean-recursive depend-recursive check-recursive \ + mostlyclean-recursive realclean-recursive: + @for subdir in $(SUBDIRS); do \ + if test -d $$subdir ; then \ + target=`echo $@|$(SED) 's/-recursive//'`; \ + echo making $$target in $$subdir; \ + (cd $$subdir && $(MAKE) $$target) || exit 1; \ + fi ; \ + done + +all-progs-recursive install-progs-recursive install-strip-progs-recursive \ + uninstall-progs-recursive: + @for subdir in $(PROG_SUBDIRS); do \ + if test -d $$subdir ; then \ + target=`echo $@|$(SED) 's/-progs-recursive//'`; \ + echo making $$target in $$subdir; \ + (cd $$subdir && $(MAKE) $$target) || exit 1; \ + fi ; \ + done + +all-libs-recursive install-libs-recursive install-strip-libs-recursive \ + uninstall-libs-recursive install-shlibs-libs-recursive \ + install-shlibs-strip-libs-recursive uninstall-shlibs-libs-recursive: + @for subdir in $(LIB_SUBDIRS); do \ + if test -d $$subdir ; then \ + target=`echo $@|$(SED) 's/-libs-recursive//'`; \ + echo making $$target in $$subdir; \ + (cd $$subdir && $(MAKE) $$target) || exit 1; \ + fi ; \ + done + diff --git a/webcit/README.txt b/webcit/README.txt new file mode 100644 index 000000000..9ffbe4df2 --- /dev/null +++ b/webcit/README.txt @@ -0,0 +1,299 @@ + WEBCIT for the Citadel System + version 6.82 + + Copyright (C) 1996-2006 by the authors. Portions written by: + Art Cancro + Nathan Bryant + Alessandro Fulciniti + Wilifried Goesgens + Nick Grossman + Andru Luvisi + Dave Lindquist + Martin Mouritzen + + This program is open source software released under the terms of the GNU + General Public License, version 2. Please read COPYING.txt for more + licensing information. + + WebCit bundles the Prototype JavaScript Framework, writen by Sam + Stephenson [http://prototype.conio.net]. These components are licensed to + you under the terms of an MIT-style license. + + WebCit bundles the script.aculo.us JavaScript library, written by + Thomas Fuchs [http://script.aculo.us, http://mir.aculo.us]. These + components are licensed to you under the terms of an MIT-style license. + + WebCit bundles the TinyMCE text editor, written by Moxiecode Systems AB + (http://tinymce.moxiecode.com/tinymce/docs/credits.html). This component + is licensed to you under the terms of the GNU Lesser General Public + License. + + WebCit bundles the Nifty Corners library, written by Alessandro Fulciniti + [http://cerca.html.it/cgi-bin/cerca.cgi?q=nifty+corners]. This component + is licensed to you under the terms of the GNU General Public License. + + + The Citadel logo was designed by Lisa Aurigemma. + + + INTRODUCTION + ------------ + + Citadel is a sophisticated groupware and BBS package which allows multiple +users to simultaneously access the system using a variety of user interfaces. +This package (WebCit) is a "middleware" package which presents an HTML/HTTP +user interface to the Citadel system. + + What this means in practice is that after you've installed WebCit, users can +access all functions of your system using any web browser. Since this may be +the first Citadel experience for many new users, the screens have been designed +to be attractive and easy to navigate. + + + INSTALLATION + ------------ + + Unline some web-based packages, WebCit contains its own standalone HTTP +engine. As a result, you can get it running quickly without all that tedious +mucking about with Apache configuration files and directories. WebCit is not +intended to replace your Apache server, however -- it *only* provides a front +end to Citadel. If you do not have another web server running, you may run +WebCit on port 80; however, in the more likely situation that you have Apache +or some other web server listening on port 80, you must run WebCit on another +port. The default is port 2000. + + To compile from source, enter the usual commands: + ./configure --prefix=/usr/local/webcit [or whatever directory you prefer] + make + make install + + Package/Ports Maintainers: to make webcit fit smart into LHFS-ified systems + read on at the end of this file, Advanced configure options. + + Then to initialize it: + cd /usr/local/webcit + ./setup + + After running setup, you just point your web browser to whatever port you +specified, such as: + + http://your.host.name:2000 + + ...and log in. + + The included "setup" program is basically just an installation helper that +asks a series of questions and then adds the appropriate line to inittab to +start WebCit. For most installations, this will do just fine. If you have +special circumstances, or if you'd prefer to configure WebCit manually, you +may skip the setup program. Instead, open /etc/inittab and add an entry +something like this: + + wc:2345:respawn:/usr/local/webcit/webserver + + + Several command-line options are also available. Here's the usage for +the "webserver" program: + + webserver [-i ip_addr] [-p http_port] [-s] [-t tracefile] + [-c] [-f] [remotehost [remoteport]] + + *or* + + webserver [-i ip_addr] [-p http_port] [-s] [-t tracefile] + [-c] [-f] uds /your/citadel/directory + + Explained: + + -> ip_addr: the IP address on which you wish your WebCit server to run. + You can leave this out, in which case WebCit will listen on all + available network interfaces. Normally this will be the case, but if + you are running multiple Citadel systems on one host, it can be useful. + + -> http_port: the TCP port on which you wish your WebCit server to run. If + you are installing WebCit on a dedicated server, you can use the + standard port 80. Otherwise, if port 80 is already occupied by some + other web service (probably Apache), then you'll need to select a + different port. If you do not specify a port number, WebCit will attempt + to use port 2000. + + -> tracefile: where you want WebCit to log to. This can be a file, a + virtual console, or /dev/null to suppress logging altogether. + + -> The "-c" option causes WebCit to output an extra cookie containing the + identity of the WebCit server. The cookie will look like this: + Set-cookie: wcserver=your.host.name + This is useful if you have a cluster of WebCit servers sitting behind a + load balancer, and the load balancer has the ability to use cookies to + keep track of which server to send HTTP requests to. + + -> The "-s" option causes WebCit to present an HTTPS (SSL-encrypted) web + service. If you want to do both HTTP and HTTPS, you can simply run two + instances of WebCit on two different ports. + + -> The "-f" option tells WebCit that it is allowed to follow the + "X-Forwarded-For:" HTTP headers which may be added if your WebCit service + is sitting behind a front end proxy. This will allow users in your "Who + is online?" list to appear as connecting from their actual host address + instead of the address of the proxy. In addition, the + "X-Forwarded-Host:" header from the front end proxy will also be honored, + which will help to make automatically generated absolute URL's (for + things like GroupDAV and mailing list subscriptions) correct. + + -> remotehost: the name or IP address of the host on which your Citadel + server is running. The default is "localhost". + + -> remoteport: the port number on which your Citadel server is running. + The default is port 504, the IANA-designated standard port for Citadel. + + -> "uds" is a keyword which tells WebCit that you wish to connect to a + Citadel server running on the same computer, rather than using a TCP/IP + socket. /your/citadel/directory should be set to the actual name of the + directory in which you have Citadel installed + (such as /usr/local/citadel). If you run Citadel and WebCit on the same + computer, this is recommended, as it will run much faster. + + + GRAPHICS + -------- + + WebCit contains graphics, templates, JavaScript code, etc. which are kept +in its "static" subdirectory. All site-specific graphics, however, are +fetched from the Citadel server. + + The "images" directory on a Citadel system contains these graphics. The +ones which you may be interested in are: + + -> background.gif: a background texture displayed under all web pages + -> hello.gif: your system's logo. It is displayed along with the logon + banner, and on the top left corner of each page. + + If you would like to deploy a "favicon.ico" graphic, please put it in +the static/ directory. WebCit will properly serve it from there. + + + CALENDAR SERVICE + ---------------- + + WebCit contains support for calendaring and scheduling. In order to use it +you must have libical v0.24 (or newer) on your system. You must also be +running a Citadel server with calendaring support. The calendar service will +be automatically configured and installed if your host system supports it. + + WebCit also provides iCalendar format free/busy data for calendar clients. +Unlike with some other servers, there is no need for each user to "publish" +free/busy data -- it is generated on-the-fly from the server-side calendar +of the user being queried. + + + HTTPS (encryption) SUPPORT + -------------------------- + + WebCit now supports HTTPS for encrypted connections. When a secure server +port is specified via the "-s" flag, an HTTPS service is enabled. + + The service will look in the "keys" directory for the following files: + + citadel.key (your server's private key) + citadel.csr (a certificate signing request) + citadel.cer (your server's public certificate) + + If any of these files are not found, WebCit will first attempt to link to the +SSL files in the Citadel service's directory (if Citadel is running on the +same host as WebCit), and if that does not succeed, it will automatically +generate a key and certificate. + + It is up to you to decide whether to use an automatically generated, +self-signed certificate, or purchase a certificate signed by a well known +authority. + + + INTEGRATING INTO APACHE + ----------------------- + + It is best to run WebCit natively on its own HTTP port. If, however, you wish +to have WebCit run as part of an Apache web server installation (for example, +you only have one IP address and you need to stay on port 80 or 443 in order to +maintain compatibility with corporate firewall policy), you can do this with +the "mod_proxy" Apache module. + + The preferred way to do this is to configure a NameVirtualHost for your WebCit +installation (for example, http://webcit.example.com) and then proxy that +virtual host through to WebCit. The alternative way, which does work but is not +quite as robust, is to "mount" the WebCit paths as directory aliases to your +main document root. + +Here is how to configure the NameVirtualHost method: + + + #here some of your config stuff like logging, serveradmin... + NameVirtualHost www.mydomain.com + + allow from all + + ProxyPass / http://127.0.0.1:2000/ + ProxyPassReverse / http://127.0.0.1:2000/ +# The following line is optional. It allows WebCit's static content +# such as images to be served directly by Apache. + alias /static /var/lib/citadel/www/static + + +Here is how to configure the "subdirectory" method: + + + #here some of your config stuff like logging, serveradmin... + NameVirtualHost www.mydomain.com + + allow from all + + + allow from all + + + allow from all + + + allow from all + + + ProxyPass /webcit/ http://127.0.0.1:2000/webcit/ + ProxyPassReverse /webcit/ http://127.0.0.1:2000/webcit/ + ProxyPass /listsub/ http://127.0.0.1:2000/listsub/ + ProxyPassReverse /listsub/ http://127.0.0.1:2000/listsub/ + ProxyPass /groupdav/ http://127.0.0.1:2000/groupdav/ + ProxyPassReverse /groupdav/ http://127.0.0.1:2000/groupdav/ + ProxyPass /who_inner_html http://127.0.0.1:2000/who_inner_html + ProxyPassReverse /who_inner_html http://127.0.0.1:2000/who_inner_html +# The following line is optional. It allows WebCit's static content +# such as images to be served directly by Apache. + alias /static /var/lib/citadel/www/static + + + + ADVANCED CONFIGURE OPTIONS + -------------------------- + +If you are building packages and prefer not to have WebCit reside entirely in +a single directory, there are several compile-time options available. + +--with-staticdir defines where webcit should locate and search its templates and images. If you +want to go with a different installation location then the point at which it is accessed at runtime, +you can use --with-staticrundir. This option is meant to ease your needs if you're going +to install the static files as 'examples' in a location like /usr/share/doc/webcit/examples, +and enable the user to copy them over to another dir (like /var/lib/citadel/www), where +they're accessed at runtime. (The debian instatll scripts provided with this package +do this to preserve user changes to the template system, see debian/citadel-webcit.postinstall) + +Also, there are possibilities to load the TinyMCE editor into a system-wide location. WebCit +uses this standard component to compose its messages for messages and postings. Several WebCit installations +that may differ in design but use the same TinyMCE (which is the default that WebCit ships with) +(set --with-editordir for that, it defaults to the dir the templates go) + + + CONCLUSION + ---------- + + That's all you need to know to get started. If you have any questions or +comments, please visit UNCENSORED! BBS, the home of Citadel, at +uncensored.citadel.org. + + diff --git a/webcit/auth.c b/webcit/auth.c new file mode 100644 index 000000000..0f594e163 --- /dev/null +++ b/webcit/auth.c @@ -0,0 +1,562 @@ +/* + * $Id$ + */ +/** + * + * \defgroup WebcitAuth WebcitAuth; Handles authentication of users to a Citadel server. + * \ingroup CitadelConfig + */ + +/*@{*/ +#include "webcit.h" + + + +/** + * \brief user states + * the plain text states of a user. filled in at \ function TODO initialize_ax_defs() + * due to NLS + */ +char *axdefs[7]; + +void initialize_axdefs(void) { + axdefs[0] = _("Deleted"); /*!0: an erased user */ + axdefs[1] = _("New User"); /*!1: a new user */ + axdefs[2] = _("Problem User"); /*!2: a trouble maker */ + axdefs[3] = _("Local User"); /*!3: user with normal privileges */ + axdefs[4] = _("Network User"); /*!4: a user that may access network resources */ + axdefs[5] = _("Preferred User");/*!5: a moderator */ + axdefs[6] = _("Aide"); /*!6: chief */ +} + + + + +/** + * \brief Display the login screen + * \param mesg The error message if last attempt failed. + */ +void display_login(char *mesg) +{ + char buf[SIZ]; + + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n"); + + if (mesg != NULL) if (strlen(mesg) > 0) { + stresc(buf, mesg, 0, 0); + svprintf("mesg", WCS_STRING, "%s", buf); + } + + svprintf("LOGIN_INSTRUCTIONS", WCS_STRING, + _("
    " + "
  • If you already have an account on %s, " + "enter your user name and password and click "Login." " + "
  • If you are a new user, enter the name and password " + "you wish to use, " + "and click "New User." " + "
  • Please log off properly when finished. " + "
  • You must use a browser that supports frames and " + "cookies. " + "
  • Also keep in mind that if your browser is " + "configured to block pop-up windows, you will not be able " + "to receive any instant messages.
    " + "
"), + serv_info.serv_humannode + ); + + svprintf("USERNAME_BOX", WCS_STRING, "%s", _("User name:")); + svprintf("PASSWORD_BOX", WCS_STRING, "%s", _("Password:")); + svprintf("LANGUAGE_BOX", WCS_STRING, "%s", _("Language:")); + svprintf("LOGIN_BUTTON", WCS_STRING, "%s", _("Login")); + svprintf("NEWUSER_BUTTON", WCS_STRING, "%s", _("New User")); + svprintf("EXIT_BUTTON", WCS_STRING, "%s", _("Exit")); + svprintf("hello", WCS_SERVCMD, "MESG hello"); + svprintf("BOXTITLE", WCS_STRING, _("%s - powered by Citadel"), + serv_info.serv_humannode); + svcallback("DO_LANGUAGE_BOX", offer_languages); + if (serv_info.serv_newuser_disabled) { + svprintf("NEWUSER_BUTTON_PRE", WCS_STRING, "
"); + svprintf("NEWUSER_BUTTON_POST", WCS_STRING, "
"); + } + else { + svprintf("NEWUSER_BUTTON_PRE", WCS_STRING, ""); + svprintf("NEWUSER_BUTTON_POST", WCS_STRING, ""); + } + + do_template("login"); + + wDumpContent(2); +} + + + + +/** \brief Initialize the session + * This function needs to get called whenever the session changes from + * not-logged-in to logged-in, either by an explicit login by the user or + * by a timed-out session automatically re-establishing with a little help + * from the browser cookie. Either way, we need to load access controls and + * preferences from the server. + * + * \param user the username + * \param pass his password + * \param serv_response The parameters returned from a Citadel USER or NEWU command + */ +void become_logged_in(char *user, char *pass, char *serv_response) +{ + char buf[SIZ]; + + WC->logged_in = 1; + extract_token(WC->wc_fullname, &serv_response[4], 0, '|', sizeof WC->wc_fullname); + safestrncpy(WC->wc_username, user, sizeof WC->wc_username); + safestrncpy(WC->wc_password, pass, sizeof WC->wc_password); + WC->axlevel = extract_int(&serv_response[4], 1); + if (WC->axlevel >= 6) { + WC->is_aide = 1; + } + + load_preferences(); + + serv_puts("CHEK"); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + WC->new_mail = extract_int(&buf[4], 0); + WC->need_regi = extract_int(&buf[4], 1); + WC->need_vali = extract_int(&buf[4], 2); + extract_token(WC->cs_inet_email, &buf[4], 3, '|', sizeof WC->cs_inet_email); + } + + get_preference("current_iconbar", buf, sizeof buf); + WC->current_iconbar = atoi(buf); + + get_preference("floordiv_expanded", WC->floordiv_expanded, sizeof WC->floordiv_expanded); +} + + +/** + * \brief Login Checks + * the logics to detect invalid passwords not to get on citservers nerves + */ +void do_login(void) +{ + char buf[SIZ]; + + if (strlen(bstr("language")) > 0) { + set_selected_language(bstr("language")); + go_selected_language(); + } + + if (strlen(bstr("exit_action")) > 0) { + do_logout(); + return; + } + if (strlen(bstr("login_action")) > 0) { + serv_printf("USER %s", bstr("name")); + serv_getln(buf, sizeof buf); + if (buf[0] == '3') { + serv_printf("PASS %s", bstr("pass")); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + become_logged_in(bstr("name"), + bstr("pass"), buf); + } else { + display_login(&buf[4]); + return; + } + } else { + display_login(&buf[4]); + return; + } + } + if (strlen(bstr("newuser_action")) > 0) { + if (strlen(bstr("pass")) == 0) { + display_login(_("Blank passwords are not allowed.")); + return; + } + serv_printf("NEWU %s", bstr("name")); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + become_logged_in(bstr("name"), bstr("pass"), buf); + serv_printf("SETP %s", bstr("pass")); + serv_getln(buf, sizeof buf); + } else { + display_login(&buf[4]); + return; + } + } + if (WC->logged_in) { + if (WC->need_regi) { + display_reg(1); + } else { + do_welcome(); + } + } else { + display_login(_("Your password was not accepted.")); + } + +} + +/** + * \brief display the user a welcome screen. + * if this is the first time login, and the web based setup is enabled, + * lead the user through the setup routines + */ +void do_welcome(void) +{ + char buf[SIZ]; +#ifdef XXX_NOT_FINISHED_YET_XXX + FILE *fp; + int i; + + /** + * See if we have to run the first-time setup wizard + */ + if (WC->is_aide) { + if (!setup_wizard) { + sprintf(wizard_filename, "setupwiz.%s.%s", + ctdlhost, ctdlport); + for (i=0; ilogged_in) { + sprintf(buf, "%d", WC->current_iconbar); + set_preference("current_iconbar", buf, 0); + set_preference("floordiv_expanded", WC->floordiv_expanded, 1); + } + + serv_puts("QUIT"); + WC->killthis = 1; + /* close() of citadel socket will be done by do_housekeeping() */ +} + +/** + * execute the logout + */ +void do_logout(void) +{ + char buf[SIZ]; + + safestrncpy(WC->wc_username, "", sizeof WC->wc_username); + safestrncpy(WC->wc_password, "", sizeof WC->wc_password); + safestrncpy(WC->wc_roomname, "", sizeof WC->wc_roomname); + safestrncpy(WC->wc_fullname, "", sizeof WC->wc_fullname); + + /** Calling output_headers() this way causes the cookies to be un-set */ + output_headers(1, 1, 0, 1, 0, 0); + + wprintf("
"); + serv_puts("MESG goodbye"); + serv_getln(buf, sizeof buf); + + if (WC->serv_sock >= 0) { + if (buf[0] == '1') { + fmout("CENTER"); + } else { + wprintf("Goodbye\n"); + } + } + else { + wprintf(_("This program was unable to connect or stay " + "connected to the Citadel server. Please report " + "this problem to your system administrator.") + ); + } + + wprintf("
"); + wprintf(_("Log in again")); + wprintf("   " + ""); + wprintf(_("Close window")); + wprintf("
\n"); + wDumpContent(2); + end_webcit_session(); +} + + +/* * + * validate new users + */ +void validate(void) +{ + char cmd[SIZ]; + char user[SIZ]; + char buf[SIZ]; + int a; + + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n" + "
" + ""); + wprintf(_("Validate new users")); + wprintf("
\n
\n
\n"); + + /** If the user just submitted a validation, process it... */ + safestrncpy(buf, bstr("user"), sizeof buf); + if (strlen(buf) > 0) { + if (strlen(bstr("axlevel")) > 0) { + serv_printf("VALI %s|%s", buf, bstr("axlevel")); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') { + wprintf("%s
\n", &buf[4]); + } + } + } + + /** Now see if any more users require validation. */ + serv_puts("GNUR"); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + wprintf(""); + wprintf(_("No users require validation at this time.")); + wprintf("
\n"); + wDumpContent(1); + return; + } + if (buf[0] != '3') { + wprintf("%s
\n", &buf[4]); + wDumpContent(1); + return; + } + + wprintf("
" + "
\n"); + wprintf("
"); + + safestrncpy(user, &buf[4], sizeof user); + serv_printf("GREG %s", user); + serv_getln(cmd, sizeof cmd); + if (cmd[0] == '1') { + a = 0; + do { + serv_getln(buf, sizeof buf); + ++a; + if (a == 1) + wprintf("#%s

%s

", + buf, &cmd[4]); + if (a == 2) + wprintf("PW: %s
\n", buf); + if (a == 3) + wprintf("%s
\n", buf); + if (a == 4) + wprintf("%s
\n", buf); + if (a == 5) + wprintf("%s, ", buf); + if (a == 6) + wprintf("%s ", buf); + if (a == 7) + wprintf("%s
\n", buf); + if (a == 8) + wprintf("%s
\n", buf); + if (a == 9) + wprintf(_("Current access level: %d (%s)\n"), + atoi(buf), axdefs[atoi(buf)]); + } while (strcmp(buf, "000")); + } else { + wprintf("

%s

%s
\n", user, &cmd[4]); + } + + wprintf("
"); + wprintf(_("Select access level for this user:")); + wprintf("
\n"); + for (a = 0; a <= 6; ++a) { + wprintf("%s   \n", + a, axdefs[a]); + } + wprintf("
\n"); + + wprintf("
\n"); + wprintf("
\n"); + wDumpContent(1); +} + + + +/** + * \brief Display form for registration. + * (Set during_login to 1 if this registration is being performed during + * new user login and will require chaining to the proper screen.) + * \param during_login are we just in the login phase? + */ +void display_reg(int during_login) +{ + long vcard_msgnum; + + if (goto_config_room() != 0) { + if (during_login) do_welcome(); + else display_main_menu(); + return; + } + + vcard_msgnum = locate_user_vcard(WC->wc_fullname, -1); + if (vcard_msgnum < 0L) { + if (during_login) do_welcome(); + else display_main_menu(); + return; + } + + if (during_login) { + do_edit_vcard(vcard_msgnum, "1", "do_welcome"); + } + else { + do_edit_vcard(vcard_msgnum, "1", "display_main_menu"); + } + +} + + + + +/** + * display form for changing your password + */ +void display_changepw(void) +{ + char buf[SIZ]; + + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n" + "
" + ""); + wprintf(_("Change your password")); + wprintf("" + "
\n" + "
\n
\n" + ); + + if (strlen(WC->ImportantMessage) > 0) { + do_template("beginbox_nt"); + wprintf("" + "%s
\n", WC->ImportantMessage); + do_template("endbox"); + safestrncpy(WC->ImportantMessage, "", sizeof WC->ImportantMessage); + } + + wprintf("
" + "
\n"); + + wprintf("

"); + serv_puts("MESG changepw"); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + fmout("CENTER"); + } + + wprintf("
\n"); + wprintf("
" + "" + "\n"); + wprintf("\n"); + wprintf("\n"); + wprintf("\n"); + + wprintf("
"); + wprintf(_("Enter new password:")); + wprintf("
"); + wprintf(_("Enter it again to confirm:")); + wprintf("

\n"); + wprintf("", _("Change password")); + wprintf(" "); + wprintf("\n", _("Cancel")); + wprintf("
\n"); + wprintf("
\n"); + wDumpContent(1); +} + +/** + * \brief change password + * if passwords match, propagate it to citserver. + */ +void changepw(void) +{ + char buf[SIZ]; + char newpass1[32], newpass2[32]; + + if (strlen(bstr("change_action")) == 0) { + safestrncpy(WC->ImportantMessage, + _("Cancelled. Password was not changed."), + sizeof WC->ImportantMessage); + display_main_menu(); + return; + } + + safestrncpy(newpass1, bstr("newpass1"), sizeof newpass1); + safestrncpy(newpass2, bstr("newpass2"), sizeof newpass2); + + if (strcasecmp(newpass1, newpass2)) { + safestrncpy(WC->ImportantMessage, + _("They don't match. Password was not changed."), + sizeof WC->ImportantMessage); + display_changepw(); + return; + } + + if (strlen(newpass1) == 0) { + safestrncpy(WC->ImportantMessage, + _("Blank passwords are not allowed."), + sizeof WC->ImportantMessage); + display_changepw(); + return; + } + + serv_printf("SETP %s", newpass1); + serv_getln(buf, sizeof buf); + sprintf(WC->ImportantMessage, "%s", &buf[4]); + if (buf[0] == '2') { + safestrncpy(WC->wc_password, buf, sizeof WC->wc_password); + display_main_menu(); + } + else { + display_changepw(); + } +} + + + +/** @} */ diff --git a/webcit/autocompletion.c b/webcit/autocompletion.c new file mode 100644 index 000000000..0b9373ea2 --- /dev/null +++ b/webcit/autocompletion.c @@ -0,0 +1,49 @@ +/* + * $Id$ + *//** + * \defgroup AjaxAutoCompletion ajax-powered autocompletion... + * \ingroup ClientPower + */ + +/*@{*/ +#include "webcit.h" + +/** + * \brief Recipient autocompletion results + * \param partial the account to search for ?????? + */ +void recp_autocomplete(char *partial) { + char buf[1024]; + char name[128]; + + output_headers(0, 0, 0, 0, 0, 0); + + wprintf("Content-type: text/html\r\n" + "Server: %s\r\n" + "Connection: close\r\n" + "Pragma: no-cache\r\n" + "Cache-Control: no-store\r\n", + SERVER); + begin_burst(); + + wprintf("
    "); + + serv_printf("AUTO %s", partial); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + while(serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + extract_token(name, buf, 0, '|', sizeof name); + wprintf("
  • "); + escputs(name); + wprintf("
  • "); + } + } + + wprintf("
"); + + wprintf("\r\n\r\n"); + wDumpContent(0); +} + + +/** @} */ diff --git a/webcit/availability.c b/webcit/availability.c new file mode 100644 index 000000000..0c1198a26 --- /dev/null +++ b/webcit/availability.c @@ -0,0 +1,262 @@ +/* + * $Id$ + */ +/** + * + * \defgroup CalendarAv Check attendee availability for scheduling a meeting. + * \ingroup Calendaring + */ +/*@{*/ + + +#include "webcit.h" +#include "webserver.h" + +/** only available if we have calendaring */ +#ifdef WEBCIT_WITH_CALENDAR_SERVICE + + + +/** + * \brief verify users avaiability + * Utility function to fetch a VFREEBUSY type of thing for + * any specified user. + * \param who string of the user to search + */ +icalcomponent *get_freebusy_for_user(char *who) { + char buf[SIZ]; + char *serialized_fb = NULL; + icalcomponent *fb = NULL; + + serv_printf("ICAL freebusy|%s", who); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + serialized_fb = read_server_text(); + } + + if (serialized_fb == NULL) { + return NULL; + } + + fb = icalcomponent_new_from_string(serialized_fb); + free(serialized_fb); + if (fb == NULL) { + return NULL; + } + + return(fb); +} + + + + +/** + * \brief Check if dates are overlapping + * Check to see if two events overlap. + * (This function is used in both Citadel and WebCit. If you change it in + * one place, change it in the other. Better yet, put it in a library.) + * \param t1start date one start + * \param t1end date one end + * \param t2start date one start + * \param t2end date two end + * \returns nonzero if they do. + */ +int ical_ctdl_is_overlap( + struct icaltimetype t1start, + struct icaltimetype t1end, + struct icaltimetype t2start, + struct icaltimetype t2end +) { + + if (icaltime_is_null_time(t1start)) return(0); + if (icaltime_is_null_time(t2start)) return(0); + + /** First, check for all-day events */ + if (t1start.is_date) { + if (!icaltime_compare_date_only(t1start, t2start)) { + return(1); + } + if (!icaltime_is_null_time(t2end)) { + if (!icaltime_compare_date_only(t1start, t2end)) { + return(1); + } + } + } + + if (t2start.is_date) { + if (!icaltime_compare_date_only(t2start, t1start)) { + return(1); + } + if (!icaltime_is_null_time(t1end)) { + if (!icaltime_compare_date_only(t2start, t1end)) { + return(1); + } + } + } + + /** Now check for overlaps using date *and* time. */ + + /** First, bail out if either event 1 or event 2 is missing end time. */ + if (icaltime_is_null_time(t1end)) return(0); + if (icaltime_is_null_time(t2end)) return(0); + + /** If event 1 ends before event 2 starts, we're in the clear. */ + if (icaltime_compare(t1end, t2start) <= 0) return(0); + + /** If event 2 ends before event 1 starts, we're also ok. */ + if (icaltime_compare(t2end, t1start) <= 0) return(0); + + /** Otherwise, they overlap. */ + return(1); +} + + + +/* + * \brief dig availability on citserver + * Back end function for check_attendee_availability() + * This one checks an individual attendee against a supplied + * event start and end time. All these fields have already been + * broken out. + * \param attendee_string name of the attendee + * \param event_start starttime of the event to check + * \param event_end endtime of the event to check + * \return The result is placed in 'annotation'. + */ +void check_individual_attendee(char *attendee_string, + struct icaltimetype event_start, + struct icaltimetype event_end, + char *annotation) { + + icalcomponent *fbc = NULL; + icalcomponent *fb = NULL; + icalproperty *thisfb = NULL; + struct icalperiodtype period; + + /** + * Set to 'unknown' right from the beginning. Unless we learn + * something else, that's what we'll go with. + */ + strcpy(annotation, _("availability unknown")); + + fbc = get_freebusy_for_user(attendee_string); + if (fbc == NULL) { + return; + } + + /** + * Make sure we're looking at a VFREEBUSY by itself. What we're probably + * looking at initially is a VFREEBUSY encapsulated in a VCALENDAR. + */ + if (icalcomponent_isa(fbc) == ICAL_VCALENDAR_COMPONENT) { + fb = icalcomponent_get_first_component(fbc, ICAL_VFREEBUSY_COMPONENT); + } + else if (icalcomponent_isa(fbc) == ICAL_VFREEBUSY_COMPONENT) { + fb = fbc; + } + + /** Iterate through all FREEBUSY's looking for conflicts. */ + if (fb != NULL) { + + strcpy(annotation, _("free")); + + for (thisfb = icalcomponent_get_first_property(fb, ICAL_FREEBUSY_PROPERTY); + thisfb != NULL; + thisfb = icalcomponent_get_next_property(fb, ICAL_FREEBUSY_PROPERTY) ) { + + /** Do the check */ + period = icalproperty_get_freebusy(thisfb); + if (ical_ctdl_is_overlap(period.start, period.end, + event_start, event_end)) { + strcpy(annotation, _("BUSY")); + } + + } + } + + icalcomponent_free(fbc); +} + + + + +/** + * \brief check attendees availability + * Check the availability of all attendees for an event (when possible) + * and annotate accordingly. + * \param vevent the event which should be compared with attendees calendar + */ +void check_attendee_availability(icalcomponent *vevent) { + icalproperty *attendee = NULL; + icalproperty *dtstart_p = NULL; + icalproperty *dtend_p = NULL; + struct icaltimetype dtstart_t; + struct icaltimetype dtend_t; + char attendee_string[SIZ]; + char annotated_attendee_string[SIZ]; + char annotation[SIZ]; + + if (vevent == NULL) { + return; + } + + /** + * If we're looking at a fully encapsulated VCALENDAR + * rather than a VEVENT component, attempt to use the first + * relevant VEVENT subcomponent. If there is none, the + * NULL returned by icalcomponent_get_first_component() will + * tell the next iteration of this function to create a + * new one. + */ + if (icalcomponent_isa(vevent) == ICAL_VCALENDAR_COMPONENT) { + check_attendee_availability( + icalcomponent_get_first_component( + vevent, ICAL_VEVENT_COMPONENT + ) + ); + return; + } + + ical_dezonify(vevent); /**< Convert everything to UTC */ + + /** + * Learn the start and end times. + */ + dtstart_p = icalcomponent_get_first_property(vevent, ICAL_DTSTART_PROPERTY); + if (dtstart_p != NULL) dtstart_t = icalproperty_get_dtstart(dtstart_p); + + dtend_p = icalcomponent_get_first_property(vevent, ICAL_DTEND_PROPERTY); + if (dtend_p != NULL) dtend_t = icalproperty_get_dtend(dtend_p); + + /** + * Iterate through attendees. + */ + for (attendee = icalcomponent_get_first_property(vevent, ICAL_ATTENDEE_PROPERTY); + attendee != NULL; + attendee = icalcomponent_get_next_property(vevent, ICAL_ATTENDEE_PROPERTY)) { + + strcpy(attendee_string, icalproperty_get_attendee(attendee)); + if (!strncasecmp(attendee_string, "MAILTO:", 7)) { + + /** screen name or email address */ + strcpy(attendee_string, &attendee_string[7]); + striplt(attendee_string); + + check_individual_attendee(attendee_string, + dtstart_t, dtend_t, + annotation); + + /** Replace the attendee name with an annotated one. */ + snprintf(annotated_attendee_string, sizeof annotated_attendee_string, + "MAILTO:%s (%s)", attendee_string, annotation); + icalproperty_set_attendee(attendee, annotated_attendee_string); + + } + } + +} + + +#endif /* WEBCIT_WITH_CALENDAR_SERVICE */ + +/** @} */ diff --git a/webcit/bootstrap b/webcit/bootstrap new file mode 100755 index 000000000..bf4277220 --- /dev/null +++ b/webcit/bootstrap @@ -0,0 +1,3 @@ +#!/bin/sh + +autoconf diff --git a/webcit/buildpackages b/webcit/buildpackages new file mode 100755 index 000000000..a2a7a60d7 --- /dev/null +++ b/webcit/buildpackages @@ -0,0 +1,56 @@ +#!/bin/bash + +WEBCIT_VERSION=`grep "THIS IS" ChangeLog |head -n 1|sed "s;.* ;;"` +PACKAGE_VERSION=`cat packageversion` +DATE=`date '+%a, %d %b %Y %H:%I:00 %z'` +ACTUAL_DIR=`pwd` + +if echo "$ACTUAL_DIR" |grep -q "$WEBCIT_VERSION"; then + echo "directory ($ACTUAL_DIR) naming scheme seems right. nothing done." +else + done=false + if test -L "$ACTUAL_DIR"; then + SYMLINK_=`pwd` + SYMLINK=`ls -l $SYMLINK_|sed "s;.*-> ;;"` + if ls -l $SYMLINK_|grep -q "$WEBCIT_VERSION"; then + done=true + fi + else + SYMLINK=`pwd|sed "s;.*/;;"` + fi + if test "$done" = "false"; then + cd .. + mv -- $SYMLINK "webcit-$WEBCIT_VERSION" + ln -s "webcit-$WEBCIT_VERSION" webcit + cd "webcit-$WEBCIT_VERSION" + else + cd "../webcit-$WEBCIT_VERSION" + fi + +fi +./bootstrap +case $1 in + debian) + cat debian/files_preview | sed \ + -e "s;@WEBCIT_VERSION@;${WEBCIT_VERSION};" \ + -e "s;@PACKAGE_VERSION@;${PACKAGE_VERSION};" \ + > debian/files + if grep -q "$WEBCIT_VERSION" debian/changelog; then + echo rebuilding package. + else + echo "webcit (${WEBCIT_VERSION}-${PACKAGE_VERSION}) unstable; urgency=low + + * update to actual Webcit SVN. many new features. see Packages changelog. + + -- Wilfried Goesgens $DATE + " >/tmp/webcit_changelog + cat debian/changelog >>/tmp/webcit_changelog + mv /tmp/webcit_changelog debian/changelog + + fi + fakeroot dpkg-buildpackage + ;; + *) + echo "Not yet implemented. we have: debian " + ;; +esac \ No newline at end of file diff --git a/webcit/calendar.c b/webcit/calendar.c new file mode 100644 index 000000000..5353dfa67 --- /dev/null +++ b/webcit/calendar.c @@ -0,0 +1,1008 @@ +/* + * $Id$ + */ +/** + * \defgroup calav Functions which handle calendar objects and their processing/display. + * \ingroup Calendaring + */ +/* @{ */ + +#include "webcit.h" +#include "webserver.h" + +#ifndef WEBCIT_WITH_CALENDAR_SERVICE + +/** + * \brief get around non existing types + * Handler stubs for builds with no calendar library available + * \param part_source dummy pointer to the source + * \param msgnum number of the mesage in the db + * \param cal_partnum number of the calendar part + */ +void cal_process_attachment(char *part_source, long msgnum, char *cal_partnum) { + + wprintf(_("This message contains calendaring/scheduling information," + " but support for calendars is not available on this " + "particular system. Please ask your system administrator to " + "install a new version of the Citadel web service with " + "calendaring enabled.
\n") + ); + +} + +/** + * \brief say we can't display calendar items + * \param msgnum number of the mesage in our db + */ +void display_calendar(long msgnum) { + wprintf(_("" + "Cannot display calendar item. You are seeing this error " + "because your WebCit service has not been installed with " + "calendar support. Please contact your system administrator." + "
\n")); +} + +/** + * \brief say we can't display task items + * \param msgnum number of the mesage in our db + */ +void display_task(long msgnum) { + wprintf(_("" + "Cannot display to-do item. You are seeing this error " + "because your WebCit service has not been installed with " + "calendar support. Please contact your system administrator." + "
\n")); +} +/** ok, we have calendaring available */ +#else /* WEBCIT_WITH_CALENDAR_SERVICE */ + + +/****** End of handler stubs. Everything below this line is real. ******/ + + + + +/** + * \brief Process a calendar object + * ...at this point it's already been deserialized by cal_process_attachment() + * \param cal teh calendar object + * \param recursion_level call stack depth ?????? + * \param msgnum number of the mesage in our db + * \param cal_partnum of the calendar object ???? + */ +void cal_process_object(icalcomponent *cal, + int recursion_level, + long msgnum, + char *cal_partnum +) { + icalcomponent *c; + icalproperty *method = NULL; + icalproperty_method the_method = ICAL_METHOD_NONE; + icalproperty *p; + struct icaltimetype t; + time_t tt; + char buf[256]; + char conflict_name[256]; + char conflict_message[256]; + int is_update = 0; + + /** Leading HTML for the display of this object */ + if (recursion_level == 0) { + wprintf("
\n"); + } + + /** Look for a method */ + method = icalcomponent_get_first_property(cal, ICAL_METHOD_PROPERTY); + + /** See what we need to do with this */ + if (method != NULL) { + the_method = icalproperty_get_method(method); + switch(the_method) { + case ICAL_METHOD_REQUEST: + wprintf("\n"); + break; + case ICAL_METHOD_REPLY: + wprintf("\n"); + break; + case ICAL_METHOD_PUBLISH: + wprintf("\n"); + break; + default: + wprintf("\n"); + break; + } + } + + p = icalcomponent_get_first_property(cal, ICAL_SUMMARY_PROPERTY); + if (p != NULL) { + wprintf("\n"); + } + + p = icalcomponent_get_first_property(cal, ICAL_LOCATION_PROPERTY); + if (p != NULL) { + wprintf("\n"); + } + + /** + * Only show start/end times if we're actually looking at the VEVENT + * component. Otherwise it shows bogus dates for things like timezone. + */ + if (icalcomponent_isa(cal) == ICAL_VEVENT_COMPONENT) { + + p = icalcomponent_get_first_property(cal, + ICAL_DTSTART_PROPERTY); + if (p != NULL) { + t = icalproperty_get_dtstart(p); + + if (t.is_date) { + struct tm d_tm; + char d_str[32]; + memset(&d_tm, 0, sizeof d_tm); + d_tm.tm_year = t.year - 1900; + d_tm.tm_mon = t.month - 1; + d_tm.tm_mday = t.day; + wc_strftime(d_str, sizeof d_str, "%x", &d_tm); + wprintf("", d_str); + } + else { + tt = icaltime_as_timet(t); + fmt_date(buf, tt, 0); + wprintf("", buf); + } + } + + p = icalcomponent_get_first_property(cal, ICAL_DTEND_PROPERTY); + if (p != NULL) { + t = icalproperty_get_dtend(p); + tt = icaltime_as_timet(t); + fmt_date(buf, tt, 0); + wprintf("", buf); + } + + } + + p = icalcomponent_get_first_property(cal, ICAL_DESCRIPTION_PROPERTY); + if (p != NULL) { + wprintf("\n"); + } + + /** If the component has attendees, iterate through them. */ + for (p = icalcomponent_get_first_property(cal, ICAL_ATTENDEE_PROPERTY); (p != NULL); p = icalcomponent_get_next_property(cal, ICAL_ATTENDEE_PROPERTY)) { + wprintf("\n"); + } + + /** If the component has subcomponents, recurse through them. */ + for (c = icalcomponent_get_first_component(cal, ICAL_ANY_COMPONENT); + (c != 0); + c = icalcomponent_get_next_component(cal, ICAL_ANY_COMPONENT)) { + /* Recursively process subcomponent */ + cal_process_object(c, recursion_level+1, msgnum, cal_partnum); + } + + /** If this is a REQUEST, display conflicts and buttons */ + if (the_method == ICAL_METHOD_REQUEST) { + + /* Check for conflicts */ + lprintf(9, "Checking server calendar for conflicts...\n"); + serv_printf("ICAL conflicts|%ld|%s|", msgnum, cal_partnum); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + extract_token(conflict_name, buf, 3, '|', sizeof conflict_name); + is_update = extract_int(buf, 4); + + if (is_update) { + snprintf(conflict_message, sizeof conflict_message, + _("This is an update of '%s' which is already in your calendar."), conflict_name); + } + else { + snprintf(conflict_message, sizeof conflict_message, + _("This event would conflict with '%s' which is already in your calendar."), conflict_name); + } + + wprintf("\n"); + } + } + lprintf(9, "...done.\n"); + + /** Display the Accept/Decline buttons */ + wprintf("" + "\n", + _("How would you like to respond to this invitation?"), + msgnum, cal_partnum, _("Accept"), + msgnum, cal_partnum, _("Tentative"), + msgnum, cal_partnum, _("Decline") + ); + + } + + /** If this is a REPLY, display update button */ + if (the_method == ICAL_METHOD_REPLY) { + + /** \todo In the future, if we want to validate this object before \ + * continuing, we can do it this way: + serv_printf("ICAL whatever|%ld|%s|", msgnum, cal_partnum); + serv_getln(buf, sizeof buf); + } + ***********/ + + /** Display the update buttons */ + wprintf("\n", + _("Click Update to accept this reply and update your calendar."), + msgnum, cal_partnum, _("Update"), + msgnum, cal_partnum, _("Ignore") + ); + + } + + /** Trailing HTML for the display of this object */ + if (recursion_level == 0) { + + wprintf("
\n" + "" + "  " + ""); + wprintf(_("Meeting invitation")); + wprintf("
\n" + "" + "  " + ""); + wprintf(_("Attendee's reply to your invitation")); + wprintf("
\n" + "" + "  " + ""); + wprintf(_("Published event")); + wprintf("
"); + wprintf(_("This is an unknown type of calendar item.")); + wprintf("
"); + wprintf(_("Summary:")); + wprintf(""); + escputs((char *)icalproperty_get_comment(p)); + wprintf("
"); + wprintf(_("Location:")); + wprintf(""); + escputs((char *)icalproperty_get_comment(p)); + wprintf("
"); + wprintf(_("Date:")); + wprintf("%s
"); + wprintf(_("Starting date/time:")); + wprintf("%s
"); + wprintf(_("Ending date/time:")); + wprintf("%s
"); + wprintf(_("Description:")); + wprintf(""); + escputs((char *)icalproperty_get_comment(p)); + wprintf("
"); + wprintf(_("Attendee:")); + wprintf(""); + safestrncpy(buf, icalproperty_get_attendee(p), sizeof buf); + if (!strncasecmp(buf, "MAILTO:", 7)) { + + /** screen name or email address */ + strcpy(buf, &buf[7]); + striplt(buf); + escputs(buf); + wprintf(" "); + + /** participant status */ + partstat_as_string(buf, p); + escputs(buf); + } + wprintf("
%s", + (is_update ? + _("Update:") : + _("CONFLICT:") + ) + ); + escputs(conflict_message); + wprintf("
%s" + "%s" + " | " + "%s" + " | " + "%s" + "
" + "%s" + "" + "%s" + " | " + "%s" + "" + "
\n"); + } +} + + +/** + * \brief process calendar mail atachment + * Deserialize a calendar object in a message so it can be processed. + * (This is the main entry point for these things) + * \param part_source the part of the message we want to parse + * \param msgnum number of the mesage in our db + * \param cal_partnum the number of the calendar item + */ +void cal_process_attachment(char *part_source, long msgnum, char *cal_partnum) { + icalcomponent *cal; + + cal = icalcomponent_new_from_string(part_source); + + if (cal == NULL) { + wprintf(_("There was an error parsing this calendar item.")); + wprintf("
\n"); + return; + } + + ical_dezonify(cal); + cal_process_object(cal, 0, msgnum, cal_partnum); + + /* Free the memory we obtained from libical's constructor */ + icalcomponent_free(cal); +} + + + + +/** + * \brief accept/decline meeting + * Respond to a meeting request + */ +void respond_to_request(void) { + char buf[SIZ]; + + output_headers(1, 1, 2, 0, 0, 0); + + wprintf("
\n"); + wprintf("
" + ""); + wprintf(_("Respond to meeting request")); + wprintf("" + "
\n" + ); + wprintf("
\n
\n"); + + serv_printf("ICAL respond|%s|%s|%s|", + bstr("msgnum"), + bstr("cal_partnum"), + bstr("sc") + ); + serv_getln(buf, sizeof buf); + + if (buf[0] == '2') { + wprintf("
" + "" + "" + ); + if (!strcasecmp(bstr("sc"), "accept")) { + wprintf(_("You have accepted this meeting invitation. " + "It has been entered into your calendar.") + ); + } else if (!strcasecmp(bstr("sc"), "tentative")) { + wprintf(_("You have tentatively accepted this meeting invitation. " + "It has been 'pencilled in' to your calendar.") + ); + } else if (!strcasecmp(bstr("sc"), "decline")) { + wprintf(_("You have declined this meeting invitation. " + "It has not been entered into your calendar.") + ); + } + wprintf(" "); + wprintf(_("A reply has been sent to the meeting organizer.")); + wprintf("
\n"); + } else { + wprintf("" + "%s\n", &buf[4]); + } + + wprintf("wc_roomname); + wprintf("\">
"); + wprintf(_("Return to messages")); + wprintf("

\n"); + + wDumpContent(1); +} + + + +/** + * \brief Handle an incoming RSVP + */ +void handle_rsvp(void) { + char buf[SIZ]; + + output_headers(1, 1, 2, 0, 0, 0); + + wprintf("
\n"); + wprintf("
" + ""); + wprintf(_("Update your calendar with this RSVP")); + wprintf("" + "
\n" + "
\n
\n" + ); + + serv_printf("ICAL handle_rsvp|%s|%s|%s|", + bstr("msgnum"), + bstr("cal_partnum"), + bstr("sc") + ); + serv_getln(buf, sizeof buf); + + if (buf[0] == '2') { + wprintf("
" + "" + "" + ); + if (!strcasecmp(bstr("sc"), "update")) { + wprintf(_("Your calendar has been updated to reflect this RSVP.")); + } else if (!strcasecmp(bstr("sc"), "ignore")) { + wprintf(_("You have chosen to ignore this RSVP. " + "Your calendar has not been updated.") + ); + } + wprintf("
\n" + ); + } else { + wprintf("" + "%s\n", &buf[4]); + } + + wprintf("wc_roomname); + wprintf("\">
"); + wprintf(_("Return to messages")); + wprintf("

\n"); + + wDumpContent(1); +} + + + +/*@}*/ +/*-----------------------------------------------------------------------**/ + + + +/** + * \defgroup MsgDisplayHandlers Display handlers for message reading + * \ingroup Calendaring + */ + +/*@{*/ + + + +/** + * \brief get items, keep them. + * If we're reading calendar items, just store them for now. We have to + * sort and re-output them later when we draw the calendar. + * \param cal Our calendar to process + * \param msgnum number of the mesage in our db + */ +void display_individual_cal(icalcomponent *cal, long msgnum) { + + WC->num_cal += 1; + + WC->disp_cal = realloc(WC->disp_cal, + (sizeof(struct disp_cal) * WC->num_cal) ); + WC->disp_cal[WC->num_cal - 1].cal = icalcomponent_new_clone(cal); + + WC->disp_cal[WC->num_cal - 1].cal_msgnum = msgnum; +} + + + +/* + * \brief edit a task + * Display a task by itself (for editing) + * \param supplied_vtodo the todo item we want to edit + * \param msgnum number of the mesage in our db + */ +void display_edit_individual_task(icalcomponent *supplied_vtodo, long msgnum) { + icalcomponent *vtodo; + icalproperty *p; + struct icaltimetype t; + time_t now; + int created_new_vtodo = 0; + + now = time(NULL); + + if (supplied_vtodo != NULL) { + vtodo = supplied_vtodo; + + /** + * If we're looking at a fully encapsulated VCALENDAR + * rather than a VTODO component, attempt to use the first + * relevant VTODO subcomponent. If there is none, the + * NULL returned by icalcomponent_get_first_component() will + * tell the next iteration of this function to create a + * new one. + */ + if (icalcomponent_isa(vtodo) == ICAL_VCALENDAR_COMPONENT) { + display_edit_individual_task( + icalcomponent_get_first_component( + vtodo, ICAL_VTODO_COMPONENT + ), msgnum + ); + return; + } + } + else { + vtodo = icalcomponent_new(ICAL_VTODO_COMPONENT); + created_new_vtodo = 1; + } + + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n" + "" + "" + "
"); + wprintf(_("Edit task")); + wprintf("" + "
\n" + "
\n
\n" + ); + + wprintf("
" + "
"); + + wprintf("
\n"); + wprintf("\n", + msgnum); + + wprintf("\n"); + + wprintf("\n"); + + wprintf("\n"); + + wprintf("\n"); + wprintf("
"); + wprintf(_("Summary:")); + wprintf("" + "
"); + wprintf(_("Start date:")); + wprintf(""); + p = icalcomponent_get_first_property(vtodo, ICAL_DTSTART_PROPERTY); + if (p != NULL) { + t = icalproperty_get_dtstart(p); + } + else { + t = icaltime_from_timet(now, 0); + } + display_icaltimetype_as_webform(&t, "dtstart"); + wprintf("
"); + wprintf(_("Due date:")); + wprintf(""); + p = icalcomponent_get_first_property(vtodo, ICAL_DUE_PROPERTY); + if (p != NULL) { + t = icalproperty_get_due(p); + } + else { + t = icaltime_from_timet(now, 0); + } + display_icaltimetype_as_webform(&t, "due"); + wprintf("
"); + wprintf(_("Description:")); + wprintf(""); + wprintf("
\n"); + + wprintf("
" + "" + "  " + "\n" + "  " + "\n" + "
\n", + _("Save"), + _("Delete"), + _("Cancel") + ); + + wprintf("
\n"); + + wprintf("
\n"); + wDumpContent(1); + + if (created_new_vtodo) { + icalcomponent_free(vtodo); + } +} + +/* + * \brief Save an edited task + * \param supplied_vtodo the task to save + * \param msgnum number of the mesage in our db + */ +void save_individual_task(icalcomponent *supplied_vtodo, long msgnum) { + char buf[SIZ]; + int delete_existing = 0; + icalproperty *prop; + icalcomponent *vtodo, *encaps; + int created_new_vtodo = 0; + int i; + int sequence = 0; + struct icaltimetype t; + + if (supplied_vtodo != NULL) { + vtodo = supplied_vtodo; + /** + * If we're looking at a fully encapsulated VCALENDAR + * rather than a VTODO component, attempt to use the first + * relevant VTODO subcomponent. If there is none, the + * NULL returned by icalcomponent_get_first_component() will + * tell the next iteration of this function to create a + * new one. + */ + if (icalcomponent_isa(vtodo) == ICAL_VCALENDAR_COMPONENT) { + save_individual_task( + icalcomponent_get_first_component( + vtodo, ICAL_VTODO_COMPONENT + ), msgnum + ); + return; + } + } + else { + vtodo = icalcomponent_new(ICAL_VTODO_COMPONENT); + created_new_vtodo = 1; + } + + if (strlen(bstr("save_button")) > 0) { + + /** Replace values in the component with ones from the form */ + + while (prop = icalcomponent_get_first_property(vtodo, + ICAL_SUMMARY_PROPERTY), prop != NULL) { + icalcomponent_remove_property(vtodo, prop); + icalproperty_free(prop); + } + icalcomponent_add_property(vtodo, + icalproperty_new_summary(bstr("summary"))); + + while (prop = icalcomponent_get_first_property(vtodo, + ICAL_DESCRIPTION_PROPERTY), prop != NULL) { + icalcomponent_remove_property(vtodo, prop); + icalproperty_free(prop); + } + icalcomponent_add_property(vtodo, + icalproperty_new_description(bstr("description"))); + + while (prop = icalcomponent_get_first_property(vtodo, + ICAL_DTSTART_PROPERTY), prop != NULL) { + icalcomponent_remove_property(vtodo, prop); + icalproperty_free(prop); + } + icaltime_from_webform(&t, "dtstart"); + icalcomponent_add_property(vtodo, + icalproperty_new_dtstart(t) + ); + + while (prop = icalcomponent_get_first_property(vtodo, + ICAL_DUE_PROPERTY), prop != NULL) { + icalcomponent_remove_property(vtodo, prop); + icalproperty_free(prop); + } + icaltime_from_webform(&t, "due"); + icalcomponent_add_property(vtodo, + icalproperty_new_due(t) + ); + + /** Give this task a UID if it doesn't have one. */ + lprintf(9, "Give this task a UID if it doesn't have one.\n"); + if (icalcomponent_get_first_property(vtodo, + ICAL_UID_PROPERTY) == NULL) { + generate_uuid(buf); + icalcomponent_add_property(vtodo, + icalproperty_new_uid(buf) + ); + } + + /** Increment the sequence ID */ + lprintf(9, "Increment the sequence ID\n"); + while (prop = icalcomponent_get_first_property(vtodo, + ICAL_SEQUENCE_PROPERTY), (prop != NULL) ) { + i = icalproperty_get_sequence(prop); + lprintf(9, "Sequence was %d\n", i); + if (i > sequence) sequence = i; + icalcomponent_remove_property(vtodo, prop); + icalproperty_free(prop); + } + ++sequence; + lprintf(9, "New sequence is %d. Adding...\n", sequence); + icalcomponent_add_property(vtodo, + icalproperty_new_sequence(sequence) + ); + + /** + * Encapsulate event into full VCALENDAR component. Clone it first, + * for two reasons: one, it's easier to just free the whole thing + * when we're done instead of unbundling, but more importantly, we + * can't encapsulate something that may already be encapsulated + * somewhere else. + */ + lprintf(9, "Encapsulating into full VCALENDAR component\n"); + encaps = ical_encapsulate_subcomponent(icalcomponent_new_clone(vtodo)); + + /* Serialize it and save it to the message base */ + serv_puts("ENT0 1|||4"); + serv_getln(buf, sizeof buf); + if (buf[0] == '4') { + serv_puts("Content-type: text/calendar"); + serv_puts(""); + serv_puts(icalcomponent_as_ical_string(encaps)); + serv_puts("000"); + + /** + * Probably not necessary; the server will see the UID + * of the object and delete the old one anyway, but + * just in case... + */ + delete_existing = 1; + } + icalcomponent_free(encaps); + } + + /** + * If the user clicked 'Delete' then explicitly delete the message. + */ + if (strlen(bstr("delete_button")) > 0) { + delete_existing = 1; + } + + if ( (delete_existing) && (msgnum > 0L) ) { + serv_printf("DELE %ld", atol(bstr("msgnum"))); + serv_getln(buf, sizeof buf); + } + + if (created_new_vtodo) { + icalcomponent_free(vtodo); + } + + /** Go back to the task list */ + readloop("readfwd"); +} + + + +/** + * \brief generic item handler + * Code common to all display handlers. Given a message number and a MIME + * type, we load the message and hunt for that MIME type. If found, we load + * the relevant part, deserialize it into a libical component, filter it for + * the requested object type, and feed it to the specified handler. + * \param mimetype mimetyp of our object + * \param which_kind sort of ical type + * \param msgnum number of the mesage in our db + * \param callback a funcion \todo + * + */ +void display_using_handler(long msgnum, + char *mimetype, + icalcomponent_kind which_kind, + void (*callback)(icalcomponent *, long) + ) { + char buf[SIZ]; + char mime_partnum[SIZ]; + char mime_filename[SIZ]; + char mime_content_type[SIZ]; + char mime_disposition[SIZ]; + int mime_length; + char relevant_partnum[SIZ]; + char *relevant_source = NULL; + icalcomponent *cal, *c; + + sprintf(buf, "MSG0 %ld|1", msgnum); /* ask for headers only */ + serv_puts(buf); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') return; + + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + if (!strncasecmp(buf, "part=", 5)) { + extract_token(mime_filename, &buf[5], 1, '|', sizeof mime_filename); + extract_token(mime_partnum, &buf[5], 2, '|', sizeof mime_partnum); + extract_token(mime_disposition, &buf[5], 3, '|', sizeof mime_disposition); + extract_token(mime_content_type, &buf[5], 4, '|', sizeof mime_content_type); + mime_length = extract_int(&buf[5], 5); + + if (!strcasecmp(mime_content_type, "text/calendar")) { + strcpy(relevant_partnum, mime_partnum); + } + + } + } + + if (strlen(relevant_partnum) > 0) { + relevant_source = load_mimepart(msgnum, relevant_partnum); + if (relevant_source != NULL) { + + cal = icalcomponent_new_from_string(relevant_source); + if (cal != NULL) { + + ical_dezonify(cal); + + /** Simple components of desired type */ + if (icalcomponent_isa(cal) == which_kind) { + callback(cal, msgnum); + } + + /** Subcomponents of desired type */ + for (c = icalcomponent_get_first_component(cal, + which_kind); + (c != 0); + c = icalcomponent_get_next_component(cal, + which_kind)) { + callback(c, msgnum); + } + icalcomponent_free(cal); + } + free(relevant_source); + } + } + +} + +/** + * \brief display whole calendar + * \param msgnum number of the mesage in our db + */ +void display_calendar(long msgnum) { + display_using_handler(msgnum, "text/calendar", + ICAL_VEVENT_COMPONENT, + display_individual_cal); +} + +/** + * \brief display whole taksview + * \param msgnum number of the mesage in our db + */ +void display_task(long msgnum) { + display_using_handler(msgnum, "text/calendar", + ICAL_VTODO_COMPONENT, + display_individual_cal); +} + +/** + * \brief display the editor component for a task + */ +void display_edit_task(void) { + long msgnum = 0L; + + /** Force change the room if we have to */ + if (strlen(bstr("taskrm")) > 0) { + gotoroom(bstr("taskrm")); + } + + msgnum = atol(bstr("msgnum")); + if (msgnum > 0L) { + /** existing task */ + display_using_handler(msgnum, "text/calendar", + ICAL_VTODO_COMPONENT, + display_edit_individual_task); + } + else { + /** new task */ + display_edit_individual_task(NULL, 0L); + } +} + +/** + *\brief save an edited task + */ +void save_task(void) { + long msgnum = 0L; + + msgnum = atol(bstr("msgnum")); + if (msgnum > 0L) { + display_using_handler(msgnum, "text/calendar", + ICAL_VTODO_COMPONENT, + save_individual_task); + } + else { + save_individual_task(NULL, 0L); + } +} + +/** + * \brief display the editor component for an event + */ +void display_edit_event(void) { + long msgnum = 0L; + + msgnum = atol(bstr("msgnum")); + if (msgnum > 0L) { + /* existing event */ + display_using_handler(msgnum, "text/calendar", + ICAL_VEVENT_COMPONENT, + display_edit_individual_event); + } + else { + /* new event */ + display_edit_individual_event(NULL, 0L); + } +} + +/** + * \brief save an edited event + */ +void save_event(void) { + long msgnum = 0L; + + msgnum = atol(bstr("msgnum")); + + if (msgnum > 0L) { + display_using_handler(msgnum, "text/calendar", + ICAL_VEVENT_COMPONENT, + save_individual_event); + } + else { + save_individual_event(NULL, 0L); + } +} + + + + + +/** + * \brief freebusy display (for client software) + * \param req dunno. ????? + */ +void do_freebusy(char *req) { + char who[SIZ]; + char buf[SIZ]; + char *fb; + + extract_token(who, req, 1, ' ', sizeof who); + if (!strncasecmp(who, "/freebusy/", 10)) { + strcpy(who, &who[10]); + } + unescape_input(who); + + if ( (!strcasecmp(&who[strlen(who)-4], ".vcf")) + || (!strcasecmp(&who[strlen(who)-4], ".ifb")) + || (!strcasecmp(&who[strlen(who)-4], ".vfb")) ) { + who[strlen(who)-4] = 0; + } + + lprintf(9, "freebusy requested for <%s>\n", who); + serv_printf("ICAL freebusy|%s", who); + serv_getln(buf, sizeof buf); + + if (buf[0] != '1') { + wprintf("HTTP/1.1 404 %s\n", &buf[4]); + output_headers(0, 0, 0, 0, 0, 0); + wprintf("Content-Type: text/plain\r\n"); + wprintf("\r\n"); + wprintf("%s\n", &buf[4]); + return; + } + + fb = read_server_text(); + http_transmit_thing(fb, strlen(fb), "text/calendar", 0); + free(fb); +} + + + +#endif /* WEBCIT_WITH_CALENDAR_SERVICE */ + + +/*@}*/ diff --git a/webcit/calendar_tools.c b/webcit/calendar_tools.c new file mode 100644 index 000000000..d62cb8296 --- /dev/null +++ b/webcit/calendar_tools.c @@ -0,0 +1,302 @@ +/* + * $Id$ + */ +/** + * \defgroup MiscCal Miscellaneous functions which handle calendar components. + * \ingroup Calendaring + */ +/*@{*/ +#include "webcit.h" +#include "webserver.h" + +/** Hour strings */ +char *hourname[] = { + "12am", "1am", "2am", "3am", "4am", "5am", "6am", + "7am", "8am", "9am", "10am", "11am", "12pm", + "1pm", "2pm", "3pm", "4pm", "5pm", "6pm", + "7pm", "8pm", "9pm", "10pm", "11pm" +}; + +#ifdef WEBCIT_WITH_CALENDAR_SERVICE + +/** + * \brief display and edit date/time + * The display_icaltimetype_as_webform() and icaltime_from_webform() functions + * handle the display and editing of date/time properties in web pages. The + * first one converts an icaltimetype into valid HTML markup -- a series of form + * fields for editing the date and time. When the user submits the form, the + * results can be fed back into the second function, which turns it back into + * an icaltimetype. The "prefix" string required by both functions is prepended + * to all field names. This allows a form to contain more than one date/time + * property (for example, a start and end time) by ensuring the field names are + * unique within the form. + * + * \todo NOTE: These functions assume that the icaltimetype being edited is in UTC, and + * will convert to/from local time for editing. "local" in this case is assumed + * to be the time zone in which the WebCit server is running. A future improvement + * might be to allow the user to specify his/her timezone. + * \param t the time we want to parse + * \param prefix ???? \todo + */ + + +void display_icaltimetype_as_webform(struct icaltimetype *t, char *prefix) { + int i; + time_t now; + struct tm tm_now; + int this_year; + time_t tt; + struct tm tm; + const int span = 10; + int all_day_event = 0; + time_t monthselect_time; + struct tm monthselect_tm; + char monthselect_str[32]; + char calhourformat[16]; + + get_preference("calhourformat", calhourformat, sizeof calhourformat); + + now = time(NULL); + localtime_r(&now, &tm_now); + this_year = tm_now.tm_year + 1900; + + if (t == NULL) return; + if (t->is_date) all_day_event = 1; + tt = icaltime_as_timet(*t); + if (all_day_event) { + gmtime_r(&tt, &tm); + } + else { + localtime_r(&tt, &tm); + } + + wprintf(_("Month: ")); + wprintf("\n"); + + wprintf(_("Day: ")); + wprintf("\n"); + + wprintf(_("Year: ")); + wprintf("\n"); + + wprintf(_("Hour: ")); + wprintf("\n"); + + wprintf(_("Minute: ")); + wprintf("\n"); +} + +/** + *\brief Get time from form + * get the time back from the user and convert it into internal structs. + * \param t our time element + * \param prefix whats that\todo ???? + */ +void icaltime_from_webform(struct icaltimetype *t, char *prefix) { + char vname[32]; + time_t tt; + struct tm tm; + struct icaltimetype t2; + + tt = time(NULL); + localtime_r(&tt, &tm); + + sprintf(vname, "%s_month", prefix); tm.tm_mon = atoi(bstr(vname)) - 1; + sprintf(vname, "%s_day", prefix); tm.tm_mday = atoi(bstr(vname)); + sprintf(vname, "%s_year", prefix); tm.tm_year = atoi(bstr(vname)) - 1900; + sprintf(vname, "%s_hour", prefix); tm.tm_hour = atoi(bstr(vname)); + sprintf(vname, "%s_minute", prefix); tm.tm_min = atoi(bstr(vname)); + + tt = mktime(&tm); + t2 = icaltime_from_timet(tt, 0); + memcpy(t, &t2, sizeof(struct icaltimetype)); +} + +/** + *\brief Get time from form + * get the time back from the user and convert it into internal structs. + * \param t our time element + * \param prefix whats that\todo ???? + */ + +void icaltime_from_webform_dateonly(struct icaltimetype *t, char *prefix) { + char vname[32]; + + memset(t, 0, sizeof(struct icaltimetype)); + + sprintf(vname, "%s_month", prefix); t->month = atoi(bstr(vname)); + sprintf(vname, "%s_day", prefix); t->day = atoi(bstr(vname)); + sprintf(vname, "%s_year", prefix); t->year = atoi(bstr(vname)); + t->is_utc = 1; + t->is_date = 1; +} + + +/** + * \brief Render PAPSTAT + * Render a PARTSTAT parameter as a string (and put it in parentheses) + * \param buf the string to put it to + * \param attendee the attendee to textify + */ +void partstat_as_string(char *buf, icalproperty *attendee) { + icalparameter *partstat_param; + icalparameter_partstat partstat; + + strcpy(buf, _("(status unknown)")); + + partstat_param = icalproperty_get_first_parameter( + attendee, + ICAL_PARTSTAT_PARAMETER + ); + if (partstat_param == NULL) { + return; + } + + partstat = icalparameter_get_partstat(partstat_param); + switch(partstat) { + case ICAL_PARTSTAT_X: + strcpy(buf, "(x)"); + break; + case ICAL_PARTSTAT_NEEDSACTION: + strcpy(buf, _("(needs action)")); + break; + case ICAL_PARTSTAT_ACCEPTED: + strcpy(buf, _("(accepted)")); + break; + case ICAL_PARTSTAT_DECLINED: + strcpy(buf, _("(declined)")); + break; + case ICAL_PARTSTAT_TENTATIVE: + strcpy(buf, _("(tenative)")); + break; + case ICAL_PARTSTAT_DELEGATED: + strcpy(buf, _("(delegated)")); + break; + case ICAL_PARTSTAT_COMPLETED: + strcpy(buf, _("(completed)")); + break; + case ICAL_PARTSTAT_INPROCESS: + strcpy(buf, _("(in process)")); + break; + case ICAL_PARTSTAT_NONE: + strcpy(buf, _("(none)")); + break; + } +} + + +/** + * \brief embedd + * Utility function to encapsulate a subcomponent into a full VCALENDAR + * \param subcomp the component to encapsulate + * \returns the meta object ??? + */ +icalcomponent *ical_encapsulate_subcomponent(icalcomponent *subcomp) { + icalcomponent *encaps; + + /* lprintf(9, "ical_encapsulate_subcomponent() called\n"); */ + + if (subcomp == NULL) { + lprintf(3, "ERROR: called with NULL argument!\n"); + return NULL; + } + + /** + * If we're already looking at a full VCALENDAR component, + * don't bother ... just return itself. + */ + if (icalcomponent_isa(subcomp) == ICAL_VCALENDAR_COMPONENT) { + return subcomp; + } + + /** Encapsulate the VEVENT component into a complete VCALENDAR */ + encaps = icalcomponent_new(ICAL_VCALENDAR_COMPONENT); + if (encaps == NULL) { + lprintf(3, "%s:%d: Error - could not allocate component!\n", + __FILE__, __LINE__); + return NULL; + } + + /** Set the Product ID */ + icalcomponent_add_property(encaps, icalproperty_new_prodid(PRODID)); + + /** Set the Version Number */ + icalcomponent_add_property(encaps, icalproperty_new_version("2.0")); + + /** Encapsulate the subcomponent inside */ + /* lprintf(9, "Doing the encapsulation\n"); */ + icalcomponent_add_component(encaps, subcomp); + + /** Convert all timestamps to UTC so we don't have to deal with + * stupid VTIMEZONE crap. + */ + ical_dezonify(encaps); + + /** Return the object we just created. */ + return(encaps); +} + + + + +#endif +/*@}*/ diff --git a/webcit/calendar_view.c b/webcit/calendar_view.c new file mode 100644 index 000000000..798579c7e --- /dev/null +++ b/webcit/calendar_view.c @@ -0,0 +1,1071 @@ +/* + * $Id$ + */ +/** + * \defgroup CalHtmlHandles Handles the HTML display of calendar items. + * \ingroup Calendaring + */ +/*@{*/ +#include "webcit.h" +#include "webserver.h" + +#ifndef WEBCIT_WITH_CALENDAR_SERVICE + +/**\brief stub for non-libical builds */ +void do_calendar_view(void) { + wprintf("
"); + wprintf(_("The calendar view is not available.")); + wprintf("

\n"); +} + +/**\brief stub for non-libical builds */ +void do_tasks_view(void) { + wprintf("
"); + wprintf(_("The tasks view is not available.")); + wprintf("

\n"); +} + +#else /* WEBCIT_WITH_CALENDAR_SERVICE */ + +/****************************************************************************/ + +/** + * \brief Display one day of a whole month view of a calendar + * \param thetime the month we want to see + */ +void calendar_month_view_display_events(time_t thetime) { + int i; + time_t event_tt; + struct tm event_tm; + struct tm today_tm; + icalproperty *p = NULL; + icalproperty *q = NULL; + struct icaltimetype t; + int month, day, year; + int all_day_event = 0; + time_t tt; + char buf[256]; + + if (WC->num_cal == 0) { + wprintf("


\n"); + return; + } + + localtime_r(&thetime, &today_tm); + month = today_tm.tm_mon + 1; + day = today_tm.tm_mday; + year = today_tm.tm_year + 1900; + + for (i=0; i<(WC->num_cal); ++i) { + p = icalcomponent_get_first_property(WC->disp_cal[i].cal, + ICAL_DTSTART_PROPERTY); + if (p != NULL) { + t = icalproperty_get_dtstart(p); + event_tt = icaltime_as_timet(t); + + if (t.is_date) all_day_event = 1; + else all_day_event = 0; + + if (all_day_event) { + gmtime_r(&event_tt, &event_tm); + } + else { + localtime_r(&event_tt, &event_tm); + } + + if ((event_tm.tm_year == today_tm.tm_year) + && (event_tm.tm_mon == today_tm.tm_mon) + && (event_tm.tm_mday == today_tm.tm_mday)) { + + p = icalcomponent_get_first_property( + WC->disp_cal[i].cal, + ICAL_SUMMARY_PROPERTY); + if (p != NULL) { + + if (all_day_event) { + wprintf("" + "
" + ); + } + + wprintf("" + "disp_cal[i].cal_msgnum, + bstr("calview"), + bstr("year"), + bstr("month"), + bstr("day") + ); + + wprintf("%s ", _("Summary:")); + escputs((char *)icalproperty_get_comment(p)); + wprintf("
"); + + q = icalcomponent_get_first_property( + WC->disp_cal[i].cal, + ICAL_LOCATION_PROPERTY); + if (q) { + wprintf("%s ", _("Location:")); + escputs((char *)icalproperty_get_comment(q)); + wprintf("
"); + } + + /** + * Only show start/end times if we're actually looking at the VEVENT + * component. Otherwise it shows bogus dates for e.g. timezones + */ + if (icalcomponent_isa(WC->disp_cal[i].cal) == ICAL_VEVENT_COMPONENT) { + + q = icalcomponent_get_first_property(WC->disp_cal[i].cal, + ICAL_DTSTART_PROPERTY); + if (q != NULL) { + t = icalproperty_get_dtstart(q); + + if (t.is_date) { + struct tm d_tm; + char d_str[32]; + memset(&d_tm, 0, sizeof d_tm); + d_tm.tm_year = t.year - 1900; + d_tm.tm_mon = t.month - 1; + d_tm.tm_mday = t.day; + wc_strftime(d_str, sizeof d_str, "%x", &d_tm); + wprintf("%s %s
", + _("Date:"), d_str); + } + else { + tt = icaltime_as_timet(t); + fmt_date(buf, tt, 1); + wprintf("%s %s
", + _("Starting date/time:"), buf); + } + } + + q = icalcomponent_get_first_property(WC->disp_cal[i].cal, + ICAL_DTEND_PROPERTY); + if (q != NULL) { + t = icalproperty_get_dtend(q); + tt = icaltime_as_timet(t); + fmt_date(buf, tt, 1); + wprintf("%s %s
", + _("Ending date/time:"), buf); + } + } + + q = icalcomponent_get_first_property( + WC->disp_cal[i].cal, + ICAL_DESCRIPTION_PROPERTY); + if (q) { + wprintf("%s ", _("Notes:")); + escputs((char *)icalproperty_get_comment(q)); + wprintf("
"); + } + + wprintf("\">"); + escputs((char *) + icalproperty_get_comment(p)); + wprintf("

\n"); + + if (all_day_event) { + wprintf("
"); + } + + } + + } + + + } + } +} + + +/** + * \brief Display one day of a whole month view of a calendar + * \param thetime the month we want to see + */ +void calendar_month_view_brief_events(time_t thetime, const char *daycolor) { + int i; + time_t event_tt; + time_t event_tts; + time_t event_tte; + struct tm event_tms; + struct tm event_tme; + struct tm today_tm; + icalproperty *p; + icalproperty *e; + struct icaltimetype t; + int month, day, year; + int all_day_event = 0; + char calhourformat[16]; + char *timeformat; + + get_preference("calhourformat", calhourformat, sizeof calhourformat); + if (!strcasecmp(calhourformat, "24")) timeformat="%k:%M"; + else timeformat="%I:%M %p"; + + localtime_r(&thetime, &today_tm); + month = today_tm.tm_mon + 1; + day = today_tm.tm_mday; + year = today_tm.tm_year + 1900; + + for (i=0; i<(WC->num_cal); ++i) { + p = icalcomponent_get_first_property(WC->disp_cal[i].cal, + ICAL_DTSTART_PROPERTY); + if (p != NULL) { + t = icalproperty_get_dtstart(p); + event_tt = icaltime_as_timet(t); + event_tts=event_tt; + if (t.is_date) all_day_event = 1; + else all_day_event = 0; + + if (all_day_event) { + gmtime_r(&event_tts, &event_tms); + } + else { + localtime_r(&event_tts, &event_tms); + } + /** \todo epoch &! daymask */ + if ((event_tms.tm_year == today_tm.tm_year) + && (event_tms.tm_mon == today_tm.tm_mon) + && (event_tms.tm_mday == today_tm.tm_mday)) { + + + char sbuf[255]; + char ebuf[255]; + + p = icalcomponent_get_first_property( + WC->disp_cal[i].cal, + ICAL_SUMMARY_PROPERTY); + e = icalcomponent_get_first_property( + WC->disp_cal[i].cal, + ICAL_DTEND_PROPERTY); + if ((p != NULL) && (e != NULL)) { + time_t difftime; + int hours, minutes; + t = icalproperty_get_dtend(e); + event_tte = icaltime_as_timet(t); + localtime_r(&event_tte, &event_tme); + difftime=(event_tte-event_tts)/60; + hours=(int)(difftime / 60); + minutes=difftime % 60; + wprintf("%i:%2i" + "" + "", + daycolor, + hours, minutes, + daycolor, + WC->disp_cal[i].cal_msgnum, + bstr("calview"), + bstr("year"), + bstr("month"), + bstr("day") + ); + + escputs((char *) + icalproperty_get_comment(p)); + /** \todo: allso ammitime format */ + wc_strftime(&sbuf[0], sizeof(sbuf), timeformat, &event_tms); + wc_strftime(&ebuf[0], sizeof(sbuf), timeformat, &event_tme); + + wprintf("" + "%s%s", + daycolor, + sbuf, + daycolor, + ebuf); + + } + + } + + + } + } +} + + +/** + * \brief view one month. pretty view + * \param year the year + * \param month the month + * \param day the actual day we want to see + */ +void calendar_month_view(int year, int month, int day) { + struct tm starting_tm; + struct tm tm; + time_t thetime; + int i; + time_t previous_month; + time_t next_month; + time_t colheader_time; + struct tm colheader_tm; + char colheader_label[32]; + + /** Determine what day to start. + * First, back up to the 1st of the month... + */ + memset(&starting_tm, 0, sizeof(struct tm)); + starting_tm.tm_year = year - 1900; + starting_tm.tm_mon = month - 1; + starting_tm.tm_mday = day; + thetime = mktime(&starting_tm); + + memcpy(&tm, &starting_tm, sizeof(struct tm)); + while (tm.tm_mday != 1) { + thetime = thetime - (time_t)86400; /* go back 24 hours */ + localtime_r(&thetime, &tm); + } + + /** Determine previous and next months ... for links */ + previous_month = thetime - (time_t)864000L; /* back 10 days */ + next_month = thetime + (time_t)(31L * 86400L); /* ahead 31 days */ + + /** Now back up until we're on a Sunday */ + localtime_r(&thetime, &tm); + while (tm.tm_wday != 0) { + thetime = thetime - (time_t)86400; /* go back 24 hours */ + localtime_r(&thetime, &tm); + } + + /** Outer table (to get the background color) */ + wprintf("
" + "
\n"); + + wprintf("\n"); + + wprintf("
"); + + localtime_r(&previous_month, &tm); + wprintf("", + (int)(tm.tm_year)+1900, tm.tm_mon + 1); + wprintf("\n"); + + wc_strftime(colheader_label, sizeof colheader_label, "%B", &starting_tm); + wprintf("  " + "" + "%s %d" + "" + "  ", colheader_label, year); + + localtime_r(&next_month, &tm); + wprintf("", + (int)(tm.tm_year)+1900, tm.tm_mon + 1); + wprintf("\n"); + + wprintf("
\n"); + + /** Inner table (the real one) */ + wprintf(""); + colheader_time = thetime; + for (i=0; i<7; ++i) { + colheader_time = thetime + (i * 86400) ; + localtime_r(&colheader_time, &colheader_tm); + wc_strftime(colheader_label, sizeof colheader_label, "%A", &colheader_tm); + wprintf("\n"); + + /** Now do 35 days */ + for (i = 0; i < 35; ++i) { + localtime_r(&thetime, &tm); + + /** Before displaying Sunday, start a new row */ + if ((i % 7) == 0) { + wprintf(""); + } + + wprintf(""); + + /** After displaying Saturday, end the row */ + if ((i % 7) == 6) { + wprintf("\n"); + } + + thetime += (time_t)86400; /** ahead 24 hours */ + } + + wprintf("
" + "%s", colheader_label); + + } + wprintf("
", + ((tm.tm_mon != month-1) ? "DDDDDD" : + ((tm.tm_wday==0 || tm.tm_wday==6) ? "EEEECC" : + "FFFFFF")) + ); + if ((i==0) || (tm.tm_mday == 1)) { + wc_strftime(colheader_label, sizeof colheader_label, "%B", &tm); + wprintf("%s ", colheader_label); + } + wprintf("" + "%d
", + tm.tm_year + 1900, + tm.tm_mon + 1, + tm.tm_mday, + tm.tm_mday); + + /** put the data here, stupid */ + calendar_month_view_display_events(thetime); + + wprintf("
" /** end of inner table */ + "
" /** end of outer table */ + "
\n"); + + /** + * Initialize the bubble tooltips. + * + * Yes, this is as stupid as it looks. Instead of just making the call + * to btt_enableTooltips() straight away, we have to create a timer event + * and let it initialize as an event after 1 millisecond. This is to + * work around a bug in Internet Explorer that causes it to crash if we + * manipulate the innerHTML of various DOM nodes while the page is still + * being rendered. See http://www.shaftek.org/blog/archives/000212.html + * for more information. + */ + wprintf("\n" + "\n" + ); +} + +/** + * \brief view one month. brief view + * \param year the year + * \param month the month + * \param day the actual day we want to see + */ +void calendar_brief_month_view(int year, int month, int day) { + struct tm starting_tm; + struct tm tm; + time_t thetime; + int i; + time_t previous_month; + time_t next_month; + char month_label[32]; + + /** Determine what day to start. + * First, back up to the 1st of the month... + */ + memset(&starting_tm, 0, sizeof(struct tm)); + starting_tm.tm_year = year - 1900; + starting_tm.tm_mon = month - 1; + starting_tm.tm_mday = day; + thetime = mktime(&starting_tm); + + memcpy(&tm, &starting_tm, sizeof(struct tm)); + while (tm.tm_mday != 1) { + thetime = thetime - (time_t)86400; /* go back 24 hours */ + localtime_r(&thetime, &tm); + } + + /** Determine previous and next months ... for links */ + previous_month = thetime - (time_t)864000L; /* back 10 days */ + next_month = thetime + (time_t)(31L * 86400L); /* ahead 31 days */ + + /** Now back up until we're on a Sunday */ + localtime_r(&thetime, &tm); + while (tm.tm_wday != 0) { + thetime = thetime - (time_t)86400; /* go back 24 hours */ + localtime_r(&thetime, &tm); + } + + /** Outer table (to get the background color) */ + wprintf("
" + "
\n"); + + wprintf("\n"); + + wprintf("
"); + + localtime_r(&previous_month, &tm); + wprintf("", + (int)(tm.tm_year)+1900, tm.tm_mon + 1); + wprintf("\n"); + + wc_strftime(month_label, sizeof month_label, "%B", &tm); + wprintf("  " + "" + "%s %d" + "" + "  ", month_label, year); + + localtime_r(&next_month, &tm); + wprintf("", + (int)(tm.tm_year)+1900, tm.tm_mon + 1); + wprintf("\n"); + + wprintf("
\n"); + + /** Inner table (the real one) */ + wprintf(""); + wprintf("\n"); + wprintf("
\n"); + + /** Now do 35 days */ + for (i = 0; i < 35; ++i) { + char weeknumber[255]; + char weekday_name[32]; + char *daycolor; + localtime_r(&thetime, &tm); + + + /** Before displaying Sunday, start a new CELL */ + if ((i % 7) == 0) { + wc_strftime(&weeknumber[0], sizeof(weeknumber), "%U", &tm); + wprintf("" + " \n", + _("Week"), + weeknumber, + _("Hours"), + _("Subject"), + _("Start"), + _("End") + ); + } + + daycolor=((tm.tm_mon != month-1) ? "DDDDDD" : + ((tm.tm_wday==0 || tm.tm_wday==6) ? "EEEECC" : + "FFFFFF")); + + /** Day Header */ + wc_strftime(weekday_name, sizeof weekday_name, "%A", &tm); + wprintf("\n", + daycolor, + weekday_name,tm.tm_mday, + daycolor); + + /** put the data of one day here, stupid */ + calendar_month_view_brief_events(thetime, daycolor); + + + /** After displaying Saturday, end the row */ + if ((i % 7) == 6) { + wprintf("
%s %s
%s%s%s%s
%s,%i." + "
\n"); + } + + thetime += (time_t)86400; /** ahead 24 hours */ + } + + wprintf("
" /** end of inner table */ + "
" /** end of outer table */ + "
\n"); +} + +/** + * \brief view one week + * this should view just one week, but it's not here yet. + * \todo ny implemented + * \param year the year + * \param month the month + * \param day the day which we want to see the week around + */ +void calendar_week_view(int year, int month, int day) { + wprintf("
week view FIXME

\n"); +} + + +/** + * \brief display one day + * Display events for a particular hour of a particular day. + * (Specify hour < 0 to show "all day" events) + * \param year the year + * \param month the month + * \param day the day + * \param hour the hour we want to start displaying????? + */ +void calendar_day_view_display_events(int year, int month, + int day, int hour) { + int i; + icalproperty *p; + struct icaltimetype t; + time_t event_tt; + struct tm *event_tm; + int all_day_event = 0; + + if (WC->num_cal == 0) { + // \todo FIXME wprintf("


\n"); + return; + } + + for (i=0; i<(WC->num_cal); ++i) { + p = icalcomponent_get_first_property(WC->disp_cal[i].cal, + ICAL_DTSTART_PROPERTY); + if (p != NULL) { + t = icalproperty_get_dtstart(p); + event_tt = icaltime_as_timet(t); + if (t.is_date) { + all_day_event = 1; + } + else { + all_day_event = 0; + } + + if (all_day_event) { + event_tm = gmtime(&event_tt); + } + else { + event_tm = localtime(&event_tt); + } + + if ((event_tm->tm_year == (year-1900)) + && (event_tm->tm_mon == (month-1)) + && (event_tm->tm_mday == day) + && ( ((event_tm->tm_hour == hour)&&(!t.is_date)) || ((hour<0)&&(t.is_date)) ) + ) { + + + p = icalcomponent_get_first_property( + WC->disp_cal[i].cal, + ICAL_SUMMARY_PROPERTY); + if (p != NULL) { + + if (all_day_event) { + wprintf("" + "
" + ); + } + + wprintf("" + "", + WC->disp_cal[i].cal_msgnum, + year, month, day + ); + escputs((char *) + icalproperty_get_comment(p)); + wprintf("
\n"); + + if (all_day_event) { + wprintf("
"); + } + } + + } + + + } + } +} + + +/** + * \brief view one day + * \param year the year + * \param month the month + * \param day the day we want to display + */ +void calendar_day_view(int year, int month, int day) { + int hour; + struct icaltimetype today, yesterday, tomorrow; + char calhourformat[16]; + int daystart = 8; + int dayend = 17; + char daystart_str[16], dayend_str[16]; + struct tm d_tm; + char d_str[128]; + + get_preference("calhourformat", calhourformat, sizeof calhourformat); + get_preference("daystart", daystart_str, sizeof daystart_str); + if (strlen(daystart_str) > 0) daystart = atoi(daystart_str); + get_preference("dayend", dayend_str, sizeof dayend_str); + if (strlen(dayend_str) > 0) dayend = atoi(dayend_str); + + + /** Figure out the dates for "yesterday" and "tomorrow" links */ + + memset(&today, 0, sizeof(struct icaltimetype)); + today.year = year; + today.month = month; + today.day = day; + today.is_date = 1; + + memcpy(&yesterday, &today, sizeof(struct icaltimetype)); + --yesterday.day; + yesterday = icaltime_normalize(yesterday); + + memcpy(&tomorrow, &today, sizeof(struct icaltimetype)); + ++tomorrow.day; + tomorrow = icaltime_normalize(tomorrow); + + + /** Outer table (to get the background color) */ + wprintf("
" + "
\n"); + + /** Inner table (the real one) */ + wprintf("\n"); + + /** Innermost table (contains hours etc.) */ + wprintf("" + ); + + wprintf(""); /** end stuff-on-the-right */ + + + + wprintf("
" + "\n"); + + /** Display events before 8:00 (hour=-1 is all-day events) */ + wprintf("" + "" + "\n"); + + /** Now the middle of the day... */ + for (hour = daystart; hour <= dayend; ++hour) { /* could do HEIGHT=xx */ + wprintf("\n"); + } + + /** Display events after 5:00... */ + wprintf("" + "" + "\n"); + + + wprintf("
"); + for (hour = (-1); hour <= (daystart-1); ++hour) { + calendar_day_view_display_events(year, month, day, hour); + } + wprintf("
"); + wprintf("", + year, month, day, hour + ); + + if (!strcasecmp(calhourformat, "24")) { + wprintf("%2d:00 ", hour); + } + else { + wprintf("%d:00%s ", + (hour <= 12 ? hour : hour-12), + (hour < 12 ? "am" : "pm") + ); + } + + wprintf(""); + + /* put the data here, stupid */ + calendar_day_view_display_events(year, month, day, hour); + + wprintf("
"); + for (hour = (dayend+1); hour <= 23; ++hour) { + calendar_day_view_display_events(year, month, day, hour); + } + wprintf("
" /* end of innermost table */ + "
"); /* begin stuff-on-the-right */ + + + /** Begin todays-date-with-left-and-right-arrows */ + wprintf("\n"); + wprintf(""); + + /** Left arrow */ + wprintf(""); + + /** Today's date */ + memset(&d_tm, 0, sizeof d_tm); + d_tm.tm_year = year - 1900; + d_tm.tm_mon = month - 1; + d_tm.tm_mday = day; + wc_strftime(d_str, sizeof d_str, + "", + &d_tm + ); + wprintf("%s", d_str); + + /** Right arrow */ + wprintf(""); + + wprintf("
"); + wprintf("", + yesterday.year, yesterday.month, yesterday.day); + wprintf(""); + wprintf("" + "%B
" + "%d
" + "%Y
" + "
"); + wprintf("", + tomorrow.year, tomorrow.month, tomorrow.day); + wprintf("\n"); + wprintf("
\n"); + /** End todays-date-with-left-and-right-arrows */ + + /** \todo In the future we might want to put a month-o-matic here */ + + wprintf("\n"); + + wprintf("
" /** end of inner table */ + "
" /** end of outer table */ + ); + + + +} + +/** + * \brief Display today's events. + */ +void calendar_summary_view(void) { + int i; + icalproperty *p; + struct icaltimetype t; + time_t event_tt; + struct tm event_tm; + struct tm today_tm; + time_t now; + int all_day_event = 0; + char timestring[SIZ]; + + if (WC->num_cal == 0) { + return; + } + + now = time(NULL); + localtime_r(&now, &today_tm); + + for (i=0; i<(WC->num_cal); ++i) { + p = icalcomponent_get_first_property(WC->disp_cal[i].cal, + ICAL_DTSTART_PROPERTY); + if (p != NULL) { + t = icalproperty_get_dtstart(p); + event_tt = icaltime_as_timet(t); + if (t.is_date) { + all_day_event = 1; + } + else { + all_day_event = 0; + } + fmt_time(timestring, event_tt); + + if (all_day_event) { + gmtime_r(&event_tt, &event_tm); + } + else { + localtime_r(&event_tt, &event_tm); + } + + if ( (event_tm.tm_year == today_tm.tm_year) + && (event_tm.tm_mon == today_tm.tm_mon) + && (event_tm.tm_mday == today_tm.tm_mday) + ) { + + + p = icalcomponent_get_first_property( + WC->disp_cal[i].cal, + ICAL_SUMMARY_PROPERTY); + if (p != NULL) { + escputs((char *) + icalproperty_get_comment(p)); + wprintf(" (%s)
\n", timestring); + } + } + } + } + free_calendar_buffer(); +} + + +/** + * \brief clean up ical memory + * \todo this could get troubel with future ical versions + */ +void free_calendar_buffer(void) { + int i; + if (WC->num_cal) for (i=0; i<(WC->num_cal); ++i) { + icalcomponent_free(WC->disp_cal[i].cal); + } + WC->num_cal = 0; + free(WC->disp_cal); + WC->disp_cal = NULL; +} + + + +/** + * \brief do the whole calendar page + * view any part of the calender. decide which way, etc. + */ +void do_calendar_view(void) { + time_t now; + struct tm tm; + int year, month, day; + char calview[SIZ]; + + /** In case no date was specified, go with today */ + now = time(NULL); + localtime_r(&now, &tm); + year = tm.tm_year + 1900; + month = tm.tm_mon + 1; + day = tm.tm_mday; + + /** Now see if a date was specified */ + if (strlen(bstr("year")) > 0) year = atoi(bstr("year")); + if (strlen(bstr("month")) > 0) month = atoi(bstr("month")); + if (strlen(bstr("day")) > 0) day = atoi(bstr("day")); + + /** How would you like that cooked? */ + if (strlen(bstr("calview")) > 0) { + strcpy(calview, bstr("calview")); + } + else { + strcpy(calview, "month"); + } + + /** Display the selected view */ + if (!strcasecmp(calview, "day")) { + calendar_day_view(year, month, day); + } + else if (!strcasecmp(calview, "week")) { + calendar_week_view(year, month, day); + } + else { + if (WC->wc_view == VIEW_CALBRIEF) { + calendar_brief_month_view(year, month, day); + } + else { + calendar_month_view(year, month, day); + } + } + + /** Free the calendar stuff */ + free_calendar_buffer(); + +} + + +/** + * \brief get task due date + * Helper function for do_tasks_view(). + * \param vtodo a task to get the due date + * \return the date/time due. + */ +time_t get_task_due_date(icalcomponent *vtodo) { + icalproperty *p; + + if (vtodo == NULL) { + return(0L); + } + + /** + * If we're looking at a fully encapsulated VCALENDAR + * rather than a VTODO component, recurse into the data + * structure until we get a VTODO. + */ + if (icalcomponent_isa(vtodo) == ICAL_VCALENDAR_COMPONENT) { + return get_task_due_date( + icalcomponent_get_first_component( + vtodo, ICAL_VTODO_COMPONENT + ) + ); + } + + p = icalcomponent_get_first_property(vtodo, ICAL_DUE_PROPERTY); + if (p != NULL) { + return(icaltime_as_timet(icalproperty_get_due(p))); + } + else { + return(0L); + } +} + + +/** + * \brief Compare the due dates of two tasks (this is for sorting) + * \param task1 first task to compare + * \param task2 second task to compare + */ +int task_due_cmp(const void *task1, const void *task2) { + time_t t1; + time_t t2; + + t1 = get_task_due_date(((struct disp_cal *)task1)->cal); + t2 = get_task_due_date(((struct disp_cal *)task2)->cal); + + if (t1 < t2) return(-1); + if (t1 > t2) return(1); + return(0); +} + + + + +/** + * \brief do the whole task view stuff + */ +void do_tasks_view(void) { + int i; + time_t due; + int bg = 0; + char buf[SIZ]; + icalproperty *p; + + wprintf("
" + "\n\n" + "\n" + ); + + /** Sort them if necessary */ + if (WC->num_cal > 1) { + qsort(WC->disp_cal, + WC->num_cal, + sizeof(struct disp_cal), + task_due_cmp + ); + } + + if (WC->num_cal) for (i=0; i<(WC->num_cal); ++i) { + + bg = 1 - bg; + wprintf("\n"); + + due = get_task_due_date(WC->disp_cal[i].cal); + fmt_date(buf, due, 0); + wprintf("\n", buf); + } + + wprintf("
"); + wprintf(_("Name of task")); + wprintf(""); + wprintf(_("Date due")); + wprintf("
", + (bg ? "DDDDDD" : "FFFFFF") + ); + + p = icalcomponent_get_first_property(WC->disp_cal[i].cal, + ICAL_SUMMARY_PROPERTY); + wprintf("disp_cal[i].cal_msgnum ); + urlescputs(WC->wc_roomname); + wprintf("\">"); + wprintf(" "); + if (p != NULL) { + escputs((char *)icalproperty_get_comment(p)); + } + wprintf("\n"); + wprintf("%s
\n"); + + /** Free the list */ + free_calendar_buffer(); + +} + +#endif /* WEBCIT_WITH_CALENDAR_SERVICE */ + +/** @} */ diff --git a/webcit/config.guess b/webcit/config.guess new file mode 100755 index 000000000..4fc21ecc3 --- /dev/null +++ b/webcit/config.guess @@ -0,0 +1,1391 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-01-30' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:MicroBSD:*:*) + echo ${UNAME_MACHINE}-unknown-microbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:3*) + echo i586-pc-interix3 + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/webcit/config.h b/webcit/config.h new file mode 100644 index 000000000..ca205a300 --- /dev/null +++ b/webcit/config.h @@ -0,0 +1,10 @@ +/** + * Ugly hack to make the non-automake build work without source changes + */ + +#define _GNU_SOURCE +#define EDITORDIR WEBCITDIR "/tiny_mce" +#define RUNDIR WEBCITDIR +#define BASEDIR WEBCITDIR +#define DATADIR WEBCITDIR +#define PREFIX WEBCITDIR diff --git a/webcit/config.rpath b/webcit/config.rpath new file mode 100755 index 000000000..4db13e50f --- /dev/null +++ b/webcit/config.rpath @@ -0,0 +1,548 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2003 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + mingw* | pw32* | os2*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + newsos6) + ;; + linux*) + case $CC in + icc|ecc) + wl='-Wl,' + ;; + ccc) + wl='-Wl,' + ;; + esac + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + sco3.2v5*) + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + case "$host_os" in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = yes; then + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + bsdi4*) + ;; + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + hardcode_direct=no + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10* | hpux11*) + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=no + ;; + ia64*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + *) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + openbsd*) + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + sco3.2v5*) + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4.2uw2*) + hardcode_direct=yes + hardcode_minus_L=no + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + ;; + sysv5*) + hardcode_libdir_flag_spec= + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. +libname_spec='lib$name' +case "$host_os" in + aix3*) + ;; + aix4* | aix5*) + ;; + amigaos*) + ;; + beos*) + ;; + bsdi4*) + ;; + cygwin* | mingw* | pw32*) + shrext=.dll + ;; + darwin* | rhapsody*) + shrext=.dylib + ;; + dgux*) + ;; + freebsd1*) + ;; + freebsd*) + ;; + gnu*) + ;; + hpux9* | hpux10* | hpux11*) + case "$host_cpu" in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux*) + ;; + netbsd*) + ;; + newsos6) + ;; + nto-qnx) + ;; + openbsd*) + ;; + os2*) + libname_spec='$name' + shrext=.dll + ;; + osf3* | osf4* | osf5*) + ;; + sco3.2v5*) + ;; + solaris*) + ;; + sunos4*) + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + ;; + sysv4*MP*) + ;; + uts4*) + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i686-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic4x | c4x*) + basic_machine=tic4x-unknown + os=-coff + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -microbsd*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/webcit/configure.in b/webcit/configure.in new file mode 100644 index 000000000..6a863d8ee --- /dev/null +++ b/webcit/configure.in @@ -0,0 +1,365 @@ +dnl Process this file with autoconf to produce a configure script. +dnl $Id$ +AC_INIT(webserver.c) + + +PACKAGE=webcit +VERSION=6.72 +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") +AC_DEFINE_UNQUOTED(VERSION, "$VERSION") +AC_SUBST(PACKAGE) +AC_SUBST(VERSION) + +AC_SUBST(PROG_SUBDIRS) +AC_CANONICAL_HOST +AC_PROG_INSTALL +AC_CHECK_PROG(AUTOCONF, autoconf) +AC_CHECK_PROG(SED, sed, sed, no) +AC_PREFIX_DEFAULT(/usr/local/webcit) + +AC_ARG_WITH(with_libical, [ --with-libical use libical calendaring library]) +AC_ARG_WITH(with_zlib, [ --with-zlib use zlib compression if present]) +AC_ARG_WITH(with_newt, [ --with-newt use newt window library]) +AC_ARG_WITH(ssl, + [ --with-ssl=PATH Specify path to OpenSSL installation ], + [ + if test "x$withval" != "xno" ; then + tryssldir=$withval + fi + ] +) +dnl Set some system-specific variables which are OK to set before compiler +dnl checks: +PTHREAD_DEFS=-D_REENTRANT +case "$host" in + dnl Tru64 Unix requires we use -pthread instead of linking the threads + dnl libraries directly, and we can't build threaded programs with gcc + dnl due to header file problems. + alpha*-dec-osf*) + test -z "$CC" && CC=cc + LIBS=-pthread + ;; + dnl FreeBSD is similar: + *-*-freebsd*) + LIBS=-pthread + PTHREAD_DEFS=-D_THREAD_SAFE + ;; + *-*-solaris*) + PTHREAD_DEFS='-D_REENTRANT -D_PTHREADS' + ;; +esac +AC_SUBST(PTHREAD_DEFS) + +dnl Checks for programs. +AC_PROG_CC + +dnl Configure compiler flags for GCC +if test "$GCC" = yes; then + case "$host" in + *-*-solaris*) + CFLAGS="$CFLAGS -Wall -Wno-char-subscripts" + ;; + *) + CFLAGS="$CFLAGS -Wall" + ;; + esac +fi + +# missing_dir=`cd $ac_aux_dir && pwd` +# AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) + +dnl Checks for libraries. +if test "$LIBS" != -pthread; then + AC_CHECK_LIB(pthread, pthread_create) + AC_CHECK_LIB(pthreads, pthread_create) +fi +AC_SEARCH_LIBS(gethostbyname, nsl) +AC_SEARCH_LIBS(connect, socket) + +dnl Checks for header files. +AC_HEADER_STDC +dnl AC_HEADER_SYS_WAIT +AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h unistd.h) + + + + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_TYPE_OFF_T +AC_TYPE_SIZE_T +dnl AC_HEADER_TIME + +dnl Checks for library functions. +AC_TYPE_SIGNAL +dnl AC_FUNC_VPRINTF +dnl AC_CHECK_FUNCS(strerror) +AC_REPLACE_FUNCS(snprintf) + +dnl Checks for the libical calendaring library. +if test "x$with_libical" != xno ; then + AC_CHECK_HEADERS(ical.h, + [AC_CHECK_LIB(ical, icalcomponent_new, + [ok_libical=yes],, + )]) +fi + +if test "x$ok_libical" = xyes ; then + + AC_TRY_RUN( + [ +#include +main() { + int major, minor, v; + sscanf(ICAL_VERSION, "%d.%d", &major, &minor); + v = 100*major + minor; + printf("libical version: %i\n", v); + if (v >= 24) { + printf("This version is ok.\n"); + return(0); + } + printf("libical 0.24 or newer required.\n"); + printf("Citadel will be built without calendar support.\n"); + return(1); +} + ], + [ + LIBS="-lical $LIBS" + AC_DEFINE(HAVE_LIBICAL) + ] + ) +fi + + + +dnl Checks for the zlib compression library. +if test "x$with_zlib" != xno ; then + AC_CHECK_HEADERS(zlib.h, + [AC_CHECK_LIB(z, zlibVersion, + [ok_zlib=yes],, + )]) +fi + +if test "x$ok_zlib" = xyes ; then + LIBS="-lz $LIBS" + AC_DEFINE(HAVE_ZLIB) +fi + +dnl Checks for the newt window library. +if test "x$with_newt" != xno ; then + AC_CHECK_HEADERS(newt.h, + [AC_CHECK_LIB(newt, newtInit, + [ok_newt=yes],, + )]) +fi + +if test "x$ok_newt" = xyes ; then + SETUP_LIBS="-lnewt $SETUP_LIBS" + AC_DEFINE(HAVE_NEWT) +fi + +# The big search for OpenSSL +if test "$with_ssl" != "no"; then + saved_LIBS="$LIBS" + saved_LDFLAGS="$LDFLAGS" + saved_CFLAGS="$CFLAGS" + if test "x$prefix" != "xNONE"; then + tryssldir="$tryssldir $prefix" + fi + AC_CACHE_CHECK([for OpenSSL], ac_cv_openssldir, [ + for ssldir in $tryssldir "" /usr /usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/pkg /opt /opt/openssl ; do + CFLAGS="$saved_CFLAGS" + LDFLAGS="$saved_LDFLAGS" + LIBS="$saved_LIBS -lssl -lcrypto" + + # Skip directories if they don't exist + if test ! -z "$ssldir" -a ! -d "$ssldir" ; then + continue; + fi + if test ! -z "$ssldir" -a "x$ssldir" != "x/usr"; then + # Try to use $ssldir/lib if it exists, otherwise + # $ssldir + if test -d "$ssldir/lib" ; then + LDFLAGS="-L$ssldir/lib $saved_LDFLAGS" + if test ! -z "$need_dash_r" ; then + LDFLAGS="-R$ssldir/lib $LDFLAGS" + fi + else + LDFLAGS="-L$ssldir $saved_LDFLAGS" + if test ! -z "$need_dash_r" ; then + LDFLAGS="-R$ssldir $LDFLAGS" + fi + fi + # Try to use $ssldir/include if it exists, otherwise + # $ssldir + if test -d "$ssldir/include" ; then + CFLAGS="-I$ssldir/include $saved_CFLAGS" + else + CFLAGS="-I$ssldir $saved_CFLAGS" + fi + fi + + # Basic test to check for compatible version and correct linking + # *does not* test for RSA - that comes later. + AC_TRY_RUN( + [ + #include + #include + int main(void) + { + char a[2048]; + memset(a, 0, sizeof(a)); + RAND_add(a, sizeof(a), sizeof(a)); + return(RAND_status() <= 0); + } + ], + [ + found_crypto=1 + break; + ], [] + ) + + if test ! -z "$found_crypto" ; then + break; + fi + done + + if test -z "$ssldir" ; then + ssldir="(system)" + fi + + if test ! -z "$found_crypto" ; then + ac_cv_openssldir=$ssldir + else + ac_cv_openssldir="no" + fi + ]) + LIBS="$saved_LIBS" + LDFLAGS="$saved_LDFLAGS" + CFLAGS="$saved_CFLAGS" + + if test "x$ac_cv_openssldir" != "xno" ; then + AC_DEFINE(HAVE_OPENSSL) + LIBS="-lssl -lcrypto $LIBS" + dnl Need to recover ssldir - test above runs in subshell + ssldir=$ac_cv_openssldir + if test ! -z "$ssldir" -a "x$ssldir" != "x/usr" -a "x$ssldir" != "x(system)"; then + # Try to use $ssldir/lib if it exists, otherwise + # $ssldir + if test -d "$ssldir/lib" ; then + LDFLAGS="-L$ssldir/lib $saved_LDFLAGS" + if test ! -z "$need_dash_r" ; then + LDFLAGS="-R$ssldir/lib $LDFLAGS" + fi + else + LDFLAGS="-L$ssldir $saved_LDFLAGS" + if test ! -z "$need_dash_r" ; then + LDFLAGS="-R$ssldir $LDFLAGS" + fi + fi + # Try to use $ssldir/include if it exists, otherwise + # $ssldir + if test -d "$ssldir/include" ; then + CFLAGS="-I$ssldir/include $saved_CFLAGS" + else + CFLAGS="-I$ssldir $saved_CFLAGS" + fi + fi + fi +fi + +dnl Here is the check for a usable iconv + +AC_ARG_ENABLE(iconv, + [ --disable-iconv do not use iconv charset conversion], + ok_iconv=no, ok_iconv=yes) + +if test "$ok_nls" != "no"; then + AC_MSG_RESULT(Checking to see if your system supports iconv...) + AC_TRY_RUN([ + #include + main() { + iconv_t ic = (iconv_t)(-1) ; + ic = iconv_open("UTF-8", "us-ascii"); + iconv_close(ic); + exit(0); + } + ], + ok_iconv=yes, + ok_iconv=no + ) +fi + +if test "$ok_iconv" != "no"; then + AC_MSG_RESULT(WebCit will be built with character set conversion.) + AC_DEFINE(HAVE_ICONV) +else + AC_MSG_RESULT(WebCit will be built without character set conversion.) +fi + + + +dnl Here is the check for libintl etc. + +AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + ok_nls=no, ok_nls=yes) + +if test "$ok_nls" != "no"; then + AC_MSG_RESULT(Checking for per-thread NLS support...) + AC_TRY_RUN([ + #define _GNU_SOURCE + #include + #include + #include + main() { + char *foo = NULL; + char baz[32]; + struct tm *tm; + uselocale(LC_GLOBAL_LOCALE); + foo = gettext("bar"); + if (0) { + strftime_l(baz, sizeof baz, "%c", tm, LC_GLOBAL_LOCALE); + } + exit(0); + } + ], + ok_uselocale=yes, + ok_uselocale=no + ) + ok_nls=$ok_uselocale +fi + +if test "$ok_nls" != "no"; then + AC_CHECK_PROG(ok_xgettext, xgettext, yes, no) + ok_nls=$ok_xgettext +fi + +if test "$ok_nls" != "no"; then + AC_CHECK_PROG(ok_msgmerge, msgmerge, yes, no) + ok_nls=$ok_msgmerge +fi + +if test "$ok_nls" != "no"; then + AC_CHECK_PROG(ok_msgfmt, msgfmt, yes, no) + ok_nls=$ok_msgfmt +fi + +if test "$ok_nls" != "no"; then + AC_MSG_RESULT(WebCit will be built with national language support.) + AC_DEFINE(ENABLE_NLS) + PROG_SUBDIRS="$PROG_SUBDIRS po" +else + AC_MSG_RESULT(WebCit will be built without national language support.) +fi + +AC_SUBST(SETUP_LIBS) + +AC_OUTPUT(Makefile po/Makefile ) + +echo ------------------------------------------------------------------------ +echo 'zlib compression: ' $ok_zlib +echo 'Calendar support: ' $ok_libical +echo 'Character set conversion support:' $ok_iconv +echo 'National language support: ' $ok_nls +echo diff --git a/webcit/context_loop.c b/webcit/context_loop.c new file mode 100644 index 000000000..e276383f7 --- /dev/null +++ b/webcit/context_loop.c @@ -0,0 +1,493 @@ +/* + * $Id$ + */ +/** + * \defgroup WebServerII some of the webserver stuff. + * This is the other half of the webserver. It handles the task of hooking + * up HTTP requests with the sessions they belong to, using HTTP cookies to + * keep track of things. If the HTTP request doesn't belong to any currently + * active session, a new session is started. + * \ingroup WebcitHttpServer + * + */ +/*@{*/ +#include "webcit.h" +#include "webserver.h" + +/** Only one thread may manipulate SessionList at a time... */ +pthread_mutex_t SessionListMutex; + +struct wcsession *SessionList = NULL; /**< our sessions ????*/ + +pthread_key_t MyConKey; /**< TSD key for MySession() */ + + +/** + * \brief free the memory used for viewing atachments + * \param sess the session object to destroy + */ +void free_attachments(struct wcsession *sess) { + struct wc_attachment *att; + + while (sess->first_attachment != NULL) { + att = sess->first_attachment; + sess->first_attachment = sess->first_attachment->next; + free(att->data); + free(att); + } +} + +/** + * \brief what?????? + */ +void do_housekeeping(void) +{ + struct wcsession *sptr, *ss; + struct wcsession *sessions_to_kill = NULL; + int num_sessions = 0; + static int num_threads = MIN_WORKER_THREADS; + + /** + * Lock the session list, moving any candidates for euthanasia into + * a separate list. + */ + pthread_mutex_lock(&SessionListMutex); + num_sessions = 0; + for (sptr = SessionList; sptr != NULL; sptr = sptr->next) { + ++num_sessions; + + /** Kill idle sessions */ + if ((time(NULL) - (sptr->lastreq)) > + (time_t) WEBCIT_TIMEOUT) { + sptr->killthis = 1; + } + + /** Remove sessions flagged for kill */ + if (sptr->killthis) { + + /** remove session from linked list */ + if (sptr == SessionList) { + SessionList = SessionList->next; + } + else for (ss=SessionList;ss!=NULL;ss=ss->next) { + if (ss->next == sptr) { + ss->next = ss->next->next; + } + } + + sptr->next = sessions_to_kill; + sessions_to_kill = sptr; + } + } + pthread_mutex_unlock(&SessionListMutex); + + /** + * Now free up and destroy the culled sessions. + */ + while (sessions_to_kill != NULL) { + lprintf(3, "Destroying session %d\n", sessions_to_kill->wc_session); + pthread_mutex_lock(&sessions_to_kill->SessionMutex); + close(sessions_to_kill->serv_sock); + close(sessions_to_kill->chat_sock); + if (sessions_to_kill->preferences != NULL) { + free(sessions_to_kill->preferences); + } + if (sessions_to_kill->cache_fold != NULL) { + free(sessions_to_kill->cache_fold); + } + free_attachments(sessions_to_kill); + free_march_list(sessions_to_kill); + pthread_mutex_unlock(&sessions_to_kill->SessionMutex); + sptr = sessions_to_kill->next; + free(sessions_to_kill); + sessions_to_kill = sptr; + --num_sessions; + } + + /** + * If there are more sessions than threads, then we should spawn + * more threads ... up to a predefined maximum. + */ + while ( (num_sessions > num_threads) + && (num_threads <= MAX_WORKER_THREADS) ) { + spawn_another_worker_thread(); + ++num_threads; + lprintf(3, "There are %d sessions and %d threads active.\n", + num_sessions, num_threads); + } +} + + +/** + * \brief Wake up occasionally and clean house + */ +void housekeeping_loop(void) +{ + while (1) { + sleeeeeeeeeep(HOUSEKEEPING); + do_housekeeping(); + } +} + + +/** + * \brief Create a Session id + * Generate a unique WebCit session ID (which is not the same thing as the + * Citadel session ID). + * + * \todo FIXME ... ensure that session number is truly unique + * + */ +int GenerateSessionID(void) +{ + static int seq = (-1); + + if (seq < 0) { + seq = (int) time(NULL); + } + + return ++seq; +} + + +/** + * \brief Collapse multiple cookies on one line + * \param sock a socket? + * \param buf some bunch of chars? + * \param hold hold what? + */ +int req_gets(int sock, char *buf, char *hold) +{ + int a; + + if (strlen(hold) == 0) { + strcpy(buf, ""); + a = client_getln(sock, buf, SIZ); + if (a<1) return(-1); + } else { + safestrncpy(buf, hold, SIZ); + } + strcpy(hold, ""); + + if (!strncasecmp(buf, "Cookie: ", 8)) { + for (a = 0; a < strlen(buf); ++a) + if (buf[a] == ';') { + sprintf(hold, "Cookie: %s", &buf[a + 1]); + buf[a] = 0; + while (isspace(hold[8])) + strcpy(&hold[8], &hold[9]); + return(0); + } + } + + return(0); +} + +/** + * \brief close some fd for some reason??? + * \param fd the fd to close?????? + * lingering_close() a`la Apache. see + * http://www.apache.org/docs/misc/fin_wait_2.html for rationale + */ + +int lingering_close(int fd) +{ + char buf[SIZ]; + int i; + fd_set set; + struct timeval tv, start; + + gettimeofday(&start, NULL); + shutdown(fd, 1); + do { + do { + gettimeofday(&tv, NULL); + tv.tv_sec = SLEEPING - (tv.tv_sec - start.tv_sec); + tv.tv_usec = start.tv_usec - tv.tv_usec; + if (tv.tv_usec < 0) { + tv.tv_sec--; + tv.tv_usec += 1000000; + } + FD_ZERO(&set); + FD_SET(fd, &set); + i = select(fd + 1, &set, NULL, NULL, &tv); + } while (i == -1 && errno == EINTR); + + if (i <= 0) + break; + + i = read(fd, buf, sizeof buf); + } while (i != 0 && (i != -1 || errno == EINTR)); + + return close(fd); +} + + + +/** + * \brief sanity requests + * Check for bogus requests coming from brain-dead Windows boxes. + * + * \param http_cmd The HTTP request to check + */ +int is_bogus(char *http_cmd) { + char *url; + + url = strstr(http_cmd, " "); + if (url == NULL) return(1); + ++url; + + /** Worms and trojans and viruses, oh my! */ + if (!strncasecmp(url, "/scripts/root.exe", 17)) return(2); + if (!strncasecmp(url, "/c/winnt", 8)) return(2); + if (!strncasecmp(url, "/MSADC/", 7)) return(2); + + /** Broken Microsoft DAV implementation */ + if (!strncasecmp(url, "/_vti", 5)) return(3); + + return(0); /* probably ok */ +} + + + +/** + * \brief handle one request + * This loop gets called once for every HTTP connection made to WebCit. At + * this entry point we have an HTTP socket with a browser allegedly on the + * other end, but we have not yet bound to a WebCit session. + * + * The job of this function is to locate the correct session and bind to it, + * or create a session if necessary and bind to it, then run the WebCit + * transaction loop. Afterwards, we unbind from the session. When this + * function returns, the worker thread is then free to handle another + * transaction. + * \param sock the socket we will put our answer to + */ +void context_loop(int sock) +{ + struct httprequest *req = NULL; + struct httprequest *last = NULL; + struct httprequest *hptr; + char buf[SIZ], hold[SIZ]; + int desired_session = 0; + int got_cookie = 0; + int gzip_ok = 0; + struct wcsession *TheSession, *sptr; + char httpauth_string[1024]; + char httpauth_user[1024]; + char httpauth_pass[1024]; + char accept_language[256]; + char *ptr = NULL; + int session_is_new = 0; + + strcpy(httpauth_string, ""); + strcpy(httpauth_user, DEFAULT_HTTPAUTH_USER); + strcpy(httpauth_pass, DEFAULT_HTTPAUTH_PASS); + + /** + * Find out what it is that the web browser is asking for + */ + memset(hold, 0, sizeof(hold)); + do { + if (req_gets(sock, buf, hold) < 0) return; + + /** + * Can we compress? + */ + if (!strncasecmp(buf, "Accept-encoding:", 16)) { + if (strstr(&buf[16], "gzip")) { + gzip_ok = 1; + } + } + + /** + * Browser-based sessions use cookies for session authentication + */ + if (!strncasecmp(buf, "Cookie: webcit=", 15)) { + cookie_to_stuff(&buf[15], &desired_session, + NULL, 0, NULL, 0, NULL, 0); + got_cookie = 1; + } + + /** + * GroupDAV-based sessions use HTTP authentication + */ + if (!strncasecmp(buf, "Authorization: Basic ", 21)) { + CtdlDecodeBase64(httpauth_string, &buf[21], strlen(&buf[21])); + extract_token(httpauth_user, httpauth_string, 0, ':', sizeof httpauth_user); + extract_token(httpauth_pass, httpauth_string, 1, ':', sizeof httpauth_pass); + } + + if (!strncasecmp(buf, "If-Modified-Since: ", 19)) { + if_modified_since = httpdate_to_timestamp(&buf[19]); + } + + if (!strncasecmp(buf, "Accept-Language: ", 17)) { + safestrncpy(accept_language, &buf[17], sizeof accept_language); + } + + /** + * Read in the request + */ + hptr = (struct httprequest *) + malloc(sizeof(struct httprequest)); + if (req == NULL) + req = hptr; + else + last->next = hptr; + hptr->next = NULL; + last = hptr; + + safestrncpy(hptr->line, buf, sizeof hptr->line); + + } while (strlen(buf) > 0); + + /** + * If the request is prefixed by "/webcit" then chop that off. This + * allows a front end web server to forward all /webcit requests to us + * while still using the same web server port for other things. + */ + + ptr = strstr(req->line, " /webcit "); /*< Handle "/webcit" */ + if (ptr != NULL) { + strcpy(ptr+2, ptr+8); + } + + ptr = strstr(req->line, " /webcit"); /*< Handle "/webcit/" */ + if (ptr != NULL) { + strcpy(ptr+1, ptr+8); + } + + /** Begin parsing the request. */ + + safestrncpy(buf, req->line, sizeof buf); + lprintf(5, "HTTP: %s\n", buf); + + /** Check for bogus requests */ + if (is_bogus(buf)) { + strcpy(req->line, "GET /404 HTTP/1.1"); + strcpy(buf, "GET /404 HTTP/1.1"); + } + + /** + * Strip out the method, leaving the URL up front... + */ + remove_token(buf, 0, ' '); + if (buf[1]==' ') buf[1]=0; + + /** + * While we're at it, gracefully handle requests for the + * robots.txt and favicon.ico files. + */ + if (!strncasecmp(buf, "/robots.txt", 11)) { + strcpy(req->line, "GET /static/robots.txt" + "?force_close_session=yes HTTP/1.1"); + } + else if (!strncasecmp(buf, "/favicon.ico", 12)) { + strcpy(req->line, "GET /static/favicon.ico"); + } + + /** + * These are the URL's which may be executed without a + * session cookie already set. If it's not one of these, + * force the session to close because cookies are + * probably disabled on the client browser. + */ + else if ( (strcmp(buf, "/")) + && (strncasecmp(buf, "/listsub", 8)) + && (strncasecmp(buf, "/freebusy", 9)) + && (strncasecmp(buf, "/do_logout", 10)) + && (strncasecmp(buf, "/groupdav", 9)) + && (strncasecmp(buf, "/static", 7)) + && (strncasecmp(buf, "/rss", 4)) + && (strncasecmp(buf, "/404", 4)) + && (got_cookie == 0)) { + strcpy(req->line, "GET /static/nocookies.html" + "?force_close_session=yes HTTP/1.1"); + } + + /** + * See if there's an existing session open with the desired ID or user/pass + */ + TheSession = NULL; + + if (TheSession == NULL) { + pthread_mutex_lock(&SessionListMutex); + for (sptr = SessionList; sptr != NULL; sptr = sptr->next) { + + /** If HTTP-AUTH, look for a session with matching credentials */ + if ( (strlen(httpauth_user) > 0) + &&(!strcasecmp(sptr->httpauth_user, httpauth_user)) + &&(!strcasecmp(sptr->httpauth_pass, httpauth_pass)) ) { + TheSession = sptr; + } + + /** If cookie-session, look for a session with matching session ID */ + if ( (desired_session != 0) && (sptr->wc_session == desired_session)) { + TheSession = sptr; + } + + } + pthread_mutex_unlock(&SessionListMutex); + } + + /** + * Create a new session if we have to + */ + if (TheSession == NULL) { + lprintf(3, "Creating a new session\n"); + TheSession = (struct wcsession *) + malloc(sizeof(struct wcsession)); + memset(TheSession, 0, sizeof(struct wcsession)); + TheSession->serv_sock = (-1); + TheSession->chat_sock = (-1); + TheSession->wc_session = GenerateSessionID(); + strcpy(TheSession->httpauth_user, httpauth_user); + strcpy(TheSession->httpauth_pass, httpauth_pass); + pthread_mutex_init(&TheSession->SessionMutex, NULL); + pthread_mutex_lock(&SessionListMutex); + TheSession->next = SessionList; + SessionList = TheSession; + pthread_mutex_unlock(&SessionListMutex); + session_is_new = 1; + } + + /** + * A future improvement might be to check the session integrity + * at this point before continuing. + */ + + /** + * Bind to the session and perform the transaction + */ + pthread_mutex_lock(&TheSession->SessionMutex); /*< bind */ + pthread_setspecific(MyConKey, (void *)TheSession); + TheSession->http_sock = sock; + TheSession->lastreq = time(NULL); /*< log */ + TheSession->gzip_ok = gzip_ok; +#ifdef ENABLE_NLS + if (session_is_new) { + httplang_to_locale(accept_language); + } + go_selected_language(); /*< set locale */ +#endif + session_loop(req); /*< do transaction */ +#ifdef ENABLE_NLS + stop_selected_language(); /*< unset locale */ +#endif + pthread_mutex_unlock(&TheSession->SessionMutex); /*< unbind */ + + /** Free the request buffer */ + while (req != NULL) { + hptr = req->next; + free(req); + req = hptr; + } + + /** + * Free up any session-local substitution variables which + * were set during this transaction + */ + clear_local_substs(); +} +/*@}*/ diff --git a/webcit/cookie_conversion.c b/webcit/cookie_conversion.c new file mode 100644 index 000000000..24e29ce74 --- /dev/null +++ b/webcit/cookie_conversion.c @@ -0,0 +1,98 @@ +/* + * $Id$ + */ +/** + * \defgroup CookieConversion Grep Cookies + * Utility functions which convert the HTTP cookie format we use to and + * from user/password/room strings. + * + * \ingroup WebcitHttpServer + */ +/*@{*/ +#include "webcit.h" + + +#define TRUE 1 /**< for sure? */ +#define FALSE 0 /**< nope. */ + +typedef unsigned char byte; /**< Byte type */ + +/** + * \brief find cookie + * Pack all session info into one easy-to-digest cookie. Healthy and delicious! + * \param cookie cookie string to create??? + * \param session the session we want to convert into a cookie + * \param user the user to be associated with the cookie + * \param pass his passphrase + * \param room the room he wants to enter + */ +void stuff_to_cookie(char *cookie, int session, + char *user, char *pass, char *room) +{ + char buf[SIZ]; + int i; + + sprintf(buf, "%d|%s|%s|%s|", session, user, pass, room); + strcpy(cookie, ""); + for (i=0; i 0)) + { + c = *in++; + val <<= 4; + val += isdigit((unsigned char)c) + ? (c - '0') + : (tolower((unsigned char)c) - 'a' + 10); + } + return val; +} + +/** + * \brief Extract all that fun stuff out of the cookie. + * \param cookie the cookie string + * \param session the corrosponding session to return + * \param user the user string + * \param user_len the user stringlength + * \param pass the passphrase + * \param pass_len length of the passphrase string + * \param room the room he is in + * \param room_len the length of the room string + */ +void cookie_to_stuff(char *cookie, int *session, + char *user, size_t user_len, + char *pass, size_t pass_len, + char *room, size_t room_len) +{ + char buf[SIZ]; + int i, len; + + strcpy(buf, ""); + len = strlen(cookie) * 2 ; + for (i=0; ireq_info->subject); + X509_set_subject_name(cer, req->req_info->subject); + X509_gmtime_adj(X509_get_notBefore(cer), 0); + X509_gmtime_adj(X509_get_notAfter(cer),(long)60*60*24*SIGN_DAYS); + + req_pkey = X509_REQ_get_pubkey(req); + X509_set_pubkey(cer, req_pkey); + EVP_PKEY_free(req_pkey); + + /** Sign the cert */ + if (!X509_sign(cer, pk, EVP_md5())) { + lprintf(3, "X509_sign(): error\n"); + } + else { + /** Write it to disk. */ + fp = fopen(CTDL_CER_PATH, "w"); + if (fp != NULL) { + chmod(CTDL_CER_PATH, 0600); + PEM_write_X509(fp, cer); + fclose(fp); + } + } + X509_free(cer); + } + } + + RSA_free(rsa); + } + } + + /** + * Now try to bind to the key and certificate. + * Note that we use SSL_CTX_use_certificate_chain_file() which allows + * the certificate file to contain intermediate certificates. + */ + SSL_CTX_use_certificate_chain_file(ssl_ctx, CTDL_CER_PATH); + SSL_CTX_use_PrivateKey_file(ssl_ctx, CTDL_KEY_PATH, SSL_FILETYPE_PEM); + if ( !SSL_CTX_check_private_key(ssl_ctx) ) { + lprintf(3, "Cannot install certificate: %s\n", + ERR_reason_error_string(ERR_get_error())); + } + +} + + +/** + * \brief starts SSL/TLS encryption for the current session. + * \param sock the socket connection + * \return Zero if the SSL/TLS handshake succeeded, non-zero otherwise. + */ +int starttls(int sock) { + int retval, bits, alg_bits; + SSL *newssl; + + pthread_setspecific(ThreadSSL, NULL); + + if (!ssl_ctx) { + return(1); + } + if (!(newssl = SSL_new(ssl_ctx))) { + lprintf(3, "SSL_new failed: %s\n", + ERR_reason_error_string(ERR_get_error())); + return(2); + } + if (!(SSL_set_fd(newssl, sock))) { + lprintf(3, "SSL_set_fd failed: %s\n", + ERR_reason_error_string(ERR_get_error())); + SSL_free(newssl); + return(3); + } + retval = SSL_accept(newssl); + if (retval < 1) { + /** + * Can't notify the client of an error here; they will + * discover the problem at the SSL layer and should + * revert to unencrypted communications. + */ + long errval; + + errval = SSL_get_error(newssl, retval); + lprintf(3, "SSL_accept failed: %s\n", + ERR_reason_error_string(ERR_get_error())); + SSL_free(newssl); + newssl = NULL; + return(4); + } + BIO_set_close(newssl->rbio, BIO_NOCLOSE); + bits = + SSL_CIPHER_get_bits(SSL_get_current_cipher(newssl), + &alg_bits); + lprintf(5, "SSL/TLS using %s on %s (%d of %d bits)\n", + SSL_CIPHER_get_name(SSL_get_current_cipher(newssl)), + SSL_CIPHER_get_version(SSL_get_current_cipher(newssl)), + bits, alg_bits); + + pthread_setspecific(ThreadSSL, newssl); + return(0); +} + + + +/** + * \brief shuts down the TLS connection + * + * WARNING: This may make your session vulnerable to a known plaintext + * attack in the current implmentation. + */ +void endtls(void) +{ + SSL_CTX *ctx = NULL; + + if (THREADSSL == NULL) return; + + lprintf(5, "Ending SSL/TLS\n"); + SSL_shutdown(THREADSSL); + ctx = SSL_get_SSL_CTX(THREADSSL); + if (ctx != NULL) { + SSL_CTX_free(ctx); + } + SSL_free(THREADSSL); + pthread_setspecific(ThreadSSL, NULL); +} + + +/** + * \brief callback for OpenSSL mutex locks + * \param mode which mode?????? + * \param n how many??? + * \param file which filename ??? + * \param line what line???? + */ +void ssl_lock(int mode, int n, const char *file, int line) +{ + if (mode & CRYPTO_LOCK) + pthread_mutex_lock(SSLCritters[n]); + else + pthread_mutex_unlock(SSLCritters[n]); +} + +/** + * \brief Send binary data to the client encrypted. + * \param buf chars to send to the client + * \param nbytes how many chars + */ +void client_write_ssl(char *buf, int nbytes) +{ + int retval; + int nremain; + char junk[1]; + + if (THREADSSL == NULL) return; + + nremain = nbytes; + + while (nremain > 0) { + if (SSL_want_write(THREADSSL)) { + if ((SSL_read(THREADSSL, junk, 0)) < 1) { + lprintf(9, "SSL_read in client_write: %s\n", + ERR_reason_error_string(ERR_get_error())); + } + } + retval = SSL_write(THREADSSL, &buf[nbytes - nremain], nremain); + if (retval < 1) { + long errval; + + errval = SSL_get_error(THREADSSL, retval); + if (errval == SSL_ERROR_WANT_READ || + errval == SSL_ERROR_WANT_WRITE) { + sleep(1); + continue; + } + lprintf(9, "SSL_write got error %ld, ret %d\n", errval, retval); + if (retval == -1) { + lprintf(9, "errno is %d\n", errno); + } + endtls(); + return; + } + nremain -= retval; + } +} + + +/** + * \brief read data from the encrypted layer. + * \param buf charbuffer to read to + * \param bytes how many + * \param timeout how long should we wait? + * \returns what??? + */ +int client_read_ssl(char *buf, int bytes, int timeout) +{ +#if 0 + fd_set rfds; + struct timeval tv; + int retval; + int s; +#endif + int len, rlen; + char junk[1]; + + if (THREADSSL == NULL) return(0); + + len = 0; + while (len < bytes) { +#if 0 + /** + * This code is disabled because we don't need it when + * using blocking reads (which we are). -IO + */ + FD_ZERO(&rfds); + s = BIO_get_fd(THREADSSL->rbio, NULL); + FD_SET(s, &rfds); + tv.tv_sec = timeout; + tv.tv_usec = 0; + + retval = select(s + 1, &rfds, NULL, NULL, &tv); + + if (FD_ISSET(s, &rfds) == 0) { + return (0); + } + +#endif + if (SSL_want_read(THREADSSL)) { + if ((SSL_write(THREADSSL, junk, 0)) < 1) { + lprintf(9, "SSL_write in client_read: %s\n", ERR_reason_error_string(ERR_get_error())); + } + } + rlen = SSL_read(THREADSSL, &buf[len], bytes - len); + if (rlen < 1) { + long errval; + + errval = SSL_get_error(THREADSSL, rlen); + if (errval == SSL_ERROR_WANT_READ || + errval == SSL_ERROR_WANT_WRITE) { + sleep(1); + continue; + } + lprintf(9, "SSL_read got error %ld\n", errval); + endtls(); + return (0); + } + len += rlen; + } + return (1); +} + + +#endif /* HAVE_OPENSSL */ +/*@}*/ diff --git a/webcit/debian/README.Debian b/webcit/debian/README.Debian new file mode 100644 index 000000000..6e63ba483 --- /dev/null +++ b/webcit/debian/README.Debian @@ -0,0 +1,6 @@ +webcit for Debian +----------------- + + + + -- Wilfried Goesgens , Mon, 25 Jul 2005 12:46:10 +0200 diff --git a/webcit/debian/changelog b/webcit/debian/changelog new file mode 100644 index 000000000..81ab04942 --- /dev/null +++ b/webcit/debian/changelog @@ -0,0 +1,18 @@ +webcit (6.71-2) unstable; urgency=low + + * update to actual Webcit SVN. many new features. see Packages changelog. + + -- Wilfried Goesgens Sat, 21 Jan 2006 19:07:00 +0100 + +webcit (6.31-2) unstable; urgency=low + + * update to actual Citadel SVN. many new features. see Packages changelog. + + -- Wilfried Goesgens Tue, 01 Nov 2005 18:06:00 +0100 + +webcit (6.21-1) unstable; urgency=low + + * Initial release Closes: #nnnn (nnnn is the bug number of your ITP) + + -- Wilfried Goesgens Mon, 25 Jul 2005 12:46:10 +0200 + diff --git a/webcit/debian/citadel-webcit-apache.config b/webcit/debian/citadel-webcit-apache.config new file mode 100644 index 000000000..6050001a3 --- /dev/null +++ b/webcit/debian/citadel-webcit-apache.config @@ -0,0 +1,20 @@ +#!/bin/bash + +PACKAGE="citadel" +SOURCE="citadel" +VERSION="4:2.6.4-pl3-1" + +. /usr/share/debconf/confmodule +db_version 2.0 || [ 0 -lt 30 ] + +# Package maintainer's commands follow: +if test -n "$2"; then + if test "`echo $2 | sed -e 's/[.-]//g'`" -lt 127 \ + -o $1 = reconfigure + then + db_input medium citadel/reconfigure-webserver || true + db_go +# End of package maintainer's commands + fi +fi +exit 0 diff --git a/webcit/debian/citadel-webcit-apache.postinst b/webcit/debian/citadel-webcit-apache.postinst new file mode 100644 index 000000000..0d3edb9ea --- /dev/null +++ b/webcit/debian/citadel-webcit-apache.postinst @@ -0,0 +1,100 @@ +#! /bin/sh +# postinst.skeleton +# Skeleton maintainer script showing all the possible cases. +# Written by Charles Briscoe-Smith, March-June 1998. Public Domain. + +# Abort if any command returns an error value +set -e +. /usr/share/debconf/confmodule + + +uninclude() { + if [ ! -a /etc/$server/conf.d/webcit ]; then + if [ -f /etc/$server/httpd.conf \ + -a -f /usr/share/wwwconfig-common/apache-uninclude_all.sh ] + then + includefile=$1 + . /usr/share/wwwconfig-common/apache-uninclude_all.sh + fi + fi +} + + +case "$1" in + configure) + # Configure this package. If the package must prompt the user for + # information, do it here. + . /usr/share/debconf/confmodule + db_version 2.0 + db_get "citadel/baseurl" && baseurl="$RET" + if echo "$baseurl"|grep -q "http"; then + if echo "$baseurl"|grep -q "https"; then + HOSTNAME= ServerName `echo "$baseurl" |sed "s;https://\(.*\)/.*;\1;"` + BASEURL=`echo "$baseurl" |sed "s;http://.*\..*/.*;\1;"` + else + HOSTNAME= ServerName `echo "$baseurl" |sed "s;https://\(.*\)/.*;\1;"` + BASEURL=`echo "$baseurl" |sed "s;https://.*\..*/.*;\1;"` + fi + else + HOSTNAME="ServerName *" + BASEURL="$baseurl" + fi + echo " + +${SERVERNAME} + DocumentRoot /var/www/ +# ProxyPass /dotskip http://127.0.0.1:2000/dotskip +# ProxyPassReverse /dotskip http://127.0.0.1:2000/dotskip + ProxyPass /webcit/ http://127.0.0.1:2000/ + ProxyPassReverse /webcit/ http://127.0.0.1:2000/ + ProxyPass /listsub/ http://127.0.0.1:2000/listsub/ + ProxyPassReverse /listsub/ http://127.0.0.1:2000/listsub/ + ProxyPass /groupdav/ http://127.0.0.1:2000/groupdav/ + ProxyPassReverse /groupdav/ http://127.0.0.1:2000/groupdav/ + +" >/tmp/apache.conf + ucf /tmp/apache.conf /etc/citadel/apache.conf + db_get "citadel/webserver" && webserver="$RET" + case "$webserver" in + Apache) webservers="apache";; + Apache-SSL) webservers="apache-ssl";; + Apache-Perl) webservers="apache-perl";; + Apache2) + webservers="apache2" + a2enmod proxy + ;; + + *) webservers="";; + esac + + + + for server in $webservers; do + test -d /etc/$server || continue + + if [ -n "$2" ]; then + uninclude + fi + + if [ ! -e /etc/$server/conf.d/webcit ] + then + ln -s /etc/citadel/apache.conf /etc/$server/conf.d/webcit + fi + restart=$server + servers=$webservers + . /usr/share/wwwconfig-common/restart.sh + done + + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/webcit/debian/citadel-webcit-apache.postrm b/webcit/debian/citadel-webcit-apache.postrm new file mode 100644 index 000000000..de0073f90 --- /dev/null +++ b/webcit/debian/citadel-webcit-apache.postrm @@ -0,0 +1,89 @@ +#! /bin/sh +# postrm.skeleton +# Skeleton maintainer script showing all the possible cases. +# Written by Charles Briscoe-Smith, March-June 1998. Public Domain. +. /usr/share/debconf/confmodule + +# Abort if any command returns an error value +set -e + +# This script is called twice during the removal of the package; once +# after the removal of the package's files from the system, and as +# the final step in the removal of this package, after the package's +# conffiles have been removed. + +# Ensure the menu system is updated +: [ ! -x /usr/bin/update-menus ] || /usr/bin/update-menus + +case "$1" in + remove) + # This package is being removed, but its configuration has not yet + # been purged. + + ;; + purge) + # This package has previously been removed and is now having + # its configuration purged from the system. + # remove the gunzipped setup executable. + db_purge 'citadel/webserver' + db_purge 'citadel/baseurl' + ### TODO: remove citadel from inittab! + ;; + disappear) + if test "$2" != overwriter; then + echo "$0: undocumented call to \`postrm $*'" 1>&2 + exit 0 + fi + # This package has been completely overwritten by package $3 + # (version $4). All our files are already gone from the system. + # This is a special case: neither "prerm remove" nor "postrm remove" + # have been called, because dpkg didn't know that this package would + # disappear until this stage. + : + + ;; + upgrade) + # About to upgrade FROM THIS VERSION to version $2 of this package. + # "prerm upgrade" has been called for this version, and "preinst + # upgrade" has been called for the new version. Last chance to + # clean up. + : + + ;; + failed-upgrade) + # About to upgrade from version $2 of this package TO THIS VERSION. + # "prerm upgrade" has been called for the old version, and "preinst + # upgrade" has been called for this version. This is only used if + # the previous version's "postrm upgrade" couldn't handle it and + # returned non-zero. (Fix old postrm bugs here.) + : + + ;; + abort-install) + # Back out of an attempt to install this package. Undo the effects of + # "preinst install...". There are two sub-cases. + : + + if test "${2+set}" = set; then + # When the install was attempted, version $2's configuration + # files were still on the system. Undo the effects of "preinst + # install $2". + : + + else + # We were being installed from scratch. Undo the effects of + # "preinst install". + : + + fi ;; + abort-upgrade) + # Back out of an attempt to upgrade this package from version $2 + # TO THIS VERSION. Undo the effects of "preinst upgrade $2". + : + + ;; + *) echo "$0: didn't understand being called with \`$1'" 1>&2 + exit 0;; +esac + +exit 0 diff --git a/webcit/debian/citadel-webcit-apache.postrm.debhelper b/webcit/debian/citadel-webcit-apache.postrm.debhelper new file mode 100644 index 000000000..bc035b98c --- /dev/null +++ b/webcit/debian/citadel-webcit-apache.postrm.debhelper @@ -0,0 +1,6 @@ +# Automatically added by dh_installdebconf +if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then + . /usr/share/debconf/confmodule + db_purge +fi +# End automatically added section diff --git a/webcit/debian/citadel-webcit-apache.substvars b/webcit/debian/citadel-webcit-apache.substvars new file mode 100644 index 000000000..a8fe3cff5 --- /dev/null +++ b/webcit/debian/citadel-webcit-apache.substvars @@ -0,0 +1 @@ +misc:Depends=debconf (>= 0.5) | debconf-2.0 diff --git a/webcit/debian/citadel-webcit-apache.templates b/webcit/debian/citadel-webcit-apache.templates new file mode 100644 index 000000000..1fae6ef7f --- /dev/null +++ b/webcit/debian/citadel-webcit-apache.templates @@ -0,0 +1,21 @@ + +Template: citadel/webserver +Type: multiselect +Choices: Apache, Apache-SSL, Apache-Perl, Apache2, None +Default: Apache2 +Description: Select Server + Integrates Citadel with your Webserver. + Please select one or more Webservers, you want webcit to + be visible under. Webcit can run under any Proxy enabled + Webserver but this automatic configuration process only + supports Apache servers. + +Template: citadel/baseurl +Type: string +Default: /webcit +Description: HTTP Location + Please specify the way you want to make Webcit visible + through your Webserver. Just enter a path, if you want + to make it visible under that path at any of your vhosts. + Alternate enter a FQDN of the VHost you want to use, like + http://webcit.yoursite.net \ No newline at end of file diff --git a/webcit/debian/citadel-webcit.config b/webcit/debian/citadel-webcit.config new file mode 100755 index 000000000..9b01a7596 --- /dev/null +++ b/webcit/debian/citadel-webcit.config @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +. /usr/share/debconf/confmodule + +if test -n "$2"; then + if test "`echo $2 | sed -e 's/[.-]//g'`" -lt 127 \ + -o $1 = reconfigure + then + db_input high citadel/WebcitHttpPort + db_input high citadel/WebcitHttpsPort + db_input high citadel/WebcitInstallnote + db_go + fi +fi + + + +exit 0 diff --git a/webcit/debian/citadel-webcit.postinst b/webcit/debian/citadel-webcit.postinst new file mode 100644 index 000000000..b38eea2cb --- /dev/null +++ b/webcit/debian/citadel-webcit.postinst @@ -0,0 +1,196 @@ +#! /bin/sh +# postinst.skeleton +# Skeleton maintainer script showing all the possible cases. +# Written by Charles Briscoe-Smith, March-June 1998. Public Domain. + +# Abort if any command returns an error value +set -e +. /usr/share/debconf/confmodule + +# This script is called as the last step of the installation of the +# package. All the package's files are in place, dpkg has already done +# its automatic conffile handling, and all the packages we depend of +# are already fully installed and configured. + +# The following idempotent stuff doesn't generally need protecting +# against being run in the abort-* cases. + +#### Install info files into the dir file +###: install-info --quiet --section "section pattern" "Section Title" \ +###: --description="Name of the document" /usr/info/foo.info +### +#### Create stub directories under /usr/local +###: if test ! -d /usr/local/lib/foo; then +###: if test ! -d /usr/local/lib; then +###: if mkdir /usr/local/lib; then +###: chown root.staff /usr/local/lib || true +###: chmod 2775 /usr/local/lib || true +###: fi +###: fi +###: if mkdir /usr/local/lib/foo; then +###: chown root.staff /usr/local/lib/foo || true +###: chmod 2775 /usr/local/lib/foo || true +###: fi +###: fi +### +#### Ensure the menu system is updated +###: [ ! -x /usr/bin/update-menus ] || /usr/bin/update-menus +### +#### Arrange for a daemon to be started at system boot time +###: update-rc.d foo default >/dev/null +### +case "$1" in + configure) + # Configure this package. If the package must prompt the user for + # information, do it here. + + mkdir -p /var/lib/citadel/www/static + # Activate menu-methods script + #: chmod a+x /etc/menu-methods/foo + + # Update ld.so cache + #: ldconfig + + # Make our version of a program available + #: update-alternatives \ + #: --install /usr/bin/program program /usr/bin/alternative 50 \ + #: --slave /usr/share/man/man1/program.1.gz program.1.gz \ + #: /usr/share/man/man1/alternative.1.gz + + # Tell ucf that the file in /usr/share/foo is the latest + # maintainer version, and let it handle how to manage the real + # confuguration file in /etc. This is how a static configuration + # file can be handled: + rm -f /tmp/md5sums + touch /tmp/md5sums + cd /var/lib/citadel/www/; + for i in `find -type f `; do + md5sum "$i" >>/tmp/md5sums + done + + cd /usr/share/doc/citadel-webcit/examples/ + # if target dirs don't exist, create them. + for i in `find -type d` ; do + if test ! -d /var/lib/citadel/www/$i; then + mkdir -p /var/lib/citadel/www/$i + fi + done + + gunzip -c md5sums > /tmp/newsums + if diff /tmp/newsums /tmp/md5sums >/dev/null; then + echo ''>/dev/null + else + cd /usr/share/doc/citadel-webcit/examples/ + for i in `cat /tmp/newsums |sed "s;.* \./;;"`; do + if test -f $i.gz; then + j=`basename $i|sed -e "s;.gz;;" ` + gunzip -c "/usr/share/doc/citadel-webcit/examples$REL_PATH/$i" >"/tmp/$j" + i=`dirname $i`/$j + else + j=`basename $i` + cp "/usr/share/doc/citadel-webcit/examples/$i" "/tmp" + fi + if test -f /var/lib/citadel/www/$i; then + origsum=`grep "$i" /tmp/md5sums |sed "s; .*;;"` + newsum=`grep "$i" /tmp/newsums |sed "s; .*;;"` + if test -z "$origsum"; then + ucf "/tmp/$j" "/var/lib/citadel/www/$i" + else + if test "$origsum" != "$newsum"; then + ucf "/tmp/$j" "/var/lib/citadel/www/$i" + fi + fi + else + ucf "/tmp/$j" "/var/lib/citadel/www/$i" + fi + rm -f "/tmp/$j" + done + fi + rm -f /tmp/newsums /tmp/md5sums + if test ! -d /var/lib/citadel/keys; then + mkdir -p /var/lib/citadel/keys + fi + if test ! -d /var/run/citadel/keys; then + mkdir -p /var/run/citadel/keys + fi + + db_get citadel/WebcitHttpPort && http_port="$RET" + db_get citadel/WebcitHttpsPort && https_port="$RET" + set >/tmp/testfoo + echo "aplying your settings" + if grep -q "webserver" /etc/inittab; then + echo "/usr/sbin +Yes +$http_port +$https_port +No +127.0.0.1 +504 +"|/usr/lib/citadel-webcit/setup -q + echo "/usr/sbin +Yes +$http_port +$https_port +No +127.0.0.1 +504 +/usr/lib/citadel-webcit/setup -q" >>/tmp/foo + else + echo "/usr/sbin +" |/usr/lib/citadel-webcit/setup -q + + fi + + #### There are three sub-cases: + ###if test "${2+set}" != set; then + ### # We're being installed by an ancient dpkg which doesn't remember + ### # which version was most recently configured, or even whether + ### # there is a most recently configured version. + ### : + ### + ###elif test -z "$2" -o "$2" = ""; then + ### # The package has not ever been configured on this system, or was + ### # purged since it was last configured. + ### : + ### + ###else + ### # Version $2 is the most recently configured version of this + ### # package. + ### : + ### + ###fi + ;; + abort-upgrade) + # Back out of an attempt to upgrade this package FROM THIS VERSION + # to version $2. Undo the effects of "prerm upgrade $2". + #: + + ;; + abort-remove) + ###if test "$2" != in-favour; then + ### echo "$0: undocumented call to \`postinst $*'" 1>&2 + ### exit 0 + ###fi + #### Back out of an attempt to remove this package, which was due to + #### a conflict with package $3 (version $4). Undo the effects of + #### "prerm remove in-favour $3 $4". + ###: + + ;; + abort-deconfigure) + ###if test "$2" != in-favour -o "$5" != removing; then + ### echo "$0: undocumented call to \`postinst $*'" 1>&2 + ### exit 0 + ###fi + #### Back out of an attempt to deconfigure this package, which was + #### due to package $6 (version $7) which we depend on being removed + #### to make way for package $3 (version $4). Undo the effects of + #### "prerm deconfigure in-favour $3 $4 removing $6 $7". + ###: + + ;; + *) echo "$0: didn't understand being called with '$1'" 1>&2 + exit 0;; +esac + +exit 0 diff --git a/webcit/debian/citadel-webcit.postrm b/webcit/debian/citadel-webcit.postrm new file mode 100644 index 000000000..63e9d9fc7 --- /dev/null +++ b/webcit/debian/citadel-webcit.postrm @@ -0,0 +1,110 @@ +#! /bin/sh +# postrm.skeleton +# Skeleton maintainer script showing all the possible cases. +# Written by Charles Briscoe-Smith, March-June 1998. Public Domain. + +# Abort if any command returns an error value +set -e +. /usr/share/debconf/confmodule + +# This script is called twice during the removal of the package; once +# after the removal of the package's files from the system, and as +# the final step in the removal of this package, after the package's +# conffiles have been removed. + +# Ensure the menu system is updated +: [ ! -x /usr/bin/update-menus ] || /usr/bin/update-menus + +case "$1" in + remove) + # This package is being removed, but its configuration has not yet + # been purged. + # TODO: remove from inittab. + + # Remove diversion + #: dpkg-divert --package foo --remove --rename \ + #: --divert /usr/bin/other.real /usr/bin/other + + # ldconfig is NOT needed during removal of a library, only during + # installation + + ;; + purge) + # This package has previously been removed and is now having + # its configuration purged from the system. + # remove the gunzipped setup executable. + # we mimic dpkg as closely as possible, so we remove configuration + # files with dpkg backup extensions too: + ### Some of the following is from Tore Anderson: + if test -d /var/lib/citadel/www/static; then + cd /var/lib/citadel/www/static; for i in *; do + i=`echo $i|sed "s;.gz;;"` + ucf --purge "/var/lib/citadel/www/static/$i" + rm -f "/var/lib/citadel/www/static/$i" + done + fi + #rmdir /var/lib/citadel/www/static + echo "/var/lib/citadel/www/keys not removed. " + db_purge 'citadel/WebcitHttpsPort' + db_purge 'citadel/WebcitHttpPort' + db_purge 'citade/WebcitInstallnote' + ### TODO: remove citadel from inittab! + ;; + disappear) + if test "$2" != overwriter; then + echo "$0: undocumented call to \`postrm $*'" 1>&2 + exit 0 + fi + # This package has been completely overwritten by package $3 + # (version $4). All our files are already gone from the system. + # This is a special case: neither "prerm remove" nor "postrm remove" + # have been called, because dpkg didn't know that this package would + # disappear until this stage. + : + + ;; + upgrade) + # About to upgrade FROM THIS VERSION to version $2 of this package. + # "prerm upgrade" has been called for this version, and "preinst + # upgrade" has been called for the new version. Last chance to + # clean up. + : + + ;; + failed-upgrade) + # About to upgrade from version $2 of this package TO THIS VERSION. + # "prerm upgrade" has been called for the old version, and "preinst + # upgrade" has been called for this version. This is only used if + # the previous version's "postrm upgrade" couldn't handle it and + # returned non-zero. (Fix old postrm bugs here.) + : + + ;; + abort-install) + # Back out of an attempt to install this package. Undo the effects of + # "preinst install...". There are two sub-cases. + : + + if test "${2+set}" = set; then + # When the install was attempted, version $2's configuration + # files were still on the system. Undo the effects of "preinst + # install $2". + : + + else + # We were being installed from scratch. Undo the effects of + # "preinst install". + : + + fi ;; + abort-upgrade) + # Back out of an attempt to upgrade this package from version $2 + # TO THIS VERSION. Undo the effects of "preinst upgrade $2". + : + + ;; + *) echo "$0: didn't understand being called with \`$1'" 1>&2 + exit 0;; +esac + +exit 0 diff --git a/webcit/debian/citadel-webcit.postrm.debhelper b/webcit/debian/citadel-webcit.postrm.debhelper new file mode 100644 index 000000000..bc035b98c --- /dev/null +++ b/webcit/debian/citadel-webcit.postrm.debhelper @@ -0,0 +1,6 @@ +# Automatically added by dh_installdebconf +if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then + . /usr/share/debconf/confmodule + db_purge +fi +# End automatically added section diff --git a/webcit/debian/citadel-webcit.substvars b/webcit/debian/citadel-webcit.substvars new file mode 100644 index 000000000..d0621723f --- /dev/null +++ b/webcit/debian/citadel-webcit.substvars @@ -0,0 +1,2 @@ +misc:Depends=debconf (>= 0.5) | debconf-2.0 +shlibs:Depends=libc6 (>= 2.3.5-1), libssl0.9.8 (>= 0.9.8a-1), zlib1g (>= 1:1.2.1) diff --git a/webcit/debian/citadel-webcit.templates b/webcit/debian/citadel-webcit.templates new file mode 100644 index 000000000..1208a9441 --- /dev/null +++ b/webcit/debian/citadel-webcit.templates @@ -0,0 +1,24 @@ +Template: citadel/WebcitHttpPort +Type: string +Default: 2000 +Description: Webcit HTTP Port + Select the Port, which the plain HTTP webcit server should listen on. + + +Template: citadel/WebcitHttpsPort +Type: string +Default: 443 +Description: WebCit HTTPS port + Select the Port, which the SSL HTTP webcit server should listen on. + + +Template: citadel/WebcitInstallnote +Type: note +Description: Citadel/UX + Citadel-webcit will be running soon. Log into it with your citadel + Administrator user, and do the fine setup. Log in as the user you + specified as the Administrator, and + review the Points under the Administration menu. If you have further + questions review www.citadel.org, specialy the FAQ and Documentation + section. + diff --git a/webcit/debian/compat b/webcit/debian/compat new file mode 100644 index 000000000..b8626c4cf --- /dev/null +++ b/webcit/debian/compat @@ -0,0 +1 @@ +4 diff --git a/webcit/debian/control b/webcit/debian/control new file mode 100644 index 000000000..9ff8715a1 --- /dev/null +++ b/webcit/debian/control @@ -0,0 +1,23 @@ +Source: webcit +Section: unknown +Priority: optional +Maintainer: Wilfried Goesgens +Build-Depends: debhelper (>= 4.0.0), libical-dev +Standards-Version: 3.6.1 + +Package: citadel-webcit +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, citadel-server, debconf +Description: Webcit, the Webfrontend to the Citadel. + WebCit puts a web-based front end on Citadel, allowing + users to access the system from any web browser. And + although you can use any browser, we recommend using + FireFox, simply the best web browser on the market. + It's the best, it's secure, and it's free, so if you + haven't switched yet, why not do so now? + +Package: citadel-webcit-apache +Architecture: any +Depends: citadel-webcit, apache2 | httpd, debconf +Description: Integrates Webcit with your local Apache + diff --git a/webcit/debian/copyright b/webcit/debian/copyright new file mode 100644 index 000000000..edfb01f6f --- /dev/null +++ b/webcit/debian/copyright @@ -0,0 +1,10 @@ +This package was debianized by Wilfried Goesgens on +Mon, 25 Jul 2005 12:46:10 +0200. + +It was downloaded from citadel.org + +Copyright Holder: Copyright ©1987-2005 by the Citadel development team, see http://easyinstall.citadel.org/citadel/docs/citadel.html + +License: GPL + +see http://www.gnu.org/copyleft/gpl.html or /usr/share/common-licenses/GPL diff --git a/webcit/debian/dirs b/webcit/debian/dirs new file mode 100644 index 000000000..ca882bbb7 --- /dev/null +++ b/webcit/debian/dirs @@ -0,0 +1,2 @@ +usr/bin +usr/sbin diff --git a/webcit/debian/docs b/webcit/debian/docs new file mode 100644 index 000000000..6e9fe653f --- /dev/null +++ b/webcit/debian/docs @@ -0,0 +1,3 @@ +COPYING.txt +README.txt +README.txt diff --git a/webcit/debian/rules b/webcit/debian/rules new file mode 100755 index 000000000..d3d67d683 --- /dev/null +++ b/webcit/debian/rules @@ -0,0 +1,125 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + + + +CFLAGS = -Wall -g -ggdb + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O0 -ggdb +endif + +configure: configure-stamp +configure-stamp: + dh_testdir + CFLAGS="$(CFLAGS)" ./configure \ + --host=$(DEB_HOST_GNU_TYPE) \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --prefix=/var/lib/citadel/www/ \ + --with-sysconfdir=/etc/citadel \ + --with-spooldir=/var/spool/citadel \ + --with-datadir=/var/lib/citadel \ + --with-rundir=/var/run/citadel \ + --with-ical --with-db --with-ldap --with-zlib --with-ssl --with-libiconf --with-newt --with-included-gettext + + touch configure-stamp + + +build: build-stamp + +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + $(MAKE) + #docbook-to-man debian/webcit.sgml > webcit.1 + + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + -$(MAKE) clean + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + +# Add here commands to install the package into debian/webcit. + root=$(CURDIR)/debian/webcit/ + mkdir -p $(CURDIR)/debian/webcit/var/lib/citadel/www/ + export root=$(CURDIR)/debian/webcit; $(MAKE) install DESTDIR=$(CURDIR)/debian/webcit/ + mkdir -p $(CURDIR)/debian/citadel-webcit/usr/share/doc/citadel-webcit/examples + mkdir -p $(CURDIR)/debian/citadel-webcit/usr/share/doc/citadel-webcit/contrib + mkdir -p $(CURDIR)/debian/citadel-webcit/usr/sbin + mkdir -p $(CURDIR)/debian/citadel-webcit/usr/lib/citadel-webcit/ + mv $(CURDIR)/debian/webcit/var/lib/citadel/www/static \ + $(CURDIR)/debian/citadel-webcit/usr/share/doc/citadel-webcit/examples/ + mv $(CURDIR)/debian/webcit/var/lib/citadel/www/tiny_mce \ + $(CURDIR)/debian/citadel-webcit/usr/share/doc/citadel-webcit/examples/ +# locale -> /usr/share/locale + mv $(CURDIR)/debian/webcit/var/lib/citadel/www/locale \ + $(CURDIR)/debian/citadel-webcit/usr/share/locale + cd $(CURDIR)/debian/citadel-webcit/usr/share/doc/citadel-webcit/examples/; \ + md5sum `find -type f |grep -v md5sums `>md5sums; + mv $(CURDIR)/debian/webcit/var/lib/citadel/www/setup \ + $(CURDIR)/debian/citadel-webcit/usr/lib/citadel-webcit/ + mv $(CURDIR)/debian/webcit/var/lib/citadel/www/webserver \ + $(CURDIR)/debian/citadel-webcit/usr/sbin/ + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs ChangeLog + dh_installdocs + dh_installexamples +# dh_install +# dh_installmenu + dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_python +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/webcit/debian/webcit.substvars b/webcit/debian/webcit.substvars new file mode 100644 index 000000000..3c1d1838c --- /dev/null +++ b/webcit/debian/webcit.substvars @@ -0,0 +1 @@ +shlibs:Depends=libc6 (>= 2.3.2.ds1-21), libssl0.9.7, zlib1g (>= 1:1.2.1) diff --git a/webcit/doxygen_groups.c b/webcit/doxygen_groups.c new file mode 100644 index 000000000..3fed3e629 --- /dev/null +++ b/webcit/doxygen_groups.c @@ -0,0 +1,109 @@ +/* + * ok, hacky, but gets us nice groups. so we define sub parts to join from other + * files here. NO CODE IN HERE! This is comment shouldn't appear in doxygen. + * we have: + * CitadelConfig; WebcitDisplayItems; WebcitHttpServer; WebcitHttpServerGDav; + * ClientPower; Calendaring; MenuInfrastructure; CitadelCommunitacion; + * VCards + * WebcitHttpServerRSS; tools; + */ + + +/** + * \defgroup CitadelConfig Configuration Mechanisms + * \brief Functions about configuring citadel / webcit + */ + +/*@{*/ +/*@}*/ + +/** + * \defgroup tools Utility Functions + * \brief Functions that aren't related to webcit topics + */ + +/*@{*/ +/*@}*/ + + +/** + * \defgroup WebcitDisplayItems Display some mime types through webcit + * \brief Functions that format mime types into HTML to the user + */ + +/*@{*/ +/*@}*/ + +/** + * \defgroup WebcitHttpServer the Webserver part + * \brief Functions that run the HTTP-Deamon + */ + +/*@{*/ +/*@}*/ + +/** + * \defgroup WebcitHttpServerGDav Groupdav Mechanisms + * \ingroup WebcitHttpServer + * \brief Functions that handle groupdav requests + */ +/*@{*/ +/*@}*/ + + +/** + * \defgroup WebcitHttpServerRSS RSS Mechanisms + * \ingroup WebcitHttpServer + * \brief Functions that handle RSS requests + */ + +/*@{*/ +/*@}*/ + +/** + * \defgroup ClientPower Client powered Functionality + * \brief Functions that spawn things on the webbrowser + */ + +/*@{*/ +/*@}*/ + +/** + * \defgroup Calendaring Calendaring background + * \brief Functions that make the Business-logic of the calendaring items + * \ingroup WebcitDisplayItems + */ + +/*@{*/ +/*@}*/ + +/** + * \defgroup VCards showing / editing VCards + * \brief Functions that make the Business-logic of the vcard stuff + * \ingroup WebcitDisplayItems + */ + +/*@{*/ +/*@}*/ + +/** + * \defgroup MenuInfrastructure Things that guide you through the webcit parts + * \brief Functions that display menues, trees etc. to connect the parts of the + * ui to a whole thing + * \ingroup WebcitDisplayItems + */ + +/*@{*/ +/*@}*/ + +/** + * \defgroup CitadelCommunitacion Talk to the citadel server + * \brief Functions that talk to the citadel server and process reviewed entities + * \ingroup WebcitDisplayItems + */ + +/*@{*/ +/*@}*/ + + + diff --git a/webcit/event.c b/webcit/event.c new file mode 100644 index 000000000..94fac68db --- /dev/null +++ b/webcit/event.c @@ -0,0 +1,721 @@ +/* + * $Id$ + */ +/** + * \defgroup EditCal Editing calendar events. + * \ingroup Calendaring + */ +/*@{*/ +#include "webcit.h" +#include "webserver.h" + + +#ifdef WEBCIT_WITH_CALENDAR_SERVICE + +/** + * \brief Display an event by itself (for editing) + * \param supplied_vevent the event to edit + * \param msgnum reference on the citserver + */ +void display_edit_individual_event(icalcomponent *supplied_vevent, long msgnum) { + icalcomponent *vevent; + icalproperty *p; + icalvalue *v; + struct icaltimetype t_start, t_end; + time_t now; + struct tm tm_now; + int created_new_vevent = 0; + icalproperty *organizer = NULL; + char organizer_string[SIZ]; + icalproperty *attendee = NULL; + char attendee_string[SIZ]; + char buf[SIZ]; + int organizer_is_me = 0; + int i; + int sequence = 0; + + now = time(NULL); + strcpy(organizer_string, ""); + strcpy(attendee_string, ""); + + if (supplied_vevent != NULL) { + vevent = supplied_vevent; + /** + * If we're looking at a fully encapsulated VCALENDAR + * rather than a VEVENT component, attempt to use the first + * relevant VEVENT subcomponent. If there is none, the + * NULL returned by icalcomponent_get_first_component() will + * tell the next iteration of this function to create a + * new one. + */ + if (icalcomponent_isa(vevent) == ICAL_VCALENDAR_COMPONENT) { + display_edit_individual_event( + icalcomponent_get_first_component( + vevent, ICAL_VEVENT_COMPONENT + ), msgnum + ); + return; + } + } + else { + vevent = icalcomponent_new(ICAL_VEVENT_COMPONENT); + created_new_vevent = 1; + } + + /** Learn the sequence */ + p = icalcomponent_get_first_property(vevent, ICAL_SEQUENCE_PROPERTY); + if (p != NULL) { + sequence = icalproperty_get_sequence(p); + } + + /** Begin output */ + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n" + "
" + ""); + wprintf(_("Add or edit an event")); + wprintf("" + "
\n" + "
\n
\n" + ); + + wprintf("\n" + ); + + + wprintf("
" + "
\n"); + + /************************************************************ + * Uncomment this to see the UID in calendar events for debugging + wprintf("UID == "); + p = icalcomponent_get_first_property(vevent, ICAL_UID_PROPERTY); + if (p != NULL) { + escputs((char *)icalproperty_get_comment(p)); + } + wprintf("
\n"); + wprintf("SEQUENCE == %d
\n", sequence); + *************************************************************/ + + wprintf("
\n"); + + wprintf("\n", + msgnum); + wprintf("\n", + bstr("calview")); + wprintf("\n", + bstr("year")); + wprintf("\n", + bstr("month")); + wprintf("\n", + bstr("day")); + + /** Put it in a borderless table so it lines up nicely */ + wprintf("\n"); + + wprintf("\n"); + + wprintf("\n"); + + wprintf("\n"); + + /** + * If this is an all-day-event, set the end time to be identical to + * the start time (the hour/minute/second will be set to midnight). + * Otherwise extract or create it. + */ + wprintf("\n"); + + wprintf(""); + + /** + * For a new event, the user creating the event should be the + * organizer. Set this field accordingly. + */ + if (icalcomponent_get_first_property(vevent, ICAL_ORGANIZER_PROPERTY) + == NULL) { + sprintf(organizer_string, "MAILTO:%s", WC->cs_inet_email); + icalcomponent_add_property(vevent, + icalproperty_new_organizer(organizer_string) + ); + } + + /** + * Determine who is the organizer of this event. + * We need to determine "me" or "not me." + */ + organizer = icalcomponent_get_first_property(vevent, ICAL_ORGANIZER_PROPERTY); + if (organizer != NULL) { + strcpy(organizer_string, icalproperty_get_organizer(organizer)); + if (!strncasecmp(organizer_string, "MAILTO:", 7)) { + strcpy(organizer_string, &organizer_string[7]); + striplt(organizer_string); + serv_printf("ISME %s", organizer_string); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + organizer_is_me = 1; + } + } + } + + wprintf("\n"); + + /** Transparency */ + wprintf("\n"); + + /** Attendees */ + wprintf("\n"); + + /** Done with properties. */ + wprintf("
"); + wprintf(_("Summary")); + wprintf("\n" + "
"); + wprintf(_("Location")); + wprintf("\n" + "
"); + wprintf(_("Start")); + wprintf("\n"); + p = icalcomponent_get_first_property(vevent, ICAL_DTSTART_PROPERTY); + if (p != NULL) { + t_start = icalproperty_get_dtstart(p); + if (t_start.is_date) { + t_start.hour = 0; + t_start.minute = 0; + t_start.second = 0; + } + } + else { + localtime_r(&now, &tm_now); + if (strlen(bstr("year")) > 0) { + tm_now.tm_year = atoi(bstr("year")) - 1900; + tm_now.tm_mon = atoi(bstr("month")) - 1; + tm_now.tm_mday = atoi(bstr("day")); + } + if (strlen(bstr("hour")) > 0) { + tm_now.tm_hour = atoi(bstr("hour")); + tm_now.tm_min = atoi(bstr("minute")); + tm_now.tm_sec = 0; + } + else { + tm_now.tm_hour = 9; + tm_now.tm_min = 0; + tm_now.tm_sec = 0; + } + + t_start = icaltime_from_timet_with_zone( + mktime(&tm_now), + ((!strcasecmp(bstr("alldayevent"), "yes")) ? 1 : 0), + icaltimezone_get_utc_timezone() + ); + t_start.is_utc = 1; + + } + display_icaltimetype_as_webform(&t_start, "dtstart"); + + wprintf("%s", + (t_start.is_date ? "CHECKED" : "" ), + _("All day event") + ); + + wprintf("
"); + wprintf(_("End")); + wprintf("\n"); + if (t_start.is_date) { + t_end = t_start; + } + else { + p = icalcomponent_get_first_property(vevent, + ICAL_DTEND_PROPERTY); + if (p != NULL) { + t_end = icalproperty_get_dtend(p); + } + else { + /** + * If this is not an all-day event and there is no + * end time specified, make the default one hour + * from the start time. + */ + t_end = t_start; + t_end.hour += 1; + t_end.second = 0; + t_end = icaltime_normalize(t_end); + /* t_end = icaltime_from_timet(now, 0); */ + } + } + display_icaltimetype_as_webform(&t_end, "dtend"); + wprintf("
"); + wprintf(_("Notes")); + wprintf("\n" + "
"); + wprintf(_("Organizer")); + wprintf(""); + escputs(organizer_string); + if (organizer_is_me) { + wprintf(" "); + wprintf(_("(you are the organizer)")); + wprintf("\n"); + } + + /** + * Transmit the organizer as a hidden field. We don't want the user + * to be able to change it, but we do want it fed back to the server, + * especially if this is a new event and there is no organizer already + * in the calendar object. + */ + wprintf(""); + + wprintf("
"); + wprintf(_("Show time as:")); + wprintf(""); + + p = icalcomponent_get_first_property(vevent, ICAL_TRANSP_PROPERTY); + if (p == NULL) { + /** No transparency found. Default to opaque (busy). */ + p = icalproperty_new_transp(ICAL_TRANSP_OPAQUE); + if (p != NULL) { + icalcomponent_add_property(vevent, p); + } + } + if (p != NULL) { + v = icalproperty_get_value(p); + } + else { + v = NULL; + } + + wprintf(""); + wprintf(_("Free")); + wprintf("  "); + + wprintf(""); + wprintf(_("Busy")); + + wprintf("
"); + wprintf(_("Attendees")); + wprintf("
" + ""); + wprintf(_("(One per line)")); + wprintf("
" + "
\n
" + "" + "  " + "\n" + "  " + "\n" + "  " + "\n" + "
\n", + _("Save"), + _("Delete"), + _("Check attendee availability"), + _("Cancel") + ); + + wprintf("
\n"); + + wprintf("
\n"); + wprintf("\n" + ); + wDumpContent(1); + + if (created_new_vevent) { + icalcomponent_free(vevent); + } +} + +/** + * \brief Save an edited event + * \param supplied_vevent the event to save + * \param msgnum the index on the citserver + */ +void save_individual_event(icalcomponent *supplied_vevent, long msgnum) { + char buf[SIZ]; + icalproperty *prop; + icalcomponent *vevent, *encaps; + int created_new_vevent = 0; + int all_day_event = 0; + struct icaltimetype event_start, t; + icalproperty *attendee = NULL; + char attendee_string[SIZ]; + int i; + int foundit; + char form_attendees[SIZ]; + char organizer_string[SIZ]; + int sequence = 0; + enum icalproperty_transp formtransp = ICAL_TRANSP_NONE; + + if (supplied_vevent != NULL) { + vevent = supplied_vevent; + /** + * If we're looking at a fully encapsulated VCALENDAR + * rather than a VEVENT component, attempt to use the first + * relevant VEVENT subcomponent. If there is none, the + * NULL returned by icalcomponent_get_first_component() will + * tell the next iteration of this function to create a + * new one. + */ + if (icalcomponent_isa(vevent) == ICAL_VCALENDAR_COMPONENT) { + save_individual_event( + icalcomponent_get_first_component( + vevent, ICAL_VEVENT_COMPONENT + ), msgnum + ); + return; + } + } + else { + vevent = icalcomponent_new(ICAL_VEVENT_COMPONENT); + created_new_vevent = 1; + } + + if ( (strlen(bstr("save_button")) > 0) + || (strlen(bstr("check_button")) > 0) ) { + + /** Replace values in the component with ones from the form */ + + while (prop = icalcomponent_get_first_property(vevent, + ICAL_SUMMARY_PROPERTY), prop != NULL) { + icalcomponent_remove_property(vevent, prop); + icalproperty_free(prop); + } + icalcomponent_add_property(vevent, + icalproperty_new_summary(bstr("summary"))); + + while (prop = icalcomponent_get_first_property(vevent, + ICAL_LOCATION_PROPERTY), prop != NULL) { + icalcomponent_remove_property(vevent, prop); + icalproperty_free(prop); + } + icalcomponent_add_property(vevent, + icalproperty_new_location(bstr("location"))); + + while (prop = icalcomponent_get_first_property(vevent, + ICAL_DESCRIPTION_PROPERTY), prop != NULL) { + icalcomponent_remove_property(vevent, prop); + icalproperty_free(prop); + } + icalcomponent_add_property(vevent, + icalproperty_new_description(bstr("description"))); + + while (prop = icalcomponent_get_first_property(vevent, + ICAL_DTSTART_PROPERTY), prop != NULL) { + icalcomponent_remove_property(vevent, prop); + icalproperty_free(prop); + } + + if (!strcmp(bstr("alldayevent"), "yes")) { + all_day_event = 1; + } + else { + all_day_event = 0; + } + + if (all_day_event) { + icaltime_from_webform_dateonly(&event_start, "dtstart"); + } + else { + icaltime_from_webform(&event_start, "dtstart"); + } + + /** + * The following odd-looking snippet of code looks like it + * takes some unnecessary steps. It is done this way because + * libical incorrectly turns an "all day event" into a normal + * event starting at midnight (i.e. it serializes as date/time + * instead of just date) unless icalvalue_new_date() is used. + * So we force it, if this is an all day event. + */ + prop = icalproperty_new_dtstart(event_start); + if (all_day_event) { + icalproperty_set_value(prop, + icalvalue_new_date(event_start) + ); + } + + if (prop) icalcomponent_add_property(vevent, prop); + else icalproperty_free(prop); + + while (prop = icalcomponent_get_first_property(vevent, + ICAL_DTEND_PROPERTY), prop != NULL) { + icalcomponent_remove_property(vevent, prop); + icalproperty_free(prop); + } + while (prop = icalcomponent_get_first_property(vevent, + ICAL_DURATION_PROPERTY), prop != NULL) { + icalcomponent_remove_property(vevent, prop); + icalproperty_free(prop); + } + + if (all_day_event == 0) { + icaltime_from_webform(&t, "dtend"); + icalcomponent_add_property(vevent, + icalproperty_new_dtend(icaltime_normalize(t) + ) + ); + } + + /** See if transparency is indicated */ + if (strlen(bstr("transp")) > 0) { + if (!strcasecmp(bstr("transp"), "opaque")) { + formtransp = ICAL_TRANSP_OPAQUE; + } + else if (!strcasecmp(bstr("transp"), "transparent")) { + formtransp = ICAL_TRANSP_TRANSPARENT; + } + + while (prop = icalcomponent_get_first_property(vevent, ICAL_TRANSP_PROPERTY), + (prop != NULL)) { + icalcomponent_remove_property(vevent, prop); + icalproperty_free(prop); + } + + lprintf(9, "adding new property...\n"); + icalcomponent_add_property(vevent, icalproperty_new_transp(formtransp)); + lprintf(9, "...added it.\n"); + } + + /** Give this event a UID if it doesn't have one. */ + lprintf(9, "Give this event a UID if it doesn't have one.\n"); + if (icalcomponent_get_first_property(vevent, + ICAL_UID_PROPERTY) == NULL) { + generate_uuid(buf); + icalcomponent_add_property(vevent, + icalproperty_new_uid(buf) + ); + } + + /** Increment the sequence ID */ + lprintf(9, "Increment the sequence ID\n"); + while (prop = icalcomponent_get_first_property(vevent, + ICAL_SEQUENCE_PROPERTY), (prop != NULL) ) { + i = icalproperty_get_sequence(prop); + lprintf(9, "Sequence was %d\n", i); + if (i > sequence) sequence = i; + icalcomponent_remove_property(vevent, prop); + icalproperty_free(prop); + } + ++sequence; + lprintf(9, "New sequence is %d. Adding...\n", sequence); + icalcomponent_add_property(vevent, + icalproperty_new_sequence(sequence) + ); + + /** + * Set the organizer, only if one does not already exist *and* + * the form is supplying one + */ + lprintf(9, "Setting the organizer...\n"); + strcpy(buf, bstr("organizer")); + if ( (icalcomponent_get_first_property(vevent, + ICAL_ORGANIZER_PROPERTY) == NULL) + && (strlen(buf) > 0) ) { + + /** set new organizer */ + sprintf(organizer_string, "MAILTO:%s", buf); + icalcomponent_add_property(vevent, + icalproperty_new_organizer(organizer_string) + ); + + } + + /** + * Add any new attendees listed in the web form + */ + lprintf(9, "Add any new attendees\n"); + + /* First, strip out the parenthesized partstats. */ + strcpy(form_attendees, bstr("attendees")); + stripout(form_attendees, '(', ')'); + + /** Now iterate! */ + for (i=0; i 0) { + lprintf(9, "Attendee: <%s>\n", buf); + sprintf(attendee_string, "MAILTO:%s", buf); + foundit = 0; + + for (attendee = icalcomponent_get_first_property(vevent, ICAL_ATTENDEE_PROPERTY); attendee != NULL; attendee = icalcomponent_get_next_property(vevent, ICAL_ATTENDEE_PROPERTY)) { + if (!strcasecmp(attendee_string, + icalproperty_get_attendee(attendee))) + ++foundit; + } + + + if (foundit == 0) { + icalcomponent_add_property(vevent, + icalproperty_new_attendee(attendee_string) + ); + } + } + } + + /** + * Remove any attendees *not* listed in the web form + */ +STARTOVER: lprintf(9, "Remove unlisted attendees\n"); + for (attendee = icalcomponent_get_first_property(vevent, ICAL_ATTENDEE_PROPERTY); attendee != NULL; attendee = icalcomponent_get_next_property(vevent, ICAL_ATTENDEE_PROPERTY)) { + strcpy(attendee_string, icalproperty_get_attendee(attendee)); + if (!strncasecmp(attendee_string, "MAILTO:", 7)) { + strcpy(attendee_string, &attendee_string[7]); + striplt(attendee_string); + foundit = 0; + for (i=0; i 0) ) { + serv_puts("ENT0 1|||4|||1|"); + serv_getln(buf, sizeof buf); + if (buf[0] == '8') { + serv_puts("Content-type: text/calendar"); + serv_puts(""); + serv_puts(icalcomponent_as_ical_string(encaps)); + serv_puts("000"); + } + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + lprintf(9, "ENT0 REPLY: %s\n", buf); + } + icalcomponent_free(encaps); + } + + /** Or, check attendee availability if the user asked for that. */ + if ( (encaps != NULL) && (strlen(bstr("check_button")) > 0) ) { + + /** Call this function, which does the real work */ + check_attendee_availability(encaps); + + /** This displays the form again, with our annotations */ + display_edit_individual_event(encaps, msgnum); + + icalcomponent_free(encaps); + } + + } + + /** + * If the user clicked 'Delete' then delete it. + */ + lprintf(9, "Checking to see if we have to delete an old event\n"); + if ( (strlen(bstr("delete_button")) > 0) && (msgnum > 0L) ) { + serv_printf("DELE %ld", atol(bstr("msgnum"))); + serv_getln(buf, sizeof buf); + } + + if (created_new_vevent) { + icalcomponent_free(vevent); + } + + /** If this was a save or deelete, go back to the calendar view. */ + if (strlen(bstr("check_button")) == 0) { + readloop("readfwd"); + } +} + + +#endif /* WEBCIT_WITH_CALENDAR_SERVICE */ + +/*@}*/ diff --git a/webcit/floors.c b/webcit/floors.c new file mode 100644 index 000000000..d91928540 --- /dev/null +++ b/webcit/floors.c @@ -0,0 +1,198 @@ +/* + * $Id$ + */ +/** + * \defgroup AdminFloor Administrative screens for floor maintenance + * \ingroup CitadelConfig + */ +/*@{*/ + +#include "webcit.h" +#include "webserver.h" + + + + +/** + * \brief Display floor config + * Display floor configuration. If prepend_html is not NULL, its contents + * will be displayed at the top of the screen. + * \param prepend_html pagetitle to prepend + */ +void display_floorconfig(char *prepend_html) +{ + char buf[SIZ]; + + int floornum; + char floorname[SIZ]; + int refcount; + + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n" + "
" + ""); + wprintf(_("Add/change/delete floors")); + wprintf("" + "
\n" + "
\n
\n" + ); + + if (prepend_html != NULL) { + wprintf("
"); + client_write(prepend_html, strlen(prepend_html)); + wprintf("

\n"); + } + + serv_printf("LFLR"); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') { + wprintf("
"); + wprintf(""); + wprintf(_("Error")); + wprintf("\n"); + wprintf("
\n"); + wprintf("%s
\n", &buf[4]); + wDumpContent(1); + return; + } + + wprintf("
" + "\n" + "\n"); + + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + floornum = extract_int(buf, 0); + extract_token(floorname, buf, 1, '|', sizeof floorname); + refcount = extract_int(buf, 2); + + wprintf(""); + + wprintf("", _("Change name")); + + wprintf("\n", refcount); + + wprintf("", _("Change CSS")); + + wprintf("\n"); + } + + wprintf("" + "" + "\n", _("Create new floor")); + + wprintf("
"); + wprintf(_("Floor number")); + wprintf(""); + wprintf(_("Floor name")); + wprintf(""); + wprintf(_("Number of rooms")); + wprintf(""); + wprintf(_("Floor CSS")); + wprintf("
%d", floornum); + if (refcount == 0) { + wprintf("" + "" + "", floornum); + wprintf(_("(delete floor)")); + wprintf("
"); + } + wprintf("" + "", floornum); + wprintf(_("(edit graphic)")); + wprintf("
"); + wprintf("
" + "
" + "" + "\n", + floornum, floorname); + wprintf("" + "
%d" + "
" + "" + "\n", + floornum, floorname); + wprintf("" + "
 
" + "\n" + "" + "
 
\n"); + wDumpContent(1); +} + + +/** + * \brief delete the actual floor + */ +void delete_floor(void) { + int floornum; + char buf[SIZ]; + char message[SIZ]; + + floornum = atoi(bstr("floornum")); + + serv_printf("KFLR %d|1", floornum); + serv_getln(buf, sizeof buf); + + if (buf[0] == '2') { + sprintf(message, _("Floor has been deleted.")); + } + else { + sprintf(message, "%s", &buf[4]); + } + + display_floorconfig(message); +} + +/** + * \brief tart creating a new floor + */ +void create_floor(void) { + char buf[SIZ]; + char message[SIZ]; + char floorname[SIZ]; + + strcpy(floorname, bstr("floorname")); + + serv_printf("CFLR %s|1", floorname); + serv_getln(buf, sizeof buf); + + if (buf[0] == '2') { + sprintf(message, _("New floor has been created.")); + } else { + sprintf(message, "%s", &buf[4]); + } + + display_floorconfig(message); +} + +/** + * \brief rename this floor + */ +void rename_floor(void) { + int floornum; + char buf[SIZ]; + char message[SIZ]; + char floorname[SIZ]; + + floornum = atoi(bstr("floornum")); + strcpy(floorname, bstr("floorname")); + + serv_printf("EFLR %d|%s", floornum, floorname); + serv_getln(buf, sizeof buf); + + sprintf(message, "%s", &buf[4]); + + display_floorconfig(message); +} + + +/*@}*/ diff --git a/webcit/fmt_date.c b/webcit/fmt_date.c new file mode 100644 index 000000000..2c7c9f6fd --- /dev/null +++ b/webcit/fmt_date.c @@ -0,0 +1,225 @@ +/* + * $Id$ + */ +/** + * \defgroup FormatDates Miscellaneous routines formating dates + * \ingroup Calendaring + */ +/*@{*/ +#include "webcit.h" +#include "webserver.h" + +typedef unsigned char byte; /**< a byte. */ + +#define FALSE 0 /**< no. */ +#define TRUE 1 /**< yes. */ + +/** + * \brief Wrapper around strftime() or strftime_l() + * depending upon how our build is configured. + * + * \param s String target buffer + * \param max Maximum size of string target buffer + * \param format strftime() format + * \param tm Input date/time + */ +size_t wc_strftime(char *s, size_t max, const char *format, const struct tm *tm) +{ +#ifdef ENABLE_NLS + if (wc_locales[WC->selected_language] == NULL) { + return strftime(s, max, format, tm); + } + else { + return strftime_l(s, max, format, tm, wc_locales[WC->selected_language]); + } +#else + return strftime(s, max, format, tm); +#endif +} + + +/** + * \brief Format a date/time stamp for output + * \param buf the output buffer + * \param thetime time to convert to string + * \param brief do we want compact view????? + */ +void fmt_date(char *buf, time_t thetime, int brief) +{ + struct tm tm; + struct tm today_tm; + time_t today_timet; + int hour; + char calhourformat[16]; + + get_preference("calhourformat", calhourformat, sizeof calhourformat); + + today_timet = time(NULL); + localtime_r(&today_timet, &today_tm); + + localtime_r(&thetime, &tm); + hour = tm.tm_hour; + if (hour == 0) + hour = 12; + else if (hour > 12) + hour = hour - 12; + + buf[0] = 0; + + if (brief) { + + /** If date == today, show only the time */ + if ((tm.tm_year == today_tm.tm_year) + &&(tm.tm_mon == today_tm.tm_mon) + &&(tm.tm_mday == today_tm.tm_mday)) { + wc_strftime(buf, 32, "%l:%M%p", &tm); + } + /** Otherwise, for messages up to 6 months old, show the + * month and day, and the time */ + else if (today_timet - thetime < 15552000) { + wc_strftime(buf, 32, "%b %d %l:%M%p", &tm); + } + /** older than 6 months, show only the date */ + else { + wc_strftime(buf, 32, "%b %d %Y", &tm); + } + } + else { + wc_strftime(buf, 32, "%c", &tm); + } +} + + +/** + * \brief Format TIME ONLY for output + * \param buf the output buffer + * \param thetime time to format into buf + */ +void fmt_time(char *buf, time_t thetime) +{ + struct tm *tm; + int hour; + char calhourformat[16]; + + get_preference("calhourformat", calhourformat, sizeof calhourformat); + + buf[0] = 0; + tm = localtime(&thetime); + hour = tm->tm_hour; + if (hour == 0) + hour = 12; + else if (hour > 12) + hour = hour - 12; + + if (!strcasecmp(calhourformat, "24")) { + sprintf(buf, "%2d:%02d", + tm->tm_hour, tm->tm_min + ); + } + else { + sprintf(buf, "%d:%02d%s", + hour, tm->tm_min, ((tm->tm_hour > 12) ? "pm" : "am") + ); + } +} + + + + +/** + * \brief Break down the timestamp used in HTTP headers + * Should read rfc1123 and rfc850 dates OK + * \todo FIXME won't read asctime + * Doesn't understand timezone, but we only should be using GMT/UTC anyway + * \param buf time to parse + * \return the time found in buf + */ +time_t httpdate_to_timestamp(char *buf) +{ + time_t t = 0; + struct tm tt; + char *c; + char tz[256]; + + /** Skip day of week, to number */ + for (c = buf; *c != ' '; c++) + ; + c++; + + /* Get day of month */ + tt.tm_mday = atoi(c); + for (; *c != ' ' && *c != '-'; c++); + c++; + + /** Get month */ + switch (*c) { + case 'A': /** April, August */ + tt.tm_mon = (c[1] == 'p') ? 3 : 7; + break; + case 'D': /** December */ + tt.tm_mon = 11; + break; + case 'F': /** February */ + tt.tm_mon = 1; + break; + case 'M': /** March, May */ + tt.tm_mon = (c[2] == 'r') ? 2 : 4; + break; + case 'J': /** January, June, July */ + tt.tm_mon = (c[2] == 'n') ? ((c[1] == 'a') ? 0 : 5) : 6; + break; + case 'N': /** November */ + tt.tm_mon = 10; + break; + case 'O': /** October */ + tt.tm_mon = 9; + break; + case 'S': /** September */ + tt.tm_mon = 8; + break; + default: + return 42; + break; /** NOTREACHED */ + } + c += 4; + + tt.tm_year = 0; + /** Get year */ + tt.tm_year = atoi(c); + for (; *c != ' '; c++); + c++; + if (tt.tm_year >= 1900) + tt.tm_year -= 1900; + + /** Get hour */ + tt.tm_hour = atoi(c); + for (; *c != ':'; c++); + c++; + + /** Get minute */ + tt.tm_min = atoi(c); + for (; *c != ':'; c++); + c++; + + /** Get second */ + tt.tm_sec = atoi(c); + for (; *c && *c != ' '; c++); + + /** Got everything; let's go */ + /** First, change to UTC */ + if (getenv("TZ")) + sprintf(tz, "TZ=%s", getenv("TZ")); + else + strcpy(tz, "TZ="); + putenv("TZ=UTC"); + tzset(); + t = mktime(&tt); + putenv(tz); + tzset(); + return t; +} + + + + +/*@}*/ diff --git a/webcit/gettext.c b/webcit/gettext.c new file mode 100644 index 000000000..b7f0a784b --- /dev/null +++ b/webcit/gettext.c @@ -0,0 +1,300 @@ +/* + * $Id + */ +/** + * \defgroup LocaleHeaderParser Parse the browser http locale headers and set the NLS stuff. + * \ingroup WebcitHttpServer + */ +/*@{*/ +#include "webcit.h" +#include "webserver.h" + +#ifdef ENABLE_NLS + +#define NUM_LANGS 6 /**< how many different locales do we know? */ +#define SEARCH_LANG 20 /**< how many langs should we parse? */ + +/** actual supported locales */ +char *AvailLang[NUM_LANGS] = { + "C", + "en_US", + "de_DE", + "it_IT", + "es_ES", + "en_GB" +}; + +locale_t wc_locales[NUM_LANGS]; /**< here we keep the parsed stuff */ + +/** Keep information about one locale */ +typedef struct _lang_pref{ + char lang[16]; /**< the language locale string */ + char region[16]; /**< the region locale string */ + long priority; /**< which priority does it have */ + int availability; /**< do we know it? */ + int selectedlang; /**< is this the selected language? */ +} LangStruct; + +/* \brief parse browser locale header + * seems as most browsers just do a one after coma value even if more than 10 locales are available. Sample strings: + * opera: + * Accept-Language: sq;q=1.0,de;q=0.9,as;q=0.8,ar;q=0.7,bn;q=0.6,zh-cn;q=0.5,kn;q=0.4,ch;q=0.3,fo;q=0.2,gn;q=0.1,ce;q=0.1,ie;q=0.1 + * Firefox + * Accept-Language: 'de-de,en-us;q=0.7,en;q=0.3' + * Accept-Language: de,en-ph;q=0.8,en-us;q=0.5,de-at;q=0.3 + * Accept-Language: de,en-us;q=0.9,it;q=0.9,de-de;q=0.8,en-ph;q=0.7,de-at;q=0.7,zh-cn;q=0.6,cy;q=0.5,ar-om;q=0.5,en-tt;q=0.4,xh;q=0.3,nl-be;q=0.3,cs;q=0.2,sv;q=0.1,tk;q=0.1 + * \param LocaleString the string from the browser http headers + */ + +void httplang_to_locale(char *LocaleString) +{ + LangStruct wanted_locales[SEARCH_LANG]; + LangStruct *ls; + + int i = 0; + int j = 0; + size_t len = strlen(LocaleString); + long prio; + int av; + int nBest; + int nParts; + char *search = (char *) malloc(len); + + memcpy(search, LocaleString, len); + search[len] = '\0'; + nParts=num_tokens(search,','); + for (i=0; ((ipriority=atol(&sbuf[0]); + } + else { + ls->priority=1000; + } + /** get the locale part */ + extract_token(&sbuf[0],&buf[0],0,';',16); + /** get the lang part, which should be allways there */ + extract_token(&ls->lang[0],&sbuf[0],0,'-',16); + /** get the area code if any. */ + if (num_tokens(&sbuf[0],'-')>1) { + extract_token(&ls->region[0],&sbuf[0],1,'-',16); + } + else { /** no ara code? use lang code */ + blen=strlen(&ls->lang[0]); + memcpy(&ls->region[0], ls->lang,blen); + ls->region[blen]='\0'; + } /** area codes are uppercase */ + blen=strlen(&ls->region[0]); + for (j=0; jregion[j]); + ls->region[j]=(char)chars;/** \todo ?! */ + } + sprintf(&lbuf[0],"%s_%s",&ls->lang[0],&ls->region[0]); + + /** check if we have this lang */ + ls->availability=1; + ls->selectedlang=-1; + for (j=0; jlang[0], AvailLang[j]); + if ((result<0)&&(resultavailability)){ + ls->availability=result; + ls->selectedlang=j; + } + /** match against lang and locale */ + if (0==strcasecmp(&lbuf[0], AvailLang[j])){ + ls->availability=0; + ls->selectedlang=j; + j=NUM_LANGS; + } + } + } + + prio=0; + av=-1000; + nBest=-1; + for (i=0; ((iavailability<=0)&& + (avavailability)&& + (priopriority)&& + (ls->selectedlang!=-1)){ + nBest=ls->selectedlang; + av=ls->availability; + prio=ls->priority; + } + } + if (nBest==-1) /** fall back to C */ + nBest=0; + WC->selected_language=nBest; + lprintf(9, "language found: %s\n", AvailLang[WC->selected_language]); + if (search != NULL) { + free(search); + } +} + +/* TODO: we skip the language weightening so far. */ +/* Accept-Language: 'de-de,en-us;q=0.7,en;q=0.3' */ +/* Accept-Language: de,en-ph;q=0.8,en-us;q=0.5,de-at;q=0.3 */ +//void httplang_to_locale(char *LocaleString) +//{ +// char selected_locale[16]; +// int i, j; +// char lang[64]; +// int num_accept = 0; +// +// lprintf(9, "languageAccept: %s\n", LocaleString); +// +// strcpy(selected_locale, "C"); +// num_accept = num_tokens(LocaleString, ','); +// +// for (i=num_accept-1; i>=0; --i) { +// extract_token(lang, LocaleString, i, ',', sizeof lang); +// +// /* Strip out the weights; we don't use them. Also convert +// * hyphens to underscores. +// */ +// for (j=0; j\n"); + + for (i=0; i < NUM_LANGS; ++i) { + wprintf("\n", + ((WC->selected_language == i) ? "selected" : ""), + AvailLang[i], + AvailLang[i] + ); + } + + wprintf("\n"); +} + +/** + * \brief Set the selected language for this session. + * \param lang the locale to set. + */ +void set_selected_language(char *lang) { + int i; + + for (i=0; iselected_language = i; + } + } +} + +/** + * \brief Activate the selected language for this session. + */ +void go_selected_language(void) { + if (WC->selected_language < 0) return; + uselocale(wc_locales[WC->selected_language]); /** switch locales */ + textdomain(textdomain(NULL)); /** clear the cache */ +} + +/** + * \brief Deactivate the selected language for this session. + */ +void stop_selected_language(void) { + uselocale(LC_GLOBAL_LOCALE); /** switch locales */ + textdomain(textdomain(NULL)); /** clear the cache */ +} + + +/** + * \brief Create a locale_t for each available language + */ +void initialize_locales(void) { + int i; + locale_t Empty_Locale; + char buf[32]; + + /* create default locale */ + Empty_Locale = newlocale(LC_ALL_MASK, NULL, NULL); + + for (i = 0; i < NUM_LANGS; ++i) { + if (i == 0) { + sprintf(buf, "%s", AvailLang[i]); // locale 0 (C) is ascii, not utf-8 + } + else { + sprintf(buf, "%s.UTF8", AvailLang[i]); + } + wc_locales[i] = newlocale( + (LC_MESSAGES_MASK|LC_TIME_MASK), + buf, + (((i > 0) && (wc_locales[0] != NULL)) ? wc_locales[0] : Empty_Locale) + ); + if (wc_locales[i] == NULL) { + lprintf(1, "Error configuring locale for %s: %s\n", + buf, + strerror(errno) + ); + } + else { + lprintf(3, "Configured available locale: %s\n", buf); + } + } +} + + +#else /* ENABLE_NLS */ +/** \brief dummy for non NLS enabled systems */ +void offer_languages(void) { + wprintf("English (US)"); +} + +/** \brief dummy for non NLS enabled systems */ +void set_selected_language(char *lang) { +} + +/** \brief dummy for non NLS enabled systems */ +void go_selected_language(void) { +} + +/** \brief dummy for non NLS enabled systems */ +void stop_selected_language(void) { +} + +#endif /* ENABLE_NLS */ + + +/*@}*/ diff --git a/webcit/graphics.c b/webcit/graphics.c new file mode 100644 index 000000000..00f256b98 --- /dev/null +++ b/webcit/graphics.c @@ -0,0 +1,116 @@ +/* + * $Id$ + * + * Handles HTTP upload of graphics files into the system. + * \ingroup WebcitHttpServer + */ + +#include "webcit.h" + +void display_graphics_upload(char *description, char *check_cmd, char *uplurl) +{ + char buf[SIZ]; + + serv_puts(check_cmd); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') { + strcpy(WC->ImportantMessage, &buf[4]); + display_main_menu(); + return; + } + output_headers(1, 1, 0, 0, 0, 0); + + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n" + "
" + ""); + wprintf(_("Image upload")); + wprintf("" + "
\n" + "
\n
\n" + ); + + wprintf("
" + "
\n"); + + wprintf("
\n"); + + wprintf("
\n", uplurl); + + wprintf("\n"); + + wprintf(_("You can upload any image directly from your computer, " + "as long as it is in GIF format (JPEG, PNG, etc. won't " + "work).")); + wprintf("

\n"); + + wprintf(_("Please select a file to upload:")); + wprintf("

\n"); + wprintf("\n"); + wprintf("

"); + wprintf("\n", _("Upload")); + wprintf(" "); + wprintf("\n", _("Reset form")); + wprintf(" "); + wprintf("\n", _("Cancel")); + wprintf("
\n"); + wprintf("
\n"); + wprintf("
\n"); + wDumpContent(1); +} + +void do_graphics_upload(char *upl_cmd) +{ + char buf[SIZ]; + int bytes_remaining; + int pos = 0; + int thisblock; + + if (strlen(bstr("cancel_button")) > 0) { + strcpy(WC->ImportantMessage, + _("Graphics upload has been cancelled.")); + display_main_menu(); + return; + } + + if (WC->upload_length == 0) { + strcpy(WC->ImportantMessage, + _("You didn't upload a file.")); + display_main_menu(); + return; + } + serv_puts(upl_cmd); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') { + strcpy(WC->ImportantMessage, &buf[4]); + display_main_menu(); + return; + } + bytes_remaining = WC->upload_length; + while (bytes_remaining) { + thisblock = ((bytes_remaining > 4096) ? 4096 : bytes_remaining); + serv_printf("WRIT %d", thisblock); + serv_getln(buf, sizeof buf); + if (buf[0] != '7') { + strcpy(WC->ImportantMessage, &buf[4]); + serv_puts("UCLS 0"); + serv_getln(buf, sizeof buf); + display_main_menu(); + return; + } + thisblock = extract_int(&buf[4], 0); + serv_write(&WC->upload[pos], thisblock); + pos = pos + thisblock; + bytes_remaining = bytes_remaining - thisblock; + } + + serv_puts("UCLS 1"); + serv_getln(buf, sizeof buf); + if (buf[0] != 'x') { + display_success(&buf[4]); + return; + } +} diff --git a/webcit/groupdav.h b/webcit/groupdav.h new file mode 100644 index 000000000..2a933ad8e --- /dev/null +++ b/webcit/groupdav.h @@ -0,0 +1,14 @@ +/* $Id$ */ + +void groupdav_common_headers(void); +void groupdav_main(struct httprequest *, char *, int, char *); +void groupdav_get(char *); +void groupdav_put(char *, char *, char *, char *, int); +void groupdav_delete(char *, char *); +void groupdav_propfind(char *, int, char *, char *); +void groupdav_options(char *); +long locate_message_by_uid(char *); +void groupdav_folder_list(void); +void euid_escapize(char *, char *); +void euid_unescapize(char *, char *); +void groupdav_identify_host(void); diff --git a/webcit/groupdav_delete.c b/webcit/groupdav_delete.c new file mode 100644 index 000000000..2d44b8fc1 --- /dev/null +++ b/webcit/groupdav_delete.c @@ -0,0 +1,90 @@ +/* + * $Id$ + * + * Handles GroupDAV DELETE requests. + * + */ + +#include "webcit.h" +#include "webserver.h" +#include "groupdav.h" + + +/* + * The pathname is always going to be /groupdav/room_name/euid + */ +void groupdav_delete(char *dav_pathname, char *dav_ifmatch) { + char dav_roomname[SIZ]; + char dav_uid[SIZ]; + long dav_msgnum = (-1); + char buf[SIZ]; + int n = 0; + + /* First, break off the "/groupdav/" prefix */ + remove_token(dav_pathname, 0, '/'); + remove_token(dav_pathname, 0, '/'); + + /* Now extract the message euid */ + n = num_tokens(dav_pathname, '/'); + extract_token(dav_uid, dav_pathname, n-1, '/', sizeof dav_uid); + remove_token(dav_pathname, n-1, '/'); + + /* What's left is the room name. Remove trailing slashes. */ + if (dav_pathname[strlen(dav_pathname)-1] == '/') { + dav_pathname[strlen(dav_pathname)-1] = 0; + } + strcpy(dav_roomname, dav_pathname); + + /* Go to the correct room. */ + if (strcasecmp(WC->wc_roomname, dav_roomname)) { + gotoroom(dav_roomname); + } + if (strcasecmp(WC->wc_roomname, dav_roomname)) { + wprintf("HTTP/1.1 404 not found\r\n"); + groupdav_common_headers(); + wprintf("Content-Length: 0\r\n\r\n"); + return; + } + + dav_msgnum = locate_message_by_uid(dav_uid); + + /* + * If no item exists with the requested uid ... simple error. + */ + if (dav_msgnum < 0L) { + wprintf("HTTP/1.1 404 Not Found\r\n"); + groupdav_common_headers(); + wprintf("Content-Length: 0\r\n\r\n"); + return; + } + + /* + * It's there ... check the ETag and make sure it matches + * the message number. + */ + if (strlen(dav_ifmatch) > 0) { + if (atol(dav_ifmatch) != dav_msgnum) { + wprintf("HTTP/1.1 412 Precondition Failed\r\n"); + groupdav_common_headers(); + wprintf("Content-Length: 0\r\n\r\n"); + return; + } + } + + /* + * Ok, attempt to delete the item. + */ + serv_printf("DELE %ld", dav_msgnum); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + wprintf("HTTP/1.1 204 No Content\r\n"); /* success */ + groupdav_common_headers(); + wprintf("Content-Length: 0\r\n\r\n"); + } + else { + wprintf("HTTP/1.1 403 Forbidden\r\n"); /* access denied */ + groupdav_common_headers(); + wprintf("Content-Length: 0\r\n\r\n"); + } + return; +} diff --git a/webcit/groupdav_get.c b/webcit/groupdav_get.c new file mode 100644 index 000000000..d773fe29b --- /dev/null +++ b/webcit/groupdav_get.c @@ -0,0 +1,143 @@ +/* + * $Id$ + * + * Handles GroupDAV GET requests. + * + */ + +#include "webcit.h" +#include "webserver.h" +#include "groupdav.h" + + +/* + * Fetch the entire contents of the room as one big ics file. + * This is for "webcal://" type access. + */ +void groupdav_get_big_ics(void) { + char buf[1024]; + + serv_puts("ICAL getics"); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') { + wprintf("HTTP/1.1 404 not found\r\n"); + groupdav_common_headers(); + wprintf( + "Content-Type: text/plain\r\n" + "\r\n" + "%s\r\n", + &buf[4] + ); + return; + } + + wprintf("HTTP/1.1 200 OK\r\n"); + groupdav_common_headers(); + wprintf("Content-type: text/calendar; charset=UTF-8\r\n"); + begin_burst(); + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + wprintf("%s\r\n", buf); + } + end_burst(); +} + + +/* + * The pathname is always going to take one of two formats: + * /groupdav/room_name/euid (GroupDAV) + * /groupdav/room_name (webcal) + */ +void groupdav_get(char *dav_pathname) { + char dav_roomname[1024]; + char dav_uid[1024]; + long dav_msgnum = (-1); + char buf[1024]; + int in_body = 0; + int found_content_type = 0; + + if (num_tokens(dav_pathname, '/') < 3) { + wprintf("HTTP/1.1 404 not found\r\n"); + groupdav_common_headers(); + wprintf( + "Content-Type: text/plain\r\n" + "\r\n" + "The object you requested was not found.\r\n" + ); + return; + } + + extract_token(dav_roomname, dav_pathname, 2, '/', sizeof dav_roomname); + extract_token(dav_uid, dav_pathname, 3, '/', sizeof dav_uid); + if ((!strcasecmp(dav_uid, "ics")) || (!strcasecmp(dav_uid, "calendar.ics"))) { + strcpy(dav_uid, ""); + } + + /* Go to the correct room. */ + if (strcasecmp(WC->wc_roomname, dav_roomname)) { + gotoroom(dav_roomname); + } + if (strcasecmp(WC->wc_roomname, dav_roomname)) { + wprintf("HTTP/1.1 404 not found\r\n"); + groupdav_common_headers(); + wprintf( + "Content-Type: text/plain\r\n" + "\r\n" + "There is no folder called \"%s\" on this server.\r\n", + dav_roomname + ); + return; + } + + /** GET on the collection itself returns an ICS of the entire collection. + */ + if (!strcasecmp(dav_uid, "")) { + groupdav_get_big_ics(); + return; + } + + dav_msgnum = locate_message_by_uid(dav_uid); + serv_printf("MSG2 %ld", dav_msgnum); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') { + wprintf("HTTP/1.1 404 not found\r\n"); + groupdav_common_headers(); + wprintf( + "Content-Type: text/plain\r\n" + "\r\n" + "Object \"%s\" was not found in the \"%s\" folder.\r\n", + dav_uid, + dav_roomname + ); + return; + } + + wprintf("HTTP/1.1 200 OK\r\n"); + groupdav_common_headers(); + wprintf("etag: \"%ld\"\r\n", dav_msgnum); + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + if (in_body) { + wprintf("%s\r\n", buf); + } + else if (!strncasecmp(buf, "Date: ", 6)) { + wprintf("%s\r\n", buf); + } + else if (!strncasecmp(buf, "Content-type: ", 14)) { + wprintf("%s", buf); + if (bmstrcasestr(buf, "charset=")) { + wprintf("%s\r\n", buf); + } + else { + wprintf("%s;charset=UTF-8\r\n", buf); + } + found_content_type = 1; + } + else if ((strlen(buf) == 0) && (in_body == 0)) { + if (!found_content_type) { + wprintf("Content-type: text/plain\r\n"); + } + in_body = 1; + begin_burst(); + } + } + end_burst(); +} diff --git a/webcit/groupdav_main.c b/webcit/groupdav_main.c new file mode 100644 index 000000000..ca31fe21e --- /dev/null +++ b/webcit/groupdav_main.c @@ -0,0 +1,246 @@ +/* + * $Id$ + * + * Entry point for GroupDAV functions + * + */ + +#include "webcit.h" +#include "webserver.h" +#include "groupdav.h" + + +/* + * Output HTTP headers which are common to all requests. + * + * Please observe that we don't use the usual output_headers() + * and wDumpContent() functions in the GroupDAV subsystem, so we + * do our own header stuff here. + * + */ +void groupdav_common_headers(void) { + wprintf( + "Server: %s / %s\r\n" + "Connection: close\r\n", + SERVER, serv_info.serv_software + ); +} + + + +/* + * string conversion function + */ +void euid_escapize(char *target, char *source) { + int i; + int target_length = 0; + + strcpy(target, ""); + for (i=0; iline, 1, ' ', sizeof dav_pathname); + unescape_input(dav_pathname); + + /* If the request does not begin with "/groupdav", prepend it. If + * we happen to introduce a double-slash, that's ok; we'll strip it + * in the next step. + * + * (THIS IS DISABLED BECAUSE WE ARE NOW TRYING TO DO REAL DAV.) + * + if (strncasecmp(dav_pathname, "/groupdav", 9)) { + char buf[512]; + snprintf(buf, sizeof buf, "/groupdav/%s", dav_pathname); + safestrncpy(dav_pathname, buf, sizeof dav_pathname); + } + * + */ + + /* Remove any stray double-slashes in pathname */ + while (ds=strstr(dav_pathname, "//"), ds != NULL) { + strcpy(ds, ds+1); + } + + /* + * If there's an If-Match: header, strip out the quotes if present, and + * then if all that's left is an asterisk, make it go away entirely. + */ + if (strlen(dav_ifmatch) > 0) { + striplt(dav_ifmatch); + if (dav_ifmatch[0] == '\"') { + strcpy(dav_ifmatch, &dav_ifmatch[1]); + for (i=0; ihttp_host) > 0) { + wprintf("%s://%s", + (is_https ? "https" : "http"), + WC->http_host); + } +} diff --git a/webcit/groupdav_options.c b/webcit/groupdav_options.c new file mode 100644 index 000000000..b92b79478 --- /dev/null +++ b/webcit/groupdav_options.c @@ -0,0 +1,97 @@ +/* + * $Id$ + * + * Handles DAV OPTIONS requests (experimental -- not required by GroupDAV) + * + */ + +#include "webcit.h" +#include "webserver.h" +#include "groupdav.h" + +/* + * The pathname is always going to be /groupdav/room_name/msg_num + */ +void groupdav_options(char *dav_pathname) { + char dav_roomname[256]; + char dav_uid[256]; + long dav_msgnum = (-1); + char datestring[256]; + time_t now; + + now = time(NULL); + http_datestring(datestring, sizeof datestring, now); + + extract_token(dav_roomname, dav_pathname, 2, '/', sizeof dav_roomname); + extract_token(dav_uid, dav_pathname, 3, '/', sizeof dav_uid); + + /* + * If the room name is blank, the client is doing a top-level OPTIONS. + */ + if (strlen(dav_roomname) == 0) { + wprintf("HTTP/1.1 200 OK\r\n"); + groupdav_common_headers(); + wprintf("Date: %s\r\n", datestring); + wprintf("DAV: 1\r\n"); + wprintf("Allow: OPTIONS, PROPFIND\r\n"); + wprintf("\r\n"); + return; + } + + /* Go to the correct room. */ + if (strcasecmp(WC->wc_roomname, dav_roomname)) { + gotoroom(dav_roomname); + } + + if (strcasecmp(WC->wc_roomname, dav_roomname)) { + wprintf("HTTP/1.1 404 not found\r\n"); + groupdav_common_headers(); + wprintf("Date: %s\r\n", datestring); + wprintf( + "Content-Type: text/plain\r\n" + "\r\n" + "There is no folder called \"%s\" on this server.\r\n", + dav_roomname + ); + return; + } + + /* If dav_uid is non-empty, client is requesting an OPTIONS on + * a specific item in the room. + */ + if (strlen(dav_uid) > 0) { + + dav_msgnum = locate_message_by_uid(dav_uid); + if (dav_msgnum < 0) { + wprintf("HTTP/1.1 404 not found\r\n"); + groupdav_common_headers(); + wprintf( + "Content-Type: text/plain\r\n" + "\r\n" + "Object \"%s\" was not found in the \"%s\" folder.\r\n", + dav_uid, + dav_roomname + ); + return; + } + + wprintf("HTTP/1.1 200 OK\r\n"); + groupdav_common_headers(); + wprintf("Date: %s\r\n", datestring); + wprintf("DAV: 1\r\n"); + wprintf("Allow: OPTIONS, PROPFIND, GET, PUT, DELETE\r\n"); + wprintf("\r\n"); + return; + } + + /* + * We got to this point, which means that the client is requesting + * an OPTIONS on the room itself. + */ + wprintf("HTTP/1.1 200 OK\r\n"); + groupdav_common_headers(); + wprintf("Date: %s\r\n", datestring); + wprintf("DAV: 1\r\n"); + wprintf("Allow: OPTIONS, PROPFIND, GET, PUT\r\n"); + wprintf("\r\n"); +} diff --git a/webcit/groupdav_propfind.c b/webcit/groupdav_propfind.c new file mode 100644 index 000000000..8e6154d61 --- /dev/null +++ b/webcit/groupdav_propfind.c @@ -0,0 +1,438 @@ +/* + * $Id$ + * + * Handles GroupDAV PROPFIND requests. + * + * A few notes about our XML output: + * + * --> Yes, we are spewing tags directly instead of using an XML library. + * If you would like to rewrite this using libxml2, code it up and submit + * a patch. Whining will be summarily ignored. + * + * --> XML is deliberately output with no whitespace/newlines between tags. + * This makes it difficult to read, but we have discovered clients which + * crash when you try to pretty it up. + * + */ + +#include "webcit.h" +#include "webserver.h" +#include "groupdav.h" + +/* + * Given an encoded UID, translate that to an unencoded Citadel EUID and + * then search for it in the current room. Return a message number or -1 + * if not found. + * + */ +long locate_message_by_uid(char *uid) { + char buf[256]; + char decoded_uid[1024]; + long retval = (-1L); + + /* Decode the uid */ + euid_unescapize(decoded_uid, uid); + +/************** THE NEW WAY ***********************/ + serv_printf("EUID %s", decoded_uid); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + retval = atol(&buf[4]); + } +/***************************************************/ + +/************** THE OLD WAY *********************** + serv_puts("MSGS ALL|0|1"); + serv_getln(buf, sizeof buf); + if (buf[0] == '8') { + serv_printf("exti|%s", decoded_uid); + serv_puts("000"); + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + retval = atol(buf); + } + } + ***************************************************/ + + return(retval); +} + + + +/* + * List rooms (or "collections" in DAV terminology) which contain + * interesting groupware objects. + */ +void groupdav_collection_list(char *dav_pathname, int dav_depth) +{ + char buf[256]; + char roomname[256]; + int view; + char datestring[256]; + time_t now; + time_t mtime; + int is_groupware_collection = 0; + int starting_point = 1; /**< 0 for /, 1 for /groupdav/ */ + + if (!strcmp(dav_pathname, "/")) { + starting_point = 0; + } + else if (!strcasecmp(dav_pathname, "/groupdav")) { + starting_point = 1; + } + else if (!strcasecmp(dav_pathname, "/groupdav/")) { + starting_point = 1; + } + else if ( (!strncasecmp(dav_pathname, "/groupdav/", 10)) && (strlen(dav_pathname) > 10) ) { + starting_point = 2; + } + + now = time(NULL); + http_datestring(datestring, sizeof datestring, now); + + /** + * Be rude. Completely ignore the XML request and simply send them + * everything we know about. Let the client sort it out. + */ + wprintf("HTTP/1.0 207 Multi-Status\r\n"); + groupdav_common_headers(); + wprintf("Date: %s\r\n", datestring); + wprintf("Content-type: text/xml\r\n"); + wprintf("Content-encoding: identity\r\n"); + + begin_burst(); + + wprintf("" + "" + ); + + /** + * If the client is requesting the root, show a root node. + */ + if (starting_point == 0) { + wprintf(""); + wprintf(""); + groupdav_identify_host(); + wprintf("/"); + wprintf(""); + wprintf(""); + wprintf("HTTP/1.1 200 OK"); + wprintf(""); + wprintf("/"); + wprintf(""); + wprintf(""); + escputs(datestring); + wprintf(""); + wprintf(""); + wprintf(""); + wprintf(""); + } + + /** + * If the client is requesting "/groupdav", show a /groupdav subdirectory. + */ + if ((starting_point + dav_depth) >= 1) { + wprintf(""); + wprintf(""); + groupdav_identify_host(); + wprintf("/groupdav"); + wprintf(""); + wprintf(""); + wprintf("HTTP/1.1 200 OK"); + wprintf(""); + wprintf("GroupDAV"); + wprintf(""); + wprintf(""); + escputs(datestring); + wprintf(""); + wprintf(""); + wprintf(""); + wprintf(""); + } + + /** + * Now go through the list and make it look like a DAV collection + */ + serv_puts("LKRA"); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + + extract_token(roomname, buf, 0, '|', sizeof roomname); + view = extract_int(buf, 7); + mtime = extract_long(buf, 8); + http_datestring(datestring, sizeof datestring, mtime); + + /* + * For now, only list rooms that we know a GroupDAV client + * might be interested in. In the future we may add + * the rest. + * + * We determine the type of objects which are stored in each + * room by looking at the *default* view for the room. This + * allows, for example, a Calendar room to appear as a + * GroupDAV calendar even if the user has switched it to a + * Calendar List view. + */ + if ((view == VIEW_CALENDAR) || (view == VIEW_TASKS) || (view == VIEW_ADDRESSBOOK) ) { + is_groupware_collection = 1; + } + else { + is_groupware_collection = 0; + } + + if ( (is_groupware_collection) && ((starting_point + dav_depth) >= 2) ) { + wprintf(""); + + wprintf(""); + groupdav_identify_host(); + wprintf("/groupdav/"); + urlescputs(roomname); + wprintf("/"); + + wprintf(""); + wprintf("HTTP/1.1 200 OK"); + wprintf(""); + wprintf(""); + escputs(roomname); + wprintf(""); + wprintf(""); + + switch(view) { + case VIEW_CALENDAR: + wprintf(""); + break; + case VIEW_TASKS: + wprintf(""); + break; + case VIEW_ADDRESSBOOK: + wprintf(""); + break; + } + + wprintf(""); + wprintf(""); + escputs(datestring); + wprintf(""); + wprintf(""); + wprintf(""); + wprintf(""); + } + } + wprintf("\n"); + + end_burst(); +} + + + +/* + * The pathname is always going to be /groupdav/room_name/msg_num + */ +void groupdav_propfind(char *dav_pathname, int dav_depth, char *dav_content_type, char *dav_content) { + char dav_roomname[256]; + char dav_uid[256]; + char msgnum[256]; + long dav_msgnum = (-1); + char buf[256]; + char uid[256]; + char encoded_uid[256]; + long *msgs = NULL; + int num_msgs = 0; + int i; + char datestring[256]; + time_t now; + + now = time(NULL); + http_datestring(datestring, sizeof datestring, now); + + extract_token(dav_roomname, dav_pathname, 2, '/', sizeof dav_roomname); + extract_token(dav_uid, dav_pathname, 3, '/', sizeof dav_uid); + + /* + * If the room name is blank, the client is requesting a + * folder list. + */ + if (strlen(dav_roomname) == 0) { + groupdav_collection_list(dav_pathname, dav_depth); + return; + } + + /* Go to the correct room. */ + if (strcasecmp(WC->wc_roomname, dav_roomname)) { + gotoroom(dav_roomname); + } + if (strcasecmp(WC->wc_roomname, dav_roomname)) { + wprintf("HTTP/1.1 404 not found\r\n"); + groupdav_common_headers(); + wprintf("Date: %s\r\n", datestring); + wprintf( + "Content-Type: text/plain\r\n" + "\r\n" + "There is no folder called \"%s\" on this server.\r\n", + dav_roomname + ); + return; + } + + /* If dav_uid is non-empty, client is requesting a PROPFIND on + * a specific item in the room. This is not valid GroupDAV, but + * it is valid WebDAV. + */ + if (strlen(dav_uid) > 0) { + + dav_msgnum = locate_message_by_uid(dav_uid); + if (dav_msgnum < 0) { + wprintf("HTTP/1.1 404 not found\r\n"); + groupdav_common_headers(); + wprintf( + "Content-Type: text/plain\r\n" + "\r\n" + "Object \"%s\" was not found in the \"%s\" folder.\r\n", + dav_uid, + dav_roomname + ); + return; + } + + /* Be rude. Completely ignore the XML request and simply send them + * everything we know about (which is going to simply be the ETag and + * nothing else). Let the client-side parser sort it out. + */ + wprintf("HTTP/1.0 207 Multi-Status\r\n"); + groupdav_common_headers(); + wprintf("Date: %s\r\n", datestring); + wprintf("Content-type: text/xml\r\n"); + wprintf("Content-encoding: identity\r\n"); + + begin_burst(); + + wprintf("" + "" + ); + + wprintf(""); + + wprintf(""); + groupdav_identify_host(); + wprintf("/groupdav/"); + urlescputs(WC->wc_roomname); + euid_escapize(encoded_uid, dav_uid); + wprintf("/%s", encoded_uid); + wprintf(""); + wprintf(""); + wprintf("HTTP/1.1 200 OK"); + wprintf("\"%ld\"", dav_msgnum); + wprintf(""); + + wprintf("\n"); + wprintf("\n"); + end_burst(); + return; + } + + + /* + * We got to this point, which means that the client is requesting + * a 'collection' (i.e. a list of all items in the room). + * + * Be rude. Completely ignore the XML request and simply send them + * everything we know about (which is going to simply be the ETag and + * nothing else). Let the client-side parser sort it out. + */ + wprintf("HTTP/1.0 207 Multi-Status\r\n"); + groupdav_common_headers(); + wprintf("Date: %s\r\n", datestring); + wprintf("Content-type: text/xml\r\n"); + wprintf("Content-encoding: identity\r\n"); + + begin_burst(); + + wprintf("" + "" + ); + + + /** Transmit the collection resource (FIXME check depth and starting point) */ + wprintf(""); + + wprintf(""); + groupdav_identify_host(); + wprintf("/groupdav/"); + urlescputs(WC->wc_roomname); + wprintf(""); + + wprintf(""); + wprintf("HTTP/1.1 200 OK"); + wprintf(""); + wprintf(""); + escputs(WC->wc_roomname); + wprintf(""); + wprintf(""); + + switch(WC->wc_default_view) { + case VIEW_CALENDAR: + wprintf(""); + break; + case VIEW_TASKS: + wprintf(""); + break; + case VIEW_ADDRESSBOOK: + wprintf(""); + break; + } + + wprintf(""); + /* FIXME get the mtime + wprintf(""); + escputs(datestring); + wprintf(""); + */ + wprintf(""); + wprintf(""); + wprintf(""); + + /** Transmit the collection listing (FIXME check depth and starting point) */ + + serv_puts("MSGS ALL"); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') while (serv_getln(msgnum, sizeof msgnum), strcmp(msgnum, "000")) { + msgs = realloc(msgs, ++num_msgs * sizeof(long)); + msgs[num_msgs-1] = atol(msgnum); + } + + if (num_msgs > 0) for (i=0; i"); + wprintf(""); + groupdav_identify_host(); + wprintf("/groupdav/"); + urlescputs(WC->wc_roomname); + euid_escapize(encoded_uid, uid); + wprintf("/%s", encoded_uid); + wprintf(""); + wprintf(""); + wprintf("HTTP/1.1 200 OK"); + wprintf(""); + wprintf("\"%ld\"", msgs[i]); + wprintf(""); + wprintf(""); + wprintf(""); + } + } + + wprintf("\n"); + end_burst(); + + if (msgs != NULL) { + free(msgs); + } +} diff --git a/webcit/groupdav_put.c b/webcit/groupdav_put.c new file mode 100644 index 000000000..21eaefbb8 --- /dev/null +++ b/webcit/groupdav_put.c @@ -0,0 +1,205 @@ +/* + * $Id$ + * + * Handles GroupDAV PUT requests. + * + */ + +#include "webcit.h" +#include "webserver.h" +#include "groupdav.h" + + +/* + * This function is for uploading an ENTIRE calendar, not just one + * component. This would be for webcal:// 'publish' operations, not + * for GroupDAV. + */ +void groupdav_put_bigics(char *dav_content, int dav_content_length) +{ + char buf[1024]; + + serv_puts("ICAL putics"); + serv_getln(buf, sizeof buf); + if (buf[0] != '4') { + wprintf("HTTP/1.1 502 Bad Gateway\r\n"); + groupdav_common_headers(); + wprintf("Content-type: text/plain\r\n" + "\r\n" + "%s\r\n", &buf[4] + ); + return; + } + + serv_write(dav_content, dav_content_length); + serv_printf("\n000"); + + /* Report success and not much else. */ + wprintf("HTTP/1.1 204 No Content\r\n"); + lprintf(9, "HTTP/1.1 204 No Content\r\n"); + groupdav_common_headers(); + wprintf("Content-Length: 0\r\n\r\n"); +} + + + +/* + * The pathname is always going to take one of two formats: + * /groupdav/room_name/euid (GroupDAV) + * /groupdav/room_name (webcal) + */ +void groupdav_put(char *dav_pathname, char *dav_ifmatch, + char *dav_content_type, char *dav_content, + int dav_content_length +) { + char dav_roomname[1024]; + char dav_uid[1024]; + long new_msgnum = (-2L); + long old_msgnum = (-1L); + char buf[SIZ]; + int n = 0; + + if (num_tokens(dav_pathname, '/') < 3) { + wprintf("HTTP/1.1 404 not found\r\n"); + groupdav_common_headers(); + wprintf( + "Content-Type: text/plain\r\n" + "\r\n" + "The object you requested was not found.\r\n" + ); + return; + } + + extract_token(dav_roomname, dav_pathname, 2, '/', sizeof dav_roomname); + extract_token(dav_uid, dav_pathname, 3, '/', sizeof dav_uid); + if ((!strcasecmp(dav_uid, "ics")) || (!strcasecmp(dav_uid, "calendar.ics"))) { + strcpy(dav_uid, ""); + } + + /* Go to the correct room. */ + if (strcasecmp(WC->wc_roomname, dav_roomname)) { + gotoroom(dav_roomname); + } + if (strcasecmp(WC->wc_roomname, dav_roomname)) { + wprintf("HTTP/1.1 404 not found\r\n"); + groupdav_common_headers(); + wprintf( + "Content-Type: text/plain\r\n" + "\r\n" + "There is no folder called \"%s\" on this server.\r\n", + dav_roomname + ); + return; + } + + /* + * If an HTTP If-Match: header is present, the client is attempting + * to replace an existing item. We have to check to see if the + * message number associated with the supplied uid matches what the + * client is expecting. If not, the server probably contains a newer + * version, so we fail... + */ + if (strlen(dav_ifmatch) > 0) { + lprintf(9, "dav_ifmatch: %s\n", dav_ifmatch); + old_msgnum = locate_message_by_uid(dav_uid); + lprintf(9, "old_msgnum: %ld\n", old_msgnum); + if (atol(dav_ifmatch) != old_msgnum) { + wprintf("HTTP/1.1 412 Precondition Failed\r\n"); + lprintf(9, "HTTP/1.1 412 Precondition Failed (ifmatch=%ld, old_msgnum=%ld)\r\n", + atol(dav_ifmatch), old_msgnum); + groupdav_common_headers(); + wprintf("Content-Length: 0\r\n\r\n"); + return; + } + } + + /** PUT on the collection itself uploads an ICS of the entire collection. + */ + if (!strcasecmp(dav_uid, "")) { + groupdav_put_bigics(dav_content, dav_content_length); + return; + } + + /* + * We are cleared for upload! We use the new calling syntax for ENT0 + * which allows a confirmation to be sent back to us. That's how we + * extract the message ID. + */ + serv_puts("ENT0 1|||4|||1|"); + serv_getln(buf, sizeof buf); + if (buf[0] != '8') { + wprintf("HTTP/1.1 502 Bad Gateway\r\n"); + groupdav_common_headers(); + wprintf("Content-type: text/plain\r\n" + "\r\n" + "%s\r\n", &buf[4] + ); + return; + } + + /* Send the content to the Citadel server */ + serv_printf("Content-type: %s\n\n", dav_content_type); + serv_puts(dav_content); + serv_puts("\n000"); + + /* Fetch the reply from the Citadel server */ + n = 0; + strcpy(dav_uid, ""); + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + switch(n++) { + case 0: new_msgnum = atol(buf); + break; + case 1: lprintf(9, "new_msgnum=%ld (%s)\n", new_msgnum, buf); + break; + case 2: strcpy(dav_uid, buf); + break; + default: + break; + } + } + + /* Tell the client what happened. */ + + /* Citadel failed in some way? */ + if (new_msgnum < 0L) { + wprintf("HTTP/1.1 502 Bad Gateway\r\n"); + groupdav_common_headers(); + wprintf("Content-type: text/plain\r\n" + "\r\n" + "new_msgnum is %ld\r\n" + "\r\n", new_msgnum + ); + return; + } + + /* We created this item for the first time. */ + if (old_msgnum < 0L) { + wprintf("HTTP/1.1 201 Created\r\n"); + lprintf(9, "HTTP/1.1 201 Created\r\n"); + groupdav_common_headers(); + wprintf("etag: \"%ld\"\r\n", new_msgnum); + wprintf("Content-Length: 0\r\n"); + wprintf("Location: "); + groupdav_identify_host(); + wprintf("/groupdav/"); + urlescputs(dav_roomname); + wprintf("/%s\r\n", dav_uid); + wprintf("\r\n"); + return; + } + + /* We modified an existing item. */ + wprintf("HTTP/1.1 204 No Content\r\n"); + lprintf(9, "HTTP/1.1 204 No Content\r\n"); + groupdav_common_headers(); + wprintf("etag: \"%ld\"\r\n", new_msgnum); + wprintf("Content-Length: 0\r\n\r\n"); + + /* The item we replaced has probably already been deleted by + * the Citadel server, but we'll do this anyway, just in case. + */ + serv_printf("DELE %ld", old_msgnum); + serv_getln(buf, sizeof buf); + + return; +} diff --git a/webcit/html2html.c b/webcit/html2html.c new file mode 100644 index 000000000..ca8804c1a --- /dev/null +++ b/webcit/html2html.c @@ -0,0 +1,374 @@ +/* + * $Id$ + */ +/** + * \defgroup HTML2HTML Output an HTML message, modifying it slightly to make sure it plays nice + * with the rest of our web framework. + * \ingroup WebcitHttpServer + */ +/*@{*/ +#include "webcit.h" +#include "vcard.h" +#include "webserver.h" + + +/** + * \brief Strip surrounding single or double quotes from a string. + * + * \param s String to be stripped. + */ +void stripquotes(char *s) +{ + int len; + + if (!s) return; + + len = strlen(s); + if (len < 2) return; + + if ( ( (s[0] == '\"') && (s[len-1] == '\"') ) || ( (s[0] == '\'') && (s[len-1] == '\'') ) ) { + s[len-1] = 0; + strcpy(s, &s[1]); + } +} + + +/** + * \brief Check to see if a META tag has overridden the declared MIME character set. + * + * \param charset Character set name (left unchanged if we don't do anything) + * \param meta_http_equiv Content of the "http-equiv" portion of the META tag + * \param meta_content Content of the "content" portion of the META tag + */ +void extract_charset_from_meta(char *charset, char *meta_http_equiv, char *meta_content) +{ + char *ptr; + char buf[64]; + + if (!charset) return; + if (!meta_http_equiv) return; + if (!meta_content) return; + + + if (strcasecmp(meta_http_equiv, "Content-type")) return; + + ptr = strchr(meta_content, ';'); + if (!ptr) return; + + safestrncpy(buf, ++ptr, sizeof buf); + striplt(buf); + if (!strncasecmp(buf, "charset=", 8)) { + strcpy(charset, &buf[8]); + } +} + + + +/** + * \brief Sanitize and enhance an HTML message for display. + * Also convert weird character sets to UTF-8 if necessary. + * + * \param supplied_charset the input charset as declared in the MIME headers + */ +void output_html(char *supplied_charset, int treat_as_wiki) { + char buf[SIZ]; + char *msg; + char *ptr; + char *msgstart; + char *msgend; + char *converted_msg; + int buffer_length = 1; + int line_length = 0; + int content_length = 0; + int output_length = 0; + char new_window[SIZ]; + int brak = 0; + int alevel = 0; + int i; + int linklen; + char charset[128]; +#ifdef HAVE_ICONV + iconv_t ic = (iconv_t)(-1) ; + char *ibuf; /**< Buffer of characters to be converted */ + char *obuf; /**< Buffer for converted characters */ + size_t ibuflen; /**< Length of input buffer */ + size_t obuflen; /**< Length of output buffer */ + char *osav; /**< Saved pointer to output buffer */ +#endif + + safestrncpy(charset, supplied_charset, sizeof charset); + msg = strdup(""); + sprintf(new_window, ""); + wprintf(_("realloc() error! couldn't get %d bytes: %s"), + buffer_length + 1, + strerror(errno)); + wprintf("

\n"); + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + /** flush */ + } + free(msg); + return; + } + msg = ptr; + strcpy(&msg[content_length], buf); + content_length += line_length; + strcpy(&msg[content_length], "\n"); + content_length += 1; + } + + /** Do a first pass to isolate the message body */ + ptr = msg; + msgstart = msg; + msgend = &msg[content_length]; + + while (ptr < msgend) { + + /** Advance to next tag */ + ptr = strchr(ptr, '<'); + if ((ptr == NULL) || (ptr >= msgend)) break; + ++ptr; + if ((ptr == NULL) || (ptr >= msgend)) break; + + /** + * Look for META tags. Some messages (particularly in + * Asian locales) illegally declare a message's character + * set in the HTML instead of in the MIME headers. This + * is wrong but we have to work around it anyway. + */ + if (!strncasecmp(ptr, "META", 4)) { + + char *meta_start; + char *meta_end; + int meta_length; + char *meta; + char *meta_http_equiv; + char *meta_content; + char *spaceptr; + + meta_start = &ptr[4]; + meta_end = strchr(ptr, '>'); + if ((meta_end != NULL) && (meta_end <= msgend)) { + meta_length = meta_end - meta_start + 1; + meta = malloc(meta_length + 1); + safestrncpy(meta, meta_start, meta_length); + meta[meta_length] = 0; + striplt(meta); + if (!strncasecmp(meta, "HTTP-EQUIV=", 11)) { + meta_http_equiv = strdup(&meta[11]); + spaceptr = strchr(meta_http_equiv, ' '); + if (spaceptr != NULL) { + *spaceptr = 0; + meta_content = strdup(++spaceptr); + if (!strncasecmp(meta_content, "content=", 8)) { + strcpy(meta_content, &meta_content[8]); + stripquotes(meta_http_equiv); + stripquotes(meta_content); + extract_charset_from_meta(charset, + meta_http_equiv, meta_content); + } + free(meta_content); + } + free(meta_http_equiv); + } + free(meta); + } + } + + /** + * Any of these tags cause everything up to and including + * the tag to be removed. + */ + if ( (!strncasecmp(ptr, "HTML", 4)) + ||(!strncasecmp(ptr, "HEAD", 4)) + ||(!strncasecmp(ptr, "/HEAD", 5)) + ||(!strncasecmp(ptr, "BODY", 4)) ) { + ptr = strchr(ptr, '>'); + if ((ptr == NULL) || (ptr >= msgend)) break; + ++ptr; + if ((ptr == NULL) || (ptr >= msgend)) break; + msgstart = ptr; + } + + /** + * Any of these tags cause everything including and following + * the tag to be removed. + */ + if ( (!strncasecmp(ptr, "/HTML", 5)) + ||(!strncasecmp(ptr, "/BODY", 5)) ) { + --ptr; + msgend = ptr; + strcpy(ptr, ""); + + } + + ++ptr; + } + if (msgstart > msg) { + strcpy(msg, msgstart); + } + + /** Convert foreign character sets to UTF-8 if necessary. */ +#ifdef HAVE_ICONV + if ( (strcasecmp(charset, "us-ascii")) + && (strcasecmp(charset, "UTF-8")) + && (strcasecmp(charset, "")) + ) { + lprintf(9, "Converting %s to UTF-8\n", charset); + ic = ctdl_iconv_open("UTF-8", charset); + if (ic == (iconv_t)(-1) ) { + lprintf(5, "%s:%d iconv_open() failed: %s\n", + __FILE__, __LINE__, strerror(errno)); + } + } + if (ic != (iconv_t)(-1) ) { + ibuf = msg; + ibuflen = content_length; + obuflen = content_length + (content_length / 2) ; + obuf = (char *) malloc(obuflen); + osav = obuf; + iconv(ic, &ibuf, &ibuflen, &obuf, &obuflen); + content_length = content_length + (content_length / 2) - obuflen; + osav[content_length] = 0; + free(msg); + msg = osav; + iconv_close(ic); + } +#endif + + /** + * At this point, the message has been stripped down to + * only the content inside the tags, and has + * been converted to UTF-8 if it was originally in a foreign + * character set. The text is also guaranteed to be null + * terminated now. + */ + + /** Now go through the message, parsing tags as necessary. */ + converted_msg = malloc(content_length); + strcpy(converted_msg, ""); + ptr = msg; + msgend = strchr(msg, 0); + while (ptr < msgend) { + + /** + * Change mailto: links to WebCit mail, by replacing the + * link with one that points back to our mail room. Due to + * the way we parse URL's, it'll even handle mailto: links + * that have "?subject=" in them. + */ + if (!strncasecmp(ptr, "
'))) + ) { + /* open external links to new window */ + content_length += 64; + converted_msg = realloc(converted_msg, content_length); + sprintf(&converted_msg[output_length], new_window); + output_length += strlen(new_window); + ptr = &ptr[8]; + } + else if ( (treat_as_wiki) && (strncasecmp(ptr, "') + ||(ptr[i]=='[') + ||(ptr[i]==']') + ) linklen = i; + if (linklen > 0) break; + } + if (linklen > 0) { + content_length += (32 + linklen); + converted_msg = realloc(converted_msg, content_length); + sprintf(&converted_msg[output_length], new_window); + output_length += strlen(new_window); + converted_msg[output_length] = '\"'; + converted_msg[++output_length] = 0; + for (i=0; i"); + output_length += 2; + for (i=0; i"); + output_length += 4; + } + } + else { + /** + * We need to know when we're inside a tag, + * so we don't turn things that look like URL's into + * links, when they're already links - or image sources. + */ + if (*ptr == '<') ++brak; + if (*ptr == '>') --brak; + if (!strncasecmp(ptr, "", 3)) --alevel; + converted_msg[output_length] = *ptr++; + converted_msg[++output_length] = 0; + } + } + + /** uncomment these two lines to override conversion */ + /** memcpy(converted_msg, msg, content_length); */ + /** output_length = content_length; */ + + /** Output our big pile of markup */ + client_write(converted_msg, output_length); + + /** A little trailing vertical whitespace... */ + wprintf("

\n"); + + /** Now give back the memory */ + free(converted_msg); + free(msg); +} + +/*@}*/ diff --git a/webcit/http_datestring.c b/webcit/http_datestring.c new file mode 100644 index 000000000..33f578464 --- /dev/null +++ b/webcit/http_datestring.c @@ -0,0 +1,67 @@ +/* + * $Id$ + */ +/** + * \defgroup HTTPDateTime Function to generate HTTP-compliant textual time/date stamp + * (This module was lifted directly from the Citadel server source) + * + * \ingroup WebcitHttpServer + */ +/*@{*/ +#include "webcit.h" + +/** HTTP Months - do not translate - these are not for human consumption */ +static char *httpdate_months[] = { + "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" +}; + +/** HTTP Weekdays - do not translate - these are not for human consumption */ +static char *httpdate_weekdays[] = { + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" +}; + + +/** + * \brief Supplied with a unix timestamp, generate a textual time/date stamp + * \param buf the return buffer + * \param n the size of the buffer + * \param xtime the time to format as string + */ +void http_datestring(char *buf, size_t n, time_t xtime) { + struct tm t; + + long offset; + char offsign; + + localtime_r(&xtime, &t); + + /** Convert "seconds west of GMT" to "hours/minutes offset" */ +#ifdef HAVE_STRUCT_TM_TM_GMTOFF + offset = t.tm_gmtoff; +#else + offset = timezone; +#endif + if (offset > 0) { + offsign = '+'; + } + else { + offset = 0L - offset; + offsign = '-'; + } + offset = ( (offset / 3600) * 100 ) + ( offset % 60 ); + + snprintf(buf, n, "%s, %02d %s %04d %02d:%02d:%02d %c%04ld", + httpdate_weekdays[t.tm_wday], + t.tm_mday, + httpdate_months[t.tm_mon], + t.tm_year + 1900, + t.tm_hour, + t.tm_min, + t.tm_sec, + offsign, offset + ); +} + + +/*@}*/ diff --git a/webcit/ical_dezonify.c b/webcit/ical_dezonify.c new file mode 100644 index 000000000..c2042fd5f --- /dev/null +++ b/webcit/ical_dezonify.c @@ -0,0 +1,171 @@ +/* + * $Id$ + */ +/** + * \defgroup IcalDezonify normalize ical dates to UTC + * Function to go through an ical component set and convert all non-UTC + * date/time properties to UTC. It also strips out any VTIMEZONE + * subcomponents afterwards, because they're irrelevant. + * + * Everything here will work on both a fully encapsulated VCALENDAR component + * or any type of subcomponent. + * + * \ingroup Calendaring + */ +/*@{*/ + +#include "webcit.h" +#include "webserver.h" + + +#ifdef WEBCIT_WITH_CALENDAR_SERVICE + + +/** + * \brief Back end function for ical_dezonify() + * + * We supply this with the master component, the relevant component, + * and the property (which will be a DTSTART, DTEND, etc.) + * which we want to convert to UTC. + * \param cal dunno ??? + * \param rcal dunno ??? + * \param prop dunno ??? + */ +void ical_dezonify_backend(icalcomponent *cal, + icalcomponent *rcal, + icalproperty *prop) { + + icaltimezone *t = NULL; + icalparameter *param; + const char *tzid; + struct icaltimetype TheTime; + + /** Give me nothing and I will give you nothing in return. */ + if (cal == NULL) return; + + /** Hunt for a TZID parameter in this property. */ + param = icalproperty_get_first_parameter(prop, ICAL_TZID_PARAMETER); + + /** Get the stringish name of this TZID. */ + if (param != NULL) { + tzid = icalparameter_get_tzid(param); + + /** Convert it to an icaltimezone type. */ + if (tzid != NULL) { + t = icalcomponent_get_timezone(cal, tzid); + } + + } + + /** Now we know the timezone. Convert to UTC. */ + + if (icalproperty_isa(prop) == ICAL_DTSTART_PROPERTY) { + TheTime = icalproperty_get_dtstart(prop); + } + else if (icalproperty_isa(prop) == ICAL_DTEND_PROPERTY) { + TheTime = icalproperty_get_dtend(prop); + } + else if (icalproperty_isa(prop) == ICAL_DUE_PROPERTY) { + TheTime = icalproperty_get_due(prop); + } + else if (icalproperty_isa(prop) == ICAL_EXDATE_PROPERTY) { + TheTime = icalproperty_get_exdate(prop); + } + else { + return; + } + + /** Do the conversion. */ + if (t != NULL) { + icaltimezone_convert_time(&TheTime, + t, + icaltimezone_get_utc_timezone() + ); + } + TheTime.is_utc = 1; + icalproperty_remove_parameter_by_kind(prop, ICAL_TZID_PARAMETER); + + /** Now add the converted property back in. */ + if (icalproperty_isa(prop) == ICAL_DTSTART_PROPERTY) { + icalproperty_set_dtstart(prop, TheTime); + } + else if (icalproperty_isa(prop) == ICAL_DTEND_PROPERTY) { + icalproperty_set_dtend(prop, TheTime); + } + else if (icalproperty_isa(prop) == ICAL_DUE_PROPERTY) { + icalproperty_set_due(prop, TheTime); + } + else if (icalproperty_isa(prop) == ICAL_EXDATE_PROPERTY) { + icalproperty_set_exdate(prop, TheTime); + } +} + + +/** + * \brief Recursive portion of ical_dezonify() + * \param cal dunno ??? + * \param rcal dunno ??? + */ +void ical_dezonify_recur(icalcomponent *cal, icalcomponent *rcal) { + icalcomponent *c; + icalproperty *p; + + /** + * Recurse through all subcomponents *except* VTIMEZONE ones. + */ + for (c=icalcomponent_get_first_component( + rcal, ICAL_ANY_COMPONENT); + c != NULL; + c = icalcomponent_get_next_component( + rcal, ICAL_ANY_COMPONENT) + ) { + if (icalcomponent_isa(c) != ICAL_VTIMEZONE_COMPONENT) { + ical_dezonify_recur(cal, c); + } + } + + /** + * Now look for DTSTART and DTEND properties + */ + for (p=icalcomponent_get_first_property( + rcal, ICAL_ANY_PROPERTY); + p != NULL; + p = icalcomponent_get_next_property( + rcal, ICAL_ANY_PROPERTY) + ) { + if ( + (icalproperty_isa(p) == ICAL_DTSTART_PROPERTY) + || (icalproperty_isa(p) == ICAL_DTEND_PROPERTY) + || (icalproperty_isa(p) == ICAL_DUE_PROPERTY) + || (icalproperty_isa(p) == ICAL_EXDATE_PROPERTY) + ) { + ical_dezonify_backend(cal, rcal, p); + } + } +} + + +/** + * \brief Convert all DTSTART and DTEND properties in all subcomponents to UTC. + * This function will search any VTIMEZONE subcomponents to learn the + * relevant timezone information. + * \param cal item to process + */ +void ical_dezonify(icalcomponent *cal) { + icalcomponent *vt = NULL; + + /** Convert all times to UTC */ + ical_dezonify_recur(cal, cal); + + /** Strip out VTIMEZONE subcomponents -- we don't need them anymore */ + while (vt = icalcomponent_get_first_component( + cal, ICAL_VTIMEZONE_COMPONENT), vt != NULL) { + icalcomponent_remove_component(cal, vt); + icalcomponent_free(vt); + } + +} + + +#endif /* WEBCIT_WITH_CALENDAR_SERVICE */ +/*@}*/ diff --git a/webcit/iconbar.c b/webcit/iconbar.c new file mode 100644 index 000000000..75b32a046 --- /dev/null +++ b/webcit/iconbar.c @@ -0,0 +1,774 @@ +/* + * $Id$ + */ +/** + * \defgroup IconBar Displays and customizes the iconbar. + * \ingroup MenuInfrastructure + */ +/*@{*/ +#include "webcit.h" + + +/** Values for ib_displayas */ +#define IB_PICTEXT 0 /**< picture and text */ +#define IB_PICONLY 1 /**< just a picture */ +#define IB_TEXTONLY 2 /**< just text */ + + +/** + * \brief draw the icon bar????? + */ +void do_selected_iconbar(void) { + if (WC->current_iconbar == current_iconbar_roomlist) { + do_iconbar_roomlist(); + } + else { + do_iconbar(); + } +} + +/** + * \brief draw the icon bar??? + */ +void do_iconbar(void) { + char iconbar[SIZ]; + char buf[SIZ]; + char key[SIZ], value[SIZ]; + int i; + + WC->current_iconbar = current_iconbar_menu; + + /** + * The initialized values of these variables also happen to + * specify the default values for users who haven't customized + * their iconbars. These should probably be set in a master + * configuration somewhere. + */ + int ib_displayas = 0; /**< pictures and text, pictures, text */ + int ib_logo = 0; /**< Site logo */ + int ib_summary = 1; /**< Summary page icon */ + int ib_inbox = 1; /**< Inbox icon */ + int ib_calendar = 1; /**< Calendar icon */ + int ib_contacts = 1; /**< Contacts icon */ + int ib_notes = 1; /**< Notes icon */ + int ib_tasks = 1; /**< Tasks icon */ + int ib_rooms = 1; /**< Rooms icon */ + int ib_users = 1; /**< Users icon */ + int ib_chat = 1; /**< Chat icon */ + int ib_advanced = 1; /**< Advanced Options icon */ + int ib_citadel = 1; /**< 'Powered by Citadel' logo */ + /* + */ + + get_preference("iconbar", iconbar, sizeof iconbar); + for (i=0; i\n" + "
\n"); +} + + +/** + * \brief roomtree view of the iconbar + * If the user has toggled the icon bar over to a room list, here's where + * we generate its innerHTML... + */ +void do_iconbar_roomlist(void) { + char iconbar[SIZ]; + char buf[SIZ]; + char key[SIZ], value[SIZ]; + int i; + + WC->current_iconbar = current_iconbar_roomlist; + + /** + * The initialized values of these variables also happen to + * specify the default values for users who haven't customized + * their iconbars. These should probably be set in a master + * configuration somewhere. + */ + int ib_displayas = 0; /* pictures and text, pictures, text */ + int ib_logo = 0; /* Site logo */ + int ib_citadel = 1; /* 'Powered by Citadel' logo */ + /* + */ + + get_preference("iconbar", iconbar, sizeof iconbar); + for (i=0; i\n" + "
\n"); + + /** embed the room list */ + list_all_rooms_by_floor("iconbar"); + + wprintf("
\n"); +} + + +/** + * \brief display a customized version of the iconbar + */ +void display_customize_iconbar(void) { + char iconbar[SIZ]; + char buf[SIZ]; + char key[SIZ], value[SIZ]; + int i; + int bar = 0; + + /** + * The initialized values of these variables also happen to + * specify the default values for users who haven't customized + * their iconbars. These should probably be set in a master + * configuration somewhere. + */ + int ib_displayas = IB_PICTEXT; /**< pictures and text, pictures, text */ + int ib_logo = 0; /**< Site logo */ + int ib_summary = 1; /**< Summary page icon */ + int ib_inbox = 1; /**< Inbox icon */ + int ib_calendar = 1; /**< Calendar icon */ + int ib_contacts = 1; /**< Contacts icon */ + int ib_notes = 1; /**< Notes icon */ + int ib_tasks = 1; /**< Tasks icon */ + int ib_rooms = 1; /**< Rooms icon */ + int ib_users = 1; /**< Users icon */ + int ib_chat = 1; /**< Chat icon */ + int ib_advanced = 1; /**< Advanced Options icon */ + int ib_citadel = 1; /**< 'Powered by Citadel' logo */ + /* + */ + + get_preference("iconbar", iconbar, sizeof iconbar); + for (i=0; i\n" + "
" + ""); + wprintf(_("Customize the icon bar")); + wprintf("" + "
\n" + "
\n
\n" + ); + + wprintf("
" + "
"); + + wprintf("
\n"); + + wprintf("
"); + wprintf(_("Display icons as:")); + wprintf(" "); + for (i=0; i<=2; ++i) { + wprintf(""); + if (i == IB_PICTEXT) wprintf(_("pictures and text")); + if (i == IB_PICONLY) wprintf(_("pictures only")); + if (i == IB_TEXTONLY) wprintf(_("text only")); + wprintf("\n"); + } + wprintf("

\n"); + + wprintf(_("Select the icons you would like to see displayed " + "in the 'icon bar' menu on the left side of the " + "screen.")); + wprintf("

\n"); + + wprintf("\n"); + + wprintf("\n", + ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")), + (ib_logo ? "CHECKED" : ""), + _("Site logo"), + _("An icon describing this site") + ); + + wprintf("\n", + ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")), + (ib_summary ? "CHECKED" : ""), + _("Summary"), + _("Your summary page") + ); + + wprintf("\n", + ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")), + (ib_inbox ? "CHECKED" : ""), + _("Mail (inbox)"), + _("A shortcut to your email Inbox") + ); + + wprintf("\n", + ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")), + (ib_contacts ? "CHECKED" : ""), + _("Contacts"), + _("Your personal address book") + ); + + wprintf("\n", + ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")), + (ib_notes ? "CHECKED" : ""), + _("Notes"), + _("Your personal notes") + ); + +#ifdef WEBCIT_WITH_CALENDAR_SERVICE + wprintf("\n", + ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")), + (ib_calendar ? "CHECKED" : ""), + _("Calendar"), + _("A shortcut to your personal calendar") + ); + + wprintf("\n", + ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")), + (ib_tasks ? "CHECKED" : ""), + _("Tasks"), + _("A shortcut to your personal task list") + ); +#endif /* WEBCIT_WITH_CALENDAR_SERVICE */ + + wprintf("\n", + ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")), + (ib_rooms ? "CHECKED" : ""), + _("Rooms"), + _("Clicking this icon displays a list of all accessible " + "rooms (or folders) available.") + ); + + wprintf("\n", + ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")), + (ib_users ? "CHECKED" : ""), + _("Who is online?"), + _("Clicking this icon displays a list of all users " + "currently logged in.") + ); + + wprintf("\n", + ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")), + (ib_chat ? "CHECKED" : ""), + _("Chat"), + _("Clicking this icon enters real-time chat mode " + "with other users in the same room.") + + ); + + wprintf("\n", + ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")), + (ib_advanced ? "CHECKED" : ""), + _("Advanced options"), + _("Access to the complete menu of Citadel functions.") + + ); + + wprintf("\n", + ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")), + (ib_citadel ? "CHECKED" : ""), + _("Citadel logo"), + _("Displays the 'Powered by Citadel' icon") + ); + + wprintf("
" + "" + "" + "\" \"" + "" + "%s
" + "%s" + "
" + "" + "" + "\" \"" + "" + "%s
" + "%s" + "
" + "" + "" + "\" \"" + "" + "%s
" + "%s" + "
" + "" + "" + "\" \"" + "" + "%s
" + "%s" + "
" + "" + "" + "\" \"" + "" + "%s
" + "%s" + "
" + "" + "" + "\" \"" + "" + "%s
" + "%s" + "
" + "" + "" + "\" \"" + "" + "%s
" + "%s" + "
" + "" + "" + "\" \"" + "" + "%s
" + "%s" + "
" + "" + "" + "\" \"" + "" + "%s
" + "%s" + "
" + "" + "" + "\" \"" + "" + "%s
" + "%s" + "
" + "" + "" + "\" \"" + "" + "%s
" + "%s" + "
" + "" + "" + "\" \"" + "" + "%s
" + "%s" + "

\n" + "
" + "" + " " + "" + "
\n", + _("Save changes"), + _("Cancel") + ); + + wprintf("
\n"); + wDumpContent(2); +} + +/** + * \brief commit the changes of an edited iconbar ???? + */ +void commit_iconbar(void) { + char iconbar[SIZ]; + int i; + + char *boxen[] = { + "ib_logo", + "ib_summary", + "ib_inbox", + "ib_calendar", + "ib_contacts", + "ib_notes", + "ib_tasks", + "ib_rooms", + "ib_users", + "ib_chat", + "ib_advanced", + "ib_logoff", + "ib_citadel" + }; + + if (strlen(bstr("ok_button")) == 0) { + display_main_menu(); + return; + } + + sprintf(iconbar, "ib_displayas=%d", atoi(bstr("ib_displayas"))); + + for (i=0; i<(sizeof(boxen)/sizeof(char *)); ++i) { + sprintf(&iconbar[strlen(iconbar)], ",%s=", boxen[i]); + if (!strcasecmp(bstr(boxen[i]), "yes")) { + sprintf(&iconbar[strlen(iconbar)], "1"); + } + else { + sprintf(&iconbar[strlen(iconbar)], "0"); + } + } + + set_preference("iconbar", iconbar, 1); + + output_headers(1, 1, 0, 0, 0, 0); + wprintf( + "
" + "" + " "); + wprintf(_("Your icon bar has been updated. Please select any of its " + "choices to continue.")); + wprintf("
\n"); + wDumpContent(2); +} + + + +/*@}*/ diff --git a/webcit/inetconf.c b/webcit/inetconf.c new file mode 100644 index 000000000..85f98153b --- /dev/null +++ b/webcit/inetconf.c @@ -0,0 +1,202 @@ +/* + * $Id$ + */ +/** + * \defgroup InetCfg Functions which handle Internet domain configuration etc. + * \ingroup CitadelConfig + */ +/*@{*/ +#include "webcit.h" + + +/** + * \brief display the inet config dialog + */ +void display_inetconf(void) +{ + char buf[SIZ]; + char ename[SIZ]; + char etype[SIZ]; + int i; + int which; + + enum { + ic_localhost, + ic_directory, + ic_gwdom, + ic_smarthost, + ic_rbl, + ic_spamass, + ic_max + }; + char *ic_spec[ic_max]; + char *ic_misc; + char *ic_keyword[ic_max]; + char *ic_boxtitle[ic_max]; + char *ic_desc[ic_max]; + + ic_keyword[0] = _("localhost"); + ic_keyword[1] = _("directory"); + ic_keyword[2] = _("gatewaydomain"); + ic_keyword[3] = _("smarthost"); + ic_keyword[4] = _("rbl"); + ic_keyword[5] = _("spamassassin"); + + ic_boxtitle[0] = _("Local host aliases"); + ic_boxtitle[1] = _("Directory domains"); + ic_boxtitle[2] = _("Gateway domains"); + ic_boxtitle[3] = _("Smart hosts"); + ic_boxtitle[4] = _("RBL hosts"); + ic_boxtitle[5] = _("SpamAssassin hosts"); + + ic_desc[0] = _("(domains for which this host receives mail)"); + ic_desc[1] = _("(domains mapped with the Global Address Book)"); + ic_desc[2] = _("(domains whose subdomains match Citadel hosts)"); + ic_desc[3] = _("(if present, forward all outbound mail to one of these hosts)"); + ic_desc[4] = _("(hosts running a Realtime Blackhole List)"); + ic_desc[5] = _("(hosts running the SpamAssassin service)"); + + for (i=0; i= 0) { + ic_spec[which] = realloc(ic_spec[which], strlen(ic_spec[which]) + strlen(ename) + 2); + if (strlen(ic_spec[which]) > 0) strcat(ic_spec[which], "\n"); + strcat(ic_spec[which], ename); + } + else { + ic_misc = realloc(ic_misc, strlen(ic_misc) + strlen(buf) + 2); + if (strlen(ic_misc) > 0) strcat(ic_misc, "\n"); + strcat(ic_misc, buf); + } + + } + + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n"); + wprintf("
"); + wprintf(""); + wprintf(_("Internet configuration")); + wprintf("\n"); + wprintf("
\n"); + wprintf("
\n
\n"); + + wprintf("
" + "
\n"); + for (which=0; which"); + } + svprintf("BOXTITLE", WCS_STRING, ic_boxtitle[which]); + do_template("beginbox"); + wprintf(""); + escputs(ic_desc[which]); + wprintf("
"); + wprintf("\n"); + if (strlen(ic_spec[which]) > 0) { + for (i=0; i\n"); + } + } + wprintf("\n" + "
"); + extract_token(buf, ic_spec[which], i, '\n', sizeof buf); + escputs(buf); + wprintf("" + "", + _("Delete this entry?")); + wprintf(""); + wprintf(_("(Delete)")); + wprintf("
" + "" + "", ic_keyword[which]); + wprintf("" + "" + "
\n"); + do_template("endbox"); + } + wprintf("
\n"); + wDumpContent(1); + + for (i=0; iImportantMessage, _("%s has been deleted."), ename); + } + else { + if (strlen(newconfig) > 0) strcat(newconfig, "\n"); + strcat(newconfig, buf); + } + } + + serv_printf("CONF PUTSYS|application/x-citadel-internet-config"); + serv_getln(buf, SIZ); + if (buf[0] == '4') { + serv_puts(newconfig); + if (!strcasecmp(bstr("oper"), "add")) { + serv_printf("%s|%s", bstr("ename"), bstr("etype") ); + sprintf(WC->ImportantMessage, "%s added.", bstr("ename")); + } + serv_puts("000"); + } + + display_inetconf(); + + free(buf); + free(ename); + free(etype); + free(newconfig); +} + + + +/*@}*/ diff --git a/webcit/install-sh b/webcit/install-sh new file mode 100755 index 000000000..e8436696c --- /dev/null +++ b/webcit/install-sh @@ -0,0 +1,250 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/webcit/listsub.c b/webcit/listsub.c new file mode 100644 index 000000000..3f7e9cf53 --- /dev/null +++ b/webcit/listsub.c @@ -0,0 +1,234 @@ +/* + * $Id$ + */ +/** + * \defgroup ListSubForms Web forms for handling mailing list subscribe/unsubscribe requests. + * \ingroup WebcitDisplayItems + */ + +/*@{*/ +#include "webcit.h" + + + +/** + * \brief List subscription handling + */ +void do_listsub(void) +{ + char cmd[256]; + char room[256]; + char token[256]; + char email[256]; + char subtype[256]; + char escaped_email[256]; + char escaped_room[256]; + + char buf[SIZ]; + int self; + char sroom[SIZ]; + + strcpy(WC->wc_fullname, ""); + strcpy(WC->wc_username, ""); + strcpy(WC->wc_password, ""); + strcpy(WC->wc_roomname, ""); + + output_headers(1, 0, 0, 1, 1, 0); + begin_burst(); + + wprintf("\n" + "\n" + "\n" + "\n" + ); + wprintf(_("List subscription")); + wprintf("\n"); + + strcpy(cmd, bstr("cmd")); + strcpy(room, bstr("room")); + strcpy(token, bstr("token")); + strcpy(email, bstr("email")); + strcpy(subtype, bstr("subtype")); + + wprintf("
" + "
" + ""); + wprintf(_("List subscribe/unsubscribe")); + wprintf("

\n"); + + /** + * Subscribe command + */ + if (!strcasecmp(cmd, "subscribe")) { + serv_printf("SUBS subscribe|%s|%s|%s|%s://%s/listsub", + room, + email, + subtype, + (is_https ? "https" : "http"), + WC->http_host + ); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + stresc(escaped_email, email, 0, 0); + stresc(escaped_room, room, 0, 0); + + wprintf("

"); + wprintf(_("Confirmation request sent")); + wprintf("

"); + wprintf(_("You are subscribing %s" + " to the %s mailing list. " + "The listserver has " + "sent you an e-mail with one additional " + "Web link for you to click on to confirm " + "your subscription. This extra step is for " + "your protection, as it prevents others from " + "being able to subscribe you to lists " + "without your consent.

" + "Please click on the link which is being " + "e-mailed to you and your subscription will " + "be confirmed.
\n"), + escaped_email, escaped_room); + wprintf("%s
\n", _("Go back...")); + } + else { + wprintf("ERROR: %s" + "

\n", + &buf[4]); + goto FORM; + } + } + + /** + * Unsubscribe command + */ + else if (!strcasecmp(cmd, "unsubscribe")) { + serv_printf("SUBS unsubscribe|%s|%s|%s://%s/listsub", + room, + email, + (is_https ? "https" : "http"), + WC->http_host + ); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + wprintf("

Confirmation request sent

" + "You are unsubscribing "); + escputs(email); + wprintf(" from the ""); + escputs(room); + wprintf("" mailing list. The listserver has " + "sent you an e-mail with one additional " + "Web link for you to click on to confirm " + "your unsubscription. This extra step is for " + "your protection, as it prevents others from " + "being able to unsubscribe you from " + "lists without your consent.

" + "Please click on the link which is being " + "e-mailed to you and your unsubscription will " + "be confirmed.
\n" + "Back...
\n" + ); + } + else { + wprintf("ERROR: %s" + "

\n", + &buf[4]); + goto FORM; + } + } + + /** + * Confirm command + */ + else if (!strcasecmp(cmd, "confirm")) { + serv_printf("SUBS confirm|%s|%s", + room, + token + ); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + wprintf("

Confirmation successful!

"); + } + else { + wprintf("

Confirmation failed.

" + "This could mean one of two things:
    \n" + "
  • You waited too long to confirm your " + "subscribe/unsubscribe request (the " + "confirmation link is only valid for three " + "days)\n
  • You have already " + "successfully confirmed your " + "subscribe/unsubscribe request and are " + "attempting to do it again.
\n" + "The error returned by the server was: " + ); + } + wprintf("%s

\n", &buf[4]); + } + + /** + * Any other (invalid) command causes the form to be displayed + */ + else { +FORM: wprintf("
\n" + "\n" + ); + + wprintf("\n"); + + wprintf("\n"); + + wprintf("
Name of list" + "" + "
Your e-mail address" + "
" + "(If subscribing) preferred format: " + "One message at a time  " + "Digest format  " + "
\n" + "\n" + "\n" + "
\n" + ); + + wprintf("
When you attempt to subscribe or unsubscribe to " + "a mailing list, you will receive an e-mail containing" + " one additional web link to click on for final " + "confirmation. This extra step is for your " + "protection, as it prevents others from being able to " + "subscribe or unsubscribe you to lists.
\n" + ); + + } + + wprintf("\n"); + wDumpContent(0); + end_webcit_session(); +} + + + +/*@}*/ diff --git a/webcit/locate_host.c b/webcit/locate_host.c new file mode 100644 index 000000000..7b5869907 --- /dev/null +++ b/webcit/locate_host.c @@ -0,0 +1,44 @@ +/* + * $Id$ + */ +/** + * \defgroup Hostlookup Examine a socket and determine the name/address of the originating host. + * \ingroup WebcitHttpServer + */ +/*@{*/ + +#include "webcit.h" + +/** + * \brief get a hostname + * \todo buffersize? + * \param tbuf the returnbuffer + * \param client_socket the sock fd where the client is connected + */ +void locate_host(char *tbuf, int client_socket) +{ + struct sockaddr_in cs; + struct hostent *ch; + socklen_t len; + char *i; + int a1, a2, a3, a4; + + len = sizeof(cs); + if (getpeername(client_socket, (struct sockaddr *) &cs, &len) < 0) { + strcpy(tbuf, ""); + return; + } + if ((ch = gethostbyaddr((char *) &cs.sin_addr, sizeof(cs.sin_addr), + AF_INET)) == NULL) { + i = (char *) &cs.sin_addr; + a1 = ((*i++) & 0xff); + a2 = ((*i++) & 0xff); + a3 = ((*i++) & 0xff); + a4 = ((*i++) & 0xff); + sprintf(tbuf, "%d.%d.%d.%d", a1, a2, a3, a4); + return; + } + safestrncpy(tbuf, ch->h_name, 64); +} + +/*@}*/ diff --git a/webcit/mainmenu.c b/webcit/mainmenu.c new file mode 100644 index 000000000..3f66e6d58 --- /dev/null +++ b/webcit/mainmenu.c @@ -0,0 +1,400 @@ +/* + * $Id$ + */ +/** + * \defgroup DispAdvancedMenu Displays the "advanced" (main) menu. + * \ingroup MenuInfrastructure + * + */ +/*@{*/ +#include "webcit.h" + +/** + * \brief The Main Menu + */ +void display_main_menu(void) +{ + output_headers(1, 1, 1, 0, 0, 0); + + wprintf("
" + "" + "" + "
\n"); + + svprintf("BOXTITLE", WCS_STRING, _("Basic commands")); + do_template("beginbox"); + + wprintf("\n" + "" + "" + "
"); /**< start of first column */ + + wprintf(""); + wprintf(_("List known rooms")); + wprintf("
"); + wprintf(_("Where can I go from here?")); + wprintf("
\n"); + + wprintf("" + ""); + wprintf(_("Goto next room")); + wprintf("
" + ""); + wprintf(_("...with unread messages")); + wprintf("
\n"); + + wprintf("" + ""); + wprintf(_("Skip to next room")); + wprintf("
" + ""); + wprintf(_("(come back here later)")); + wprintf("\n"); + + if ((strlen(WC->ugname) > 0) && (strcasecmp(WC->ugname, WC->wc_roomname))) { + wprintf("
" + "" + ""); + wprintf(_("Ungoto")); + wprintf("
" + ""); + wprintf(_("(oops! Back to %s)"), WC->ugname); + wprintf("\n"); + } + + wprintf("
\n"); /* start of second column */ + + wprintf("" + ""); + wprintf(_("Read new messages")); + wprintf("
" + ""); + wprintf(_("...in this room")); + wprintf("
\n"); + + wprintf("" + ""); + wprintf(_("Read all messages")); + wprintf("
" + ""); + wprintf(_("...old and new")); + wprintf("
\n"); + + wprintf("" + ""); + wprintf(_("Enter a message")); + wprintf("
" + ""); + wprintf(_("(post in this room)")); + wprintf("\n"); + + wprintf("
"); /* start of third column */ + + wprintf("" + ""); + wprintf(_("Summary page")); + wprintf("
" + ""); + wprintf(_("Summary of my account")); + wprintf("
\n"); + + wprintf("\n" + ""); + wprintf(_("User list")); + wprintf("
" + ""); + wprintf(_("(all registered users)")); + wprintf("
\n"); + + wprintf("" + ""); + wprintf(_("Log off")); + wprintf("
" + ""); + wprintf(_("Bye!")); + wprintf("\n"); + + wprintf("
\n"); + do_template("endbox"); + + wprintf("
"); + + svprintf("BOXTITLE", WCS_STRING, _("Your info")); + do_template("beginbox"); + + wprintf("" + ""); + wprintf(_("Change your preferences and settings")); + wprintf("
\n"); + + wprintf("
" + ""); + wprintf(_("Update your contact information")); + wprintf("
\n"); + + wprintf("
" + ""); + wprintf(_("Change your password")); + wprintf("
\n"); + + wprintf("" + ""); + wprintf(_("Enter your 'bio'")); + wprintf("
\n"); + + wprintf("" + ""); + wprintf(_("Edit your online photo")); + wprintf("\n"); + + do_template("endbox"); + + wprintf("
"); + + svprintf("BOXTITLE", WCS_STRING, _("Advanced room commands")); + do_template("beginbox"); + + if ((WC->axlevel >= 6) || (WC->is_room_aide)) { + wprintf("" + ""); + wprintf(_("Edit or delete this room")); + wprintf("
\n"); + } + + wprintf("" + ""); + wprintf(_("Go to a 'hidden' room")); + wprintf("
\n"); + + wprintf("" + ""); + wprintf(_("Create a new room")); + wprintf("
\n"); + + wprintf("" + ""); + wprintf(_("Zap (forget) this room (%s)"), WC->wc_roomname); + wprintf("
\n"); + + wprintf("" + ""); + wprintf(_("List all forgotten rooms")); + wprintf("\n"); + + do_template("endbox"); + + wprintf("
"); + wDumpContent(2); +} + + +/** + * \brief System administration menu + */ +void display_aide_menu(void) +{ + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n" + "
" + ""); + wprintf(_("System Administration Menu")); + wprintf("" + "
\n" + "
\n
\n" + ); + + wprintf("
" + "
"); + + svprintf("BOXTITLE", WCS_STRING, _("Global Configuration")); + do_template("beginbox"); + + wprintf("" + ""); + wprintf(_("Edit site-wide configuration")); + wprintf("
\n"); + + wprintf("" + ""); + wprintf(_("Domain names and Internet mail configuration")); + wprintf("
\n"); + + wprintf("" + ""); + wprintf(_("Configure replication with other Citadel servers")); + wprintf("\n"); + + do_template("endbox"); + + wprintf("
"); + + svprintf("BOXTITLE", WCS_STRING, _("User account management")); + do_template("beginbox"); + + wprintf("" + ""); + wprintf(_("Add, change, delete user accounts")); + wprintf("
\n"); + + wprintf("" + ""); + wprintf(_("Validate new users")); + wprintf("
\n"); + + do_template("endbox"); + + svprintf("BOXTITLE", WCS_STRING, _("Rooms and Floors")); + do_template("beginbox"); + + wprintf("" + ""); + wprintf(_("Add, change, or delete floors")); + wprintf("\n"); + + do_template("endbox"); + + wprintf("
"); + wDumpContent(2); +} + + + + + +/** + * \brief Display the screen to enter a generic server command + */ +void display_generic(void) +{ + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n" + "
" + ""); + wprintf(_("Enter a server command")); + wprintf("
\n" + "
\n
\n" + ); + + wprintf("
" + "
\n"); + + wprintf("
"); + wprintf(_("This screen allows you to enter Citadel server commands which are " + "not supported by WebCit. If you do not know what that means, " + "then this screen will not be of much use to you.")); + wprintf("
\n"); + + wprintf("
\n"); + + wprintf(_("Enter command:")); + wprintf("

\n"); + + wprintf(_("Command input (if requesting SEND_LISTING transfer mode):")); + wprintf("

\n"); + + wprintf(""); + wprintf(_("Detected host header is %s://%s"), (is_https ? "https" : "http"), WC->http_host); + wprintf("\n"); + wprintf("", _("Send command")); + wprintf(" "); + wprintf("
\n", _("Cancel")); + + wprintf("
\n"); + wprintf("
\n"); + wDumpContent(1); +} + +/** + * \brief Interactive window to perform generic Citadel server commands. + */ +void do_generic(void) +{ + char buf[SIZ]; + char gcontent[SIZ]; + char *junk; + size_t len; + + if (strlen(bstr("sc_button")) == 0) { + display_main_menu(); + return; + } + + output_headers(1, 1, 0, 0, 0, 0); + + serv_printf("%s", bstr("g_cmd")); + serv_getln(buf, sizeof buf); + + svprintf("BOXTITLE", WCS_STRING, _("Server command results")); + do_template("beginbox"); + + wprintf("
Command:"); + escputs(bstr("g_cmd")); + wprintf("
Result:"); + escputs(buf); + wprintf("

\n"); + + if (buf[0] == '8') { + serv_printf("\n\n000"); + } + if ((buf[0] == '1') || (buf[0] == '8')) { + while (serv_getln(gcontent, sizeof gcontent), strcmp(gcontent, "000")) { + escputs(gcontent); + wprintf("
\n"); + } + wprintf("000"); + } + if (buf[0] == '4') { + text_to_server(bstr("g_input")); + serv_puts("000"); + } + if (buf[0] == '6') { + len = atol(&buf[4]); + junk = malloc(len); + serv_read(junk, len); + free(junk); + } + if (buf[0] == '7') { + len = atol(&buf[4]); + junk = malloc(len); + memset(junk, 0, len); + serv_write(junk, len); + free(junk); + } + wprintf("
"); + wprintf("Enter another command
\n"); + wprintf("Return to menu\n"); + do_template("endbox"); + wDumpContent(1); +} + + +/** + * \brief Display the menubar. + * \param as_single_page Set to display HTML headers and footers -- otherwise it's assumed + * that the menubar is being embedded in another page. + */ +void display_menubar(int as_single_page) { + + if (as_single_page) { + output_headers(0, 0, 0, 0, 0, 0); + wprintf("\n" + "\n" + "MenuBar\n" + "\n" + "\n"); + do_template("background"); + } + + do_template("menubar"); + + if (as_single_page) { + wDumpContent(2); + } + + +} + + +/*@}*/ diff --git a/webcit/messages.c b/webcit/messages.c new file mode 100644 index 000000000..cfce5f974 --- /dev/null +++ b/webcit/messages.c @@ -0,0 +1,3182 @@ +/* + * $Id$ + */ +/** + * \defgroup MsgDisp Functions which deal with the fetching and displaying of messages. + * \ingroup WebcitDisplayItems + * + */ +/*@{*/ +#include "webcit.h" +#include "vcard.h" +#include "webserver.h" +#include "groupdav.h" + +#define SUBJ_COL_WIDTH_PCT 50 /**< Mailbox view column width */ +#define SENDER_COL_WIDTH_PCT 30 /**< Mailbox view column width */ +#define DATE_PLUS_BUTTONS_WIDTH_PCT 20 /**< Mailbox view column width */ + +/** + * Address book entry (keep it short and sweet, it's just a quickie lookup + * which we can use to get to the real meat and bones later) + */ +struct addrbookent { + char ab_name[64]; /**< name string */ + long ab_msgnum; /**< message number of address book entry */ +}; + + + +#ifdef HAVE_ICONV + +/** + * \brief Wrapper around iconv_open() + * Our version adds aliases for non-standard Microsoft charsets + * such as 'MS950', aliasing them to names like 'CP950' + * + * \param tocode Target encoding + * \param fromcode Source encoding + */ +iconv_t ctdl_iconv_open(const char *tocode, const char *fromcode) +{ + iconv_t ic = (iconv_t)(-1) ; + ic = iconv_open(tocode, fromcode); + if (ic == (iconv_t)(-1) ) { + char alias_fromcode[64]; + if ( (strlen(fromcode) == 5) && (!strncasecmp(fromcode, "MS", 2)) ) { + safestrncpy(alias_fromcode, fromcode, sizeof alias_fromcode); + alias_fromcode[0] = 'C'; + alias_fromcode[1] = 'P'; + ic = iconv_open(tocode, alias_fromcode); + } + } + return(ic); +} + + +/** + * \brief Handle subjects with RFC2047 encoding + * such as: + * =?koi8-r?B?78bP0s3Mxc7JxSDXz9rE1dvO2c3JINvB0sHNySDP?= + * \param buf the stringbuffer to process + */ +void utf8ify_rfc822_string(char *buf) { + char *start, *end; + char newbuf[1024]; + char charset[128]; + char encoding[16]; + char istr[1024]; + iconv_t ic = (iconv_t)(-1) ; + char *ibuf; /**< Buffer of characters to be converted */ + char *obuf; /**< Buffer for converted characters */ + size_t ibuflen; /**< Length of input buffer */ + size_t obuflen; /**< Length of output buffer */ + char *isav; /**< Saved pointer to input buffer */ + char *osav; /**< Saved pointer to output buffer */ + int passes = 0; + int i; + int illegal_non_rfc2047_encoding = 0; + + /** Sometimes, badly formed messages contain strings which were simply + * written out directly in some foreign character set instead of + * using RFC2047 encoding. This is illegal but we will attempt to + * handle it anyway by converting from a user-specified default + * charset to UTF-8 if we see any nonprintable characters. + */ + for (i=0; i 126)) { + illegal_non_rfc2047_encoding = 1; + } + } + if (illegal_non_rfc2047_encoding) { + char default_header_charset[128]; + get_preference("default_header_charset", default_header_charset, sizeof default_header_charset); + if ( (strcasecmp(default_header_charset, "UTF-8")) && (strcasecmp(default_header_charset, "us-ascii")) ) { + ic = ctdl_iconv_open("UTF-8", default_header_charset); + if (ic != (iconv_t)(-1) ) { + ibuf = malloc(1024); + isav = ibuf; + safestrncpy(ibuf, buf, 1024); + ibuflen = strlen(ibuf); + obuflen = 1024; + obuf = (char *) malloc(obuflen); + osav = obuf; + iconv(ic, &ibuf, &ibuflen, &obuf, &obuflen); + osav[1024-obuflen] = 0; + strcpy(buf, osav); + free(osav); + iconv_close(ic); + free(isav); + } + } + } + + /** Now we handle foreign character sets properly encoded + * in RFC2047 format. + */ + while (start=strstr(buf, "=?"), end=strstr(buf, "?="), + ((start != NULL) && (end != NULL) && (end > start)) ) + { + extract_token(charset, start, 1, '?', sizeof charset); + extract_token(encoding, start, 2, '?', sizeof encoding); + extract_token(istr, start, 3, '?', sizeof istr); + + ibuf = malloc(1024); + isav = ibuf; + if (!strcasecmp(encoding, "B")) { /**< base64 */ + ibuflen = CtdlDecodeBase64(ibuf, istr, strlen(istr)); + } + else if (!strcasecmp(encoding, "Q")) { /**< quoted-printable */ + ibuflen = CtdlDecodeQuotedPrintable(ibuf, istr, strlen(istr)); + } + else { + strcpy(ibuf, istr); /**< unknown encoding */ + ibuflen = strlen(istr); + } + + ic = ctdl_iconv_open("UTF-8", charset); + if (ic != (iconv_t)(-1) ) { + obuflen = 1024; + obuf = (char *) malloc(obuflen); + osav = obuf; + iconv(ic, &ibuf, &ibuflen, &obuf, &obuflen); + osav[1024-obuflen] = 0; + + end = start; + end++; + strcpy(start, ""); + remove_token(end, 0, '?'); + remove_token(end, 0, '?'); + remove_token(end, 0, '?'); + remove_token(end, 0, '?'); + strcpy(end, &end[1]); + + snprintf(newbuf, sizeof newbuf, "%s%s%s", buf, osav, end); + strcpy(buf, newbuf); + free(osav); + iconv_close(ic); + } + else { + end = start; + end++; + strcpy(start, ""); + remove_token(end, 0, '?'); + remove_token(end, 0, '?'); + remove_token(end, 0, '?'); + remove_token(end, 0, '?'); + strcpy(end, &end[1]); + + snprintf(newbuf, sizeof newbuf, "%s(unreadable)%s", buf, end); + strcpy(buf, newbuf); + } + + free(isav); + + /** + * Since spammers will go to all sorts of absurd lengths to get their + * messages through, there are LOTS of corrupt headers out there. + * So, prevent a really badly formed RFC2047 header from throwing + * this function into an infinite loop. + */ + ++passes; + if (passes > 20) return; + } + +} +#endif + + + + +/** + * \brief RFC2047-encode a header field if necessary. + * If no non-ASCII characters are found, the string + * will be copied verbatim without encoding. + * + * \param target Target buffer. + * \param maxlen Maximum size of target buffer. + * \param source Source string to be encoded. + */ +void rfc2047encode(char *target, int maxlen, char *source) +{ + int need_to_encode = 0; + int i; + unsigned char ch; + + if (target == NULL) return; + + for (i=0; i 126)) { + need_to_encode = 1; + } + } + + if (!need_to_encode) { + safestrncpy(target, source, maxlen); + return; + } + + strcpy(target, "=?UTF-8?Q?"); + for (i=0; i 126) || (ch == 61)) { + sprintf(&target[strlen(target)], "=%02X", ch); + } + else { + sprintf(&target[strlen(target)], "%c", ch); + } + } + + strcat(target, "?="); +} + + + + +/** + * \brief Look for URL's embedded in a buffer and make them linkable. We use a + * target window in order to keep the BBS session in its own window. + * \param buf the message buffer + */ +void url(char *buf) +{ + + int pos; + int start, end; + char ench; + char urlbuf[SIZ]; + char outbuf[1024]; + + start = (-1); + end = strlen(buf); + ench = 0; + + for (pos = 0; pos < strlen(buf); ++pos) { + if (!strncasecmp(&buf[pos], "http://", 7)) + start = pos; + if (!strncasecmp(&buf[pos], "ftp://", 6)) + start = pos; + } + + if (start < 0) + return; + + if ((start > 0) && (buf[start - 1] == '<')) + ench = '>'; + if ((start > 0) && (buf[start - 1] == '[')) + ench = ']'; + if ((start > 0) && (buf[start - 1] == '(')) + ench = ')'; + if ((start > 0) && (buf[start - 1] == '{')) + ench = '}'; + + for (pos = strlen(buf); pos > start; --pos) { + if ((buf[pos] == ' ') || (buf[pos] == ench)) + end = pos; + } + + strncpy(urlbuf, &buf[start], end - start); + urlbuf[end - start] = 0; + + strncpy(outbuf, buf, start); + sprintf(&outbuf[start], "%ca href=%c%s%c TARGET=%c%s%c%c%s%c/A%c", + LB, QU, urlbuf, QU, QU, TARGET, QU, RB, urlbuf, LB, RB); + strcat(outbuf, &buf[end]); + if ( strlen(outbuf) < 250 ) + strcpy(buf, outbuf); +} + + +/** + * \brief Turn a vCard "n" (name) field into something displayable. + * \param name the name field to convert + */ +void vcard_n_prettyize(char *name) +{ + char *original_name; + int i; + + original_name = strdup(name); + for (i=0; i<5; ++i) { + if (strlen(original_name) > 0) { + if (original_name[strlen(original_name)-1] == ' ') { + original_name[strlen(original_name)-1] = 0; + } + if (original_name[strlen(original_name)-1] == ';') { + original_name[strlen(original_name)-1] = 0; + } + } + } + strcpy(name, ""); + for (i=0; i"); + name = vcard_get_prop(v, "fn", 1, 0, 0); + if (name != NULL) { + escputs(name); + } + else if (name = vcard_get_prop(v, "n", 1, 0, 0), name != NULL) { + strcpy(fullname, name); + vcard_n_prettyize(fullname); + escputs(fullname); + } + else { + wprintf(" "); + } + wprintf(""); + return; + } + + wprintf("
"); + for (pass=1; pass<=2; ++pass) { + + if (v->numprops) for (i=0; i<(v->numprops); ++i) { + + thisname = strdup(v->prop[i].name); + extract_token(firsttoken, thisname, 0, ';', sizeof firsttoken); + + for (j=0; jprop[i].value) + 50); + j = CtdlDecodeQuotedPrintable( + thisvalue, v->prop[i].value, + strlen(v->prop[i].value) ); + thisvalue[j] = 0; + } + else if (is_b64) { + thisvalue = malloc(strlen(v->prop[i].value) + 50); + CtdlDecodeBase64( + thisvalue, v->prop[i].value, + strlen(v->prop[i].value) ); + } + else { + thisvalue = strdup(v->prop[i].value); + } + + /** Various fields we may encounter ***/ + + /** N is name, but only if there's no FN already there */ + if (!strcasecmp(firsttoken, "n")) { + if (strlen(fullname) == 0) { + strcpy(fullname, thisvalue); + vcard_n_prettyize(fullname); + } + } + + /** FN (full name) is a true 'display name' field */ + else if (!strcasecmp(firsttoken, "fn")) { + strcpy(fullname, thisvalue); + } + + /** title */ + else if (!strcasecmp(firsttoken, "title")) { + strcpy(title, thisvalue); + } + + /** organization */ + else if (!strcasecmp(firsttoken, "org")) { + strcpy(org, thisvalue); + } + + else if (!strcasecmp(firsttoken, "email")) { + if (strlen(mailto) > 0) strcat(mailto, "
"); + strcat(mailto, + ""); + + strcat(mailto, "\">"); + stresc(&mailto[strlen(mailto)], thisvalue, 1, 1); + strcat(mailto, ""); + } + else if (!strcasecmp(firsttoken, "tel")) { + if (strlen(phone) > 0) strcat(phone, "
"); + strcat(phone, thisvalue); + for (j=0; j
\n"); + } + } + else if (!strcasecmp(firsttoken, "version")) { + /* ignore */ + } + else if (!strcasecmp(firsttoken, "rev")) { + /* ignore */ + } + else if (!strcasecmp(firsttoken, "label")) { + /* ignore */ + } + else { + + /*** Don't show extra fields. They're ugly. + if (pass == 2) { + wprintf("\n"); + } + ***/ + } + + free(thisname); + free(thisvalue); + } + + if (pass == 1) { + wprintf("" + "\n"); + + if (strlen(phone) > 0) { + wprintf("\n", phone); + } + if (strlen(mailto) > 0) { + wprintf("\n", mailto); + } + } + + } + + wprintf("
"); + wprintf(_("Address:")); + wprintf(""); + for (j=0; j 0) { + escputs(buf); + if (j<3) wprintf("
"); + else wprintf(" "); + } + } + wprintf("
"); + escputs(thisname); + wprintf(""); + escputs(thisvalue); + wprintf("
" + "" + ""); + escputs(fullname); + wprintf(""); + if (strlen(title) > 0) { + wprintf("
"); + escputs(title); + wprintf("
"); + } + if (strlen(org) > 0) { + wprintf("
"); + escputs(org); + wprintf("
"); + } + wprintf("
"); + wprintf(_("Telephone:")); + wprintf("%s
"); + wprintf(_("E-mail:")); + wprintf("%s
\n"); +} + + + +/** + * \brief Display a textual vCard + * (Converts to a vCard object and then calls the actual display function) + * Set 'full' to nonzero to display the whole card instead of a one-liner. + * Or, if "storename" is non-NULL, just store the person's name in that + * buffer instead of displaying the card at all. + * \param vcard_source the buffer containing the vcard text + * \param alpha what??? + * \param full should we usse all lines? + * \param storename where to store??? + */ +void display_vcard(char *vcard_source, char alpha, int full, char *storename) { + struct vCard *v; + char *name; + char buf[SIZ]; + char this_alpha = 0; + + v = vcard_load(vcard_source); + if (v == NULL) return; + + name = vcard_get_prop(v, "n", 1, 0, 0); + if (name != NULL) { + strcpy(buf, name); + this_alpha = buf[0]; + } + + if (storename != NULL) { + fetchname_parsed_vcard(v, storename); + } + else if ( (alpha == 0) + || ((isalpha(alpha)) && (tolower(alpha) == tolower(this_alpha)) ) + || ((!isalpha(alpha)) && (!isalpha(this_alpha))) + ) { + display_parsed_vcard(v, full); + } + + vcard_free(v); +} + + +/** + * \brief I wanna SEE that message! + * \param msgnum the citadel number of the message to display + * \param printable_view are we doing a print view? + * \param section Optional for encapsulated message/rfc822 submessage) + */ +void read_message(long msgnum, int printable_view, char *section) { + char buf[SIZ]; + char mime_partnum[256]; + char mime_filename[256]; + char mime_content_type[256]; + char mime_charset[256]; + char mime_disposition[256]; + int mime_length; + char mime_http[SIZ]; + char mime_submessages[256]; + char m_subject[256]; + char m_cc[1024]; + char from[256]; + char node[256]; + char rfca[256]; + char reply_to[512]; + char reply_all[4096]; + char now[64]; + int format_type = 0; + int nhdr = 0; + int bq = 0; + int i = 0; + char vcard_partnum[256]; + char cal_partnum[256]; + char *part_source = NULL; +#ifdef HAVE_ICONV + iconv_t ic = (iconv_t)(-1) ; + char *ibuf; /**< Buffer of characters to be converted */ + char *obuf; /**< Buffer for converted characters */ + size_t ibuflen; /**< Length of input buffer */ + size_t obuflen; /**< Length of output buffer */ + char *osav; /**< Saved pointer to output buffer */ +#endif + + strcpy(from, ""); + strcpy(node, ""); + strcpy(rfca, ""); + strcpy(reply_to, ""); + strcpy(reply_all, ""); + strcpy(vcard_partnum, ""); + strcpy(cal_partnum, ""); + strcpy(mime_http, ""); + strcpy(mime_content_type, "text/plain"); + strcpy(mime_charset, "us-ascii"); + strcpy(mime_submessages, ""); + + serv_printf("MSG4 %ld|%s", msgnum, section); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') { + wprintf(""); + wprintf(_("ERROR:")); + wprintf(" %s
\n", &buf[4]); + return; + } + + /** begin everythingamundo table */ + if (!printable_view) { + wprintf("
\n"); + wprintf("
\n"); + } + + /** begin message header table */ + wprintf("\n"); + + /** start msg buttons */ + if (!printable_view) { + wprintf(""); + } + + wprintf("
\n"); + + wprintf(""); + strcpy(m_subject, ""); + strcpy(m_cc, ""); + + while (serv_getln(buf, sizeof buf), strcasecmp(buf, "text")) { + if (!strcmp(buf, "000")) { + wprintf(""); + wprintf(_("unexpected end of message")); + wprintf("

\n"); + wprintf("
\n"); + return; + } + if (!strncasecmp(buf, "nhdr=yes", 8)) + nhdr = 1; + if (nhdr == 1) + buf[0] = '_'; + if (!strncasecmp(buf, "type=", 5)) + format_type = atoi(&buf[5]); + if (!strncasecmp(buf, "from=", 5)) { + strcpy(from, &buf[5]); + wprintf(_("from ")); + wprintf(""); + escputs(from); + wprintf(" "); + } + if (!strncasecmp(buf, "subj=", 5)) { + safestrncpy(m_subject, &buf[5], sizeof m_subject); + } + if (!strncasecmp(buf, "cccc=", 5)) { + safestrncpy(m_cc, &buf[5], sizeof m_cc); + if (strlen(reply_all) > 0) { + strcat(reply_all, ", "); + } + safestrncpy(&reply_all[strlen(reply_all)], &buf[5], + (sizeof reply_all - strlen(reply_all)) ); + } + if ((!strncasecmp(buf, "hnod=", 5)) + && (strcasecmp(&buf[5], serv_info.serv_humannode))) { + wprintf("(%s) ", &buf[5]); + } + if ((!strncasecmp(buf, "room=", 5)) + && (strcasecmp(&buf[5], WC->wc_roomname)) + && (strlen(&buf[5])>0) ) { + wprintf(_("in ")); + wprintf("%s> ", &buf[5]); + } + if (!strncasecmp(buf, "rfca=", 5)) { + strcpy(rfca, &buf[5]); + wprintf("<"); + escputs(rfca); + wprintf("> "); + } + + if (!strncasecmp(buf, "node=", 5)) { + strcpy(node, &buf[5]); + if ( ((WC->room_flags & QR_NETWORK) + || ((strcasecmp(&buf[5], serv_info.serv_nodename) + && (strcasecmp(&buf[5], serv_info.serv_fqdn))))) + && (strlen(rfca)==0) + ) { + wprintf("@%s ", &buf[5]); + } + } + if (!strncasecmp(buf, "rcpt=", 5)) { + wprintf(_("to ")); + if (strlen(reply_all) > 0) { + strcat(reply_all, ", "); + } + safestrncpy(&reply_all[strlen(reply_all)], &buf[5], + (sizeof reply_all - strlen(reply_all)) ); +#ifdef HAVE_ICONV + utf8ify_rfc822_string(&buf[5]); +#endif + escputs(&buf[5]); + wprintf(" "); + } + if (!strncasecmp(buf, "time=", 5)) { + fmt_date(now, atol(&buf[5]), 0); + wprintf("%s ", now); + } + + if (!strncasecmp(buf, "part=", 5)) { + extract_token(mime_filename, &buf[5], 1, '|', sizeof mime_filename); + extract_token(mime_partnum, &buf[5], 2, '|', sizeof mime_partnum); + extract_token(mime_disposition, &buf[5], 3, '|', sizeof mime_disposition); + extract_token(mime_content_type, &buf[5], 4, '|', sizeof mime_content_type); + mime_length = extract_int(&buf[5], 5); + + if (!strcasecmp(mime_content_type, "message/rfc822")) { + if (strlen(mime_submessages) > 0) { + strcat(mime_submessages, "|"); + } + strcat(mime_submessages, mime_partnum); + } + else if ((!strcasecmp(mime_disposition, "inline")) + && (!strncasecmp(mime_content_type, "image/", 6)) ){ + snprintf(&mime_http[strlen(mime_http)], + (sizeof(mime_http) - strlen(mime_http) - 1), + "", + msgnum, mime_partnum, mime_filename); + } + else if ( (!strcasecmp(mime_disposition, "attachment")) + || (!strcasecmp(mime_disposition, "inline")) ) { + snprintf(&mime_http[strlen(mime_http)], + (sizeof(mime_http) - strlen(mime_http) - 1), + "\n" + "%s (%s, %d bytes) [ " + "%s" + " | " + "%s" + " ]
\n", + mime_filename, + mime_content_type, mime_length, + msgnum, mime_partnum, mime_filename, + msgnum, mime_partnum, + _("View"), + msgnum, mime_partnum, mime_filename, + _("Download") + ); + } + + /** begin handler prep ***/ + if (!strcasecmp(mime_content_type, "text/x-vcard")) { + strcpy(vcard_partnum, mime_partnum); + } + + if (!strcasecmp(mime_content_type, "text/calendar")) { + strcpy(cal_partnum, mime_partnum); + } + + /** end handler prep ***/ + + } + + } + + /** Generate a reply-to address */ + if (strlen(rfca) > 0) { + strcpy(reply_to, rfca); + } + else { + if ( (strlen(node) > 0) + && (strcasecmp(node, serv_info.serv_nodename)) + && (strcasecmp(node, serv_info.serv_humannode)) ) { + snprintf(reply_to, sizeof(reply_to), "%s @ %s", + from, node); + } + else { + snprintf(reply_to, sizeof(reply_to), "%s", from); + } + } + + if (nhdr == 1) { + wprintf("****"); + } + + wprintf(""); +#ifdef HAVE_ICONV + utf8ify_rfc822_string(m_cc); + utf8ify_rfc822_string(m_subject); +#endif + if (strlen(m_cc) > 0) { + wprintf("
" + ""); + wprintf(_("CC:")); + wprintf(" "); + escputs(m_cc); + wprintf(""); + } + if (strlen(m_subject) > 0) { + wprintf("
" + ""); + wprintf(_("Subject:")); + wprintf(" "); + escputs(m_subject); + wprintf(""); + } + wprintf("
\n"); + + /** Reply */ + if ( (WC->wc_view == VIEW_MAILBOX) || (WC->wc_view == VIEW_BBS) ) { + wprintf("is_mailbox) { + wprintf("?replyquote=%ld", msgnum); + } + wprintf("?recp="); + urlescputs(reply_to); + if (strlen(m_subject) > 0) { + wprintf("?subject="); + if (strncasecmp(m_subject, "Re:", 3)) wprintf("Re:%20"); + urlescputs(m_subject); + } + wprintf("\">[%s] ", _("Reply")); + } + + /** ReplyQuoted */ + if ( (WC->wc_view == VIEW_MAILBOX) || (WC->wc_view == VIEW_BBS) ) { + if (!WC->is_mailbox) { + wprintf("[%s] ", _("ReplyQuoted")); + } + } + + /** ReplyAll */ + if (WC->wc_view == VIEW_MAILBOX) { + wprintf("[%s] ", _("ReplyAll")); + } + + /** Forward */ + if (WC->wc_view == VIEW_MAILBOX) { + wprintf("[%s] ", _("Forward")); + } + + /** If this is one of my own rooms, or if I'm an Aide or Room Aide, I can move/delete */ + if ( (WC->is_room_aide) || (WC->is_mailbox) ) { + /** Move */ + wprintf("[%s] ", + msgnum, _("Move")); + + /** Delete */ + wprintf("" + "[%s] ", msgnum, _("Delete this message?"), _("Delete") + ); + } + + /** Headers */ + wprintf("" + "[%s]", msgnum, msgnum, _("Headers")); + + + /** Print */ + wprintf("" + "[%s]", msgnum, msgnum, _("Print")); + + wprintf("
\n"); + + /** Begin body */ + wprintf("
"); + + /** + * Learn the content type + */ + strcpy(mime_content_type, "text/plain"); + while (serv_getln(buf, sizeof buf), (strlen(buf) > 0)) { + if (!strcmp(buf, "000")) { + wprintf(""); + wprintf(_("unexpected end of message")); + wprintf("

\n"); + goto ENDBODY; + } + if (!strncasecmp(buf, "Content-type: ", 14)) { + safestrncpy(mime_content_type, &buf[14], + sizeof(mime_content_type)); + for (i=0; i 0) && (isspace(buf[strlen(buf) - 1]))) + buf[strlen(buf) - 1] = 0; + if ((bq == 0) && + ((!strncmp(buf, ">", 1)) || (!strncmp(buf, " >", 2)) )) { + wprintf("
"); + bq = 1; + } else if ((bq == 1) && + (strncmp(buf, ">", 1)) && (strncmp(buf, " >", 2)) ) { + wprintf("
"); + bq = 0; + } + wprintf(""); + url(buf); + escputs(buf); + wprintf("
\n"); + } + wprintf("
"); + } + + else /** HTML is fun, but we've got to strip it first */ + if (!strcasecmp(mime_content_type, "text/html")) { + output_html(mime_charset, (WC->wc_view == VIEW_WIKI ? 1 : 0)); + } + + /** Unknown weirdness */ + else { + wprintf(_("I don't know how to display %s"), mime_content_type); + wprintf("
\n", mime_content_type); + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { } + } + + /** If there are attached submessages, display them now... */ + if ( (strlen(mime_submessages) > 0) && (!section[0]) ) { + for (i=0; i"); + read_message(msgnum, 1, buf); + wprintf(""); + } + } + + + /** Afterwards, offer links to download attachments 'n' such */ + if ( (strlen(mime_http) > 0) && (!section[0]) ) { + wprintf("%s", mime_http); + } + + /** Handler for vCard parts */ + if (strlen(vcard_partnum) > 0) { + part_source = load_mimepart(msgnum, vcard_partnum); + if (part_source != NULL) { + + /** If it's my vCard I can edit it */ + if ( (!strcasecmp(WC->wc_roomname, USERCONFIGROOM)) + || (!strcasecmp(&WC->wc_roomname[11], USERCONFIGROOM)) + || (WC->wc_view == VIEW_ADDRESSBOOK) + ) { + wprintf("", + msgnum, vcard_partnum); + wprintf("[%s]", _("edit")); + } + + /** In all cases, display the full card */ + display_vcard(part_source, 0, 1, NULL); + } + } + + /** Handler for calendar parts */ + if (strlen(cal_partnum) > 0) { + part_source = load_mimepart(msgnum, cal_partnum); + if (part_source != NULL) { + cal_process_attachment(part_source, + msgnum, cal_partnum); + } + } + + if (part_source) { + free(part_source); + part_source = NULL; + } + +ENDBODY: + wprintf("
\n"); + + /** end everythingamundo table */ + if (!printable_view) { + wprintf("
\n"); + wprintf("

\n"); + } + +#ifdef HAVE_ICONV + if (ic != (iconv_t)(-1) ) { + iconv_close(ic); + } +#endif +} + + + +/** + * \brief Unadorned HTML output of an individual message, suitable + * for placing in a hidden iframe, for printing, or whatever + * + * \param msgnum_as_string Message number, as a string instead of as a long int + */ +void embed_message(char *msgnum_as_string) { + long msgnum = 0L; + + msgnum = atol(msgnum_as_string); + begin_ajax_response(); + read_message(msgnum, 0, ""); + end_ajax_response(); +} + + +/** + * \brief Printable view of a message + * + * \param msgnum_as_string Message number, as a string instead of as a long int + */ +void print_message(char *msgnum_as_string) { + long msgnum = 0L; + + msgnum = atol(msgnum_as_string); + output_headers(0, 0, 0, 0, 0, 0); + + wprintf("Content-type: text/html\r\n" + "Server: %s\r\n" + "Connection: close\r\n", + SERVER); + begin_burst(); + + wprintf("\r\n\r\n\n" + "Printable view\n" + "\n" + ); + + read_message(msgnum, 1, ""); + + wprintf("\n\n\n"); + wDumpContent(0); +} + + + +/** + * \brief Display a message's headers + * + * \param msgnum_as_string Message number, as a string instead of as a long int + */ +void display_headers(char *msgnum_as_string) { + long msgnum = 0L; + char buf[1024]; + + msgnum = atol(msgnum_as_string); + output_headers(0, 0, 0, 0, 0, 0); + + wprintf("Content-type: text/plain\r\n" + "Server: %s\r\n" + "Connection: close\r\n", + SERVER); + begin_burst(); + + serv_printf("MSG2 %ld|3", msgnum); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + wprintf("%s\n", buf); + } + } + + wDumpContent(0); +} + + + +/** + * \brief Read message in simple, JavaScript-embeddable form for 'forward' + * or 'reply quoted' operations. + * + * NOTE: it is VITALLY IMPORTANT that we output no single-quotes or linebreaks + * in this function. Doing so would throw a JavaScript error in the + * 'supplied text' argument to the editor. + * + * \param msgnum Message number of the message we want to quote + * \param forward_attachments Nonzero if we want attachments to be forwarded + */ +void pullquote_message(long msgnum, int forward_attachments, int include_headers) { + char buf[SIZ]; + char mime_partnum[256]; + char mime_filename[256]; + char mime_content_type[256]; + char mime_charset[256]; + char mime_disposition[256]; + int mime_length; + char *attachments = NULL; + char *ptr = NULL; + int num_attachments = 0; + struct wc_attachment *att, *aptr; + char m_subject[256]; + char from[256]; + char node[256]; + char rfca[256]; + char reply_to[512]; + char now[256]; + int format_type = 0; + int nhdr = 0; + int bq = 0; + int i = 0; +#ifdef HAVE_ICONV + iconv_t ic = (iconv_t)(-1) ; + char *ibuf; /**< Buffer of characters to be converted */ + char *obuf; /**< Buffer for converted characters */ + size_t ibuflen; /**< Length of input buffer */ + size_t obuflen; /**< Length of output buffer */ + char *osav; /**< Saved pointer to output buffer */ +#endif + + strcpy(from, ""); + strcpy(node, ""); + strcpy(rfca, ""); + strcpy(reply_to, ""); + strcpy(mime_content_type, "text/plain"); + strcpy(mime_charset, "us-ascii"); + + serv_printf("MSG4 %ld", msgnum); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') { + wprintf(_("ERROR:")); + wprintf("%s
", &buf[4]); + return; + } + + strcpy(m_subject, ""); + + while (serv_getln(buf, sizeof buf), strcasecmp(buf, "text")) { + if (!strcmp(buf, "000")) { + wprintf(_("unexpected end of message")); + return; + } + if (include_headers) { + if (!strncasecmp(buf, "nhdr=yes", 8)) + nhdr = 1; + if (nhdr == 1) + buf[0] = '_'; + if (!strncasecmp(buf, "type=", 5)) + format_type = atoi(&buf[5]); + if (!strncasecmp(buf, "from=", 5)) { + strcpy(from, &buf[5]); + wprintf(_("from ")); +#ifdef HAVE_ICONV + utf8ify_rfc822_string(from); +#endif + msgescputs(from); + } + if (!strncasecmp(buf, "subj=", 5)) { + strcpy(m_subject, &buf[5]); + } + if ((!strncasecmp(buf, "hnod=", 5)) + && (strcasecmp(&buf[5], serv_info.serv_humannode))) { + wprintf("(%s) ", &buf[5]); + } + if ((!strncasecmp(buf, "room=", 5)) + && (strcasecmp(&buf[5], WC->wc_roomname)) + && (strlen(&buf[5])>0) ) { + wprintf(_("in ")); + wprintf("%s> ", &buf[5]); + } + if (!strncasecmp(buf, "rfca=", 5)) { + strcpy(rfca, &buf[5]); + wprintf("<"); + msgescputs(rfca); + wprintf("> "); + } + + if (!strncasecmp(buf, "node=", 5)) { + strcpy(node, &buf[5]); + if ( ((WC->room_flags & QR_NETWORK) + || ((strcasecmp(&buf[5], serv_info.serv_nodename) + && (strcasecmp(&buf[5], serv_info.serv_fqdn))))) + && (strlen(rfca)==0) + ) { + wprintf("@%s ", &buf[5]); + } + } + if (!strncasecmp(buf, "rcpt=", 5)) { + wprintf(_("to ")); + wprintf("%s ", &buf[5]); + } + if (!strncasecmp(buf, "time=", 5)) { + fmt_date(now, atol(&buf[5]), 0); + wprintf("%s ", now); + } + } + + /** + * Save attachment info for later. We can't start downloading them + * yet because we're in the middle of a server transaction. + */ + if (!strncasecmp(buf, "part=", 5)) { + ptr = malloc( (strlen(buf) + ((attachments != NULL) ? strlen(attachments) : 0)) ) ; + if (ptr != NULL) { + ++num_attachments; + sprintf(ptr, "%s%s\n", + ((attachments != NULL) ? attachments : ""), + &buf[5] + ); + free(attachments); + attachments = ptr; + lprintf(9, "attachments=<%s>\n", attachments); + } + } + + } + + if (include_headers) { + wprintf("
"); + +#ifdef HAVE_ICONV + utf8ify_rfc822_string(m_subject); +#endif + if (strlen(m_subject) > 0) { + wprintf(_("Subject:")); + wprintf(" "); + msgescputs(m_subject); + wprintf("
"); + } + + /** + * Begin body + */ + wprintf("
"); + } + + /** + * Learn the content type + */ + strcpy(mime_content_type, "text/plain"); + while (serv_getln(buf, sizeof buf), (strlen(buf) > 0)) { + if (!strcmp(buf, "000")) { + wprintf(_("unexpected end of message")); + goto ENDBODY; + } + if (!strncasecmp(buf, "Content-type: ", 14)) { + safestrncpy(mime_content_type, &buf[14], + sizeof(mime_content_type)); + for (i=0; i 0) && (isspace(buf[strlen(buf) - 1]))) + buf[strlen(buf) - 1] = 0; + if ((bq == 0) && + ((!strncmp(buf, ">", 1)) || (!strncmp(buf, " >", 2)) )) { + wprintf("
"); + bq = 1; + } else if ((bq == 1) && + (strncmp(buf, ">", 1)) && (strncmp(buf, " >", 2)) ) { + wprintf("
"); + bq = 0; + } + wprintf(""); + url(buf); + msgescputs(buf); + wprintf("
"); + } + wprintf("
"); + } + + /** HTML just gets escaped and stuffed back into the editor */ + else if (!strcasecmp(mime_content_type, "text/html")) { + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + strcat(buf, "\n"); + msgescputs(buf); + } + } + + /** Unknown weirdness ... don't know how to handle this content type */ + else { + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { } + } + +ENDBODY: + /** end of body handler */ + + /* + * If there were attachments, we have to download them and insert them + * into the attachment chain for the forwarded message we are composing. + */ + if ( (forward_attachments) && (num_attachments) ) { + for (i=0; ilength = mime_length; + strcpy(att->content_type, mime_content_type); + strcpy(att->filename, mime_filename); + att->next = NULL; + att->data = load_mimepart(msgnum, mime_partnum); + + /* And add it to the list. */ + if (WC->first_attachment == NULL) { + WC->first_attachment = att; + } + else { + aptr = WC->first_attachment; + while (aptr->next != NULL) aptr = aptr->next; + aptr->next = att; + } + } + + } + } + +#ifdef HAVE_ICONV + if (ic != (iconv_t)(-1) ) { + iconv_close(ic); + } +#endif + + if (attachments != NULL) { + free(attachments); + } +} + +/** + * \brief Display one row in the mailbox summary view + * + * \param num The row number to be displayed + */ +void display_summarized(int num) { + char datebuf[64]; + + wprintf("", + WC->summ[num].msgnum, + (WC->summ[num].is_new ? "bold" : "normal"), + WC->summ[num].msgnum + ); + + wprintf("", SUBJ_COL_WIDTH_PCT); + escputs(WC->summ[num].subj); + wprintf(""); + + wprintf("", SENDER_COL_WIDTH_PCT); + escputs(WC->summ[num].from); + wprintf(""); + + wprintf("", DATE_PLUS_BUTTONS_WIDTH_PCT); + fmt_date(datebuf, WC->summ[num].date, 1); /* brief */ + escputs(datebuf); + wprintf(""); + + wprintf("\n"); +} + + + +/** + * \brief display the adressbook overview + * \param msgnum the citadel message number + * \param alpha what???? + */ +void display_addressbook(long msgnum, char alpha) { + char buf[SIZ]; + char mime_partnum[SIZ]; + char mime_filename[SIZ]; + char mime_content_type[SIZ]; + char mime_disposition[SIZ]; + int mime_length; + char vcard_partnum[SIZ]; + char *vcard_source = NULL; + struct message_summary summ; + + memset(&summ, 0, sizeof(summ)); + safestrncpy(summ.subj, _("(no subject)"), sizeof summ.subj); + + sprintf(buf, "MSG0 %ld|1", msgnum); /* ask for headers only */ + serv_puts(buf); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') return; + + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + if (!strncasecmp(buf, "part=", 5)) { + extract_token(mime_filename, &buf[5], 1, '|', sizeof mime_filename); + extract_token(mime_partnum, &buf[5], 2, '|', sizeof mime_partnum); + extract_token(mime_disposition, &buf[5], 3, '|', sizeof mime_disposition); + extract_token(mime_content_type, &buf[5], 4, '|', sizeof mime_content_type); + mime_length = extract_int(&buf[5], 5); + + if (!strcasecmp(mime_content_type, "text/x-vcard")) { + strcpy(vcard_partnum, mime_partnum); + } + + } + } + + if (strlen(vcard_partnum) > 0) { + vcard_source = load_mimepart(msgnum, vcard_partnum); + if (vcard_source != NULL) { + + /** Display the summary line */ + display_vcard(vcard_source, alpha, 0, NULL); + + /** If it's my vCard I can edit it */ + if ( (!strcasecmp(WC->wc_roomname, USERCONFIGROOM)) + || (!strcasecmp(&WC->wc_roomname[11], USERCONFIGROOM)) + || (WC->wc_view == VIEW_ADDRESSBOOK) + ) { + wprintf("", + msgnum, vcard_partnum); + wprintf("[%s]", _("edit")); + } + + free(vcard_source); + } + } + +} + + + +/** + * \brief If it's an old "Firstname Lastname" style record, try to convert it. + * \param namebuf name to analyze, reverse if nescessary + */ +void lastfirst_firstlast(char *namebuf) { + char firstname[SIZ]; + char lastname[SIZ]; + int i; + + if (namebuf == NULL) return; + if (strchr(namebuf, ';') != NULL) return; + + i = num_tokens(namebuf, ' '); + if (i < 2) return; + + extract_token(lastname, namebuf, i-1, ' ', sizeof lastname); + remove_token(namebuf, i-1, ' '); + strcpy(firstname, namebuf); + sprintf(namebuf, "%s; %s", lastname, firstname); +} + +/** + * \brief fetch what??? name + * \param msgnum the citadel message number + * \param namebuf where to put the name in??? + */ +void fetch_ab_name(long msgnum, char *namebuf) { + char buf[SIZ]; + char mime_partnum[SIZ]; + char mime_filename[SIZ]; + char mime_content_type[SIZ]; + char mime_disposition[SIZ]; + int mime_length; + char vcard_partnum[SIZ]; + char *vcard_source = NULL; + int i; + struct message_summary summ; + + if (namebuf == NULL) return; + strcpy(namebuf, ""); + + memset(&summ, 0, sizeof(summ)); + safestrncpy(summ.subj, "(no subject)", sizeof summ.subj); + + sprintf(buf, "MSG0 %ld|1", msgnum); /** ask for headers only */ + serv_puts(buf); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') return; + + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + if (!strncasecmp(buf, "part=", 5)) { + extract_token(mime_filename, &buf[5], 1, '|', sizeof mime_filename); + extract_token(mime_partnum, &buf[5], 2, '|', sizeof mime_partnum); + extract_token(mime_disposition, &buf[5], 3, '|', sizeof mime_disposition); + extract_token(mime_content_type, &buf[5], 4, '|', sizeof mime_content_type); + mime_length = extract_int(&buf[5], 5); + + if (!strcasecmp(mime_content_type, "text/x-vcard")) { + strcpy(vcard_partnum, mime_partnum); + } + + } + } + + if (strlen(vcard_partnum) > 0) { + vcard_source = load_mimepart(msgnum, vcard_partnum); + if (vcard_source != NULL) { + + /* Grab the name off the card */ + display_vcard(vcard_source, 0, 0, namebuf); + + free(vcard_source); + } + } + + lastfirst_firstlast(namebuf); + striplt(namebuf); + for (i=0; iab_name), + (((const struct addrbookent *)ab2)->ab_name) + )); +} + + +/** + * \brief Helper function for do_addrbook_view() + * Converts a name into a three-letter tab label + * \param tabbuf the tabbuffer to add name to + * \param name the name to add to the tabbuffer + */ +void nametab(char *tabbuf, char *name) { + stresc(tabbuf, name, 0, 0); + tabbuf[0] = toupper(tabbuf[0]); + tabbuf[1] = tolower(tabbuf[1]); + tabbuf[2] = tolower(tabbuf[2]); + tabbuf[3] = 0; +} + + +/** + * \brief Render the address book using info we gathered during the scan + * \param addrbook the addressbook to render + * \param num_ab the number of the addressbook + */ +void do_addrbook_view(struct addrbookent *addrbook, int num_ab) { + int i = 0; + int displayed = 0; + int bg = 0; + static int NAMESPERPAGE = 60; + int num_pages = 0; + int page = 0; + int tabfirst = 0; + char tabfirst_label[SIZ]; + int tablast = 0; + char tablast_label[SIZ]; + + if (num_ab == 0) { + wprintf("


"); + wprintf(_("This address book is empty.")); + wprintf("
\n"); + return; + } + + if (num_ab > 1) { + qsort(addrbook, num_ab, sizeof(struct addrbookent), abcmp); + } + + num_pages = num_ab / NAMESPERPAGE; + + page = atoi(bstr("page")); + + wprintf("Page: "); + for (i=0; i<=num_pages; ++i) { + if (i != page) { + wprintf("", i); + } + else { + wprintf(""); + } + tabfirst = i * NAMESPERPAGE; + tablast = tabfirst + NAMESPERPAGE - 1; + if (tablast > (num_ab - 1)) tablast = (num_ab - 1); + nametab(tabfirst_label, addrbook[tabfirst].ab_name); + nametab(tablast_label, addrbook[tablast].ab_name); + wprintf("[%s - %s]", + tabfirst_label, tablast_label + ); + if (i != page) { + wprintf("\n"); + } + else { + wprintf("\n"); + } + } + wprintf("
\n"); + + wprintf("\n" + ); + + for (i=0; i 0) { + wprintf("\n"); + } + bg = 1 - bg; + wprintf("", + (bg ? "DDDDDD" : "FFFFFF") + ); + } + + wprintf("\n"); + ++displayed; + } + } + + wprintf("
"); + + wprintf("", bstr("alpha")); + vcard_n_prettyize(addrbook[i].ab_name); + escputs(addrbook[i].ab_name); + wprintf("
\n"); +} + + + +/** + * \brief load message pointers from the server + * \param servcmd the citadel command to send to the citserver + * \param with_headers what headers??? + */ +int load_msg_ptrs(char *servcmd, int with_headers) +{ + char buf[1024]; + time_t datestamp; + char fullname[128]; + char nodename[128]; + char inetaddr[128]; + char subject[256]; + int nummsgs; + int maxload = 0; + + int num_summ_alloc = 0; + + if (WC->summ != NULL) { + free(WC->summ); + WC->num_summ = 0; + WC->summ = NULL; + } + num_summ_alloc = 100; + WC->num_summ = 0; + WC->summ = malloc(num_summ_alloc * sizeof(struct message_summary)); + + nummsgs = 0; + maxload = sizeof(WC->msgarr) / sizeof(long) ; + serv_puts(servcmd); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') { + return (nummsgs); + } + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + if (nummsgs < maxload) { + WC->msgarr[nummsgs] = extract_long(buf, 0); + datestamp = extract_long(buf, 1); + extract_token(fullname, buf, 2, '|', sizeof fullname); + extract_token(nodename, buf, 3, '|', sizeof nodename); + extract_token(inetaddr, buf, 4, '|', sizeof inetaddr); + extract_token(subject, buf, 5, '|', sizeof subject); + ++nummsgs; + + if (with_headers) { + if (nummsgs > num_summ_alloc) { + num_summ_alloc *= 2; + WC->summ = realloc(WC->summ, + num_summ_alloc * sizeof(struct message_summary)); + } + ++WC->num_summ; + + memset(&WC->summ[nummsgs-1], 0, sizeof(struct message_summary)); + WC->summ[nummsgs-1].msgnum = WC->msgarr[nummsgs-1]; + safestrncpy(WC->summ[nummsgs-1].subj, + _("(no subject)"), sizeof WC->summ[nummsgs-1].subj); + if (strlen(fullname) > 0) { + safestrncpy(WC->summ[nummsgs-1].from, + fullname, sizeof WC->summ[nummsgs-1].from); + } + if (strlen(subject) > 0) { + safestrncpy(WC->summ[nummsgs-1].subj, subject, + sizeof WC->summ[nummsgs-1].subj); + } +#ifdef HAVE_ICONV + /** Handle subjects with RFC2047 encoding */ + utf8ify_rfc822_string(WC->summ[nummsgs-1].subj); +#endif + if (strlen(WC->summ[nummsgs-1].subj) > 75) { + strcpy(&WC->summ[nummsgs-1].subj[72], "..."); + } + + if (strlen(nodename) > 0) { + if ( ((WC->room_flags & QR_NETWORK) + || ((strcasecmp(nodename, serv_info.serv_nodename) + && (strcasecmp(nodename, serv_info.serv_fqdn))))) + ) { + strcat(WC->summ[nummsgs-1].from, " @ "); + strcat(WC->summ[nummsgs-1].from, nodename); + } + } + + WC->summ[nummsgs-1].date = datestamp; + +#ifdef HAVE_ICONV + /** Handle senders with RFC2047 encoding */ + utf8ify_rfc822_string(WC->summ[nummsgs-1].from); +#endif + if (strlen(WC->summ[nummsgs-1].from) > 25) { + strcpy(&WC->summ[nummsgs-1].from[22], "..."); + } + } + } + } + return (nummsgs); +} + +/** + * \brief qsort() compatible function to compare two longs in descending order. + * + * \param s1 first number to compare + * \param s2 second number to compare + */ +int longcmp_r(const void *s1, const void *s2) { + long l1; + long l2; + + l1 = *(long *)s1; + l2 = *(long *)s2; + + if (l1 > l2) return(-1); + if (l1 < l2) return(+1); + return(0); +} + + +/** + * \brief qsort() compatible function to compare two message summary structs by ascending subject. + * + * \param s1 first item to compare + * \param s2 second item to compare + */ +int summcmp_subj(const void *s1, const void *s2) { + struct message_summary *summ1; + struct message_summary *summ2; + + summ1 = (struct message_summary *)s1; + summ2 = (struct message_summary *)s2; + return strcasecmp(summ1->subj, summ2->subj); +} + +/** + * \brief qsort() compatible function to compare two message summary structs by descending subject. + * + * \param s1 first item to compare + * \param s2 second item to compare + */ +int summcmp_rsubj(const void *s1, const void *s2) { + struct message_summary *summ1; + struct message_summary *summ2; + + summ1 = (struct message_summary *)s1; + summ2 = (struct message_summary *)s2; + return strcasecmp(summ2->subj, summ1->subj); +} + +/** + * \brief qsort() compatible function to compare two message summary structs by ascending sender. + * + * \param s1 first item to compare + * \param s2 second item to compare + */ +int summcmp_sender(const void *s1, const void *s2) { + struct message_summary *summ1; + struct message_summary *summ2; + + summ1 = (struct message_summary *)s1; + summ2 = (struct message_summary *)s2; + return strcasecmp(summ1->from, summ2->from); +} + +/** + * \brief qsort() compatible function to compare two message summary structs by descending sender. + * + * \param s1 first item to compare + * \param s2 second item to compare + */ +int summcmp_rsender(const void *s1, const void *s2) { + struct message_summary *summ1; + struct message_summary *summ2; + + summ1 = (struct message_summary *)s1; + summ2 = (struct message_summary *)s2; + return strcasecmp(summ2->from, summ1->from); +} + +/** + * \brief qsort() compatible function to compare two message summary structs by ascending date. + * + * \param s1 first item to compare + * \param s2 second item to compare + */ +int summcmp_date(const void *s1, const void *s2) { + struct message_summary *summ1; + struct message_summary *summ2; + + summ1 = (struct message_summary *)s1; + summ2 = (struct message_summary *)s2; + + if (summ1->date < summ2->date) return -1; + else if (summ1->date > summ2->date) return +1; + else return 0; +} + +/** + * \brief qsort() compatible function to compare two message summary structs by descending date. + * + * \param s1 first item to compare + * \param s2 second item to compare + */ +int summcmp_rdate(const void *s1, const void *s2) { + struct message_summary *summ1; + struct message_summary *summ2; + + summ1 = (struct message_summary *)s1; + summ2 = (struct message_summary *)s2; + + if (summ1->date < summ2->date) return +1; + else if (summ1->date > summ2->date) return -1; + else return 0; +} + + + +/** + * \brief command loop for reading messages + * + * \param oper Set to "readnew" or "readold" or "readfwd" or "headers" + */ +void readloop(char *oper) +{ + char cmd[SIZ]; + char buf[SIZ]; + char old_msgs[SIZ]; + int a, b; + int nummsgs; + long startmsg; + int maxmsgs; + long *displayed_msgs = NULL; + int num_displayed = 0; + int is_summary = 0; + int is_addressbook = 0; + int is_singlecard = 0; + int is_calendar = 0; + int is_tasks = 0; + int is_notes = 0; + int is_bbview = 0; + int lo, hi; + int lowest_displayed = (-1); + int highest_displayed = 0; + struct addrbookent *addrbook = NULL; + int num_ab = 0; + char *sortby = NULL; + char sortpref_name[128]; + char sortpref_value[128]; + char *subjsort_button; + char *sendsort_button; + char *datesort_button; + int bbs_reverse = 0; + + if (WC->wc_view == VIEW_WIKI) { + sprintf(buf, "wiki?room=%s?page=home", WC->wc_roomname); + http_redirect(buf); + return; + } + + startmsg = atol(bstr("startmsg")); + maxmsgs = atoi(bstr("maxmsgs")); + is_summary = atoi(bstr("summary")); + if (maxmsgs == 0) maxmsgs = DEFAULT_MAXMSGS; + + snprintf(sortpref_name, sizeof sortpref_name, "sort %s", WC->wc_roomname); + get_preference(sortpref_name, sortpref_value, sizeof sortpref_value); + + sortby = bstr("sortby"); + if ( (strlen(sortby) > 0) && (strcasecmp(sortby, sortpref_value)) ) { + set_preference(sortpref_name, sortby, 1); + } + if (strlen(sortby) == 0) sortby = sortpref_value; + + /** mailbox sort */ + if (strlen(sortby) == 0) sortby = "rdate"; + + /** message board sort */ + if (!strcasecmp(sortby, "reverse")) { + bbs_reverse = 1; + } + else { + bbs_reverse = 0; + } + + output_headers(1, 1, 1, 0, 0, 0); + + /** + * When in summary mode, always show ALL messages instead of just + * new or old. Otherwise, show what the user asked for. + */ + if (!strcmp(oper, "readnew")) { + strcpy(cmd, "MSGS NEW"); + } + else if (!strcmp(oper, "readold")) { + strcpy(cmd, "MSGS OLD"); + } + else { + strcpy(cmd, "MSGS ALL"); + } + + if ((WC->wc_view == VIEW_MAILBOX) && (maxmsgs > 1)) { + is_summary = 1; + strcpy(cmd, "MSGS ALL"); + } + + if ((WC->wc_view == VIEW_ADDRESSBOOK) && (maxmsgs > 1)) { + is_addressbook = 1; + strcpy(cmd, "MSGS ALL"); + maxmsgs = 9999999; + } + + if (is_summary) { + strcpy(cmd, "MSGS ALL|||1"); /**< fetch header summary */ + startmsg = 1; + maxmsgs = 9999999; + } + + /** + * Are we doing a summary view? If so, we need to know old messages + * and new messages, so we can do that pretty boldface thing for the + * new messages. + */ + strcpy(old_msgs, ""); + if (is_summary) { + serv_puts("GTSN"); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + strcpy(old_msgs, &buf[4]); + } + } + + is_singlecard = atoi(bstr("is_singlecard")); + + if (WC->wc_default_view == VIEW_CALENDAR) { /**< calendar */ + is_calendar = 1; + strcpy(cmd, "MSGS ALL"); + maxmsgs = 32767; + } + if (WC->wc_default_view == VIEW_TASKS) { /**< tasks */ + is_tasks = 1; + strcpy(cmd, "MSGS ALL"); + maxmsgs = 32767; + } + if (WC->wc_default_view == VIEW_NOTES) { /**< notes */ + is_notes = 1; + strcpy(cmd, "MSGS ALL"); + maxmsgs = 32767; + } + + if (is_notes) { + wprintf("
%s
\n", _("Click on any note to edit it.")); + wprintf("
\n"); + } + + nummsgs = load_msg_ptrs(cmd, is_summary); + if (nummsgs == 0) { + + if ((!is_tasks) && (!is_calendar) && (!is_notes) && (!is_addressbook)) { + wprintf(""); + if (!strcmp(oper, "readnew")) { + wprintf(_("No new messages.")); + } else if (!strcmp(oper, "readold")) { + wprintf(_("No old messages.")); + } else { + wprintf(_("No messages here.")); + } + wprintf("\n"); + } + + goto DONE; + } + + if (is_summary) { + for (a = 0; a < nummsgs; ++a) { + /** Are you a new message, or an old message? */ + if (is_summary) { + if (is_msg_in_mset(old_msgs, WC->msgarr[a])) { + WC->summ[a].is_new = 0; + } + else { + WC->summ[a].is_new = 1; + } + } + } + } + + if (startmsg == 0L) { + if (bbs_reverse) { + startmsg = WC->msgarr[(nummsgs >= maxmsgs) ? (nummsgs - maxmsgs) : 0]; + } + else { + startmsg = WC->msgarr[0]; + } + } + + if (is_summary) { + if (!strcasecmp(sortby, "subject")) { + qsort(WC->summ, WC->num_summ, + sizeof(struct message_summary), summcmp_subj); + } + else if (!strcasecmp(sortby, "rsubject")) { + qsort(WC->summ, WC->num_summ, + sizeof(struct message_summary), summcmp_rsubj); + } + else if (!strcasecmp(sortby, "sender")) { + qsort(WC->summ, WC->num_summ, + sizeof(struct message_summary), summcmp_sender); + } + else if (!strcasecmp(sortby, "rsender")) { + qsort(WC->summ, WC->num_summ, + sizeof(struct message_summary), summcmp_rsender); + } + else if (!strcasecmp(sortby, "date")) { + qsort(WC->summ, WC->num_summ, + sizeof(struct message_summary), summcmp_date); + } + else if (!strcasecmp(sortby, "rdate")) { + qsort(WC->summ, WC->num_summ, + sizeof(struct message_summary), summcmp_rdate); + } + } + + if (!strcasecmp(sortby, "subject")) { + subjsort_button = "" ; + } + else if (!strcasecmp(sortby, "rsubject")) { + subjsort_button = "" ; + } + else { + subjsort_button = "" ; + } + + if (!strcasecmp(sortby, "sender")) { + sendsort_button = "" ; + } + else if (!strcasecmp(sortby, "rsender")) { + sendsort_button = "" ; + } + else { + sendsort_button = "" ; + } + + if (!strcasecmp(sortby, "date")) { + datesort_button = "" ; + } + else if (!strcasecmp(sortby, "rdate")) { + datesort_button = "" ; + } + else { + datesort_button = "" ; + } + + if (is_summary) { + wprintf("
\n"); /** end of 'content' div */ + + wprintf("\n" + ); + + /** note that Date and Delete are now in the same column */ + wprintf("
" + "
" + "" + "" + ); + wprintf("" + "" + "" + "\n" + , + SUBJ_COL_WIDTH_PCT, + _("Subject"), subjsort_button, + SENDER_COL_WIDTH_PCT, + _("Sender"), sendsort_button, + DATE_PLUS_BUTTONS_WIDTH_PCT, + _("Date"), datesort_button, + _("Delete") + ); + wprintf("
%s %s%s %s%s %s" + " " + "" + "
\n"); + + wprintf("
" + + "
\n" + + "" + ); + } + + for (a = 0; a < nummsgs; ++a) { + if ((WC->msgarr[a] >= startmsg) && (num_displayed < maxmsgs)) { + + /** Display the message */ + if (is_summary) { + display_summarized(a); + } + else if (is_addressbook) { + fetch_ab_name(WC->msgarr[a], buf); + ++num_ab; + addrbook = realloc(addrbook, + (sizeof(struct addrbookent) * num_ab) ); + safestrncpy(addrbook[num_ab-1].ab_name, buf, + sizeof(addrbook[num_ab-1].ab_name)); + addrbook[num_ab-1].ab_msgnum = WC->msgarr[a]; + } + else if (is_calendar) { + display_calendar(WC->msgarr[a]); + } + else if (is_tasks) { + display_task(WC->msgarr[a]); + } + else if (is_notes) { + display_note(WC->msgarr[a]); + } + else { + if (displayed_msgs == NULL) { + displayed_msgs = malloc(sizeof(long) * + (maxmsgsmsgarr[a]; + } + + if (lowest_displayed < 0) lowest_displayed = a; + highest_displayed = a; + + ++num_displayed; + } + } + + /** + * Set the "is_bbview" variable if it appears that we are looking at + * a classic bulletin board view. + */ + if ((!is_tasks) && (!is_calendar) && (!is_addressbook) + && (!is_notes) && (!is_singlecard) && (!is_summary)) { + is_bbview = 1; + } + + /** Output loop */ + if (displayed_msgs != NULL) { + if (bbs_reverse) { + qsort(displayed_msgs, num_displayed, sizeof(long), longcmp_r); + } + + /** if we do a split bbview in the future, begin messages div here */ + + for (a=0; a" + "\n"); /**< end of 'fix_scrollbar_bug' div */ + wprintf(""); /**< end of 'message_list' div */ + + /** Here's the grab-it-to-resize-the-message-list widget */ + wprintf("
" + "
" + "
" + "
\n" + ); + + wprintf("
"); /**< The preview pane will initially be empty */ + } + + /** + * Bump these because although we're thinking in zero base, the user + * is a drooling idiot and is thinking in one base. + */ + ++lowest_displayed; + ++highest_displayed; + + /** + * If we're not currently looking at ALL requested + * messages, then display the selector bar + */ + if (is_bbview) { + /** begin bbview scroller */ + wprintf("
"); + wprintf(_("Reading #"), lowest_displayed, highest_displayed); + + wprintf(" "); + wprintf(_("of %d messages."), nummsgs); + + /** forward/reverse */ + wprintf(" 
\n"); + /** end bbview scroller */ + } + +DONE: + if (is_tasks) { + do_tasks_view(); /** Render the task list */ + } + + if (is_calendar) { + do_calendar_view(); /** Render the calendar */ + } + + if (is_addressbook) { + do_addrbook_view(addrbook, num_ab); /** Render the address book */ + } + + /** Note: wDumpContent() will output one additional
tag. */ + wDumpContent(1); + if (addrbook != NULL) free(addrbook); + + /** free the summary */ + if (WC->summ != NULL) { + free(WC->summ); + WC->num_summ = 0; + WC->summ = NULL; + } +} + + +/** + * \brief Back end for post_message() + * ... this is where the actual message gets transmitted to the server. + */ +void post_mime_to_server(void) { + char boundary[SIZ]; + int is_multipart = 0; + static int seq = 0; + struct wc_attachment *att; + char *encoded; + size_t encoded_length; + + /** RFC2045 requires this, and some clients look for it... */ + serv_puts("MIME-Version: 1.0"); + + /** If there are attachments, we have to do multipart/mixed */ + if (WC->first_attachment != NULL) { + is_multipart = 1; + } + + if (is_multipart) { + sprintf(boundary, "=_Citadel_Multipart_%s_%04x%04x", + serv_info.serv_fqdn, + getpid(), + ++seq + ); + + /** Remember, serv_printf() appends an extra newline */ + serv_printf("Content-type: multipart/mixed; " + "boundary=\"%s\"\n", boundary); + serv_printf("This is a multipart message in MIME format.\n"); + serv_printf("--%s", boundary); + } + + serv_puts("Content-type: text/html; charset=utf-8"); + serv_puts("Content-Transfer-Encoding: quoted-printable"); + serv_puts(""); + serv_puts("\r\n"); + text_to_server_qp(bstr("msgtext")); /** Transmit message in quoted-printable encoding */ + serv_puts("\r\n"); + + if (is_multipart) { + + /** Add in the attachments */ + for (att = WC->first_attachment; att!=NULL; att=att->next) { + + encoded_length = ((att->length * 150) / 100); + encoded = malloc(encoded_length); + if (encoded == NULL) break; + CtdlEncodeBase64(encoded, att->data, att->length); + + serv_printf("--%s", boundary); + serv_printf("Content-type: %s", att->content_type); + serv_printf("Content-disposition: attachment; " + "filename=\"%s\"", att->filename); + serv_puts("Content-transfer-encoding: base64"); + serv_puts(""); + serv_write(encoded, strlen(encoded)); + serv_puts(""); + serv_puts(""); + free(encoded); + } + serv_printf("--%s--", boundary); + } + + serv_puts("000"); +} + + +/** + * \brief Post message (or don't post message) + * + * Note regarding the "dont_post" variable: + * A random value (actually, it's just a timestamp) is inserted as a hidden + * field called "postseq" when the display_enter page is generated. This + * value is checked when posting, using the static variable dont_post. If a + * user attempts to post twice using the same dont_post value, the message is + * discarded. This prevents the accidental double-saving of the same message + * if the user happens to click the browser "back" button. + */ +void post_message(void) +{ + char buf[1024]; + char encoded_subject[1024]; + static long dont_post = (-1L); + struct wc_attachment *att, *aptr; + int is_anonymous = 0; + + if (!strcasecmp(bstr("is_anonymous"), "yes")) { + is_anonymous = 1; + } + + if (WC->upload_length > 0) { + + /** There's an attachment. Save it to this struct... */ + att = malloc(sizeof(struct wc_attachment)); + memset(att, 0, sizeof(struct wc_attachment)); + att->length = WC->upload_length; + strcpy(att->content_type, WC->upload_content_type); + strcpy(att->filename, WC->upload_filename); + att->next = NULL; + + /** And add it to the list. */ + if (WC->first_attachment == NULL) { + WC->first_attachment = att; + } + else { + aptr = WC->first_attachment; + while (aptr->next != NULL) aptr = aptr->next; + aptr->next = att; + } + + /** + * Mozilla sends a simple filename, which is what we want, + * but Satan's Browser sends an entire pathname. Reduce + * the path to just a filename if we need to. + */ + while (num_tokens(att->filename, '/') > 1) { + remove_token(att->filename, 0, '/'); + } + while (num_tokens(att->filename, '\\') > 1) { + remove_token(att->filename, 0, '\\'); + } + + /** + * Transfer control of this memory from the upload struct + * to the attachment struct. + */ + att->data = WC->upload; + WC->upload_length = 0; + WC->upload = NULL; + display_enter(); + return; + } + + if (strlen(bstr("cancel_button")) > 0) { + sprintf(WC->ImportantMessage, + _("Cancelled. Message was not posted.")); + } else if (strlen(bstr("attach_button")) > 0) { + display_enter(); + return; + } else if (atol(bstr("postseq")) == dont_post) { + sprintf(WC->ImportantMessage, + _("Automatically cancelled because you have already " + "saved this message.")); + } else { + rfc2047encode(encoded_subject, sizeof encoded_subject, bstr("subject")); + sprintf(buf, "ENT0 1|%s|%d|4|%s|||%s|%s|%s", + bstr("recp"), + is_anonymous, + encoded_subject, + bstr("cc"), + bstr("bcc"), + bstr("wikipage") + ); + serv_puts(buf); + serv_getln(buf, sizeof buf); + if (buf[0] == '4') { + post_mime_to_server(); + if ( (strlen(bstr("recp")) > 0) + || (strlen(bstr("cc")) > 0) + || (strlen(bstr("bcc")) > 0) + ) { + sprintf(WC->ImportantMessage, _("Message has been sent.\n")); + } + else { + sprintf(WC->ImportantMessage, _("Message has been posted.\n")); + } + dont_post = atol(bstr("postseq")); + } else { + sprintf(WC->ImportantMessage, "%s", &buf[4]); + display_enter(); + return; + } + } + + free_attachments(WC); + + /** + * We may have been supplied with instructions regarding the location + * to which we must return after posting. If found, go there. + */ + if (strlen(bstr("return_to")) > 0) { + http_redirect(bstr("return_to")); + } + /** + * If we were editing a page in a wiki room, go to that page now. + */ + else if (strlen(bstr("wikipage")) > 0) { + snprintf(buf, sizeof buf, "wiki?page=%s", bstr("wikipage")); + http_redirect(buf); + } + /** + * Otherwise, just go to the "read messages" loop. + */ + else { + readloop("readnew"); + } +} + + + + +/** + * \brief display the message entry screen + */ +void display_enter(void) +{ + char buf[SIZ]; + char ebuf[SIZ]; + long now; + struct wc_attachment *att; + int recipient_required = 0; + int recipient_bad = 0; + int i; + int is_anonymous = 0; + long existing_page = (-1L); + + if (strlen(bstr("force_room")) > 0) { + gotoroom(bstr("force_room")); + } + + if (!strcasecmp(bstr("is_anonymous"), "yes")) { + is_anonymous = 1; + } + + /** + * Are we perhaps in an address book view? If so, then an "enter + * message" command really means "add new entry." + */ + if (WC->wc_default_view == VIEW_ADDRESSBOOK) { + do_edit_vcard(-1, "", ""); + return; + } + +#ifdef WEBCIT_WITH_CALENDAR_SERVICE + /** + * Are we perhaps in a calendar room? If so, then an "enter + * message" command really means "add new calendar item." + */ + if (WC->wc_default_view == VIEW_CALENDAR) { + display_edit_event(); + return; + } + + /** + * Are we perhaps in a tasks view? If so, then an "enter + * message" command really means "add new task." + */ + if (WC->wc_default_view == VIEW_TASKS) { + display_edit_task(); + return; + } +#endif + + /** + * Otherwise proceed normally. + * Do a custom room banner with no navbar... + */ + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n"); + embed_room_banner(NULL, navbar_none); + wprintf("
\n"); + wprintf("
\n" + "
" + "
"); + + /** First test to see whether this is a room that requires recipients to be entered */ + serv_puts("ENT0 0"); + serv_getln(buf, sizeof buf); + if (!strncmp(buf, "570", 3)) { /** 570 means that we need a recipient here */ + recipient_required = 1; + } + else if (buf[0] != '2') { /** Any other error means that we cannot continue */ + wprintf("%s
\n", &buf[4]); + goto DONE; + } + + /** Now check our actual recipients if there are any */ + if (recipient_required) { + sprintf(buf, "ENT0 0|%s|%d|0||||%s|%s|%s", bstr("recp"), is_anonymous, + bstr("cc"), bstr("bcc"), bstr("wikipage")); + serv_puts(buf); + serv_getln(buf, sizeof buf); + + if (!strncmp(buf, "570", 3)) { /** 570 means we have an invalid recipient listed */ + if (strlen(bstr("recp")) + strlen(bstr("cc")) + strlen(bstr("bcc")) > 0) { + recipient_bad = 1; + } + } + else if (buf[0] != '2') { /** Any other error means that we cannot continue */ + wprintf("%s
\n", &buf[4]); + goto DONE; + } + } + + /** If we got this far, we can display the message entry screen. */ + + now = time(NULL); + fmt_date(buf, now, 0); + strcat(&buf[strlen(buf)], _(" from ")); + stresc(&buf[strlen(buf)], WC->wc_fullname, 1, 1); + + /* Don't need this anymore, it's in the input box below + if (strlen(bstr("recp")) > 0) { + strcat(&buf[strlen(buf)], _(" to ")); + stresc(&buf[strlen(buf)], bstr("recp"), 1, 1); + } + */ + + strcat(&buf[strlen(buf)], _(" in ")); + stresc(&buf[strlen(buf)], WC->wc_roomname, 1, 1); + + /** begin message entry screen */ + wprintf("
\n"); + wprintf("\n", now); + if (WC->wc_view == VIEW_WIKI) { + wprintf("\n", bstr("wikipage")); + } + wprintf("\n", bstr("return_to")); + + wprintf("\""); + wprintf("%s\n", buf); /** header bar */ + if (WC->room_flags & QR_ANONOPT) { + wprintf(" " + "", + (is_anonymous ? "checked" : "") + ); + wprintf("Anonymous"); + } + wprintf("
\n"); /** header bar */ + + wprintf("\n"); + if (recipient_required) { + + wprintf("\n"); + + wprintf("\n"); + + wprintf("\n"); + + /** Initialize the autocomplete ajax helpers (found in wclib.js) */ + wprintf(" \n" + ); + } + + wprintf("
"); + wprintf(""); + wprintf(_("To:")); + wprintf(""); + wprintf("" + ""); + wprintf("
"); + wprintf("
"); + wprintf(""); + wprintf(_("CC:")); + wprintf(""); + wprintf("" + ""); + wprintf("
"); + wprintf("
"); + wprintf(""); + wprintf(_("BCC:")); + wprintf(""); + wprintf("" + ""); + wprintf("
"); + wprintf("
"); + wprintf(""); + wprintf(_("Subject (optional):")); + wprintf(""); + wprintf("" + "\n"); + + wprintf(" " + "\n", _("Cancel")); + wprintf("
\n"); + + wprintf("
"); + + wprintf(""); + wprintf("

\n"); + + /** + * The following script embeds the TinyMCE richedit control, and automatically + * transforms the textarea into a richedit textarea. + */ + wprintf( + "\n" + "\n" + ); + + + /** Enumerate any attachments which are already in place... */ + wprintf(" "); + wprintf(_("Attachments:")); + wprintf(" "); + wprintf(""); + + /** Now offer the ability to attach additional files... */ + wprintf("   "); + wprintf(_("Attach file:")); + wprintf(" \n  " + "\n", _("Add")); + + /** Seth asked for these to be at the top *and* bottom... */ + wprintf(" " + "\n", _("Cancel")); + + /** Make sure we only insert our signature once */ + if (strcmp(bstr("sig_inserted"), "yes")) { + wprintf("\n"); + } + + wprintf("
\n"); + + wprintf("
\n"); +DONE: wDumpContent(1); +} + + + +/** + * \brief delete a message + */ +void delete_msg(void) +{ + long msgid; + char buf[SIZ]; + + msgid = atol(bstr("msgid")); + + if (WC->wc_is_trash) { /** Delete from Trash is a real delete */ + serv_printf("DELE %ld", msgid); + } + else { /** Otherwise move it to Trash */ + serv_printf("MOVE %ld|_TRASH_|0", msgid); + } + + serv_getln(buf, sizeof buf); + sprintf(WC->ImportantMessage, "%s", &buf[4]); + + readloop("readnew"); +} + + +/** + * \brief move a message to another folder + */ +void move_msg(void) +{ + long msgid; + char buf[SIZ]; + + msgid = atol(bstr("msgid")); + + if (strlen(bstr("move_button")) > 0) { + sprintf(buf, "MOVE %ld|%s", msgid, bstr("target_room")); + serv_puts(buf); + serv_getln(buf, sizeof buf); + sprintf(WC->ImportantMessage, "%s", &buf[4]); + } else { + sprintf(WC->ImportantMessage, (_("The message was not moved."))); + } + + readloop("readnew"); +} + + + + + +/** + * \brief Confirm move of a message + */ +void confirm_move_msg(void) +{ + long msgid; + char buf[SIZ]; + char targ[SIZ]; + + msgid = atol(bstr("msgid")); + + + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n"); + wprintf("
"); + wprintf(""); + wprintf(_("Confirm move of message")); + wprintf("\n"); + wprintf("
\n"); + wprintf("
\n
\n"); + + wprintf("
"); + + wprintf(_("Move this message to:")); + wprintf("
\n"); + + wprintf("
\n"); + wprintf("\n", bstr("msgid")); + + wprintf("\n"); + wprintf("
\n"); + + wprintf("", _("Move")); + wprintf(" "); + wprintf("", _("Cancel")); + wprintf("
\n"); + + wprintf("
\n"); + wDumpContent(1); +} + + +/*@}*/ diff --git a/webcit/mime_parser.c b/webcit/mime_parser.c new file mode 100644 index 000000000..02edd1c58 --- /dev/null +++ b/webcit/mime_parser.c @@ -0,0 +1,662 @@ +/* + * $Id$ + */ +/** + * \defgroup MIME This is the MIME parser for Citadel. + * + * Copyright (c) 1998-2005 by Art Cancro + * This code is distributed under the terms of the GNU General Public License. + * \ingroup WebcitHttpServer + */ +/*@{*/ +#include "webcit.h" +#include "webserver.h" +#include "mime_parser.h" + +/** + * \brief get mime key + * \param target where to put the mime buffer at??? + * \param source where to extract the mimetype from + * \param key what??? + */ +void extract_key(char *target, char *source, char *key) +{ + int a, b; + + strcpy(target, source); + for (a = 0; a < strlen(target); ++a) { + if ((!strncasecmp(&target[a], key, strlen(key))) + && (target[a + strlen(key)] == '=')) { + strcpy(target, &target[a + strlen(key) + 1]); + if (target[0] == 34) + strcpy(target, &target[1]); + for (b = 0; b < strlen(target); ++b) + if (target[b] == 34) + target[b] = 0; + return; + } + } + strcpy(target, ""); +} + + +/** + * \brief For non-multipart messages, we need to generate a quickie partnum of "1" + * to return to callback functions. Some callbacks demand it. + * \param supplied_partnum partnum to convert + * \return the converted num + */ +char *fixed_partnum(char *supplied_partnum) { + if (supplied_partnum == NULL) return "1"; + if (strlen(supplied_partnum)==0) return "1"; + return supplied_partnum; +} + + + +/** + * \brief Convert "quoted-printable" to binary. Returns number of bytes decoded. + * \param decoded the buffer with the decoded output + * \param encoded the encoded string to decode + * \param sourcelen length of the decoded buffer + */ +int CtdlDecodeQuotedPrintable(char *decoded, char *encoded, int sourcelen) { + char buf[SIZ]; + int buf_length = 0; + int soft_line_break = 0; + unsigned int ch; + int decoded_length = 0; + int i; + + decoded[0] = 0; + decoded_length = 0; + buf[0] = 0; + buf_length = 0; + + for (i = 0; i < sourcelen; ++i) { + + buf[buf_length++] = encoded[i]; + + if ( (encoded[i] == '\n') + || (encoded[i] == 0) + || (i == (sourcelen-1)) ) { + buf[buf_length++] = 0; + + /*** begin -- process one line ***/ + + if (buf[strlen(buf)-1] == '\n') { + buf[strlen(buf)-1] = 0; + } + if (buf[strlen(buf)-1] == '\r') { + buf[strlen(buf)-1] = 0; + } + while (isspace(buf[strlen(buf)-1])) { + buf[strlen(buf)-1] = 0; + } + soft_line_break = 0; + + while (strlen(buf) > 0) { + if (!strcmp(buf, "=")) { + soft_line_break = 1; + strcpy(buf, ""); + } else if ((strlen(buf)>=3) && (buf[0]=='=')) { + sscanf(&buf[1], "%02x", &ch); + decoded[decoded_length++] = ch; + strcpy(buf, &buf[3]); + } else { + decoded[decoded_length++] = buf[0]; + strcpy(buf, &buf[1]); + } + } + if (soft_line_break == 0) { + decoded[decoded_length++] = '\r'; + decoded[decoded_length++] = '\n'; + } + buf_length = 0; + /*** end -- process one line ***/ + } + } + + decoded[decoded_length++] = 0; + return(decoded_length); +} + +/** + * \brief fully decode a message + * Given a message or message-part body and a length, handle any necessary + * decoding and pass the request up the stack. + * \param partnum todo ????? + * \param part_start todo + * \param length todo + * \param content_type todo + * \param charset todo + * \param encoding todo + * \param disposition todo + * \param name todo + * \param filename todo + * \param CallBack todo + * \param PreMultiPartCallBack todo + * \param PostMultiPartCallBack todo + * \param userdata todo + * \param dont_decode todo + */ +void mime_decode(char *partnum, + char *part_start, size_t length, + char *content_type, char *charset, char *encoding, + char *disposition, + char *name, char *filename, + void (*CallBack) + (char *cbname, + char *cbfilename, + char *cbpartnum, + char *cbdisp, + void *cbcontent, + char *cbtype, + char *cbcharset, + size_t cblength, + char *cbencoding, + void *cbuserdata), + void (*PreMultiPartCallBack) + (char *cbname, + char *cbfilename, + char *cbpartnum, + char *cbdisp, + void *cbcontent, + char *cbtype, + char *cbcharset, + size_t cblength, + char *cbencoding, + void *cbuserdata), + void (*PostMultiPartCallBack) + (char *cbname, + char *cbfilename, + char *cbpartnum, + char *cbdisp, + void *cbcontent, + char *cbtype, + char *cbcharset, + size_t cblength, + char *cbencoding, + void *cbuserdata), + void *userdata, + int dont_decode +) +{ + + char *decoded; + size_t bytes_decoded = 0; + + /* Some encodings aren't really encodings */ + if (!strcasecmp(encoding, "7bit")) + strcpy(encoding, ""); + if (!strcasecmp(encoding, "8bit")) + strcpy(encoding, ""); + if (!strcasecmp(encoding, "binary")) + strcpy(encoding, ""); + + /* If this part is not encoded, send as-is */ + if ( (strlen(encoding) == 0) || (dont_decode)) { + if (CallBack != NULL) { + CallBack(name, filename, fixed_partnum(partnum), + disposition, part_start, + content_type, charset, length, encoding, userdata); + } + return; + } + + if ((strcasecmp(encoding, "base64")) + && (strcasecmp(encoding, "quoted-printable"))) { + return; + } + /** + * Allocate a buffer for the decoded data. The output buffer is the + * same size as the input buffer; this assumes that the decoded data + * will never be larger than the encoded data. This is a safe + * assumption with base64, uuencode, and quoted-printable. + */ + decoded = malloc(length+2048); + if (decoded == NULL) { + return; + } + + if (!strcasecmp(encoding, "base64")) { + bytes_decoded = CtdlDecodeBase64(decoded, part_start, length); + } + else if (!strcasecmp(encoding, "quoted-printable")) { + bytes_decoded = CtdlDecodeQuotedPrintable(decoded, + part_start, length); + } + + if (bytes_decoded > 0) if (CallBack != NULL) { + CallBack(name, filename, fixed_partnum(partnum), + disposition, decoded, + content_type, charset, bytes_decoded, "binary", userdata); + } + + free(decoded); +} + +/** + * \brief Break out the components of a multipart message + * (This function expects to be fed HEADERS + CONTENT) + * Note: NULL can be supplied as content_end; in this case, the message is + * considered to have ended when the parser encounters a 0x00 byte. + * \param partnum todo + * \param content_start todo ????? + * \param content_end todo + * \param CallBack todo + * \param PreMultiPartCallBack + * \param PostMultiPartCallBack + * \param userdata todo + * \param dont_decode todo + */ +void the_mime_parser(char *partnum, + char *content_start, char *content_end, + void (*CallBack) + (char *cbname, + char *cbfilename, + char *cbpartnum, + char *cbdisp, + void *cbcontent, + char *cbtype, + char *cbcharset, + size_t cblength, + char *cbencoding, + void *cbuserdata), + void (*PreMultiPartCallBack) + (char *cbname, + char *cbfilename, + char *cbpartnum, + char *cbdisp, + void *cbcontent, + char *cbtype, + char *cbcharset, + size_t cblength, + char *cbencoding, + void *cbuserdata), + void (*PostMultiPartCallBack) + (char *cbname, + char *cbfilename, + char *cbpartnum, + char *cbdisp, + void *cbcontent, + char *cbtype, + char *cbcharset, + size_t cblength, + char *cbencoding, + void *cbuserdata), + void *userdata, + int dont_decode +) +{ + + char *ptr; + char *srch = NULL; + char *part_start, *part_end = NULL; + char buf[SIZ]; + char *header; + char *boundary; + char *startary; + size_t startary_len = 0; + char *endary; + char *next_boundary; + char *content_type; + char *charset; + size_t content_length; + char *encoding; + char *disposition; + char *name = NULL; + char *content_type_name; + char *content_disposition_name; + char *filename; + int is_multipart; + int part_seq = 0; + int i; + size_t length; + char nested_partnum[SIZ]; + + ptr = content_start; + content_length = 0; + + boundary = malloc(SIZ); + memset(boundary, 0, SIZ); + + startary = malloc(SIZ); + memset(startary, 0, SIZ); + + endary = malloc(SIZ); + memset(endary, 0, SIZ); + + header = malloc(SIZ); + memset(header, 0, SIZ); + + content_type = malloc(SIZ); + memset(content_type, 0, SIZ); + + charset = malloc(SIZ); + memset(charset, 0, SIZ); + + encoding = malloc(SIZ); + memset(encoding, 0, SIZ); + + content_type_name = malloc(SIZ); + memset(content_type_name, 0, SIZ); + + content_disposition_name = malloc(SIZ); + memset(content_disposition_name, 0, SIZ); + + filename = malloc(SIZ); + memset(filename, 0, SIZ); + + disposition = malloc(SIZ); + memset(disposition, 0, SIZ); + + /** If the caller didn't supply an endpointer, generate one by measure */ + if (content_end == NULL) { + content_end = &content_start[strlen(content_start)]; + } + + /** Learn interesting things from the headers */ + strcpy(header, ""); + do { + ptr = memreadline(ptr, buf, SIZ); + if (ptr >= content_end) { + goto end_parser; + } + + for (i = 0; i < strlen(buf); ++i) { + if (isspace(buf[i])) { + buf[i] = ' '; + } + } + + if (!isspace(buf[0])) { + if (!strncasecmp(header, "Content-type: ", 14)) { + strcpy(content_type, &header[14]); + extract_key(content_type_name, content_type, "name"); + extract_key(charset, content_type, "charset"); + /** Deal with weird headers */ + if (strchr(content_type, ' ')) + *(strchr(content_type, ' ')) = '\0'; + if (strchr(content_type, ';')) + *(strchr(content_type, ';')) = '\0'; + } + if (!strncasecmp(header, "Content-Disposition: ", 21)) { + strcpy(disposition, &header[21]); + extract_key(content_disposition_name, disposition, "name"); + extract_key(filename, disposition, "filename"); + } + if (!strncasecmp(header, "Content-length: ", 16)) { + content_length = (size_t) atol(&header[16]); + } + if (!strncasecmp(header, + "Content-transfer-encoding: ", 27)) + strcpy(encoding, &header[27]); + if (strlen(boundary) == 0) + extract_key(boundary, header, "boundary"); + strcpy(header, ""); + } + if ((strlen(header) + strlen(buf) + 2) < SIZ) + strcat(header, buf); + } while ((strlen(buf) > 0) && (*ptr != 0)); + + if (strchr(disposition, ';')) + *(strchr(disposition, ';')) = '\0'; + striplt(disposition); + if (strchr(content_type, ';')) + *(strchr(content_type, ';')) = '\0'; + striplt(content_type); + + if (strlen(boundary) > 0) { + is_multipart = 1; + } else { + is_multipart = 0; + } + + /** If this is a multipart message, then recursively process it */ + part_start = NULL; + if (is_multipart) { + + /** Tell the client about this message's multipartedness */ + if (PreMultiPartCallBack != NULL) { + PreMultiPartCallBack("", "", partnum, "", + NULL, content_type, charset, + 0, encoding, userdata); + } + + /** Figure out where the boundaries are */ + snprintf(startary, SIZ, "--%s", boundary); + snprintf(endary, SIZ, "--%s--", boundary); + startary_len = strlen(startary); + + part_start = NULL; + do { + next_boundary = NULL; + for (srch=ptr; srch 0) { + snprintf(nested_partnum, + sizeof nested_partnum, + "%s.%d", partnum, + ++part_seq); + } + else { + snprintf(nested_partnum, + sizeof nested_partnum, + "%d", ++part_seq); + } + the_mime_parser(nested_partnum, + part_start, part_end, + CallBack, + PreMultiPartCallBack, + PostMultiPartCallBack, + userdata, + dont_decode); + } + + if (next_boundary != NULL) { + /** + * If we pass out of scope, don't attempt to + * read past the end boundary. */ + if (!strcmp(next_boundary, endary)) { + ptr = content_end; + } + else { + /** Set up for the next part. */ + part_start = strstr(next_boundary, "\n"); + ++part_start; + ptr = part_start; + } + } + else { + /** Invalid end of multipart. Bail out! */ + ptr = content_end; + } + } while ( (ptr < content_end) && (next_boundary != NULL) ); + + if (PostMultiPartCallBack != NULL) { + PostMultiPartCallBack("", "", partnum, "", NULL, + content_type, charset, 0, encoding, userdata); + } + goto end_parser; + } + + /** If it's not a multipart message, then do something with it */ + if (!is_multipart) { + part_start = ptr; + length = 0; + while (ptr < content_end) { + ++ptr; + ++length; + } + part_end = content_end; + /** fix an off-by-one error */ + --part_end; + --length; + + /** Truncate if the header told us to */ + if ( (content_length > 0) && (length > content_length) ) { + length = content_length; + } + + /** + * Sometimes the "name" field is tacked on to Content-type, + * and sometimes it's tacked on to Content-disposition. Use + * whichever one we have. + */ + if (strlen(content_disposition_name) > strlen(content_type_name)) { + name = content_disposition_name; + } + else { + name = content_type_name; + } + + /* + lprintf(9, "mime_decode part=%s, len=%d, type=%s, charset=%s, encoding=%s\n", + partnum, length, content_type, charset, encoding); + */ + + /** + * Ok, we've got a non-multipart part here, so do something with it. + */ + mime_decode(partnum, + part_start, length, + content_type, charset, encoding, disposition, + name, filename, + CallBack, NULL, NULL, + userdata, dont_decode + ); + + /** + * Now if it's an encapsulated message/rfc822 then we have to recurse into it + */ + if (!strcasecmp(content_type, "message/rfc822")) { + + if (PreMultiPartCallBack != NULL) { + PreMultiPartCallBack("", "", partnum, "", + NULL, content_type, charset, + 0, encoding, userdata); + } + if (CallBack != NULL) { + if (strlen(partnum) > 0) { + snprintf(nested_partnum, + sizeof nested_partnum, + "%s.%d", partnum, + ++part_seq); + } + else { + snprintf(nested_partnum, + sizeof nested_partnum, + "%d", ++part_seq); + } + the_mime_parser(nested_partnum, + part_start, part_end, + CallBack, + PreMultiPartCallBack, + PostMultiPartCallBack, + userdata, + dont_decode + ); + } + if (PostMultiPartCallBack != NULL) { + PostMultiPartCallBack("", "", partnum, "", NULL, + content_type, charset, 0, encoding, userdata); + } + + + } + + } + +end_parser: /** free the buffers! end the oppression!! */ + free(boundary); + free(startary); + free(endary); + free(header); + free(content_type); + free(charset); + free(encoding); + free(content_type_name); + free(content_disposition_name); + free(filename); + free(disposition); +} + + + +/** + * \brief Entry point for the MIME parser. + * (This function expects to be fed HEADERS + CONTENT) + * Note: NULL can be supplied as content_end; in this case, the message is + * considered to have ended when the parser encounters a 0x00 byte. + * \param content_start todo ????????? + * \param content_end todo + * \param CallBack todo + * \param PreMultiPartCallBack todo + * \param PostMultiPartCallBack todo + * \param userdata todo + * \param dont_decode todo + */ +void mime_parser(char *content_start, + char *content_end, + + void (*CallBack) + (char *cbname, + char *cbfilename, + char *cbpartnum, + char *cbdisp, + void *cbcontent, + char *cbtype, + char *cbcharset, + size_t cblength, + char *cbencoding, + void *cbuserdata), + + void (*PreMultiPartCallBack) + (char *cbname, + char *cbfilename, + char *cbpartnum, + char *cbdisp, + void *cbcontent, + char *cbtype, + char *cbcharset, + size_t cblength, + char *cbencoding, + void *cbuserdata), + + void (*PostMultiPartCallBack) + (char *cbname, + char *cbfilename, + char *cbpartnum, + char *cbdisp, + void *cbcontent, + char *cbtype, + char *cbcharset, + size_t cblength, + char *cbencoding, + void *cbuserdata), + + void *userdata, + int dont_decode +) +{ + + the_mime_parser("", content_start, content_end, + CallBack, + PreMultiPartCallBack, + PostMultiPartCallBack, + userdata, dont_decode); +} + + + +/*@}*/ diff --git a/webcit/mime_parser.h b/webcit/mime_parser.h new file mode 100644 index 000000000..b82cd6884 --- /dev/null +++ b/webcit/mime_parser.h @@ -0,0 +1,57 @@ +/* + * $Id$ + * + */ + +/* + * Here's a bunch of stupid magic to make the MIME parser portable between + * Citadel and WebCit. + */ +#ifndef SIZ +#define SIZ 4096 +#endif + + +/* + * Declarations for functions in the parser + */ + +void extract_key(char *target, char *source, char *key); + +void mime_parser(char *content_start, char *content_end, + void (*CallBack) + (char *cbname, + char *cbfilename, + char *cbpartnum, + char *cbdisp, + void *cbcontent, + char *cbtype, + char *cbcharset, + size_t cblength, + char *cbencoding, + void *cbuserdata), + void (*PreMultiPartCallBack) + (char *cbname, + char *cbfilename, + char *cbpartnum, + char *cbdisp, + void *cbcontent, + char *cbtype, + char *cbcharset, + size_t cblength, + char *cbencoding, + void *cbuserdata), + void (*PostMultiPartCallBack) + (char *cbname, + char *cbfilename, + char *cbpartnum, + char *cbdisp, + void *cbcontent, + char *cbtype, + char *cbcharset, + size_t cblength, + char *cbencoding, + void *cbuserdata), + void *userdata, + int dont_decode + ); diff --git a/webcit/missing b/webcit/missing new file mode 100755 index 000000000..cbe2b0ef0 --- /dev/null +++ b/webcit/missing @@ -0,0 +1,188 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997 Free Software Foundation, Inc. +# Franc,ois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing - GNU libit 0.0" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`configure.in'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`configure.in'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`configure.in'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER([^):]*:\([^)]*\)).*/\1/p' configure.in` + if test -z "$files"; then + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^):]*\)).*/\1/p' configure.in` + test -z "$files" || files="$files.in" + else + files=`echo "$files" | sed -e 's/:/ /g'` + fi + test -z "$files" && files="config.h.in" + touch $files + ;; + + automake) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print \ + | sed 's/^\(.*\).am$/touch \1.in/' \ + | sh + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/webcit/mkinstalldirs b/webcit/mkinstalldirs new file mode 100755 index 000000000..d2d5f21b6 --- /dev/null +++ b/webcit/mkinstalldirs @@ -0,0 +1,111 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" 1>&2 + exit 0 + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +case $dirmode in + '') + if mkdir -p -- . 2>/dev/null; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + fi + ;; + *) + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + fi + ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr="" + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# End: +# mkinstalldirs ends here diff --git a/webcit/netconf.c b/webcit/netconf.c new file mode 100644 index 000000000..f3802961a --- /dev/null +++ b/webcit/netconf.c @@ -0,0 +1,320 @@ +/* + * $Id$ + */ +/** + * \defgroup NetShareConf Functions which handle network and sharing configuration. + * + * \ingroup CitadelConfig + */ +/*@{*/ +#include "webcit.h" + +/** + * \brief edit a network node + */ +void edit_node(void) { + char buf[SIZ]; + char node[SIZ]; + char cnode[SIZ]; + FILE *fp; + + if (strlen(bstr("ok_button")) > 0) { + strcpy(node, bstr("node") ); + fp = tmpfile(); + if (fp != NULL) { + serv_puts("CONF getsys|application/x-citadel-ignet-config"); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + extract_token(cnode, buf, 0, '|', sizeof cnode); + if (strcasecmp(node, cnode)) { + fprintf(fp, "%s\n", buf); + } + } + fprintf(fp, "%s|%s|%s|%s\n", + bstr("node"), + bstr("secret"), + bstr("host"), + bstr("port") ); + } + rewind(fp); + + serv_puts("CONF putsys|application/x-citadel-ignet-config"); + serv_getln(buf, sizeof buf); + if (buf[0] == '4') { + while (fgets(buf, sizeof buf, fp) != NULL) { + buf[strlen(buf)-1] = 0; + serv_puts(buf); + } + serv_puts("000"); + } + fclose(fp); + } + } + + display_netconf(); +} + + +/** + * \brief add a node + */ +void display_add_node(void) +{ + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n"); + wprintf("
"); + wprintf(""); + wprintf(_("Add a new node")); + wprintf(""); + wprintf("
\n"); + wprintf("
\n
\n"); + + wprintf("
\n"); + wprintf("
\n"); + wprintf("", _("Node name")); + wprintf("\n"); + wprintf("", _("Shared secret")); + wprintf("\n"); + wprintf("", _("Host or IP address")); + wprintf("\n"); + wprintf("", _("Port number")); + wprintf("\n"); + wprintf("
%s
%s
%s
%s

"); + wprintf("", _("Add node")); + wprintf(" "); + wprintf("", _("Cancel")); + wprintf("
\n"); + + wDumpContent(1); +} + +/** + * \brief modify an existing node + */ +void display_edit_node(void) +{ + char buf[512]; + char node[256]; + char cnode[256]; + char csecret[256]; + char chost[256]; + char cport[256]; + + strcpy(node, bstr("node")); + + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n"); + wprintf("
"); + wprintf(""); + wprintf(_("Edit node configuration for ")); + escputs(node); + wprintf("\n"); + wprintf("
\n"); + wprintf("
\n
\n"); + + serv_puts("CONF getsys|application/x-citadel-ignet-config"); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + extract_token(cnode, buf, 0, '|', sizeof cnode); + extract_token(csecret, buf, 1, '|', sizeof csecret); + extract_token(chost, buf, 2, '|', sizeof chost); + extract_token(cport, buf, 3, '|', sizeof cport); + + if (!strcasecmp(node, cnode)) { + wprintf("
\n"); + wprintf("
\n"); + wprintf(""); + wprintf("\n", cnode); + wprintf(""); + wprintf("\n", csecret); + wprintf(""); + wprintf("\n", chost); + wprintf(""); + wprintf("\n", cport); + wprintf("
"); + wprintf(_("Node name")); + wprintf("
"); + wprintf(_("Shared secret")); + wprintf("
"); + wprintf(_("Host or IP address")); + wprintf("
"); + wprintf(_("Port number")); + wprintf("

"); + wprintf("", + _("Save changes")); + wprintf(" "); + wprintf("", + _("Cancel")); + wprintf("
\n"); + } + + } + } + + else { /** command error getting configuration */ + wprintf("%s
\n", &buf[4]); + } + + wDumpContent(1); +} + + +/** + * \brief display all configured nodes + */ +void display_netconf(void) +{ + char buf[SIZ]; + char node[SIZ]; + + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n"); + wprintf("
"); + wprintf(""); + wprintf(_("Network configuration")); + wprintf("\n"); + wprintf("
\n"); + wprintf("
\n
\n"); + + wprintf("
"); + wprintf(""); + wprintf(_("Add a new node")); + wprintf("
\n"); + wprintf("
"); + + wprintf("
"); + wprintf(""); + wprintf(_("Currently configured nodes")); + wprintf("\n"); + wprintf("
\n"); + serv_puts("CONF getsys|application/x-citadel-ignet-config"); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + wprintf("
\n"); + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + extract_token(node, buf, 0, '|', sizeof node); + wprintf(""); + wprintf(""); + wprintf(""); + wprintf("\n"); + } + wprintf("
"); + escputs(node); + wprintf(""); + wprintf(_("(Edit)")); + wprintf(""); + wprintf(_("(Delete)")); + wprintf("
\n"); + } + wDumpContent(1); +} + +/** + * \brief display the dialog to verify the deletion + */ +void display_confirm_delete_node(void) +{ + char node[SIZ]; + + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
\n"); + wprintf("
"); + wprintf(""); + wprintf(_("Confirm delete")); + wprintf("\n"); + wprintf("
\n"); + wprintf("
\n
\n"); + + strcpy(node, bstr("node")); + wprintf("
"); + wprintf(_("Are you sure you want to delete ")); + wprintf(""); + escputs(node); + wprintf("?
\n"); + wprintf(""); + wprintf(_("Yes")); + wprintf("   "); + wprintf(""); + wprintf(_("No")); + wprintf("
\n"); + wDumpContent(1); +} + +/** + * \brief actually delete the node + */ +void delete_node(void) +{ + char buf[SIZ]; + char node[SIZ]; + char cnode[SIZ]; + FILE *fp; + + strcpy(node, bstr("node") ); + fp = tmpfile(); + if (fp != NULL) { + serv_puts("CONF getsys|application/x-citadel-ignet-config"); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + extract_token(cnode, buf, 0, '|', sizeof cnode); + if (strcasecmp(node, cnode)) { + fprintf(fp, "%s\n", buf); + } + } + } + rewind(fp); + + serv_puts("CONF putsys|application/x-citadel-ignet-config"); + serv_getln(buf, sizeof buf); + if (buf[0] == '4') { + while (fgets(buf, sizeof buf, fp) != NULL) { + buf[strlen(buf)-1] = 0; + serv_puts(buf); + } + serv_puts("000"); + } + fclose(fp); + } + + display_netconf(); +} + +/** + * \brief add a new node + */ +void add_node(void) +{ + char node[SIZ]; + char buf[SIZ]; + + strcpy(node, bstr("node")); + + if (strlen(bstr("add_button")) > 0) { + sprintf(buf, "NSET addnode|%s", node); + serv_puts(buf); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + output_headers(1, 1, 0, 0, 0, 0); + server_to_text(); + wprintf(""); + wprintf(_("Back to menu")); + wprintf("\n"); + wDumpContent(1); + } else { + strcpy(WC->ImportantMessage, &buf[4]); + display_netconf(); + } + } +} + + +/*@}*/ diff --git a/webcit/notes.c b/webcit/notes.c new file mode 100644 index 000000000..137480a52 --- /dev/null +++ b/webcit/notes.c @@ -0,0 +1,134 @@ +/* + * $Id$ + */ +/** + * \defgroup StickyNotes Functions which handle "sticky notes" + * \ingroup WebcitDisplayItems + */ +/*@{*/ +#include "webcit.h" +#include "groupdav.h" +#include "webserver.h" + +/** + * \brief display sticky notes + * \param msgnum the citadel mesage number + */ +void display_note(long msgnum) +{ + char buf[SIZ]; + char notetext[SIZ]; + char display_notetext[SIZ]; + char eid[128]; + int in_text = 0; + int i; + + wprintf("\n"); + + serv_printf("MSG0 %ld", msgnum); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') { + wprintf("%s
\n", &buf[4]); + return; + } + + strcpy(notetext, ""); + strcpy(eid, ""); + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + + /** Fill the buffer */ + if ( (in_text) && (strlen(notetext) < SIZ-256) ) { + strcat(notetext, buf); + } + + if ( (!in_text) && (!strncasecmp(buf, "exti=", 5)) ) { + safestrncpy(eid, &buf[5], sizeof eid); + } + + if ( (!in_text) && (!strcasecmp(buf, "text")) ) { + in_text = 1; + } + } + + /** Now sanitize the buffer */ + for (i=0; i 0) { + wprintf("%s
\n", eid, display_notetext); + } + else { + wprintf("%s
\n", msgnum, display_notetext); + } + + /** Offer in-place editing. */ + if (strlen(eid) > 0) { + wprintf("\n", + eid, + eid + ); + } +} + + +/** + * \brief This gets called by the Ajax.InPlaceEditor when we save a note. + */ +void updatenote(void) +{ + char buf[SIZ]; + char notetext[SIZ]; + char display_notetext[SIZ]; + long msgnum; + int in_text = 0; + int i; + + serv_printf("ENT0 1||0|0||||||%s", bstr("eid")); + serv_getln(buf, sizeof buf); + if (buf[0] == '4') { + text_to_server(bstr("value")); + serv_puts("000"); + } + + begin_ajax_response(); + msgnum = locate_message_by_uid(bstr("eid")); + if (msgnum >= 0L) { + serv_printf("MSG0 %ld", msgnum); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + + /** Fill the buffer */ + if ( (in_text) && (strlen(notetext) < SIZ-256) ) { + strcat(notetext, buf); + } + + if ( (!in_text) && (!strcasecmp(buf, "text")) ) { + in_text = 1; + } + } + /** Now sanitize the buffer */ + for (i=0; i\n" + "
" + ""); + wprintf(_("Send instant message")); + wprintf("" + "
\n" + "
\n
\n" + ); + + wprintf("
" + "
\n"); + + wprintf(_("Send an instant message to: ")); + escputs(recp); + wprintf("
\n"); + + wprintf("
\n"); + + wprintf("
\n"); + + wprintf("\n"); + + wprintf(_("Enter message text:")); + wprintf("
"); + + wprintf("\n"); + + wprintf("

\n"); + + wprintf("", _("Send message")); + wprintf("
\n", _("Cancel")); + + wprintf("\n"); + wprintf("
\n"); + wDumpContent(1); +} + +/** + * \brief page another user + */ +void page_user(void) +{ + char recp[256]; + char buf[256]; + + safestrncpy(recp, bstr("recp"), sizeof recp); + + if (strlen(bstr("send_button")) == 0) { + safestrncpy(WC->ImportantMessage, + _("Message was not sent."), + sizeof WC->ImportantMessage + ); + } else { + serv_printf("SEXP %s|-", recp); + serv_getln(buf, sizeof buf); + + if (buf[0] == '4') { + text_to_server(bstr("msgtext")); + serv_puts("000"); + stresc(buf, recp, 0, 0); + snprintf(WC->ImportantMessage, + sizeof WC->ImportantMessage, + "%s%s.", + _("Message has been sent to "), + buf + ); + } + else { + safestrncpy(WC->ImportantMessage, &buf[4], sizeof WC->ImportantMessage); + } + } + + who(); +} + + + +/** + * \brief multiuser chat + */ +void do_chat(void) +{ + char buf[SIZ]; + + /** First, check to make sure we're still allowed in this room. */ + serv_printf("GOTO %s", WC->wc_roomname); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') { + smart_goto("_BASEROOM_"); + return; + } + + /** + * If the chat socket is still open from a previous chat, + * close it -- because it might be stale or in the wrong room. + */ + if (WC->chat_sock < 0) { + close(WC->chat_sock); + WC->chat_sock = (-1); + } + + /** + * WebCit Chat works by having transmit, receive, and refresh + * frames. Load the frameset. (This isn't AJAX but the headers + * output by begin_ajax_response() happen to be the ones we need.) + */ + begin_ajax_response(); + do_template("chatframeset"); + end_ajax_response(); + return; +} + + +/** + * \brief display page popup + * If there are instant messages waiting, and we notice that we haven't checked them in + * a while, it probably means that we need to open the instant messenger window. + */ +void page_popup(void) +{ + char buf[SIZ]; + + /** JavaScript function to alert the user that popups are probably blocked */ + wprintf("\n", + _("You have one or more instant messages waiting, but the Citadel Instant Messenger " + "window failed to open. This is probably because you have a popup blocker " + "installed. Please configure your popup blocker to allow popups from this site " + "if you wish to receive instant messages.") + ); + + /** First, do the check as part of our page load. */ + serv_puts("NOOP"); + serv_getln(buf, sizeof buf); + if (buf[3] == '*') { + if ((time(NULL) - WC->last_pager_check) > 60) { + wprintf("" + ); + } + } + + /** Then schedule it to happen again a minute from now if the user is idle. */ + wprintf(" " + ); +} + + + +/** + * \brief Support function for chat + * make sure the chat socket is connected + * and in chat mode. + */ +int setup_chat_socket(void) { + char buf[SIZ]; + int i; + int good_chatmode = 0; + + if (WC->chat_sock < 0) { + + if (!strcasecmp(ctdlhost, "uds")) { + /** unix domain socket */ + sprintf(buf, "%s/citadel.socket", ctdlport); + WC->chat_sock = uds_connectsock(buf); + } + else { + /** tcp socket */ + WC->chat_sock = tcp_connectsock(ctdlhost, ctdlport); + } + + if (WC->chat_sock < 0) { + return(errno); + } + + /** Temporarily swap the serv and chat sockets during chat talk */ + i = WC->serv_sock; + WC->serv_sock = WC->chat_sock; + WC->chat_sock = i; + + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + serv_printf("USER %s", WC->wc_username); + serv_getln(buf, sizeof buf); + if (buf[0] == '3') { + serv_printf("PASS %s", WC->wc_password); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + serv_printf("GOTO %s", WC->wc_roomname); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + serv_puts("CHAT"); + serv_getln(buf, sizeof buf); + if (buf[0] == '8') { + good_chatmode = 1; + } + } + } + } + } + + /** Unswap the sockets. */ + i = WC->serv_sock; + WC->serv_sock = WC->chat_sock; + WC->chat_sock = i; + + if (!good_chatmode) close(WC->serv_sock); + + } + return(0); +} + + + +/** + * \brief Receiving side of the chat window. + * This is implemented in a + * tiny hidden IFRAME that just does JavaScript writes to + * other frames whenever it refreshes and finds new data. + */ +void chat_recv(void) { + int i; + struct pollfd pf; + int got_data = 0; + int end_chat_now = 0; + char buf[SIZ]; + char cl_user[SIZ]; + char cl_text[SIZ]; + char *output_data = NULL; + + output_headers(0, 0, 0, 0, 0, 0); + + wprintf("Content-type: text/html; charset=utf-8\n"); + wprintf("\n"); + wprintf("\n" + "\n" + "\n" + "\n" + + "\n" + ); + + if (setup_chat_socket() != 0) { + wprintf(_("An error occurred while setting up the chat socket.")); + wprintf("\n"); + wDumpContent(0); + return; + } + + /** + * See if there is any chat data waiting. + */ + output_data = strdup(""); + do { + got_data = 0; + pf.fd = WC->chat_sock; + pf.events = POLLIN; + pf.revents = 0; + if (poll(&pf, 1, 1) > 0) if (pf.revents & POLLIN) { + ++got_data; + + /** Temporarily swap the serv and chat sockets during chat talk */ + i = WC->serv_sock; + WC->serv_sock = WC->chat_sock; + WC->chat_sock = i; + + serv_getln(buf, sizeof buf); + + if (!strcmp(buf, "000")) { + strcpy(buf, ":|"); + strcat(buf, _("Now exiting chat mode.")); + end_chat_now = 1; + } + + /** Unswap the sockets. */ + i = WC->serv_sock; + WC->serv_sock = WC->chat_sock; + WC->chat_sock = i; + + /** Append our output data */ + output_data = realloc(output_data, strlen(output_data) + strlen(buf) + 4); + strcat(output_data, buf); + strcat(output_data, "\n"); + } + + } while ( (got_data) && (!end_chat_now) ); + + if (end_chat_now) { + close(WC->chat_sock); + WC->chat_sock = (-1); + wprintf("\n"); + } + + if (strlen(output_data) > 0) { + + if (output_data[strlen(output_data)-1] == '\n') { + output_data[strlen(output_data)-1] = 0; + } + + /** Output our fun to the other frame. */ + wprintf("last_chat_user)) { + wprintf("" + "
" + ); + + } + + wprintf(""); + + wprintf("
"); + + if (!strcasecmp(cl_user, ":")) { + wprintf(""); + } + + if (strcasecmp(cl_user, WC->last_chat_user)) { + wprintf(""); + + if (!strcasecmp(cl_user, WC->wc_fullname)) { + wprintf(""); + } + else { + wprintf(""); + } + jsescputs(cl_user); + + wprintf(": "); + } + else { + wprintf("   "); + } + jsescputs(cl_text); + if (!strcasecmp(cl_user, ":")) { + wprintf(""); + } + + wprintf("
"); + wprintf("'); \n"); + + strcpy(WC->last_chat_user, cl_user); + } + } + + wprintf("parent.chat_transcript.scrollTo(999999,999999);\">\n"); + } + + free(output_data); + + wprintf("\n"); + wDumpContent(0); +} + + +/** + * \brief sending side of the chat window + */ +void chat_send(void) { + int i; + char send_this[SIZ]; + char buf[SIZ]; + + output_headers(0, 0, 0, 0, 0, 0); + wprintf("Content-type: text/html; charset=utf-8\n"); + wprintf("\n"); + wprintf("" + "" + ); + + if (bstr("send_this") != NULL) { + strcpy(send_this, bstr("send_this")); + } + else { + strcpy(send_this, ""); + } + + if (strlen(bstr("help_button")) > 0) { + strcpy(send_this, "/help"); + } + + if (strlen(bstr("list_button")) > 0) { + strcpy(send_this, "/who"); + } + + if (strlen(bstr("exit_button")) > 0) { + strcpy(send_this, "/quit"); + } + + if (setup_chat_socket() != 0) { + wprintf(_("An error occurred while setting up the chat socket.")); + wprintf("\n"); + wDumpContent(0); + return; + } + + /** Temporarily swap the serv and chat sockets during chat talk */ + i = WC->serv_sock; + WC->serv_sock = WC->chat_sock; + WC->chat_sock = i; + + while (strlen(send_this) > 0) { + if (strlen(send_this) < 67) { + serv_puts(send_this); + strcpy(send_this, ""); + } + else { + for (i=55; i<67; ++i) { + if (send_this[i] == ' ') break; + } + strncpy(buf, send_this, i); + buf[i] = 0; + strcpy(send_this, &send_this[i]); + serv_puts(buf); + } + } + + /** Unswap the sockets. */ + i = WC->serv_sock; + WC->serv_sock = WC->chat_sock; + WC->chat_sock = i; + + wprintf("
\n"); + wprintf("\n", SIZ-10); + wprintf("
"); + wprintf("\n", _("Send")); + wprintf("\n", _("Help")); + wprintf("\n", _("List users")); + wprintf("\n", _("Exit")); + wprintf("
\n"); + + wprintf("\n"); + wDumpContent(0); +} + +/*@}*/ diff --git a/webcit/po/Makefile.in b/webcit/po/Makefile.in new file mode 100644 index 000000000..9fd91d393 --- /dev/null +++ b/webcit/po/Makefile.in @@ -0,0 +1,20 @@ +all: ../locale/de/LC_MESSAGES/webcit.mo \ + ../locale/it/LC_MESSAGES/webcit.mo \ + ../locale/en_GB/LC_MESSAGES/webcit.mo + +../locale/de/LC_MESSAGES/webcit.mo: de.po + [ -d ../locale/de/LC_MESSAGES ] || mkdir -p ../locale/de/LC_MESSAGES + msgfmt de.po -o ../locale/de/LC_MESSAGES/webcit.mo + +../locale/it/LC_MESSAGES/webcit.mo: it.po + [ -d ../locale/it/LC_MESSAGES ] || mkdir -p ../locale/it/LC_MESSAGES + msgfmt it.po -o ../locale/it/LC_MESSAGES/webcit.mo + +../locale/es/LC_MESSAGES/webcit.mo: es.po + [ -d ../locale/es/LC_MESSAGES ] || mkdir -p ../locale/es/LC_MESSAGES + msgfmt es.po -o ../locale/es/LC_MESSAGES/webcit.mo + +../locale/en_GB/LC_MESSAGES/webcit.mo: en_GB.po + [ -d ../locale/en_GB/LC_MESSAGES ] || mkdir -p ../locale/en_GB/LC_MESSAGES + msgfmt en_GB.po -o ../locale/en_GB/LC_MESSAGES/webcit.mo + diff --git a/webcit/po/create-pot.sh b/webcit/po/create-pot.sh new file mode 100644 index 000000000..df6cfb951 --- /dev/null +++ b/webcit/po/create-pot.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +echo Updating webcit.pot from strings in the source code ... +xgettext \ + --copyright-holder='The Citadel Project - http://www.citadel.org' \ + -k_ \ + -o webcit.pot \ + ../*.c + +for x in *.po +do + echo Merging webcit.pot into $x ... + msgmerge $x webcit.pot -o $x +done diff --git a/webcit/po/de.po b/webcit/po/de.po new file mode 100644 index 000000000..c0ce2da27 --- /dev/null +++ b/webcit/po/de.po @@ -0,0 +1,2930 @@ +# translation of de.po to Deutsch +# Wilfried Goesgens , 2005, 2006. +# German localization +# Copyright (C) 2005 By wilfried Goesgens +# This file is distributed under the GPL +# FIRST AUTHOR 2005 +# "äöäö +msgid "" +msgstr "" +"Project-Id-Version: de\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-02-13 21:49+0100\n" +"PO-Revision-Date: 2006-02-05 17:56+0100\n" +"Last-Translator: Wilfried Goesgens \n" +"Language-Team: Deutsch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.1\n" + +#: ../auth.c:23 +msgid "Deleted" +msgstr "gelöscht" + +#: ../auth.c:24 ../auth.c:72 +msgid "New User" +msgstr "Neuer Benutzer" + +#: ../auth.c:25 +msgid "Problem User" +msgstr "Problematischer Benutzer" + +#: ../auth.c:26 +msgid "Local User" +msgstr "Lokaler Benutzer" + +#: ../auth.c:27 +msgid "Network User" +msgstr "Netzwerk Benutzer" + +#: ../auth.c:28 +msgid "Preferred User" +msgstr "nur Privilegierte Benutzer" + +#: ../auth.c:29 +msgid "Aide" +msgstr "Verantwortlicher" + +#: ../auth.c:52 +#, c-format +msgid "" +"
  • If you already have an account on %s, enter your user name " +"and password and click "Login."
  • If you are a new user, " +"enter the name and password you wish to use, and click "New User." " +"
  • Please log off properly when finished.
  • You must use a browser that " +"supports frames and cookies.
  • Also keep in mind that if " +"your browser is configured to block pop-up windows, you will not be able to " +"receive any instant messages.
" +msgstr "" +"
    \n" +"
  • Wenn Sie schon einen Benutzer bei %s haben, Benutzername und " +"Passwort eingeben und 'Anmelden' drücken.
  • \n" +"
  • Wenn Sie einen neuen Benutzer anlegen wollen, Benutzername und " +"Passwort eingeben und 'Neuer Benutzer' drücken.
  • \n" +"
  • Bitte melden Sie sich ordentlich ab, wenn Sie fertig sind.
  • \n" +"
  • Ihr Browser muss Frames und Cookies unterstützen
  • \n" +"
  • Kurznachrichten könnten dem Popup-Blocker Ihres Browsers zum Opfer " +"fallen
  • \n" +"
" + +#: ../auth.c:68 ../who.c:263 +msgid "User name:" +msgstr "Benutzername:" + +#: ../auth.c:69 +msgid "Password:" +msgstr "Passwort:" + +#: ../auth.c:70 +msgid "Language:" +msgstr "Sprache:" + +#: ../auth.c:71 +msgid "Login" +msgstr "Anmelden" + +#: ../auth.c:73 ../paging.c:510 +msgid "Exit" +msgstr "Ende" + +#: ../auth.c:75 +#, c-format +msgid "%s - powered by Citadel" +msgstr "%s - mit Citadel-Technologie" + +#: ../auth.c:166 ../auth.c:534 +msgid "Blank passwords are not allowed." +msgstr "Leere Passwörter sind nicht zulässig." + +#: ../auth.c:187 +msgid "Your password was not accepted." +msgstr "Ihr Passwort wurde nicht akzeptiert" + +#: ../auth.c:295 +msgid "" +"This program was unable to connect or stay connected to the Citadel server. " +"Please report this problem to your system administrator." +msgstr "" +"Dieses Programm konnte keine Verbindung zum Citadel-Server herstellen oder " +"aufrechterhalten.Bitte wenden Sie sich an Ihren Administrator." + +#: ../auth.c:302 +msgid "Log in again" +msgstr "Erneut Anmelden" + +#: ../auth.c:305 +msgid "Close window" +msgstr "Fenster Schließen" + +#: ../auth.c:326 ../mainmenu.c:241 +msgid "Validate new users" +msgstr "Neue Benutzer überprüfen" + +#: ../auth.c:346 +msgid "No users require validation at this time." +msgstr "Keine Benutzer müssen zu dieser Zeit validiert werden" + +#: ../auth.c:387 +#, c-format +msgid "Current access level: %d (%s)\n" +msgstr "Aktuelle Berechtigungen: %d (%s)\n" + +#: ../auth.c:395 +msgid "Select access level for this user:" +msgstr "Berechtigungen dieses Benutzers" + +#: ../auth.c:458 ../mainmenu.c:137 +msgid "Change your password" +msgstr "Ändern Sie Ihr Passwort" + +#: ../auth.c:487 +msgid "Enter new password:" +msgstr "Bitte geben Sie ein neues Passwort ein" + +#: ../auth.c:491 +msgid "Enter it again to confirm:" +msgstr "Nocheinmal zur Verifizierung:" + +#: ../auth.c:496 +msgid "Change password" +msgstr "Passwort ändern" + +#: ../auth.c:498 ../calendar.c:616 ../event.c:390 ../graphics.c:58 +#: ../iconbar.c:712 ../mainmenu.c:300 ../messages.c:2894 ../messages.c:3015 +#: ../messages.c:3103 ../netconf.c:86 ../netconf.c:149 ../paging.c:58 +#: ../preferences.c:389 ../roomops.c:1285 ../roomops.c:1613 ../roomops.c:2046 +#: ../roomops.c:2195 ../roomops.c:2259 ../siteconfig.c:564 ../sysmsgs.c:59 +#: ../useredit.c:381 ../vcard_edit.c:336 ../who.c:273 +msgid "Cancel" +msgstr "Abbruch" + +#: ../auth.c:515 +msgid "Cancelled. Password was not changed." +msgstr "Abgebrochen. Passwort wurde nicht gesetzt." + +#: ../auth.c:526 +msgid "They don't match. Password was not changed." +msgstr "Die Passwörter stimmen nicht überein. Passwort nicht geändert" + +#: ../availability.c:140 +msgid "availability unknown" +msgstr "Verfügbarkeit unbekannt" + +#: ../availability.c:161 +msgid "free" +msgstr "frei" + +#: ../availability.c:171 +msgid "BUSY" +msgstr "BESCHÄFTIGT" + +#: ../calendar.c:24 +msgid "" +"This message contains calendaring/scheduling information, but support for " +"calendars is not available on this particular system. Please ask your " +"system administrator to install a new version of the Citadel web service " +"with calendaring enabled.
\n" +msgstr "" +"Diese Nachricht enthält Kalender/Datums Informationen, aber die " +"Unterstützung für Kalender ist auf diesem System nicht verfügbar. Bitte " +"fragen Sie ihren System-Administrator eine Version des Citadel-Web-Services " +"mit unterstützung für Kalender.
\n" + +#: ../calendar.c:38 +msgid "" +"Cannot display calendar item. You are seeing this error because your " +"WebCit service has not been installed with calendar support. Please contact " +"your system administrator.
\n" +msgstr "" +"Kann Kalender-Element nicht darstellen. Sie sehen diesen Fehlerweil ihr " +"WebCit System ohne Kalenderunterstützung installiert wurde.Bitte wenden Sie " +"sich an Ihren Systemadministrator.
\n" + +#: ../calendar.c:50 +msgid "" +"Cannot display to-do item. You are seeing this error because your WebCit " +"service has not been installed with calendar support. Please contact your " +"system administrator.
\n" +msgstr "" +"Kann To-Do Datum nicht darstellen. Sie sehen diesen Fehlerweil ihr WebCit " +"System ohne Kalenderunterstützung installiert wurde.Bitte wenden Sie sich an " +"Ihren Systemadministrator.
\n" + +#: ../calendar.c:107 +msgid "Meeting invitation" +msgstr "Einladung für ein Treffen" + +#: ../calendar.c:116 +msgid "Attendee's reply to your invitation" +msgstr "Antwort des Teilnehmers auf Ihre Einladung" + +#: ../calendar.c:125 +msgid "Published event" +msgstr "Öffentliches Ereignis" + +#: ../calendar.c:130 +msgid "This is an unknown type of calendar item." +msgstr "Dies ist ein unbekanntes Kalender-Datum" + +#: ../calendar.c:139 ../calendar.c:560 +msgid "Summary:" +msgstr "Zusammenfassung:" + +#: ../calendar.c:148 +msgid "Location:" +msgstr "Ort:" + +#: ../calendar.c:174 +msgid "Date:" +msgstr "Datum:" + +#: ../calendar.c:181 +msgid "Starting date/time:" +msgstr "Startzeit/Datum:" + +#: ../calendar.c:192 +msgid "Ending date/time:" +msgstr "Endzeit/Datum:" + +#: ../calendar.c:201 ../calendar.c:596 +msgid "Description:" +msgstr "Beschreibung" + +#: ../calendar.c:210 +msgid "Attendee:" +msgstr "Teilnehmer" + +#: ../calendar.c:250 +#, c-format +msgid "This is an update of '%s' which is already in your calendar." +msgstr "Dies ist ein Update von '%s', das schon in Ihrem Kalender ist." + +#: ../calendar.c:254 +#, c-format +msgid "This event would conflict with '%s' which is already in your calendar." +msgstr "" +"Dieser Termin würde mit '%s' kollidieren, der bereits in Ihrem Kalender " +"vorgemerkt ist." + +#: ../calendar.c:259 +msgid "Update:" +msgstr "Update:" + +#: ../calendar.c:260 +msgid "CONFLICT:" +msgstr "KONFLIKT:" + +#: ../calendar.c:278 +msgid "How would you like to respond to this invitation?" +msgstr "" + +#: ../calendar.c:279 +msgid "Accept" +msgstr "Annehmen" + +#: ../calendar.c:280 +msgid "Tentative" +msgstr "Vorläufig" + +#: ../calendar.c:281 +msgid "Decline" +msgstr "Ablehnen" + +#: ../calendar.c:305 +msgid "Click Update to accept this reply and update your calendar." +msgstr "" +"Klicken sie Aktualisieren um diese Änderung in ihren Kalender zu " +"übernehmen." + +#: ../calendar.c:306 +msgid "Update" +msgstr "Aktualisieren" + +#: ../calendar.c:307 +msgid "Ignore" +msgstr "Ignorieren" + +#: ../calendar.c:334 +msgid "There was an error parsing this calendar item." +msgstr "Ein Kalenderdatum konnte nicht verarbeitet werden." + +#: ../calendar.c:361 +msgid "Respond to meeting request" +msgstr "Auf Anfrage zum Treffen antworten" + +#: ../calendar.c:380 +msgid "" +"You have accepted this meeting invitation. It has been entered into your " +"calendar." +msgstr "" +"Sie haben die Einladung angenommen. Sie wurde in Ihren Kalender übernommen." + +#: ../calendar.c:384 +msgid "" +"You have tentatively accepted this meeting invitation. It has been " +"'pencilled in' to your calendar." +msgstr "" +"Sie haben diese Einladung vorläufig angenommen. Es wurde in Ihrem Kalender " +"vorgemerkt." + +#: ../calendar.c:388 +msgid "" +"You have declined this meeting invitation. It has not been entered " +"into your calendar." +msgstr "" +"Sie haben diese Einladung abgelehnt. Sie wurde NICHT in Ihren " +"Kalender übernommen." + +#: ../calendar.c:393 +msgid "A reply has been sent to the meeting organizer." +msgstr "Eine Antwort wurde an den Organisator versendet." + +#: ../calendar.c:403 ../calendar.c:457 +msgid "Return to messages" +msgstr "Zurück zur Nachricht" + +#: ../calendar.c:422 +msgid "Update your calendar with this RSVP" +msgstr "Dieses u.A.w.g. in Ihren Kalender übernehmen" + +#: ../calendar.c:441 +msgid "Your calendar has been updated to reflect this RSVP." +msgstr "u.A.w.g. wurde eingetragen." + +#: ../calendar.c:443 +msgid "" +"You have chosen to ignore this RSVP. Your calendar has not been " +"updated." +msgstr "u.A.w.g. abgelehnt. Sie wurde nicht übernommen." + +#: ../calendar.c:544 +msgid "Edit task" +msgstr "Aufgabe bearbeiten" + +#: ../calendar.c:571 +msgid "Start date:" +msgstr "Anfangsdatum:" + +#: ../calendar.c:584 +msgid "Due date:" +msgstr "Fälligkeitsdatum:" + +#: ../calendar.c:614 ../event.c:387 +msgid "Save" +msgstr "Speichern" + +#: ../calendar.c:615 ../event.c:388 ../messages.c:903 ../messages.c:2281 +msgid "Delete" +msgstr "Löschen" + +#: ../calendar_tools.c:73 +msgid "Month: " +msgstr "Monat: " + +#: ../calendar_tools.c:87 +msgid "Day: " +msgstr "Tag: " + +#: ../calendar_tools.c:97 +msgid "Year: " +msgstr "Jahr: " + +#: ../calendar_tools.c:115 +msgid "Hour: " +msgstr "Stunde: " + +#: ../calendar_tools.c:135 +msgid "Minute: " +msgstr "Minute: " + +#: ../calendar_tools.c:204 +msgid "(status unknown)" +msgstr "(Zustand unbekannt)" + +#: ../calendar_tools.c:220 +msgid "(needs action)" +msgstr "(zu bearbeiten)" + +#: ../calendar_tools.c:223 +msgid "(accepted)" +msgstr "(Angenommen)" + +#: ../calendar_tools.c:226 +msgid "(declined)" +msgstr "(Abgelehnt)" + +#: ../calendar_tools.c:229 +msgid "(tenative)" +msgstr "(Vorläufig)" + +#: ../calendar_tools.c:232 +msgid "(delegated)" +msgstr "(abgesendet)" + +#: ../calendar_tools.c:235 +msgid "(completed)" +msgstr "(Vollständig)" + +#: ../calendar_tools.c:238 +msgid "(in process)" +msgstr "(in Bearbeitung)" + +#: ../calendar_tools.c:241 +msgid "(none)" +msgstr "(keine)" + +#: ../calendar_view.c:17 +msgid "The calendar view is not available." +msgstr "Die Kalenderdarstellung ist nicht verfügbar." + +#: ../calendar_view.c:24 +msgid "The tasks view is not available." +msgstr "Die Aufgabendarstellung ist nicht verfügbar." + +#: ../calendar_view.c:435 +msgid "Week" +msgstr "Woche" + +#: ../calendar_view.c:437 +msgid "Hours" +msgstr "Stunden" + +#: ../calendar_view.c:438 ../messages.c:2276 +msgid "Subject" +msgstr "Betreff" + +#: ../calendar_view.c:439 ../event.c:164 +msgid "Start" +msgstr "Anfang" + +#: ../calendar_view.c:440 ../event.c:218 +msgid "End" +msgstr "Ende" + +#: ../calendar_view.c:930 +msgid "Name of task" +msgstr "Name der Aufgaben" + +#: ../calendar_view.c:932 +msgid "Date due" +msgstr "Fälligkeitsdatum" + +#: ../event.c:76 ../paging.c:78 +msgid "Add or edit an event" +msgstr "Ereignis hinzufügen oder ändern" + +#: ../event.c:142 ../iconbar.c:123 ../iconbar.c:539 +msgid "Summary" +msgstr "Zusammenfassung" + +#: ../event.c:153 +msgid "Location" +msgstr "Ort" + +#: ../event.c:207 +msgid "All day event" +msgstr "Ganztägiger Termin" + +#: ../event.c:246 ../iconbar.c:199 ../iconbar.c:586 +msgid "Notes" +msgstr "Notiz" + +#: ../event.c:288 +msgid "Organizer" +msgstr "Organisator" + +#: ../event.c:293 +msgid "(you are the organizer)" +msgstr "(Sie sind der Organisator)" + +#: ../event.c:311 +msgid "Show time as:" +msgstr "Zeit anzeigen als:" + +#: ../event.c:333 +msgid "Free" +msgstr "Frei" + +#: ../event.c:340 +msgid "Busy" +msgstr "Besetzt" + +#: ../event.c:346 +msgid "Attendees" +msgstr "Teilnehmer" + +#: ../event.c:349 +msgid "(One per line)" +msgstr "(einen pro Zeile)" + +#: ../event.c:389 +msgid "Check attendee availability" +msgstr "Teilnehmer Verfügbarkeit überprüfen" + +#: ../floors.c:34 +msgid "Add/change/delete floors" +msgstr "Etage Neu/Ändern/Löschen" + +#: ../floors.c:51 ../siteconfig.c:49 ../vcard_edit.c:78 ../wiki.c:66 +#: ../wiki.c:76 +msgid "Error" +msgstr "Fehler" + +#: ../floors.c:62 +msgid "Floor number" +msgstr "Etage Nummer" + +#: ../floors.c:64 +msgid "Floor name" +msgstr "Etagen Name" + +#: ../floors.c:66 +msgid "Number of rooms" +msgstr "Zahl der Räume" + +#: ../floors.c:68 +msgid "Floor CSS" +msgstr "Etagen CSS" + +#: ../floors.c:81 +msgid "(delete floor)" +msgstr "(Etage Löschen)" + +#: ../floors.c:87 +msgid "(edit graphic)" +msgstr "(Bild verändern)" + +#: ../floors.c:100 +msgid "Change name" +msgstr "Namen Ändern" + +#: ../floors.c:113 +msgid "Change CSS" +msgstr "CSS Ändern" + +#: ../floors.c:125 +msgid "Create new floor" +msgstr "Neue Etage" + +#: ../floors.c:146 +#, c-format +msgid "Floor has been deleted." +msgstr "Etage gelöscht." + +#: ../floors.c:169 +#, c-format +msgid "New floor has been created." +msgstr "Eine neue Etage wurde generiert." + +#: ../graphics.c:27 +msgid "Image upload" +msgstr "Bild Hochgeladen" + +#: ../graphics.c:45 +msgid "" +"You can upload any image directly from your computer, as long as it is in " +"GIF format (JPEG, PNG, etc. won't work)." +msgstr "" +"Sie können ein Bild direkt von ihrem Computer hochladen. Es muss im GIF-" +"Format sein (JPEG, PNG etc funktionieren nicht)." + +#: ../graphics.c:50 +msgid "Please select a file to upload:" +msgstr "Bitte geben Sie eine Datei zum hochladen an:" + +#: ../graphics.c:54 +msgid "Upload" +msgstr "Hochladen" + +#: ../graphics.c:56 +msgid "Reset form" +msgstr "Formular Löschen" + +#: ../graphics.c:74 +msgid "Graphics upload has been cancelled." +msgstr "Bild hochladen abgebrochen." + +#: ../graphics.c:81 +msgid "You didn't upload a file." +msgstr "Sie haben keine Datei hochgeladen." + +#: ../html2html.c:109 +#, c-format +msgid "realloc() error! couldn't get %d bytes: %s" +msgstr "realloc() Fehler! Konnte %d Bytes nicht allozieren: %s" + +#: ../iconbar.c:105 ../iconbar.c:391 +msgid "Find out more about Citadel" +msgstr "Mehr über Citadel herausfinden" + +#: ../iconbar.c:106 ../iconbar.c:392 +msgid "CITADEL" +msgstr "CITADEL" + +#: ../iconbar.c:110 +msgid "switch to room list" +msgstr "Auf Raumliste wechseln" + +#: ../iconbar.c:116 ../iconbar.c:540 +msgid "Your summary page" +msgstr "Meine Übersichtsseite" + +#: ../iconbar.c:133 +msgid "Go to your email inbox" +msgstr "Zum Posteingang" + +#: ../iconbar.c:140 +msgid "Mail" +msgstr "Posteingang" + +#: ../iconbar.c:158 +msgid "Go to your personal calendar" +msgstr "Zu Ihrem persönlichen Kalender" + +#: ../iconbar.c:165 ../iconbar.c:603 ../roomops.c:22 +msgid "Calendar" +msgstr "Kalender" + +#: ../iconbar.c:175 +msgid "Go to your personal address book" +msgstr "Zu Ihrem persönlichen Adressbuch" + +#: ../iconbar.c:182 ../iconbar.c:570 +msgid "Contacts" +msgstr "Adressen" + +#: ../iconbar.c:192 +msgid "Go to your personal notes" +msgstr "Zu Ihren persönlichen Notizen" + +#: ../iconbar.c:209 +msgid "Go to your personal task list" +msgstr "Zu Ihrer persönlichen Aufgabenliste" + +#: ../iconbar.c:216 ../iconbar.c:618 ../summary.c:109 +msgid "Tasks" +msgstr "Aufgaben" + +#: ../iconbar.c:224 +msgid "List all of your accessible rooms" +msgstr "Alle zugänglichen Räume auflisten" + +#: ../iconbar.c:231 ../iconbar.c:634 +msgid "Rooms" +msgstr "Räume" + +#: ../iconbar.c:240 +msgid "See who is online right now" +msgstr "Sehen Sie, wer gerade angemeldet ist" + +#: ../iconbar.c:247 ../iconbar.c:650 +msgid "Who is online?" +msgstr "Wer ist da?" + +#: ../iconbar.c:265 ../iconbar.c:666 +msgid "Chat" +msgstr "Chat" + +#: ../iconbar.c:275 +msgid "Advanced Options Menu: Advanced Room commands, Account Info, and Chat" +msgstr "" +"Erweiterte Optionen Menü: Spezielle Raumkommandos, Benutzerdaten Bearbeiten, " +"Chatten" + +#: ../iconbar.c:282 +msgid "Advanced" +msgstr "Erweitert" + +#: ../iconbar.c:292 +msgid "Room and system administration functions" +msgstr "Räume und Verwaltung" + +#: ../iconbar.c:299 ../roomops.c:1002 +msgid "Administration" +msgstr "Verwaltung" + +#: ../iconbar.c:307 ../iconbar.c:316 ../iconbar.c:402 ../iconbar.c:411 +#: ../mainmenu.c:110 +msgid "Log off" +msgstr "Abmelden" + +#: ../iconbar.c:308 ../iconbar.c:403 +msgid "Log off now?" +msgstr "Jetzt abmelden?" + +#: ../iconbar.c:326 +msgid "Customize this menu" +msgstr "Dieses Menü bearbeiten" + +#: ../iconbar.c:327 +msgid "customize this menu" +msgstr "Dieses Menü Bearbeiten" + +#: ../iconbar.c:396 +msgid "switch to menu" +msgstr "Zurück zum Menü" + +#: ../iconbar.c:481 +msgid "Customize the icon bar" +msgstr "Diese Icon-Leiste bearbeiten" + +#: ../iconbar.c:493 +msgid "Display icons as:" +msgstr "Icons anzeigen als:" + +#: ../iconbar.c:499 +msgid "pictures and text" +msgstr "Bilder und Text" + +#: ../iconbar.c:500 +msgid "pictures only" +msgstr "Nur Bilder" + +#: ../iconbar.c:501 +msgid "text only" +msgstr "Nur Text" + +#: ../iconbar.c:506 +msgid "" +"Select the icons you would like to see displayed in the 'icon bar' menu on " +"the left side of the screen." +msgstr "" +"Die Menüeinträge, die sie auf der Leiste links angezeigt haben möchten " +"anwählen" + +#: ../iconbar.c:524 +msgid "Site logo" +msgstr "Seiten Logo" + +#: ../iconbar.c:525 +msgid "An icon describing this site" +msgstr "Ein Icon, das Ihre Seite beschreibt" + +#: ../iconbar.c:554 +msgid "Mail (inbox)" +msgstr "Posteingang" + +#: ../iconbar.c:555 +msgid "A shortcut to your email Inbox" +msgstr "Eine Abkürzung zu Ihrem Posteingang" + +#: ../iconbar.c:571 +msgid "Your personal address book" +msgstr "Ihr eigenes Adressbuch" + +#: ../iconbar.c:587 +msgid "Your personal notes" +msgstr "Ihre Notizen" + +#: ../iconbar.c:604 +msgid "A shortcut to your personal calendar" +msgstr "Eine Abkürzung zu Ihrem Kalender" + +#: ../iconbar.c:619 +msgid "A shortcut to your personal task list" +msgstr "Eine Abkürzung zu Ihrer Aufgabenliste" + +#: ../iconbar.c:635 +msgid "" +"Clicking this icon displays a list of all accessible rooms (or folders) " +"available." +msgstr "Liste aller verfügbaren Räume (oder Verzeichnisse) auflisten." + +#: ../iconbar.c:651 +msgid "Clicking this icon displays a list of all users currently logged in." +msgstr "Wer ist gerade angemeldet?" + +#: ../iconbar.c:667 +msgid "" +"Clicking this icon enters real-time chat mode with other users in the same " +"room." +msgstr "Interaktiver Chat mit den anderen Benutzern in diesem Raum" + +#: ../iconbar.c:684 +msgid "Advanced options" +msgstr "Erweiterte Optionen" + +#: ../iconbar.c:685 +msgid "Access to the complete menu of Citadel functions." +msgstr "Zugriff zu allen Citadel-Menü-Funktionen" + +#: ../iconbar.c:701 +msgid "Citadel logo" +msgstr "Citadel Logo" + +#: ../iconbar.c:702 +msgid "Displays the 'Powered by Citadel' icon" +msgstr "Den Citadel-Brand anzeigen" + +#: ../iconbar.c:711 ../netconf.c:146 ../roomops.c:1284 ../roomops.c:1611 +#: ../siteconfig.c:562 ../sysmsgs.c:57 ../useredit.c:381 ../vcard_edit.c:335 +msgid "Save changes" +msgstr "Änderungen übernehmen" + +#: ../iconbar.c:766 +msgid "" +"Your icon bar has been updated. Please select any of its choices to " +"continue." +msgstr "Ihre Icon-Leiste wurde geändert. Klicken Sie ein Icon zum fortfahren." + +#: ../inetconf.c:38 +msgid "localhost" +msgstr "Diese Maschine" + +#: ../inetconf.c:39 +msgid "directory" +msgstr "Verzeichnis" + +#: ../inetconf.c:40 +msgid "gatewaydomain" +msgstr "Tor zur Außenwelt" + +#: ../inetconf.c:41 +msgid "smarthost" +msgstr "Smarthost" + +#: ../inetconf.c:42 +msgid "rbl" +msgstr "Blacklisten" + +#: ../inetconf.c:43 +msgid "spamassassin" +msgstr "SpammAssassin" + +#: ../inetconf.c:45 +msgid "Local host aliases" +msgstr "Andere Namen für diese Maschine" + +#: ../inetconf.c:46 +msgid "Directory domains" +msgstr "Verzeichnis Namen" + +#: ../inetconf.c:47 +msgid "Gateway domains" +msgstr "Übergangs Domains" + +#: ../inetconf.c:48 +msgid "Smart hosts" +msgstr "Smart Hosts" + +#: ../inetconf.c:49 +msgid "RBL hosts" +msgstr "Blacklist-Maschinen" + +#: ../inetconf.c:50 +msgid "SpamAssassin hosts" +msgstr "SpamAssassin Maschinen" + +#: ../inetconf.c:52 +msgid "(domains for which this host receives mail)" +msgstr "(Domäne für die diese Maschine Mail bekommt)" + +#: ../inetconf.c:53 +msgid "(domains mapped with the Global Address Book)" +msgstr "(Domäne, auf die das öffentliche Adressbuch zeigt)" + +#: ../inetconf.c:54 +msgid "(domains whose subdomains match Citadel hosts)" +msgstr "(Domänen, deren Unterdomänen diese Citadel-Maschinen treffen)" + +#: ../inetconf.c:55 +msgid "(if present, forward all outbound mail to one of these hosts)" +msgstr "" +"(wenn gesetzt, alle zu versendende Mail über diese Maschine verschicken)" + +#: ../inetconf.c:56 +msgid "(hosts running a Realtime Blackhole List)" +msgstr "(Maschinen, von denen Echtzeit-Blackliste zu beziehen sind)" + +#: ../inetconf.c:57 +msgid "(hosts running the SpamAssassin service)" +msgstr "(Maschine, auf der Ihr SpamAssessin läuft)" + +#: ../inetconf.c:94 +msgid "Internet configuration" +msgstr "Internet Konfiguration" + +#: ../inetconf.c:121 +msgid "Delete this entry?" +msgstr "Eintrag Löschen?" + +#: ../inetconf.c:123 ../netconf.c:209 +msgid "(Delete)" +msgstr "(Löschen)" + +#: ../inetconf.c:173 +#, c-format +msgid "%s has been deleted." +msgstr "%s wurde gelöscht." + +#: ../listsub.c:44 +msgid "List subscription" +msgstr "Listen Teilnehmer" + +#: ../listsub.c:56 +msgid "List subscribe/unsubscribe" +msgstr "Liste abonnieren/abmelden" + +#: ../listsub.c:76 +msgid "Confirmation request sent" +msgstr "Anfrage bestätigt" + +#: ../listsub.c:78 +#, c-format +msgid "" +"You are subscribing %s to the %s mailing list. The " +"listserver has sent you an e-mail with one additional Web link for you to " +"click on to confirm your subscription. This extra step is for your " +"protection, as it prevents others from being able to subscribe you to lists " +"without your consent.

Please click on the link which is being e-" +"mailed to you and your subscription will be confirmed.
\n" +msgstr "" +"Sie abonnieren für %s die %s Liste. Der Listenserver hat " +"Ihnen eine URL zum bestätigen der Anmeldung zugeschickt. Dieser zusätzliche " +"Schritt ist zu Ihrem eigenen Schutz, Damit niemand Sie auf eine Liste ohne " +"Ihre Zustimmung anmelden kann.
\n" + +#: ../listsub.c:91 +msgid "Go back..." +msgstr "Zurück..." + +#: ../mainmenu.c:23 +msgid "Basic commands" +msgstr "Einfache Kommandos" + +#: ../mainmenu.c:32 +msgid "List known rooms" +msgstr "Bekannte Räume aufzählen" + +#: ../mainmenu.c:34 +msgid "Where can I go from here?" +msgstr "Wo komme ich von hier aus hin?" + +#: ../mainmenu.c:39 ../roomops.c:646 +msgid "Goto next room" +msgstr "Zum nächsten Raum" + +#: ../mainmenu.c:42 +msgid "...with unread messages" +msgstr "... mit ungelesenenand new" +msgstr "... alte und neue" + +#: ../mainmenu.c:84 ../roomops.c:621 +msgid "Enter a message" +msgstr "Beitrag verfassen" + +#: ../mainmenu.c:87 +msgid "(post in this room)" +msgstr "(Beitrag in diesen Raum stellen)" + +#: ../mainmenu.c:94 +msgid "Summary page" +msgstr "Übersichtsseite" + +#: ../mainmenu.c:97 +msgid "Summary of my account" +msgstr "Meine Citadele" + +#: ../mainmenu.c:102 +msgid "User list" +msgstr "Benutzerliste" + +#: ../mainmenu.c:105 +msgid "(all registered users)" +msgstr "(alle Benutzer)" + +#: ../mainmenu.c:113 +msgid "Bye!" +msgstr "Auf Wiedersehen!" + +#: ../mainmenu.c:122 +msgid "Your info" +msgstr "Ihre Biographie" + +#: ../mainmenu.c:127 +msgid "Change your preferences and settings" +msgstr "Ihre persönlichen Einstellungen Ändern" + +#: ../mainmenu.c:132 +msgid "Update your contact information" +msgstr "Ihre Kontaktinformationen Ändern" + +#: ../mainmenu.c:142 +msgid "Enter your 'bio'" +msgstr "Ihr Lebenslauf eingeben" + +#: ../mainmenu.c:147 +msgid "Edit your online photo" +msgstr "Ihr Photo ändern" + +#: ../mainmenu.c:154 +msgid "Advanced room commands" +msgstr "Erweiterte Raum Kommandos" + +#: ../mainmenu.c:160 +msgid "Edit or delete this room" +msgstr "Diesen Raum bearbeiten oder Löschen" + +#: ../mainmenu.c:166 +msgid "Go to a 'hidden' room" +msgstr "In einen 'versteckten' Raum gehen" + +#: ../mainmenu.c:171 ../roomops.c:1942 +msgid "Create a new room" +msgstr "Einen neuen Raum erzeugen" + +#: ../mainmenu.c:176 +#, c-format +msgid "Zap (forget) this room (%s)" +msgstr "Diesen Raum vergessen (%s)" + +#: ../mainmenu.c:181 +msgid "List all forgotten rooms" +msgstr "Alle vergessenen Räume auflisten" + +#: ../mainmenu.c:200 +msgid "System Administration Menu" +msgstr "System Administrator Menü" + +#: ../mainmenu.c:209 +msgid "Global Configuration" +msgstr "Globale Konfiguration" + +#: ../mainmenu.c:214 +msgid "Edit site-wide configuration" +msgstr "Systemvorgaben bearbeiten" + +#: ../mainmenu.c:219 +msgid "Domain names and Internet mail configuration" +msgstr "Domänenname und Internetmail Konfiguration" + +#: ../mainmenu.c:224 +msgid "Configure replication with other Citadel servers" +msgstr "Die Replikation mit anderen Citadellen Konfigurieren" + +#: ../mainmenu.c:231 +msgid "User account management" +msgstr "Benutzer verwalten" + +#: ../mainmenu.c:236 +msgid "Add, change, delete user accounts" +msgstr "Benutzer Bearbeiten/Löschen/Anlegen " + +#: ../mainmenu.c:246 +msgid "Rooms and Floors" +msgstr "Räume und Etagen" + +#: ../mainmenu.c:251 +msgid "Add, change, or delete floors" +msgstr "Etagen Bearbeiten/Löschen/Hinzufügen" + +#: ../mainmenu.c:273 +msgid "Enter a server command" +msgstr "Ein Server-Kommando eingeben" + +#: ../mainmenu.c:282 +msgid "" +"This screen allows you to enter Citadel server commands which are not " +"supported by WebCit. If you do not know what that means, then this screen " +"will not be of much use to you." +msgstr "" +"Dieses Fenster erlaubt Ihnen, Citadel-Server Befehle, die nicht in WebCit " +"verwendet werden, direkt einzugeben. Wenn Ihnen dies nichts sagt, wird " +"dieses Fenster für Sie nicht ohne Studium der Dokumentation von nützen sein" + +#: ../mainmenu.c:289 +msgid "Enter command:" +msgstr "Kommando Eingeben:" + +#: ../mainmenu.c:292 +msgid "Command input (if requesting SEND_LISTING transfer mode):" +msgstr "Kommando Eingabe (wenn sie SEND_LISTING Transfer-Modus anfordern):" + +#: ../mainmenu.c:296 +#, c-format +msgid "Detected host header is %s://%s" +msgstr "Erkannte Maschinen Kopfzeile ist %s://%s" + +#: ../mainmenu.c:298 +msgid "Send command" +msgstr "Kommando Senden" + +#: ../mainmenu.c:327 +msgid "Server command results" +msgstr "Server Kommando Ergebnisse" + +#: ../messages.c:444 +msgid " (work)" +msgstr " (Firma)" + +#: ../messages.c:446 +msgid " (home)" +msgstr " (Privat)" + +#: ../messages.c:448 +msgid " (cell)" +msgstr " (Handy)" + +#: ../messages.c:459 ../vcard_edit.c:252 +msgid "Address:" +msgstr "Adresse:" + +#: ../messages.c:519 +msgid "Telephone:" +msgstr "Telefon" + +#: ../messages.c:524 +msgid "E-mail:" +msgstr "Email:" + +#: ../messages.c:632 ../messages.c:1229 +msgid "ERROR:" +msgstr "FEHLER" + +#: ../messages.c:655 ../messages.c:932 ../messages.c:1238 ../messages.c:1341 +msgid "unexpected end of message" +msgstr "unerwartetes Meldungsende" + +#: ../messages.c:668 ../messages.c:1250 +msgid "from " +msgstr "von " + +#: ../messages.c:696 ../messages.c:1266 +msgid "in " +msgstr "in " + +#: ../messages.c:717 ../messages.c:1287 +msgid "to " +msgstr "an " + +#: ../messages.c:770 +msgid "View" +msgstr "Anzeigen" + +#: ../messages.c:772 +msgid "Download" +msgstr "Herunterladen" + +#: ../messages.c:819 ../messages.c:2851 +msgid "CC:" +msgstr "CC:" + +#: ../messages.c:827 ../messages.c:1323 +msgid "Subject:" +msgstr "Betreff:" + +#: ../messages.c:851 ../rss.c:28 +msgid "Reply" +msgstr "Antworten" + +#: ../messages.c:866 +msgid "ReplyQuoted" +msgstr "Antworten&Zitieren" + +#: ../messages.c:883 +msgid "ReplyAll" +msgstr "AntwortenAnAlle" + +#: ../messages.c:891 +msgid "Forward" +msgstr "Weiterleiten" + +#: ../messages.c:898 ../messages.c:3101 +msgid "Move" +msgstr "Verschieben" + +#: ../messages.c:903 +msgid "Delete this message?" +msgstr "Diese Nachricht Löschen?" + +#: ../messages.c:909 +msgid "Headers" +msgstr "Kopfzeilen" + +#: ../messages.c:914 +msgid "Print" +msgstr "Drucken" + +#: ../messages.c:1025 +#, c-format +msgid "I don't know how to display %s" +msgstr "Kann %s nicht darstellen" + +#: ../messages.c:1060 ../messages.c:1587 +msgid "edit" +msgstr "bearbeiten" + +#: ../messages.c:1550 ../messages.c:1859 +msgid "(no subject)" +msgstr "(kein Betreff)" + +#: ../messages.c:1678 +msgid "(no name)" +msgstr "(kein Name)" + +#: ../messages.c:1730 +msgid "This address book is empty." +msgstr "Dieses Adressbuch ist leer." + +#: ../messages.c:2156 +msgid "No new messages." +msgstr "Keine neue Nachricht." + +#: ../messages.c:2158 +msgid "No old messages." +msgstr "Keine alte Nachricht" + +#: ../messages.c:2160 +msgid "No messages here." +msgstr "Keine Beiträge hier" + +#: ../messages.c:2278 +msgid "Sender" +msgstr "Absender" + +#: ../messages.c:2280 +msgid "Date" +msgstr "Datum" + +#: ../messages.c:2295 +msgid "Click on any note to edit it." +msgstr "Auf eine Notiz klicken zum editieren" + +#: ../messages.c:2398 +msgid "Reading #" +msgstr "Lese #" + +#: ../messages.c:2451 +#, c-format +msgid "of %d messages." +msgstr "von %d Nachrichten" + +#: ../messages.c:2635 +#, c-format +msgid "Cancelled. Message was not posted." +msgstr "Abgebrochen. Beitrag wurde nicht eingereicht." + +#: ../messages.c:2641 +#, c-format +msgid "Automatically cancelled because you have already saved this message." +msgstr "" +"Automatisch abgebrochen, weil Sie diesen Beitrag schon gespeichert haben." + +#: ../messages.c:2660 +#, c-format +msgid "Message has been sent.\n" +msgstr "Nachricht wurde gesendet.\n" + +#: ../messages.c:2663 +#, c-format +msgid "Message has been posted.\n" +msgstr "Beitrag wurde gesendet.\n" + +#: ../messages.c:2797 +msgid " from " +msgstr " von " + +#: ../messages.c:2807 +msgid " in " +msgstr " in " + +#: ../messages.c:2840 +msgid "To:" +msgstr "An:" + +#: ../messages.c:2862 +msgid "BCC:" +msgstr "BCC:" + +#: ../messages.c:2880 +msgid "Subject (optional):" +msgstr "Betreff (optional):" + +#: ../messages.c:2889 ../messages.c:3010 ../paging.c:57 +msgid "Send message" +msgstr "Meldung senden" + +#: ../messages.c:2891 ../messages.c:3012 +msgid "Post message" +msgstr "Beitrag einreichen" + +#: ../messages.c:2907 +msgid "--- forwarded message ---" +msgstr "--- Weitergeleitete Nachricht ---" + +#: ../messages.c:2987 +msgid "Attachments:" +msgstr "Anhänge:" + +#: ../messages.c:3002 +msgid "Attach file:" +msgstr "Datei anhängen:" + +#: ../messages.c:3005 ../roomops.c:1477 ../roomops.c:1507 +msgid "Add" +msgstr "Hinzufügen" + +#: ../messages.c:3074 +msgid "Confirm move of message" +msgstr "Verschieben bestätigen" + +#: ../messages.c:3081 +msgid "Move this message to:" +msgstr "Meldung verschieben nach:" + +#: ../messages.c:3127 +#, c-format +msgid "The message was not moved." +msgstr "Die Meldung wurde nicht verschoben." + +#: ../netconf.c:68 ../netconf.c:183 +msgid "Add a new node" +msgstr "Neuen Knoten hinzufügen" + +#: ../netconf.c:75 ../netconf.c:129 ../siteconfig.c:112 +#, c-format +msgid "Node name" +msgstr "Name des Knotens" + +#: ../netconf.c:77 ../netconf.c:133 +msgid "Shared secret" +msgstr "Gemeinsames Passwort" + +#: ../netconf.c:79 ../netconf.c:137 +msgid "Host or IP address" +msgstr "Maschinenname oder IP-Adresse" + +#: ../netconf.c:81 ../netconf.c:141 +msgid "Port number" +msgstr "Portnummer" + +#: ../netconf.c:84 +msgid "Add node" +msgstr "Knoten Hinzufügen" + +#: ../netconf.c:110 +msgid "Edit node configuration for " +msgstr "Knoten Konfiguration bearbeiten" + +#: ../netconf.c:176 +msgid "Network configuration" +msgstr "Netzwerk Konfiguration" + +#: ../netconf.c:189 +msgid "Currently configured nodes" +msgstr "Schon konfigurierte Knoten" + +#: ../netconf.c:204 +msgid "(Edit)" +msgstr "(Bearbeiten)" + +#: ../netconf.c:229 +msgid "Confirm delete" +msgstr "Löschen bestätigen" + +#: ../netconf.c:236 +msgid "Are you sure you want to delete " +msgstr "wirklich Löschen?" + +#: ../netconf.c:243 +msgid "Yes" +msgstr "Ja" + +#: ../netconf.c:246 +msgid "No" +msgstr "Nein" + +#: ../netconf.c:309 +msgid "Back to menu" +msgstr "Zurück zum Menü" + +#: ../notes.c:126 +msgid "An error has occurred." +msgstr "Ein Fehler ist aufgetreten." + +#: ../paging.c:24 +msgid "Send instant message" +msgstr "Kurznachricht senden" + +#: ../paging.c:33 +msgid "Send an instant message to: " +msgstr "Kurznachricht senden an: " + +#: ../paging.c:49 +msgid "Enter message text:" +msgstr "Nachrichtentext eingeben:" + +#: ../paging.c:89 +msgid "Message was not sent." +msgstr "Kurznachricht nicht gesendet." + +#: ../paging.c:99 +msgid "Message has been sent to " +msgstr "Kurznachricht gesendet an " + +#: ../paging.c:110 +msgid "[ close window ]" +msgstr "[ Fenster Schließen ]" + +#: ../paging.c:170 +msgid "" +"You have one or more instant messages waiting, but the Citadel Instant " +"Messenger window failed to open. This is probably because you have a popup " +"blocker installed. Please configure your popup blocker to allow popups from " +"this site if you wish to receive instant messages." +msgstr "" +"Es gibt eine neue.Kurznachricht für dich, aber das Chatfenster konnte sich " +"nicht oöfnen. Vermutlich hat dein Browser einen Popup Blocker aktiviert. " +"Wenn du Kurznachrichten erhalten willst, musst du Popups von diese Seite " +"erlauben." + +#: ../paging.c:309 ../paging.c:471 +msgid "An error occurred while setting up the chat socket." +msgstr "Ein Fehler trat auf beim verbinden des Chat-Sockets." + +#: ../paging.c:336 +msgid "Now exiting chat mode." +msgstr "Beende den Chat-Modus." + +#: ../paging.c:507 +msgid "Send" +msgstr "Absenden" + +#: ../paging.c:508 +msgid "Help" +msgstr "Hilfe" + +#: ../paging.c:509 +msgid "List users" +msgstr "Benutzer auflisten" + +#: ../preferences.c:205 +msgid "Preferences and settings" +msgstr "Einstellungen" + +#: ../preferences.c:226 +msgid "Room list view" +msgstr "Raumlisten Anzeige" + +#: ../preferences.c:232 +msgid "Tree (folders) view" +msgstr "Baum (Verzeichnis) Anzeige" + +#: ../preferences.c:238 +msgid "Table (rooms) view" +msgstr "Tabelle (Raum) anzeige" + +#: ../preferences.c:249 +msgid "Calendar hour format" +msgstr "Kalender Uhrzeitsformat" + +#: ../preferences.c:255 +msgid "12 hour (am/pm)" +msgstr "12 Stunden (AM/PM)" + +#: ../preferences.c:261 +msgid "24 hour" +msgstr "24 Stunden" + +#: ../preferences.c:272 +msgid "Calendar day view begins at:" +msgstr "Kalender Tagesübersicht beginnt bei:" + +#: ../preferences.c:301 +msgid "Calendar day view ends at:" +msgstr "Kalender Tagesübersicht endet bei:" + +#: ../preferences.c:330 +msgid "Attach signature to email messages?" +msgstr "Emails Signieren?" + +#: ../preferences.c:348 +msgid "No signature" +msgstr "Keine Signatur" + +#: ../preferences.c:354 +msgid "Use this signature:" +msgstr "Diese Signatur benutzen" + +#: ../preferences.c:378 +msgid "Default character set for email headers:" +msgstr "" + +#: ../preferences.c:388 +msgid "Change" +msgstr "Ändern" + +#: ../preferences.c:407 +msgid "Cancelled. No settings were changed." +msgstr "Abgebrochen. Keine Änderung wurde gespeichert." + +#: ../roomops.c:19 +msgid "Bulletin Board" +msgstr "Forum" + +#: ../roomops.c:20 +msgid "Mail Folder" +msgstr "Mail Übersicht" + +#: ../roomops.c:21 +msgid "Address Book" +msgstr "Adresse:" + +#: ../roomops.c:23 +msgid "Task List" +msgstr "Aufgaben Liste" + +#: ../roomops.c:24 +msgid "Notes List" +msgstr "Notizen" + +#: ../roomops.c:25 +msgid "Wiki" +msgstr "Wiki" + +#: ../roomops.c:26 +msgid "Calendar List" +msgstr "Kalender Liste" + +#: ../roomops.c:258 +msgid "Zapped (forgotten) rooms" +msgstr "Raum Vergessen" + +#: ../roomops.c:264 +msgid "Click on any room to un-zap it and goto that room.\n" +msgstr "Auf einen beliebigen vergessenen Raum klicken um ihn zu betreten\n" + +#: ../roomops.c:358 +msgid "View as:" +msgstr "Anzeigen als:" + +#: ../roomops.c:429 +#, c-format +msgid "%d new of %d messages" +msgstr "%d neu von %d Nachrichten" + +#: ../roomops.c:473 +msgid "View contacts" +msgstr "Kontakte Anzeigen" + +#: ../roomops.c:484 +msgid "Day view" +msgstr "Tages Übersicht" + +#: ../roomops.c:493 +msgid "Month view" +msgstr "Monats Übersicht" + +#: ../roomops.c:504 +#, fuzzy +msgid "Calendar list" +msgstr "Kalender Liste" + +#: ../roomops.c:515 +msgid "View tasks" +msgstr "Aufgaben anzeigen" + +#: ../roomops.c:526 +msgid "View notes" +msgstr "Nachrichten anzeigen" + +#: ../roomops.c:537 +msgid "View message list" +msgstr "Aktualisieren" + +#: ../roomops.c:548 +msgid "Wiki home" +msgstr "Wiki Startseite" + +#: ../roomops.c:573 +msgid "Add new contact" +msgstr "Neuen Kontakt hinzufügen" + +#: ../roomops.c:583 +msgid "Add new event" +msgstr "Neuen Termin hinzufügen" + +#: ../roomops.c:592 +msgid "Add new task" +msgstr "Neue Aufgabe" + +#: ../roomops.c:601 +msgid "Add new note" +msgstr "Neue Notiz" + +#: ../roomops.c:612 +msgid "Edit this page" +msgstr "Diese Seite bearbeiten" + +#: ../roomops.c:634 +msgid "" +"Leave all messages marked as unread, go to next room with unread messages" +msgstr "" +"Alle Beiträge ungelesen lassen, und in den nächsten Raum mit ungelesenen " +"Nachrichten gehen" + +#: ../roomops.c:635 +msgid "Skip this room" +msgstr "Raum Überspringen" + +#: ../roomops.c:645 +msgid "Mark all messages as read, go to next room with unread messages" +msgstr "" +"Alle Nachrichten als ungelesen markieren, und in den nächsten Raum mit " +"ungelesenen Nachrichten gehen" + +#: ../roomops.c:1018 +msgid "Configuration" +msgstr "Konfiguration" + +#: ../roomops.c:1034 +msgid "Message expire policy" +msgstr "Nachrichten Gültigkeitsvorgabe" + +#: ../roomops.c:1050 +msgid "Access controls" +msgstr "Zugangs-Kontrolle" + +#: ../roomops.c:1066 +msgid "Sharing" +msgstr "Teilen" + +#: ../roomops.c:1082 +msgid "Mailing list service" +msgstr "Mailinglisten Service" + +#: ../roomops.c:1104 +msgid "Are you sure you want to delete this room?" +msgstr "Sind Sie sicher, das Sie diesen Raum löschen wollen?" + +#: ../roomops.c:1106 +msgid "Delete this room" +msgstr "Raum Löschen" + +#: ../roomops.c:1109 +msgid "Set or change the icon for this room's banner" +msgstr "Das Bannersymbol des Raums ändern" + +#: ../roomops.c:1112 +msgid "Edit this room's Info file" +msgstr "Die Infodatei dieses Raums ändern" + +#: ../roomops.c:1121 ../roomops.c:1954 +msgid "Name of room: " +msgstr "Name des Raums: " + +#: ../roomops.c:1128 ../roomops.c:1958 +msgid "Resides on floor: " +msgstr "Ist in der Etage: " + +#: ../roomops.c:1142 ../roomops.c:2000 +msgid "Type of room:" +msgstr "Raum-Typ:" + +#: ../roomops.c:1149 +msgid "Public room" +msgstr "Öffentlicher Raum" + +#: ../roomops.c:1157 +msgid "Private - guess name" +msgstr "Privat - Namen raten" + +#: ../roomops.c:1164 +msgid "Private - require password:" +msgstr "Privat - Passwort nötig" + +#: ../roomops.c:1174 ../roomops.c:2031 +msgid "Private - invitation only" +msgstr "Privat - nur mit Einladung" + +#: ../roomops.c:1178 +msgid "If private, cause current users to forget room" +msgstr "Wenn Privat, sollen aktuelle Benutzer den Raum Vergessen?" + +#: ../roomops.c:1186 +msgid "Preferred users only" +msgstr "nur Privilegierte Benutzer" + +#: ../roomops.c:1192 +msgid "Read-only room" +msgstr "Nicht Schreibbarer Raum" + +#: ../roomops.c:1199 +msgid "File directory room" +msgstr "Dateiverzeichnis Raum" + +#: ../roomops.c:1202 +msgid "Directory name: " +msgstr "Verzeichnisname: " + +#: ../roomops.c:1210 +msgid "Uploading allowed" +msgstr "Hochladen erlaubt" + +#: ../roomops.c:1216 +msgid "Downloading allowed" +msgstr "Herunterladen erlaubt" + +#: ../roomops.c:1222 +msgid "Visible directory" +msgstr "Sichtbares Verzeichnis" + +#: ../roomops.c:1231 +msgid "Network shared room" +msgstr "Netzwerk öffentlicher Raum" + +#: ../roomops.c:1237 +msgid "Permanent (does not auto-purge)" +msgstr "Permanent (kein automatisches Löschen" + +#: ../roomops.c:1242 +msgid "Anonymous messages" +msgstr "Anonyme Nachrichten" + +#: ../roomops.c:1250 +msgid "No anonymous messages" +msgstr "Keine anonyme Nachrichten" + +#: ../roomops.c:1256 +msgid "All messages are anonymous" +msgstr "Alle Nachrichten sind Anonym" + +#: ../roomops.c:1262 +msgid "Prompt user when entering messages" +msgstr "Benutzer fragen, wenn er die Nachricht eingibt" + +#: ../roomops.c:1268 +msgid "Room aide: " +msgstr "Raumverantwortlicher: " + +#: ../roomops.c:1340 +msgid "Shared with" +msgstr "Geteilt mit" + +#: ../roomops.c:1343 +msgid "Not shared with" +msgstr "Nicht geteilt mit" + +#: ../roomops.c:1348 ../roomops.c:1393 +msgid "Remote node name" +msgstr "Entfernter Knotenname" + +#: ../roomops.c:1350 ../roomops.c:1395 +msgid "Remote room name" +msgstr "Entfernter Raumname" + +#: ../roomops.c:1352 ../roomops.c:1397 +msgid "Actions" +msgstr "Aktionen" + +#: ../roomops.c:1385 +msgid "Unshare" +msgstr "Freigabe Wiederrufen" + +#: ../roomops.c:1422 +msgid "Share" +msgstr "Freigabe" + +#: ../roomops.c:1430 +msgid "Notes:" +msgstr "Notizen:" + +#: ../roomops.c:1431 +msgid "" +"When sharing a room, it must be shared from both ends. Adding a node to the " +"'shared' list sends messages out, but in order to receive messages, the " +"other nodes must be configured to send messages out to your system as well. " +"
  • If the remote room name is blank, it is assumed that the room name is " +"identical on the remote node.
  • If the remote room name is different, the " +"remote node must also configure the name of the room here.
    \n" +msgstr "" +"Wenn man einen Raum zwischen zwei Knoten synchronisiert, muss er an beiden " +"Knoten freigegeben werden. Einen Knoten an eine Freigabe anbinden sendet " +"lediglich die Nachrichten zum anderen Knoten, und nicht umgekehrt, sprich " +"Nachrichten vom anderen Knoten werden nicht übermittelt.
  • Wenn der andere " +"Knoten einen anderen Namen für den Raum verwendet, muss er den hiesigen " +"Raumnamen hier auch konfigurieren..
    \n" + +#: ../roomops.c:1452 +msgid "" +"The contents of this room are being mailed as individual messages " +"to the following list recipients:

    \n" +msgstr "" +"Der Inhalt dieses Raums wird per Email als einzelne Nachricht an " +"die Folgenden Empfänger versendet:

    \n" + +#: ../roomops.c:1469 ../roomops.c:1499 +msgid "(remove)" +msgstr "(Löschen)" + +#: ../roomops.c:1482 +msgid "" +"The contents of this room are being mailed in digest form to the " +"following list recipients:

    \n" +msgstr "" +" Der Inhalt dieses Raums wird als Tageszusammenfassung an die " +"folgende Liste versendet:

    \n" + +#: ../roomops.c:1513 +msgid "" +"This room is configured to allow self-service subscribe/unsubscribe requests." +msgstr "Dieser Raum erlaubt Benutzergesteuertes Abonnieren." + +#: ../roomops.c:1516 +msgid "Click to disable." +msgstr "Klicken zum Abschalten" + +#: ../roomops.c:1518 +msgid "The URL for subscribe/unsubscribe is: " +msgstr "Die URL zum Ab/Bestellen ist: " + +#: ../roomops.c:1524 +msgid "" +"This room is not configured to allow self-service subscribe/" +"unsubscribe requests." +msgstr "" +"Dieser Raum ist nicht für Benutzergesteuertes Abonieren freigegeben" + +#: ../roomops.c:1528 +msgid "Click to enable." +msgstr "Klicken zum Anschalten" + +#: ../roomops.c:1557 +msgid "Message expire policy for this room" +msgstr "Nachrichten Verfallsvorgabe für diesen Raum" + +#: ../roomops.c:1563 +msgid "Use the default policy for this floor" +msgstr "Die Vorgaberichtlinie dieser Etage verwenden " + +#: ../roomops.c:1567 ../roomops.c:1594 ../siteconfig.c:501 ../siteconfig.c:526 +#, c-format +msgid "Never automatically expire messages" +msgstr "Nachrichten nie automatisch löschen" + +#: ../roomops.c:1571 ../roomops.c:1598 ../siteconfig.c:505 ../siteconfig.c:530 +#, c-format +msgid "Expire by message count" +msgstr "Nachrichten nach Anzahl löschen" + +#: ../roomops.c:1575 ../roomops.c:1602 ../siteconfig.c:509 ../siteconfig.c:534 +#, c-format +msgid "Expire by message age" +msgstr "Lösche Nachrichten älter als" + +#: ../roomops.c:1577 ../roomops.c:1604 ../siteconfig.c:511 ../siteconfig.c:536 +#, c-format +msgid "Number of messages or days: " +msgstr "Anzahl der Nachrichten pro Tag: " + +#: ../roomops.c:1584 +msgid "Message expire policy for this floor" +msgstr "Nachrichten Verfallsvorgabe für diese Etage" + +#: ../roomops.c:1590 +msgid "Use the system default" +msgstr "Die Systemvorgabe benutzen" + +#: ../roomops.c:1665 ../roomops.c:3037 +msgid "Cancelled. Changes were not saved." +msgstr "Abgebrochen. Änderungen wurden nicht übernommen." + +#: ../roomops.c:1804 +msgid "Your changes have been saved." +msgstr "Ihre Änderungen wurden gespeichert" + +#: ../roomops.c:1836 +#, c-format +msgid "User %s kicked out of room %s.\n" +msgstr "Benutzer %s des Raums %s verbannt\n" + +#: ../roomops.c:1850 +#, c-format +msgid "User %s invited to room %s.\n" +msgstr "Benutzer %s in den Raum %s eingeladen.\n" + +#: ../roomops.c:1878 +msgid "" +"The users listed below have access to this room. To remove a user from the " +"access list, select the user name from the list and click 'Kick'." +msgstr "" +"Die folgenden Benutzer haben Zugang zu diesem Raum. Um einen Benutzer von " +"der Zugriffsliste zu löschen, ihn in der Liste anwählen und 'Bannen' drücken" + +#: ../roomops.c:1898 +msgid "Kick" +msgstr "Bannen" + +#: ../roomops.c:1902 +msgid "" +"To grant another user access to this room, enter the user name in the box " +"below and click 'Invite'." +msgstr "" +"Um einem weiteren Benutzer den Zugang zu diesem Raum zu erlauben den " +"Benutzernamen in das folgende Textfeld eintragen und 'Einladen' drücken" + +#: ../roomops.c:1908 +msgid "Invite:" +msgstr "Einladen:" + +#: ../roomops.c:1913 +msgid "Invite" +msgstr "Einladen" + +#: ../roomops.c:1977 +msgid "Default view for room: " +msgstr "Vorgabe Ansicht für diesen Raum: " + +#: ../roomops.c:2009 +msgid "Public (automatically appears to everyone)" +msgstr "Öffentlich (Raum zugänglich für jeden)" + +#: ../roomops.c:2016 +msgid "Private - hidden (accessible to anyone who knows its name)" +msgstr "Privat - versteckt (zugänglich für jeden der den Namen weiß)" + +#: ../roomops.c:2023 +msgid "Private - require password: " +msgstr "Privat - erfordert Passwort: " + +#: ../roomops.c:2039 +msgid "Personal (mailbox for you only)" +msgstr "Persönlich (Briefkasten, nur für Sie)" + +#: ../roomops.c:2044 +msgid "Create new room" +msgstr "Neuer Raum" + +#: ../roomops.c:2112 +msgid "Cancelled. No new room was created." +msgstr "Abgebrochen. Keinen neuen Raum erzeugt." + +#: ../roomops.c:2155 +msgid "Go to a hidden room" +msgstr "Zu einem versteckten Raum gehen" + +#: ../roomops.c:2166 +msgid "" +"If you know the name of a hidden (guess-name) or passworded room, you can " +"enter that room by typing its name below. Once you gain access to a private " +"room, it will appear in your regular room listings so you don't have to keep " +"returning here." +msgstr "" +"Wenn sie den Namen eines versteckten (Namen-raten) oder passwortgeschützten " +"Raums wissen, Hier eingeben um ihn zu betreten. Wenn er einmal sichtbar " +"ist, wird er mit den regulären Räumen gelistet." + +#: ../roomops.c:2178 +msgid "Enter room name:" +msgstr "Raumname eingeben:" + +#: ../roomops.c:2185 +msgid "Enter room password:" +msgstr "Raumpasswort eingeben:" + +#: ../roomops.c:2194 +msgid "Go there" +msgstr "Betreten" + +#: ../roomops.c:2247 +msgid "Zap (forget/unsubscribe) the current room" +msgstr "den aktuellen Raum vergessen (vergessen/abmelden)" + +#: ../roomops.c:2252 +#, c-format +msgid "" +"If you select this option, %s will disappear from your room list. " +"Is this what you wish to do?
    \n" +msgstr "" +"Wenn Sie diese Option wählen, wird %saus der Raumliste " +"verschwinden. Wollen Sie das wirklich tun?
    \n" + +#: ../roomops.c:2257 +msgid "Zap this room" +msgstr "Raum vergessen" + +#: ../roomops.c:2987 ../roomops.c:2993 +msgid "Room list" +msgstr "Raumlisten Anzeige" + +#: ../roomops.c:2990 +msgid "Folder list" +msgstr "Ordner Liste" + +#: ../rss.c:34 +msgid "Email" +msgstr "Email" + +#: ../rss.c:73 +msgid "Not logged in" +msgstr "Nicht angemeldet" + +#: ../rss.c:92 +msgid "Error retrieving RSS feed: couldn't find messages\n" +msgstr "Fehler beim laden des RSS-feeds: konnte die Meldung nicht finden\n" + +#: ../siteconfig.c:38 +msgid "Site configuration" +msgstr "Standortskonfiguration" + +#: ../siteconfig.c:61 +msgid "General" +msgstr "Allgemein" + +#: ../siteconfig.c:62 +msgid "Access" +msgstr "Zugang" + +#: ../siteconfig.c:63 +msgid "Network" +msgstr "Netzwerk" + +#: ../siteconfig.c:64 +msgid "Tuning" +msgstr "Feinabstimmung" + +#: ../siteconfig.c:65 +msgid "Directory" +msgstr "Verzeichnisdienste" + +#: ../siteconfig.c:66 +msgid "Auto-purger" +msgstr "Automatischer Nachrichtenlöscher" + +#: ../siteconfig.c:67 +msgid "Indexing/Journaling" +msgstr "Indizierung/Protokollierung" + +#: ../siteconfig.c:71 +msgid "General site configuration items" +msgstr "Allgemeine Standortskonfiguration" + +#: ../siteconfig.c:75 +msgid "Access controls and site policy settings" +msgstr "Zugangskontrolle und Vorgabewerte" + +#: ../siteconfig.c:79 +msgid "Network services" +msgstr "Netzwerk Dienste" + +#: ../siteconfig.c:80 ../siteconfig.c:90 +msgid "" +"Changes made on this screen will not take effect until you restart the " +"Citadel server." +msgstr "" +"Änderungen in diesem Menü werden erst mit Neustart des Citadel-Servers aktiv" + +#: ../siteconfig.c:85 +msgid "Advanced server fine-tuning controls" +msgstr "Erweiterte Server Einstellungen" + +#: ../siteconfig.c:89 +msgid "Configure the LDAP connector for Citadel" +msgstr "LDAP Verzeichnis Anbindung des Servers konfigurieren" + +#: ../siteconfig.c:95 +msgid "Configure automatic expiry of old messages" +msgstr "Automatischer Verfall alter Nachrichten konfigurieren" + +#: ../siteconfig.c:96 +msgid "These settings may be overridden on a per-floor or per-room basis." +msgstr "Diese Einstellungen können auf Etagen- / Raum-Basis aufgehoben werden." + +#: ../siteconfig.c:100 +msgid "Indexing and Journaling" +msgstr "Indizierung und Protokollierung" + +#: ../siteconfig.c:101 +msgid "Warning: these facilities are resource intensive." +msgstr "Warnung: Diese Dienste sind Ressourcen intensiv" + +#: ../siteconfig.c:119 +#, c-format +msgid "Fully qualified domain name" +msgstr "FQDN" + +#: ../siteconfig.c:126 +#, c-format +msgid "Human-readable node name" +msgstr "Menschenlesbarer Knotenname" + +#: ../siteconfig.c:133 +#, c-format +msgid "Telephone number" +msgstr "Telefonnummer" + +#: ../siteconfig.c:140 +#, c-format +msgid "Automatically grant room-aide status to users who create private rooms" +msgstr "" +"Automatisch dem Raumerzeuger administrative Rechte an dem neuen Raum geben" + +#: ../siteconfig.c:148 +#, c-format +msgid "Server connection idle timeout (in seconds)" +msgstr "ungenutzte Verbindungen trennen nach: (in Sekunden)" + +#: ../siteconfig.c:155 +#, c-format +msgid "Initial access level for new users" +msgstr "Netzzugangsberechtigung für neue Nutzer" + +#: ../siteconfig.c:169 +#, c-format +msgid "Require registration for new users" +msgstr "Anmeldung für neue Benutzer Erforderlich" + +#: ../siteconfig.c:177 +#, c-format +msgid "Quarantine messages from problem users" +msgstr "Meldungen Problematischer Nutzer moderieren" + +#: ../siteconfig.c:185 +#, c-format +msgid "Name of quarantine room" +msgstr "Name des moderierungs Raums" + +#: ../siteconfig.c:192 +#, c-format +msgid "Paginator prompt (for text mode clients)" +msgstr "Eingabeaufforderung (nur Für Textclients)" + +#: ../siteconfig.c:199 +#, c-format +msgid "Restrict access to Internet mail" +msgstr "Zugang zu Internet Mail limitieren" + +#: ../siteconfig.c:207 +#, c-format +msgid "Geographic location of this system" +msgstr "Geographische Position dieses Systems" + +#: ../siteconfig.c:214 +#, c-format +msgid "Name of system administrator" +msgstr "Name des Verwalters" + +#: ../siteconfig.c:221 +#, c-format +msgid "Maximum concurrent sessions (0 = no limit)" +msgstr "Maximale Anzahl gleichzeitiger Verbindungen (0 = kein Limit)" + +#: ../siteconfig.c:228 +#, c-format +msgid "Default user purge time (days)" +msgstr "Automatisch inaktive Nutzer löschen nach (Tage)" + +#: ../siteconfig.c:235 +#, c-format +msgid "Default room purge time (days)" +msgstr "Automatische Raum Löschung nach (Tage)" + +#: ../siteconfig.c:242 +#, c-format +msgid "Name of room to log pages" +msgstr "Name des Raums zum Loggen von Kurznachrichten" + +#: ../siteconfig.c:249 +#, c-format +msgid "Access level required to create rooms" +msgstr "Zugangsberechtigung um Räume zu erzeugen" + +#: ../siteconfig.c:263 +#, c-format +msgid "Maximum message length" +msgstr "Maximale Nachrichten Länge" + +#: ../siteconfig.c:270 +#, c-format +msgid "Minimum number of worker threads" +msgstr "Minimale Anzahl Server-Threads" + +#: ../siteconfig.c:277 +#, c-format +msgid "Maximum number of worker threads" +msgstr "Maximale Anzahl Server-Threads" + +#: ../siteconfig.c:284 +#, c-format +msgid "POP3 listener port (-1 to disable)" +msgstr "POP3 Server Port (-1 zum abschalten)" + +#: ../siteconfig.c:291 +#, c-format +msgid "SMTP MTA port (-1 to disable)" +msgstr "SMTP MTA Server Port (-1 zum abschalten)" + +#: ../siteconfig.c:298 +#, c-format +msgid "Correct forged From: lines during authenticated SMTP" +msgstr "'From:' Kopfzeilen bei authentifizierten SMTP korrigieren" + +#: ../siteconfig.c:306 +#, c-format +msgid "Allow aides to zap (forget) rooms" +msgstr "Moderatoren erlauben Räume zu Vergessen" + +#: ../siteconfig.c:314 +#, c-format +msgid "IMAP listener port (-1 to disable)" +msgstr "IMAP4 Server Port (-1 zum abschalten)" + +#: ../siteconfig.c:321 +#, c-format +msgid "Network run frequency (in seconds)" +msgstr "Knoten Synchronisierunsfrequenz (in Sekunden)" + +#: ../siteconfig.c:328 +#, c-format +msgid "Disable self-service user account creation" +msgstr "Erzeugen von Accounts am Anmeldeprompt verbieten" + +#: ../siteconfig.c:336 +#, c-format +msgid "Hour to run database auto-purge" +msgstr "Zeit, an der die Raumsäuberungen laufen sollen" + +#: ../siteconfig.c:352 +#, c-format +msgid "Host name of LDAP server (blank to disable)" +msgstr "Hostname des LDAP Verzeichnisserver (leer zum Abschalten)" + +#: ../siteconfig.c:359 +#, c-format +msgid "Port number of LDAP server (blank to disable)" +msgstr "Port des LDAP Verzeichnisservers (leer zum Abschalten)" + +#: ../siteconfig.c:366 +#, c-format +msgid "Base DN" +msgstr "Base DN im Verzeichnisserver" + +#: ../siteconfig.c:373 +#, c-format +msgid "Bind DN" +msgstr "Bind DN im Verzeichnisserver" + +#: ../siteconfig.c:380 +#, c-format +msgid "Password for bind DN" +msgstr "Passwort für die Bind DN am Verzeichnisserver" + +#: ../siteconfig.c:388 +#, c-format +msgid "Server IP address (0.0.0.0 for 'any')" +msgstr "Server IP-Adresse (0.0.0.0 um alle zu binden)" + +#: ../siteconfig.c:395 +#, c-format +msgid "SMTP MSA port (-1 to disable)" +msgstr "SMTP MSA Serverport (-1 zum abschalten)" + +#: ../siteconfig.c:402 +#, c-format +msgid "IMAP over SSL port (-1 to disable)" +msgstr "IMAP-SSL Serverport (-1 zum abschalten)" + +#: ../siteconfig.c:409 +#, c-format +msgid "POP3 over SSL port (-1 to disable)" +msgstr "POP3s Serverport (-1 zum Abschalten)" + +#: ../siteconfig.c:416 +#, c-format +msgid "SMTP over SSL port (-1 to disable)" +msgstr "SMTPS Serverport (-1 zum Abschalten)" + +#: ../siteconfig.c:423 +#, c-format +msgid "Enable full text index" +msgstr "Volltext Indexdienst anschalten" + +#: ../siteconfig.c:431 +#, c-format +msgid "Automatically delete committed database logs" +msgstr "Automatisch die Datenbanktransferlogs löschen" + +#: ../siteconfig.c:439 +#, c-format +msgid "Instantly expunge deleted messages in IMAP" +msgstr "Löschen via IMAP nicht cachen?" + +#: ../siteconfig.c:447 +#, c-format +msgid "Allow unauthenticated SMTP clients to spoof this site's domains" +msgstr "Mail Relaying anschalten (nicht empfohlen bei öffentlichen Servern)" + +#: ../siteconfig.c:455 +#, c-format +msgid "Perform journaling of email messages" +msgstr "Email Nachrichten Protokollieren" + +#: ../siteconfig.c:463 +#, c-format +msgid "Perform journaling of non-email messages" +msgstr "Nicht-Mail Nachrichten Protokollieren" + +#: ../siteconfig.c:471 +#, c-format +msgid "Email destination of journalized messages" +msgstr "Email Adresse für die Protokollnachrichten" + +#: ../siteconfig.c:497 +#, c-format +msgid "Default message expire policy for public rooms" +msgstr "" +"Vorgabewerte für die Gültigkeitsdauer von Nachrichten in öffentlichen Räumen" + +#: ../siteconfig.c:518 +#, c-format +msgid "Default message expire policy for private mailboxes" +msgstr "" +"Vorgabewerte für die Gültigkeitsdauer von Nachrichten in privaten Mailboxen" + +#: ../siteconfig.c:522 +#, c-format +msgid "Same policy as public rooms" +msgstr "Die selben Werte wie in öffentlichen Räumen" + +#: ../siteconfig.c:644 +msgid "Your system configuration has been updated." +msgstr "Ihre Systemkonfiguration wurde Übernommen" + +#: ../subst.c:216 +msgid "ERROR: could not open template " +msgstr "FEHLER: konnte Template nicht öffnen" + +#: ../summary.c:35 +msgid "(nothing)" +msgstr "(Nichts)" + +#: ../summary.c:50 +msgid "Messages" +msgstr "Nachrichten" + +#: ../summary.c:87 +msgid "Who's online now" +msgstr "Wer ist gerade angemeldet" + +#: ../summary.c:122 +msgid "(None)" +msgstr "(Keine)" + +#: ../summary.c:135 +msgid "(This server does not support task lists)" +msgstr "(Dieser Server unterstützt keine Aufgabenlisten)" + +#: ../summary.c:151 +msgid "Today on your calendar" +msgstr "Heute auf ihrem Kalender" + +#: ../summary.c:164 +msgid "(Nothing)" +msgstr "(Nichts)" + +#: ../summary.c:176 +msgid "(This server does not support calendars)" +msgstr "(Dieser Server unterstützt keine Kalender)" + +#: ../summary.c:188 +msgid "About this server" +msgstr "Über diesen Server" + +#: ../summary.c:192 +#, c-format +msgid "" +"You are connected to %s, running %s with %s, and located in %s. Your system " +"administrator is %s." +msgstr "" +"Sie sind Angemeldet auf %s, mit %s über %s, in %s. Ihr Systemverwalter ist %" +"s" + +#: ../summary.c:259 +#, c-format +msgid "Summary page for %s" +msgstr "Zusammenfassung für %s" + +#: ../sysmsgs.c:40 +#, c-format +msgid "Edit %s" +msgstr "%s editieren" + +#: ../sysmsgs.c:44 +#, c-format +msgid "" +"Enter %s below. Text is formatted to the reader's screen width. To defeat " +"the formatting, indent a line at least one space." +msgstr "" +"%s eingeben. Der Text wird auf dem Schirm des Lesers formatiert. Die Zeile " +"um mindestens einen Leerschritt einrücken um das Formatieren abzuschalten." + +#: ../sysmsgs.c:79 +#, c-format +msgid "Cancelled. %s was not saved." +msgstr "Abgebrochen. %s wurde nicht gespeichert." + +#: ../sysmsgs.c:98 +#, c-format +msgid "%s has been saved." +msgstr "%s wurde gespeichert." + +#: ../useredit.c:31 +msgid "Edit or delete users" +msgstr "Benutzer Bearbeiten/Löschen" + +#: ../useredit.c:40 +msgid "Add users" +msgstr "Neuer Benutzer" + +#: ../useredit.c:43 +msgid "" +"To create a new user account, enter the desired user name in the box below " +"and click 'Create'." +msgstr "" +"Um einen neuen Benutzer einzurichten, den Anmeldenamen in das Textfeld " +"eintragenund 'Anlegen' Klicken" + +#: ../useredit.c:48 +msgid "New user: " +msgstr "Neuer Benutzer: " + +#: ../useredit.c:51 +msgid "Create" +msgstr "Anlegen" + +#: ../useredit.c:57 +msgid "Edit or Delete users" +msgstr "Benutzer Bearbeiten/Löschen" + +#: ../useredit.c:60 +msgid "" +"To edit an existing user account, select the user name from the list and " +"click 'Edit'." +msgstr "" +"Einen vorhandenen Benutzer aus der Liste auswählen zum modifizieren, und " +"dann 'Bearbeiten' Klicken" + +#: ../useredit.c:83 +msgid "Edit configuration" +msgstr "Konfiguration Bearbeiten" + +#: ../useredit.c:84 +msgid "Edit address book entry" +msgstr "Adressbuch Eintrag bearbeiten" + +#: ../useredit.c:86 +msgid "Delete user" +msgstr "Benutzer Löschen" + +#: ../useredit.c:86 +msgid "Delete this user?" +msgstr "Diesen Benutzer löschen?" + +#: ../useredit.c:204 +msgid "" +"An error occurred while trying to create or edit this address book entry." +msgstr "Fehler beim Erzeugen / Editieren dieses Adressbuch-Eintrags" + +#: ../useredit.c:283 +msgid "Edit user account: " +msgstr "Benutzer Bearbeiten : " + +#: ../useredit.c:303 +msgid "Password" +msgstr "Passwort" + +#: ../useredit.c:310 +msgid "Permission to send Internet mail" +msgstr "Zugang zu Internet Mail reglementieren" + +#: ../useredit.c:319 +msgid "Number of logins" +msgstr "Anzahl der Anmeldungen" + +#: ../useredit.c:326 +msgid "Messages submitted" +msgstr "Nachricht abgeschickt" + +#: ../useredit.c:333 +msgid "Access level" +msgstr "Zugangsberechtigung" + +#: ../useredit.c:347 +msgid "User ID number" +msgstr "Benutzer ID" + +#: ../useredit.c:355 +msgid "Date and time of last login" +msgstr "Datum der letzten Anmeldung" + +#: ../useredit.c:370 +msgid "Auto-purge after this many days" +msgstr "Automatisch löschen nach n Tagen" + +#: ../useredit.c:402 +msgid "Changes were not saved." +msgstr "Änderungen verworfen." + +#: ../useredit.c:486 +#, c-format +msgid "A new user has been created." +msgstr "Ein neuer Benutzer wurde angelegt." + +#: ../userlist.c:48 +#, c-format +msgid "User list for %s" +msgstr "Benutzerliste für %s" + +#: ../userlist.c:66 +#, fuzzy +msgid "User Name" +msgstr "Benutzername" + +#: ../userlist.c:67 +#, fuzzy +msgid "Number" +msgstr "November" + +#: ../userlist.c:68 +#, fuzzy +msgid "Access Level" +msgstr "Zugangsberechtigung" + +#: ../userlist.c:69 +#, fuzzy +msgid "Last Login" +msgstr "Anmelden" + +#: ../userlist.c:70 +msgid "Total Logins" +msgstr "" + +#: ../userlist.c:71 +#, fuzzy +msgid "Total Posts" +msgstr "Diese Maschine" + +#: ../userlist.c:129 +msgid "User profile" +msgstr "Benutzerprofil" + +#: ../userlist.c:165 +#, c-format +msgid "Click here to send an instant message to %s" +msgstr "Hier klicken um eine Kurznachricht an %s zu senden" + +#: ../vcard_edit.c:184 +msgid "Edit contact information" +msgstr "Kontaktdaten bearbeiten" + +#: ../vcard_edit.c:200 +msgid "Prefix" +msgstr "Anrede" + +#: ../vcard_edit.c:200 +msgid "First" +msgstr "Vorname" + +#: ../vcard_edit.c:200 +msgid "Middle" +msgstr "Mittelinitial" + +#: ../vcard_edit.c:200 +msgid "Last" +msgstr "Nachname" + +#: ../vcard_edit.c:200 +msgid "Suffix" +msgstr "Zähler" + +#: ../vcard_edit.c:221 +msgid "Display name:" +msgstr "Namen anzeigen:" + +#: ../vcard_edit.c:228 +msgid "Title:" +msgstr "Titel:" + +#: ../vcard_edit.c:235 +msgid "Organization:" +msgstr "Organisation:" + +#: ../vcard_edit.c:246 +msgid "PO box:" +msgstr "Postfach:" + +#: ../vcard_edit.c:262 +msgid "City:" +msgstr "Stadt:" + +#: ../vcard_edit.c:268 +msgid "State:" +msgstr "Bundesland:" + +#: ../vcard_edit.c:274 +msgid "ZIP code:" +msgstr "Postleitzahl:" + +#: ../vcard_edit.c:280 +msgid "Country:" +msgstr "Land:" + +#: ../vcard_edit.c:290 +msgid "Home telephone:" +msgstr "Telefon:" + +#: ../vcard_edit.c:296 +msgid "Work telephone:" +msgstr "Telefon/Büro:" + +#: ../vcard_edit.c:307 +msgid "Primary Internet e-mail address" +msgstr "Erste Email-Adresse" + +#: ../vcard_edit.c:314 +msgid "Internet e-mail aliases" +msgstr "Internet Email Aliase" + +#: ../webcit.c:685 +#, c-format +msgid "An error occurred while retrieving this part: %s\n" +msgstr "Ein Fehler trat in diesem Teil auf: %s\n" + +#: ../webcit.c:771 +msgid "Make this my start page" +msgstr "Als Startseite setzen" + +#: ../webcit.c:790 +msgid "You no longer have a start page selected." +msgstr "Startseite gelöscht" + +#: ../webcit.c:826 +msgid "Authorization Required" +msgstr "Authentifizierung benötigt" + +#: ../webcit.c:828 +#, c-format +msgid "" +"The resource you requested requires a valid username and password. You could " +"not be logged in: %s\n" +msgstr "" +"Die angeforderte Sektion benötigt einen gültigen Benutzernamen und Passwort." +"Sie konnten nicht Angemeldet werden: %s\n" + +#: ../webcit.c:1247 +#, c-format +msgid "" +"You are connected to a Citadel server running Citadel %d.%02d. \n" +"In order to run this version of WebCit you must also have Citadel %d.%02d or " +"newer.\n" +"\n" +"\n" +msgstr "" +"Sie sind mit einem Citadel-Server der Version %d.%02d verbunden. \n" +"Webcit benötigt mindestens Version %d.%02d. \n" +"\n" +"\n" + +#: ../webcit.c:1484 ../webcit.c:1486 +msgid "Room info" +msgstr "Raum Info" + +#: ../webcit.c:1489 ../webcit.c:1491 +msgid "Your bio" +msgstr "Ihre Biographie" + +#: ../webcit.c:1499 +msgid "your photo" +msgstr "Ihr Photo" + +#: ../webcit.c:1505 +msgid "the icon for this room" +msgstr "Das Symbol für diesen Raum " + +#: ../webcit.c:1519 +msgid "the icon for this floor" +msgstr "Das Symbol für diese Etage" + +#: ../who.c:27 +msgid "User name" +msgstr "Benutzername" + +#: ../who.c:28 +msgid "Room" +msgstr "Raum" + +#: ../who.c:29 +msgid "From host" +msgstr "Client DNS Name / IP" + +#: ../who.c:62 +msgid "(kill)" +msgstr "(beenden)" + +#: ../who.c:65 +msgid "(edit)" +msgstr "(bearbeiten)" + +#: ../who.c:141 +msgid "Do you really want to kill this session?" +msgstr "Wollen sie diese Sitzung wirklich beenden?" + +#: ../who.c:151 +#, c-format +msgid "Users currently on %s" +msgstr "Angemeldete Benutzer auf %s" + +#: ../who.c:166 +#, c-format +msgid "" +"Click on a name to read user info. Click on %s to send an instant message " +"to that user." +msgstr "" +"Auf den Namen klicken um die Benutzerdaten einzusehen. Auf %s Klicken um ihm " +"eine Kurznachricht zu senden." + +#: ../who.c:228 +msgid "Edit your session display" +msgstr "Sitzungsparameter Bearbeiten" + +#: ../who.c:232 +msgid "" +"This screen allows you to change the way your session appears in the 'Who is " +"online' listing. To turn off any 'fake' name you've previously set, simply " +"click the appropriate 'change' button without typing anything in the " +"corresponding box. " +msgstr "" +"Dieser Dialog erlaubt Ihnen, die in der Benutzerübersicht angezeigten Texte " +"zu verändern.Um die Defaultwerte wiederherzustellen bei leerem Feld den " +"'Raumname setzen' Knopf drücken" + +#: ../who.c:244 +msgid "Room name:" +msgstr "Raumname:" + +#: ../who.c:249 +msgid "Change room name" +msgstr "Raumname setzen" + +#: ../who.c:253 +msgid "Host name:" +msgstr "Rechnername:" + +#: ../who.c:258 +msgid "Change host name" +msgstr "Rechnername setzen" + +#: ../who.c:268 +msgid "Change user name" +msgstr "Benutzername ändern" + +#: ../wiki.c:64 +#, c-format +msgid "There is no room called '%s'." +msgstr "Es gibt keinen Raum mit dem Namen '%s'." + +#: ../wiki.c:74 +#, c-format +msgid "'%s' is not a Wiki room." +msgstr "'%s' ist kein Wiki Raum." + +#: ../wiki.c:100 +#, c-format +msgid "There is no page called '%s' here." +msgstr "Es gibt keine Seite mit Namen '%s' hier." + +#: ../wiki.c:102 +msgid "" +"Select the 'Edit this page' link in the room banner if you would like to " +"create this page." +msgstr "" +"Wähle den 'Diese Seite editieren' Link in dem Raum-Banner, wenn du diesen " +"Raum erzeugen möchtest." + +#~ msgid "Jan" +#~ msgstr "Jan" + +#~ msgid "Feb" +#~ msgstr "Feb" + +#~ msgid "Mar" +#~ msgstr "Mär" + +#~ msgid "Apr" +#~ msgstr "Apr" + +#~ msgid "May" +#~ msgstr "Mai" + +#~ msgid "Jun" +#~ msgstr "Jun" + +#~ msgid "Jul" +#~ msgstr "Jul" + +#~ msgid "Aug" +#~ msgstr "Aug" + +#~ msgid "Sep" +#~ msgstr "Sep" + +#~ msgid "Oct" +#~ msgstr "Okt" + +#~ msgid "Nov" +#~ msgstr "Nov" + +#~ msgid "Dec" +#~ msgstr "Dez" + +#~ msgid "Sunday" +#~ msgstr "Sonntag" + +#~ msgid "Monday" +#~ msgstr "Montag" + +#~ msgid "Tuesday" +#~ msgstr "Dienstag" + +#~ msgid "Wednesday" +#~ msgstr "Mittwoch" + +#~ msgid "Thursday" +#~ msgstr "Donnerstag" + +#~ msgid "Friday" +#~ msgstr "Freitag" + +#~ msgid "Saturday" +#~ msgstr "Samstag" + +#~ msgid "January" +#~ msgstr "Januar" + +#~ msgid "February" +#~ msgstr "Februar" + +#~ msgid "March" +#~ msgstr "März" + +#~ msgid "April" +#~ msgstr "April" + +#~ msgid "June" +#~ msgstr "Juni" + +#~ msgid "July" +#~ msgstr "Juli" + +#~ msgid "August" +#~ msgstr "August" + +#~ msgid "September" +#~ msgstr "September" + +#~ msgid "October" +#~ msgstr "Oktober" + +#~ msgid "December" +#~ msgstr "Dezember" + +#~ msgid "" +#~ "User NameNumberAccess LevelLast LoginTotal LoginsTotal Posts" +#~ msgstr "" +#~ "BenutzernameAnzahlBerechtigungLetzte " +#~ "AnmeldungAnzahl AnmeldungenAnzahl verfasste Beiträge" diff --git a/webcit/po/en_GB.po b/webcit/po/en_GB.po new file mode 100644 index 000000000..f6faf0739 --- /dev/null +++ b/webcit/po/en_GB.po @@ -0,0 +1,2727 @@ +# WebCit messages for UK English +# Copyright (C) 2006 The Citadel Project - http://www.citadel.org +# This file is distributed under the GNU General Public License +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WebCit 6.71\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-02-13 21:49+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: David Given \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../auth.c:23 +msgid "Deleted" +msgstr "" + +#: ../auth.c:24 ../auth.c:72 +msgid "New User" +msgstr "" + +#: ../auth.c:25 +msgid "Problem User" +msgstr "" + +#: ../auth.c:26 +msgid "Local User" +msgstr "" + +#: ../auth.c:27 +msgid "Network User" +msgstr "" + +#: ../auth.c:28 +msgid "Preferred User" +msgstr "" + +#: ../auth.c:29 +msgid "Aide" +msgstr "" + +#: ../auth.c:52 +#, c-format +msgid "" +"
    • If you already have an account on %s, enter your user name " +"and password and click "Login."
    • If you are a new user, " +"enter the name and password you wish to use, and click "New User." " +"
    • Please log off properly when finished.
    • You must use a browser that " +"supports frames and cookies.
    • Also keep in mind that if " +"your browser is configured to block pop-up windows, you will not be able to " +"receive any instant messages.
    " +msgstr "" + +#: ../auth.c:68 ../who.c:263 +msgid "User name:" +msgstr "" + +#: ../auth.c:69 +msgid "Password:" +msgstr "" + +#: ../auth.c:70 +msgid "Language:" +msgstr "" + +#: ../auth.c:71 +msgid "Login" +msgstr "" + +#: ../auth.c:73 ../paging.c:510 +msgid "Exit" +msgstr "" + +#: ../auth.c:75 +#, c-format +msgid "%s - powered by Citadel" +msgstr "" + +#: ../auth.c:166 ../auth.c:534 +msgid "Blank passwords are not allowed." +msgstr "" + +#: ../auth.c:187 +msgid "Your password was not accepted." +msgstr "" + +#: ../auth.c:295 +msgid "" +"This program was unable to connect or stay connected to the Citadel server. " +"Please report this problem to your system administrator." +msgstr "" + +#: ../auth.c:302 +msgid "Log in again" +msgstr "" + +#: ../auth.c:305 +msgid "Close window" +msgstr "" + +#: ../auth.c:326 ../mainmenu.c:241 +msgid "Validate new users" +msgstr "" + +#: ../auth.c:346 +msgid "No users require validation at this time." +msgstr "" + +#: ../auth.c:387 +#, c-format +msgid "Current access level: %d (%s)\n" +msgstr "" + +#: ../auth.c:395 +msgid "Select access level for this user:" +msgstr "" + +#: ../auth.c:458 ../mainmenu.c:137 +msgid "Change your password" +msgstr "" + +#: ../auth.c:487 +msgid "Enter new password:" +msgstr "" + +#: ../auth.c:491 +msgid "Enter it again to confirm:" +msgstr "" + +#: ../auth.c:496 +msgid "Change password" +msgstr "" + +#: ../auth.c:498 ../calendar.c:616 ../event.c:390 ../graphics.c:58 +#: ../iconbar.c:712 ../mainmenu.c:300 ../messages.c:2894 ../messages.c:3015 +#: ../messages.c:3103 ../netconf.c:86 ../netconf.c:149 ../paging.c:58 +#: ../preferences.c:389 ../roomops.c:1285 ../roomops.c:1613 ../roomops.c:2046 +#: ../roomops.c:2195 ../roomops.c:2259 ../siteconfig.c:564 ../sysmsgs.c:59 +#: ../useredit.c:381 ../vcard_edit.c:336 ../who.c:273 +msgid "Cancel" +msgstr "" + +#: ../auth.c:515 +msgid "Cancelled. Password was not changed." +msgstr "" + +#: ../auth.c:526 +msgid "They don't match. Password was not changed." +msgstr "" + +#: ../availability.c:140 +msgid "availability unknown" +msgstr "" + +#: ../availability.c:161 +msgid "free" +msgstr "" + +#: ../availability.c:171 +msgid "BUSY" +msgstr "" + +#: ../calendar.c:24 +msgid "" +"This message contains calendaring/scheduling information, but support for " +"calendars is not available on this particular system. Please ask your " +"system administrator to install a new version of the Citadel web service " +"with calendaring enabled.
    \n" +msgstr "" + +#: ../calendar.c:38 +msgid "" +"Cannot display calendar item. You are seeing this error because your " +"WebCit service has not been installed with calendar support. Please contact " +"your system administrator.
    \n" +msgstr "" + +#: ../calendar.c:50 +msgid "" +"Cannot display to-do item. You are seeing this error because your WebCit " +"service has not been installed with calendar support. Please contact your " +"system administrator.
    \n" +msgstr "" + +#: ../calendar.c:107 +msgid "Meeting invitation" +msgstr "" + +#: ../calendar.c:116 +msgid "Attendee's reply to your invitation" +msgstr "" + +#: ../calendar.c:125 +msgid "Published event" +msgstr "" + +#: ../calendar.c:130 +msgid "This is an unknown type of calendar item." +msgstr "" + +#: ../calendar.c:139 ../calendar.c:560 +msgid "Summary:" +msgstr "" + +#: ../calendar.c:148 +msgid "Location:" +msgstr "" + +#: ../calendar.c:174 +msgid "Date:" +msgstr "" + +#: ../calendar.c:181 +msgid "Starting date/time:" +msgstr "" + +#: ../calendar.c:192 +msgid "Ending date/time:" +msgstr "" + +#: ../calendar.c:201 ../calendar.c:596 +msgid "Description:" +msgstr "" + +#: ../calendar.c:210 +msgid "Attendee:" +msgstr "" + +#: ../calendar.c:250 +#, c-format +msgid "This is an update of '%s' which is already in your calendar." +msgstr "" + +#: ../calendar.c:254 +#, c-format +msgid "This event would conflict with '%s' which is already in your calendar." +msgstr "" + +#: ../calendar.c:259 +msgid "Update:" +msgstr "" + +#: ../calendar.c:260 +msgid "CONFLICT:" +msgstr "" + +#: ../calendar.c:278 +msgid "How would you like to respond to this invitation?" +msgstr "" + +#: ../calendar.c:279 +msgid "Accept" +msgstr "" + +#: ../calendar.c:280 +msgid "Tentative" +msgstr "" + +#: ../calendar.c:281 +msgid "Decline" +msgstr "" + +#: ../calendar.c:305 +msgid "Click Update to accept this reply and update your calendar." +msgstr "" + +#: ../calendar.c:306 +msgid "Update" +msgstr "" + +#: ../calendar.c:307 +msgid "Ignore" +msgstr "" + +#: ../calendar.c:334 +msgid "There was an error parsing this calendar item." +msgstr "" + +#: ../calendar.c:361 +msgid "Respond to meeting request" +msgstr "" + +#: ../calendar.c:380 +msgid "" +"You have accepted this meeting invitation. It has been entered into your " +"calendar." +msgstr "" + +#: ../calendar.c:384 +msgid "" +"You have tentatively accepted this meeting invitation. It has been " +"'pencilled in' to your calendar." +msgstr "" + +#: ../calendar.c:388 +msgid "" +"You have declined this meeting invitation. It has not been entered " +"into your calendar." +msgstr "" + +#: ../calendar.c:393 +msgid "A reply has been sent to the meeting organizer." +msgstr "A reply has been sent to the meeting organiser." + +#: ../calendar.c:403 ../calendar.c:457 +msgid "Return to messages" +msgstr "" + +#: ../calendar.c:422 +msgid "Update your calendar with this RSVP" +msgstr "" + +#: ../calendar.c:441 +msgid "Your calendar has been updated to reflect this RSVP." +msgstr "" + +#: ../calendar.c:443 +msgid "" +"You have chosen to ignore this RSVP. Your calendar has not been " +"updated." +msgstr "" + +#: ../calendar.c:544 +msgid "Edit task" +msgstr "" + +#: ../calendar.c:571 +msgid "Start date:" +msgstr "" + +#: ../calendar.c:584 +msgid "Due date:" +msgstr "" + +#: ../calendar.c:614 ../event.c:387 +msgid "Save" +msgstr "" + +#: ../calendar.c:615 ../event.c:388 ../messages.c:903 ../messages.c:2281 +msgid "Delete" +msgstr "" + +#: ../calendar_tools.c:73 +msgid "Month: " +msgstr "" + +#: ../calendar_tools.c:87 +msgid "Day: " +msgstr "" + +#: ../calendar_tools.c:97 +msgid "Year: " +msgstr "" + +#: ../calendar_tools.c:115 +msgid "Hour: " +msgstr "" + +#: ../calendar_tools.c:135 +msgid "Minute: " +msgstr "" + +#: ../calendar_tools.c:204 +msgid "(status unknown)" +msgstr "" + +#: ../calendar_tools.c:220 +msgid "(needs action)" +msgstr "" + +#: ../calendar_tools.c:223 +msgid "(accepted)" +msgstr "" + +#: ../calendar_tools.c:226 +msgid "(declined)" +msgstr "" + +#: ../calendar_tools.c:229 +msgid "(tenative)" +msgstr "" + +#: ../calendar_tools.c:232 +msgid "(delegated)" +msgstr "" + +#: ../calendar_tools.c:235 +msgid "(completed)" +msgstr "" + +#: ../calendar_tools.c:238 +msgid "(in process)" +msgstr "" + +#: ../calendar_tools.c:241 +msgid "(none)" +msgstr "" + +#: ../calendar_view.c:17 +msgid "The calendar view is not available." +msgstr "" + +#: ../calendar_view.c:24 +msgid "The tasks view is not available." +msgstr "" + +#: ../calendar_view.c:435 +msgid "Week" +msgstr "" + +#: ../calendar_view.c:437 +msgid "Hours" +msgstr "" + +#: ../calendar_view.c:438 ../messages.c:2276 +msgid "Subject" +msgstr "" + +#: ../calendar_view.c:439 ../event.c:164 +msgid "Start" +msgstr "" + +#: ../calendar_view.c:440 ../event.c:218 +msgid "End" +msgstr "" + +#: ../calendar_view.c:930 +msgid "Name of task" +msgstr "" + +#: ../calendar_view.c:932 +msgid "Date due" +msgstr "" + +#: ../event.c:76 ../paging.c:78 +msgid "Add or edit an event" +msgstr "" + +#: ../event.c:142 ../iconbar.c:123 ../iconbar.c:539 +msgid "Summary" +msgstr "" + +#: ../event.c:153 +msgid "Location" +msgstr "" + +#: ../event.c:207 +msgid "All day event" +msgstr "" + +#: ../event.c:246 ../iconbar.c:199 ../iconbar.c:586 +msgid "Notes" +msgstr "" + +#: ../event.c:288 +msgid "Organizer" +msgstr "Organiser" + +#: ../event.c:293 +msgid "(you are the organizer)" +msgstr "(you are the organiser)" + +#: ../event.c:311 +msgid "Show time as:" +msgstr "" + +#: ../event.c:333 +msgid "Free" +msgstr "" + +#: ../event.c:340 +msgid "Busy" +msgstr "" + +#: ../event.c:346 +msgid "Attendees" +msgstr "" + +#: ../event.c:349 +msgid "(One per line)" +msgstr "" + +#: ../event.c:389 +msgid "Check attendee availability" +msgstr "" + +#: ../floors.c:34 +msgid "Add/change/delete floors" +msgstr "" + +#: ../floors.c:51 ../siteconfig.c:49 ../vcard_edit.c:78 ../wiki.c:66 +#: ../wiki.c:76 +msgid "Error" +msgstr "" + +#: ../floors.c:62 +msgid "Floor number" +msgstr "" + +#: ../floors.c:64 +msgid "Floor name" +msgstr "" + +#: ../floors.c:66 +msgid "Number of rooms" +msgstr "" + +#: ../floors.c:68 +msgid "Floor CSS" +msgstr "" + +#: ../floors.c:81 +msgid "(delete floor)" +msgstr "" + +#: ../floors.c:87 +msgid "(edit graphic)" +msgstr "" + +#: ../floors.c:100 +msgid "Change name" +msgstr "" + +#: ../floors.c:113 +msgid "Change CSS" +msgstr "" + +#: ../floors.c:125 +msgid "Create new floor" +msgstr "" + +#: ../floors.c:146 +#, c-format +msgid "Floor has been deleted." +msgstr "" + +#: ../floors.c:169 +#, c-format +msgid "New floor has been created." +msgstr "" + +#: ../graphics.c:27 +msgid "Image upload" +msgstr "" + +#: ../graphics.c:45 +msgid "" +"You can upload any image directly from your computer, as long as it is in " +"GIF format (JPEG, PNG, etc. won't work)." +msgstr "" + +#: ../graphics.c:50 +msgid "Please select a file to upload:" +msgstr "" + +#: ../graphics.c:54 +msgid "Upload" +msgstr "" + +#: ../graphics.c:56 +msgid "Reset form" +msgstr "" + +#: ../graphics.c:74 +msgid "Graphics upload has been cancelled." +msgstr "" + +#: ../graphics.c:81 +msgid "You didn't upload a file." +msgstr "" + +#: ../html2html.c:109 +#, c-format +msgid "realloc() error! couldn't get %d bytes: %s" +msgstr "" + +#: ../iconbar.c:105 ../iconbar.c:391 +msgid "Find out more about Citadel" +msgstr "" + +#: ../iconbar.c:106 ../iconbar.c:392 +msgid "CITADEL" +msgstr "" + +#: ../iconbar.c:110 +msgid "switch to room list" +msgstr "" + +#: ../iconbar.c:116 ../iconbar.c:540 +msgid "Your summary page" +msgstr "" + +#: ../iconbar.c:133 +msgid "Go to your email inbox" +msgstr "" + +#: ../iconbar.c:140 +msgid "Mail" +msgstr "" + +#: ../iconbar.c:158 +msgid "Go to your personal calendar" +msgstr "" + +#: ../iconbar.c:165 ../iconbar.c:603 ../roomops.c:22 +msgid "Calendar" +msgstr "" + +#: ../iconbar.c:175 +msgid "Go to your personal address book" +msgstr "" + +#: ../iconbar.c:182 ../iconbar.c:570 +msgid "Contacts" +msgstr "" + +#: ../iconbar.c:192 +msgid "Go to your personal notes" +msgstr "" + +#: ../iconbar.c:209 +msgid "Go to your personal task list" +msgstr "" + +#: ../iconbar.c:216 ../iconbar.c:618 ../summary.c:109 +msgid "Tasks" +msgstr "" + +#: ../iconbar.c:224 +msgid "List all of your accessible rooms" +msgstr "" + +#: ../iconbar.c:231 ../iconbar.c:634 +msgid "Rooms" +msgstr "" + +#: ../iconbar.c:240 +msgid "See who is online right now" +msgstr "" + +#: ../iconbar.c:247 ../iconbar.c:650 +msgid "Who is online?" +msgstr "" + +#: ../iconbar.c:265 ../iconbar.c:666 +msgid "Chat" +msgstr "" + +#: ../iconbar.c:275 +msgid "Advanced Options Menu: Advanced Room commands, Account Info, and Chat" +msgstr "" + +#: ../iconbar.c:282 +msgid "Advanced" +msgstr "" + +#: ../iconbar.c:292 +msgid "Room and system administration functions" +msgstr "" + +#: ../iconbar.c:299 ../roomops.c:1002 +msgid "Administration" +msgstr "" + +#: ../iconbar.c:307 ../iconbar.c:316 ../iconbar.c:402 ../iconbar.c:411 +#: ../mainmenu.c:110 +msgid "Log off" +msgstr "" + +#: ../iconbar.c:308 ../iconbar.c:403 +msgid "Log off now?" +msgstr "" + +#: ../iconbar.c:326 +msgid "Customize this menu" +msgstr "Customise this menu" + +#: ../iconbar.c:327 +msgid "customize this menu" +msgstr "customise this menu" + +#: ../iconbar.c:396 +msgid "switch to menu" +msgstr "" + +#: ../iconbar.c:481 +msgid "Customize the icon bar" +msgstr "Customise the icon bar" + +#: ../iconbar.c:493 +msgid "Display icons as:" +msgstr "" + +#: ../iconbar.c:499 +msgid "pictures and text" +msgstr "" + +#: ../iconbar.c:500 +msgid "pictures only" +msgstr "" + +#: ../iconbar.c:501 +msgid "text only" +msgstr "" + +#: ../iconbar.c:506 +msgid "" +"Select the icons you would like to see displayed in the 'icon bar' menu on " +"the left side of the screen." +msgstr "" + +#: ../iconbar.c:524 +msgid "Site logo" +msgstr "" + +#: ../iconbar.c:525 +msgid "An icon describing this site" +msgstr "" + +#: ../iconbar.c:554 +msgid "Mail (inbox)" +msgstr "" + +#: ../iconbar.c:555 +msgid "A shortcut to your email Inbox" +msgstr "" + +#: ../iconbar.c:571 +msgid "Your personal address book" +msgstr "" + +#: ../iconbar.c:587 +msgid "Your personal notes" +msgstr "" + +#: ../iconbar.c:604 +msgid "A shortcut to your personal calendar" +msgstr "" + +#: ../iconbar.c:619 +msgid "A shortcut to your personal task list" +msgstr "" + +#: ../iconbar.c:635 +msgid "" +"Clicking this icon displays a list of all accessible rooms (or folders) " +"available." +msgstr "" + +#: ../iconbar.c:651 +msgid "Clicking this icon displays a list of all users currently logged in." +msgstr "" + +#: ../iconbar.c:667 +msgid "" +"Clicking this icon enters real-time chat mode with other users in the same " +"room." +msgstr "" + +#: ../iconbar.c:684 +msgid "Advanced options" +msgstr "" + +#: ../iconbar.c:685 +msgid "Access to the complete menu of Citadel functions." +msgstr "" + +#: ../iconbar.c:701 +msgid "Citadel logo" +msgstr "" + +#: ../iconbar.c:702 +msgid "Displays the 'Powered by Citadel' icon" +msgstr "" + +#: ../iconbar.c:711 ../netconf.c:146 ../roomops.c:1284 ../roomops.c:1611 +#: ../siteconfig.c:562 ../sysmsgs.c:57 ../useredit.c:381 ../vcard_edit.c:335 +msgid "Save changes" +msgstr "" + +#: ../iconbar.c:766 +msgid "" +"Your icon bar has been updated. Please select any of its choices to " +"continue." +msgstr "" + +#: ../inetconf.c:38 +msgid "localhost" +msgstr "" + +#: ../inetconf.c:39 +msgid "directory" +msgstr "" + +#: ../inetconf.c:40 +msgid "gatewaydomain" +msgstr "" + +#: ../inetconf.c:41 +msgid "smarthost" +msgstr "" + +#: ../inetconf.c:42 +msgid "rbl" +msgstr "" + +#: ../inetconf.c:43 +msgid "spamassassin" +msgstr "" + +#: ../inetconf.c:45 +msgid "Local host aliases" +msgstr "" + +#: ../inetconf.c:46 +msgid "Directory domains" +msgstr "" + +#: ../inetconf.c:47 +msgid "Gateway domains" +msgstr "" + +#: ../inetconf.c:48 +msgid "Smart hosts" +msgstr "" + +#: ../inetconf.c:49 +msgid "RBL hosts" +msgstr "" + +#: ../inetconf.c:50 +msgid "SpamAssassin hosts" +msgstr "" + +#: ../inetconf.c:52 +msgid "(domains for which this host receives mail)" +msgstr "" + +#: ../inetconf.c:53 +msgid "(domains mapped with the Global Address Book)" +msgstr "" + +#: ../inetconf.c:54 +msgid "(domains whose subdomains match Citadel hosts)" +msgstr "" + +#: ../inetconf.c:55 +msgid "(if present, forward all outbound mail to one of these hosts)" +msgstr "" + +#: ../inetconf.c:56 +msgid "(hosts running a Realtime Blackhole List)" +msgstr "" + +#: ../inetconf.c:57 +msgid "(hosts running the SpamAssassin service)" +msgstr "" + +#: ../inetconf.c:94 +msgid "Internet configuration" +msgstr "" + +#: ../inetconf.c:121 +msgid "Delete this entry?" +msgstr "" + +#: ../inetconf.c:123 ../netconf.c:209 +msgid "(Delete)" +msgstr "" + +#: ../inetconf.c:173 +#, c-format +msgid "%s has been deleted." +msgstr "" + +#: ../listsub.c:44 +msgid "List subscription" +msgstr "" + +#: ../listsub.c:56 +msgid "List subscribe/unsubscribe" +msgstr "" + +#: ../listsub.c:76 +msgid "Confirmation request sent" +msgstr "" + +#: ../listsub.c:78 +#, c-format +msgid "" +"You are subscribing %s to the %s mailing list. The " +"listserver has sent you an e-mail with one additional Web link for you to " +"click on to confirm your subscription. This extra step is for your " +"protection, as it prevents others from being able to subscribe you to lists " +"without your consent.

    Please click on the link which is being e-" +"mailed to you and your subscription will be confirmed.
    \n" +msgstr "" + +#: ../listsub.c:91 +msgid "Go back..." +msgstr "" + +#: ../mainmenu.c:23 +msgid "Basic commands" +msgstr "" + +#: ../mainmenu.c:32 +msgid "List known rooms" +msgstr "" + +#: ../mainmenu.c:34 +msgid "Where can I go from here?" +msgstr "" + +#: ../mainmenu.c:39 ../roomops.c:646 +msgid "Goto next room" +msgstr "" + +#: ../mainmenu.c:42 +msgid "...with unread messages" +msgstr "" + +#: ../mainmenu.c:47 +msgid "Skip to next room" +msgstr "" + +#: ../mainmenu.c:50 +msgid "(come back here later)" +msgstr "" + +#: ../mainmenu.c:57 ../roomops.c:450 +msgid "Ungoto" +msgstr "" + +#: ../mainmenu.c:60 +#, c-format +msgid "(oops! Back to %s)" +msgstr "" + +#: ../mainmenu.c:68 ../roomops.c:459 +msgid "Read new messages" +msgstr "" + +#: ../mainmenu.c:71 +msgid "...in this room" +msgstr "" + +#: ../mainmenu.c:76 ../roomops.c:559 +msgid "Read all messages" +msgstr "" + +#: ../mainmenu.c:79 +msgid "...old and new" +msgstr "" + +#: ../mainmenu.c:84 ../roomops.c:621 +msgid "Enter a message" +msgstr "" + +#: ../mainmenu.c:87 +msgid "(post in this room)" +msgstr "" + +#: ../mainmenu.c:94 +msgid "Summary page" +msgstr "" + +#: ../mainmenu.c:97 +msgid "Summary of my account" +msgstr "" + +#: ../mainmenu.c:102 +msgid "User list" +msgstr "" + +#: ../mainmenu.c:105 +msgid "(all registered users)" +msgstr "" + +#: ../mainmenu.c:113 +msgid "Bye!" +msgstr "" + +#: ../mainmenu.c:122 +msgid "Your info" +msgstr "" + +#: ../mainmenu.c:127 +msgid "Change your preferences and settings" +msgstr "" + +#: ../mainmenu.c:132 +msgid "Update your contact information" +msgstr "" + +#: ../mainmenu.c:142 +msgid "Enter your 'bio'" +msgstr "" + +#: ../mainmenu.c:147 +msgid "Edit your online photo" +msgstr "" + +#: ../mainmenu.c:154 +msgid "Advanced room commands" +msgstr "" + +#: ../mainmenu.c:160 +msgid "Edit or delete this room" +msgstr "" + +#: ../mainmenu.c:166 +msgid "Go to a 'hidden' room" +msgstr "" + +#: ../mainmenu.c:171 ../roomops.c:1942 +msgid "Create a new room" +msgstr "" + +#: ../mainmenu.c:176 +#, c-format +msgid "Zap (forget) this room (%s)" +msgstr "" + +#: ../mainmenu.c:181 +msgid "List all forgotten rooms" +msgstr "" + +#: ../mainmenu.c:200 +msgid "System Administration Menu" +msgstr "" + +#: ../mainmenu.c:209 +msgid "Global Configuration" +msgstr "" + +#: ../mainmenu.c:214 +msgid "Edit site-wide configuration" +msgstr "" + +#: ../mainmenu.c:219 +msgid "Domain names and Internet mail configuration" +msgstr "" + +#: ../mainmenu.c:224 +msgid "Configure replication with other Citadel servers" +msgstr "" + +#: ../mainmenu.c:231 +msgid "User account management" +msgstr "" + +#: ../mainmenu.c:236 +msgid "Add, change, delete user accounts" +msgstr "" + +#: ../mainmenu.c:246 +msgid "Rooms and Floors" +msgstr "" + +#: ../mainmenu.c:251 +msgid "Add, change, or delete floors" +msgstr "" + +#: ../mainmenu.c:273 +msgid "Enter a server command" +msgstr "" + +#: ../mainmenu.c:282 +msgid "" +"This screen allows you to enter Citadel server commands which are not " +"supported by WebCit. If you do not know what that means, then this screen " +"will not be of much use to you." +msgstr "" + +#: ../mainmenu.c:289 +msgid "Enter command:" +msgstr "" + +#: ../mainmenu.c:292 +msgid "Command input (if requesting SEND_LISTING transfer mode):" +msgstr "" + +#: ../mainmenu.c:296 +#, c-format +msgid "Detected host header is %s://%s" +msgstr "" + +#: ../mainmenu.c:298 +msgid "Send command" +msgstr "" + +#: ../mainmenu.c:327 +msgid "Server command results" +msgstr "" + +#: ../messages.c:444 +msgid " (work)" +msgstr "" + +#: ../messages.c:446 +msgid " (home)" +msgstr "" + +#: ../messages.c:448 +msgid " (cell)" +msgstr " (mobile)" + +#: ../messages.c:459 ../vcard_edit.c:252 +msgid "Address:" +msgstr "" + +#: ../messages.c:519 +msgid "Telephone:" +msgstr "" + +#: ../messages.c:524 +msgid "E-mail:" +msgstr "" + +#: ../messages.c:632 ../messages.c:1229 +msgid "ERROR:" +msgstr "" + +#: ../messages.c:655 ../messages.c:932 ../messages.c:1238 ../messages.c:1341 +msgid "unexpected end of message" +msgstr "" + +#: ../messages.c:668 ../messages.c:1250 +msgid "from " +msgstr "" + +#: ../messages.c:696 ../messages.c:1266 +msgid "in " +msgstr "" + +#: ../messages.c:717 ../messages.c:1287 +msgid "to " +msgstr "" + +#: ../messages.c:770 +msgid "View" +msgstr "" + +#: ../messages.c:772 +msgid "Download" +msgstr "" + +#: ../messages.c:819 ../messages.c:2851 +msgid "CC:" +msgstr "" + +#: ../messages.c:827 ../messages.c:1323 +msgid "Subject:" +msgstr "" + +#: ../messages.c:851 ../rss.c:28 +msgid "Reply" +msgstr "" + +#: ../messages.c:866 +msgid "ReplyQuoted" +msgstr "" + +#: ../messages.c:883 +msgid "ReplyAll" +msgstr "" + +#: ../messages.c:891 +msgid "Forward" +msgstr "" + +#: ../messages.c:898 ../messages.c:3101 +msgid "Move" +msgstr "" + +#: ../messages.c:903 +msgid "Delete this message?" +msgstr "" + +#: ../messages.c:909 +msgid "Headers" +msgstr "" + +#: ../messages.c:914 +msgid "Print" +msgstr "" + +#: ../messages.c:1025 +#, c-format +msgid "I don't know how to display %s" +msgstr "" + +#: ../messages.c:1060 ../messages.c:1587 +msgid "edit" +msgstr "" + +#: ../messages.c:1550 ../messages.c:1859 +msgid "(no subject)" +msgstr "" + +#: ../messages.c:1678 +msgid "(no name)" +msgstr "" + +#: ../messages.c:1730 +msgid "This address book is empty." +msgstr "" + +#: ../messages.c:2156 +msgid "No new messages." +msgstr "" + +#: ../messages.c:2158 +msgid "No old messages." +msgstr "" + +#: ../messages.c:2160 +msgid "No messages here." +msgstr "" + +#: ../messages.c:2278 +msgid "Sender" +msgstr "" + +#: ../messages.c:2280 +msgid "Date" +msgstr "" + +#: ../messages.c:2295 +msgid "Click on any note to edit it." +msgstr "" + +#: ../messages.c:2398 +msgid "Reading #" +msgstr "" + +#: ../messages.c:2451 +#, c-format +msgid "of %d messages." +msgstr "" + +#: ../messages.c:2635 +#, c-format +msgid "Cancelled. Message was not posted." +msgstr "" + +#: ../messages.c:2641 +#, c-format +msgid "Automatically cancelled because you have already saved this message." +msgstr "" + +#: ../messages.c:2660 +#, c-format +msgid "Message has been sent.\n" +msgstr "" + +#: ../messages.c:2663 +#, c-format +msgid "Message has been posted.\n" +msgstr "" + +#: ../messages.c:2797 +msgid " from " +msgstr "" + +#: ../messages.c:2807 +msgid " in " +msgstr "" + +#: ../messages.c:2840 +msgid "To:" +msgstr "" + +#: ../messages.c:2862 +msgid "BCC:" +msgstr "" + +#: ../messages.c:2880 +msgid "Subject (optional):" +msgstr "" + +#: ../messages.c:2889 ../messages.c:3010 ../paging.c:57 +msgid "Send message" +msgstr "" + +#: ../messages.c:2891 ../messages.c:3012 +msgid "Post message" +msgstr "" + +#: ../messages.c:2907 +msgid "--- forwarded message ---" +msgstr "" + +#: ../messages.c:2987 +msgid "Attachments:" +msgstr "" + +#: ../messages.c:3002 +msgid "Attach file:" +msgstr "" + +#: ../messages.c:3005 ../roomops.c:1477 ../roomops.c:1507 +msgid "Add" +msgstr "" + +#: ../messages.c:3074 +msgid "Confirm move of message" +msgstr "" + +#: ../messages.c:3081 +msgid "Move this message to:" +msgstr "" + +#: ../messages.c:3127 +#, c-format +msgid "The message was not moved." +msgstr "" + +#: ../netconf.c:68 ../netconf.c:183 +msgid "Add a new node" +msgstr "" + +#: ../netconf.c:75 ../netconf.c:129 ../siteconfig.c:112 +#, c-format +msgid "Node name" +msgstr "" + +#: ../netconf.c:77 ../netconf.c:133 +msgid "Shared secret" +msgstr "" + +#: ../netconf.c:79 ../netconf.c:137 +msgid "Host or IP address" +msgstr "" + +#: ../netconf.c:81 ../netconf.c:141 +msgid "Port number" +msgstr "" + +#: ../netconf.c:84 +msgid "Add node" +msgstr "" + +#: ../netconf.c:110 +msgid "Edit node configuration for " +msgstr "" + +#: ../netconf.c:176 +msgid "Network configuration" +msgstr "" + +#: ../netconf.c:189 +msgid "Currently configured nodes" +msgstr "" + +#: ../netconf.c:204 +msgid "(Edit)" +msgstr "" + +#: ../netconf.c:229 +msgid "Confirm delete" +msgstr "" + +#: ../netconf.c:236 +msgid "Are you sure you want to delete " +msgstr "" + +#: ../netconf.c:243 +msgid "Yes" +msgstr "" + +#: ../netconf.c:246 +msgid "No" +msgstr "" + +#: ../netconf.c:309 +msgid "Back to menu" +msgstr "" + +#: ../notes.c:126 +msgid "An error has occurred." +msgstr "" + +#: ../paging.c:24 +msgid "Send instant message" +msgstr "" + +#: ../paging.c:33 +msgid "Send an instant message to: " +msgstr "" + +#: ../paging.c:49 +msgid "Enter message text:" +msgstr "" + +#: ../paging.c:89 +msgid "Message was not sent." +msgstr "" + +#: ../paging.c:99 +msgid "Message has been sent to " +msgstr "" + +#: ../paging.c:110 +msgid "[ close window ]" +msgstr "" + +#: ../paging.c:170 +msgid "" +"You have one or more instant messages waiting, but the Citadel Instant " +"Messenger window failed to open. This is probably because you have a popup " +"blocker installed. Please configure your popup blocker to allow popups from " +"this site if you wish to receive instant messages." +msgstr "" + +#: ../paging.c:309 ../paging.c:471 +msgid "An error occurred while setting up the chat socket." +msgstr "" + +#: ../paging.c:336 +msgid "Now exiting chat mode." +msgstr "" + +#: ../paging.c:507 +msgid "Send" +msgstr "" + +#: ../paging.c:508 +msgid "Help" +msgstr "" + +#: ../paging.c:509 +msgid "List users" +msgstr "" + +#: ../preferences.c:205 +msgid "Preferences and settings" +msgstr "" + +#: ../preferences.c:226 +msgid "Room list view" +msgstr "" + +#: ../preferences.c:232 +msgid "Tree (folders) view" +msgstr "" + +#: ../preferences.c:238 +msgid "Table (rooms) view" +msgstr "" + +#: ../preferences.c:249 +msgid "Calendar hour format" +msgstr "" + +#: ../preferences.c:255 +msgid "12 hour (am/pm)" +msgstr "" + +#: ../preferences.c:261 +msgid "24 hour" +msgstr "" + +#: ../preferences.c:272 +msgid "Calendar day view begins at:" +msgstr "" + +#: ../preferences.c:301 +msgid "Calendar day view ends at:" +msgstr "" + +#: ../preferences.c:330 +msgid "Attach signature to email messages?" +msgstr "" + +#: ../preferences.c:348 +msgid "No signature" +msgstr "" + +#: ../preferences.c:354 +msgid "Use this signature:" +msgstr "" + +#: ../preferences.c:378 +msgid "Default character set for email headers:" +msgstr "" + +#: ../preferences.c:388 +msgid "Change" +msgstr "" + +#: ../preferences.c:407 +msgid "Cancelled. No settings were changed." +msgstr "" + +#: ../roomops.c:19 +msgid "Bulletin Board" +msgstr "" + +#: ../roomops.c:20 +msgid "Mail Folder" +msgstr "" + +#: ../roomops.c:21 +msgid "Address Book" +msgstr "" + +#: ../roomops.c:23 +msgid "Task List" +msgstr "" + +#: ../roomops.c:24 +msgid "Notes List" +msgstr "" + +#: ../roomops.c:25 +msgid "Wiki" +msgstr "" + +#: ../roomops.c:26 +msgid "Calendar List" +msgstr "" + +#: ../roomops.c:258 +msgid "Zapped (forgotten) rooms" +msgstr "" + +#: ../roomops.c:264 +msgid "Click on any room to un-zap it and goto that room.\n" +msgstr "" + +#: ../roomops.c:358 +msgid "View as:" +msgstr "" + +#: ../roomops.c:429 +#, c-format +msgid "%d new of %d messages" +msgstr "" + +#: ../roomops.c:473 +msgid "View contacts" +msgstr "" + +#: ../roomops.c:484 +msgid "Day view" +msgstr "" + +#: ../roomops.c:493 +msgid "Month view" +msgstr "" + +#: ../roomops.c:504 +msgid "Calendar list" +msgstr "" + +#: ../roomops.c:515 +msgid "View tasks" +msgstr "" + +#: ../roomops.c:526 +msgid "View notes" +msgstr "" + +#: ../roomops.c:537 +msgid "View message list" +msgstr "" + +#: ../roomops.c:548 +msgid "Wiki home" +msgstr "" + +#: ../roomops.c:573 +msgid "Add new contact" +msgstr "" + +#: ../roomops.c:583 +msgid "Add new event" +msgstr "" + +#: ../roomops.c:592 +msgid "Add new task" +msgstr "" + +#: ../roomops.c:601 +msgid "Add new note" +msgstr "" + +#: ../roomops.c:612 +msgid "Edit this page" +msgstr "" + +#: ../roomops.c:634 +msgid "" +"Leave all messages marked as unread, go to next room with unread messages" +msgstr "" + +#: ../roomops.c:635 +msgid "Skip this room" +msgstr "" + +#: ../roomops.c:645 +msgid "Mark all messages as read, go to next room with unread messages" +msgstr "" + +#: ../roomops.c:1018 +msgid "Configuration" +msgstr "" + +#: ../roomops.c:1034 +msgid "Message expire policy" +msgstr "" + +#: ../roomops.c:1050 +msgid "Access controls" +msgstr "" + +#: ../roomops.c:1066 +msgid "Sharing" +msgstr "" + +#: ../roomops.c:1082 +msgid "Mailing list service" +msgstr "" + +#: ../roomops.c:1104 +msgid "Are you sure you want to delete this room?" +msgstr "" + +#: ../roomops.c:1106 +msgid "Delete this room" +msgstr "" + +#: ../roomops.c:1109 +msgid "Set or change the icon for this room's banner" +msgstr "" + +#: ../roomops.c:1112 +msgid "Edit this room's Info file" +msgstr "" + +#: ../roomops.c:1121 ../roomops.c:1954 +msgid "Name of room: " +msgstr "" + +#: ../roomops.c:1128 ../roomops.c:1958 +msgid "Resides on floor: " +msgstr "" + +#: ../roomops.c:1142 ../roomops.c:2000 +msgid "Type of room:" +msgstr "" + +#: ../roomops.c:1149 +msgid "Public room" +msgstr "" + +#: ../roomops.c:1157 +msgid "Private - guess name" +msgstr "" + +#: ../roomops.c:1164 +msgid "Private - require password:" +msgstr "" + +#: ../roomops.c:1174 ../roomops.c:2031 +msgid "Private - invitation only" +msgstr "" + +#: ../roomops.c:1178 +msgid "If private, cause current users to forget room" +msgstr "" + +#: ../roomops.c:1186 +msgid "Preferred users only" +msgstr "" + +#: ../roomops.c:1192 +msgid "Read-only room" +msgstr "" + +#: ../roomops.c:1199 +msgid "File directory room" +msgstr "" + +#: ../roomops.c:1202 +msgid "Directory name: " +msgstr "" + +#: ../roomops.c:1210 +msgid "Uploading allowed" +msgstr "" + +#: ../roomops.c:1216 +msgid "Downloading allowed" +msgstr "" + +#: ../roomops.c:1222 +msgid "Visible directory" +msgstr "" + +#: ../roomops.c:1231 +msgid "Network shared room" +msgstr "" + +#: ../roomops.c:1237 +msgid "Permanent (does not auto-purge)" +msgstr "" + +#: ../roomops.c:1242 +msgid "Anonymous messages" +msgstr "" + +#: ../roomops.c:1250 +msgid "No anonymous messages" +msgstr "" + +#: ../roomops.c:1256 +msgid "All messages are anonymous" +msgstr "" + +#: ../roomops.c:1262 +msgid "Prompt user when entering messages" +msgstr "" + +#: ../roomops.c:1268 +msgid "Room aide: " +msgstr "" + +#: ../roomops.c:1340 +msgid "Shared with" +msgstr "" + +#: ../roomops.c:1343 +msgid "Not shared with" +msgstr "" + +#: ../roomops.c:1348 ../roomops.c:1393 +msgid "Remote node name" +msgstr "" + +#: ../roomops.c:1350 ../roomops.c:1395 +msgid "Remote room name" +msgstr "" + +#: ../roomops.c:1352 ../roomops.c:1397 +msgid "Actions" +msgstr "" + +#: ../roomops.c:1385 +msgid "Unshare" +msgstr "" + +#: ../roomops.c:1422 +msgid "Share" +msgstr "" + +#: ../roomops.c:1430 +msgid "Notes:" +msgstr "" + +#: ../roomops.c:1431 +msgid "" +"When sharing a room, it must be shared from both ends. Adding a node to the " +"'shared' list sends messages out, but in order to receive messages, the " +"other nodes must be configured to send messages out to your system as well. " +"
  • If the remote room name is blank, it is assumed that the room name is " +"identical on the remote node.
  • If the remote room name is different, the " +"remote node must also configure the name of the room here.
    \n" +msgstr "" + +#: ../roomops.c:1452 +msgid "" +"The contents of this room are being mailed as individual messages " +"to the following list recipients:

    \n" +msgstr "" + +#: ../roomops.c:1469 ../roomops.c:1499 +msgid "(remove)" +msgstr "" + +#: ../roomops.c:1482 +msgid "" +"The contents of this room are being mailed in digest form to the " +"following list recipients:

    \n" +msgstr "" + +#: ../roomops.c:1513 +msgid "" +"This room is configured to allow self-service subscribe/unsubscribe requests." +msgstr "" + +#: ../roomops.c:1516 +msgid "Click to disable." +msgstr "" + +#: ../roomops.c:1518 +msgid "The URL for subscribe/unsubscribe is: " +msgstr "" + +#: ../roomops.c:1524 +msgid "" +"This room is not configured to allow self-service subscribe/" +"unsubscribe requests." +msgstr "" + +#: ../roomops.c:1528 +msgid "Click to enable." +msgstr "" + +#: ../roomops.c:1557 +msgid "Message expire policy for this room" +msgstr "" + +#: ../roomops.c:1563 +msgid "Use the default policy for this floor" +msgstr "" + +#: ../roomops.c:1567 ../roomops.c:1594 ../siteconfig.c:501 ../siteconfig.c:526 +#, c-format +msgid "Never automatically expire messages" +msgstr "" + +#: ../roomops.c:1571 ../roomops.c:1598 ../siteconfig.c:505 ../siteconfig.c:530 +#, c-format +msgid "Expire by message count" +msgstr "" + +#: ../roomops.c:1575 ../roomops.c:1602 ../siteconfig.c:509 ../siteconfig.c:534 +#, c-format +msgid "Expire by message age" +msgstr "" + +#: ../roomops.c:1577 ../roomops.c:1604 ../siteconfig.c:511 ../siteconfig.c:536 +#, c-format +msgid "Number of messages or days: " +msgstr "" + +#: ../roomops.c:1584 +msgid "Message expire policy for this floor" +msgstr "" + +#: ../roomops.c:1590 +msgid "Use the system default" +msgstr "" + +#: ../roomops.c:1665 ../roomops.c:3037 +msgid "Cancelled. Changes were not saved." +msgstr "" + +#: ../roomops.c:1804 +msgid "Your changes have been saved." +msgstr "" + +#: ../roomops.c:1836 +#, c-format +msgid "User %s kicked out of room %s.\n" +msgstr "" + +#: ../roomops.c:1850 +#, c-format +msgid "User %s invited to room %s.\n" +msgstr "" + +#: ../roomops.c:1878 +msgid "" +"The users listed below have access to this room. To remove a user from the " +"access list, select the user name from the list and click 'Kick'." +msgstr "" + +#: ../roomops.c:1898 +msgid "Kick" +msgstr "" + +#: ../roomops.c:1902 +msgid "" +"To grant another user access to this room, enter the user name in the box " +"below and click 'Invite'." +msgstr "" + +#: ../roomops.c:1908 +msgid "Invite:" +msgstr "" + +#: ../roomops.c:1913 +msgid "Invite" +msgstr "" + +#: ../roomops.c:1977 +msgid "Default view for room: " +msgstr "" + +#: ../roomops.c:2009 +msgid "Public (automatically appears to everyone)" +msgstr "" + +#: ../roomops.c:2016 +msgid "Private - hidden (accessible to anyone who knows its name)" +msgstr "" + +#: ../roomops.c:2023 +msgid "Private - require password: " +msgstr "" + +#: ../roomops.c:2039 +msgid "Personal (mailbox for you only)" +msgstr "" + +#: ../roomops.c:2044 +msgid "Create new room" +msgstr "" + +#: ../roomops.c:2112 +msgid "Cancelled. No new room was created." +msgstr "" + +#: ../roomops.c:2155 +msgid "Go to a hidden room" +msgstr "" + +#: ../roomops.c:2166 +msgid "" +"If you know the name of a hidden (guess-name) or passworded room, you can " +"enter that room by typing its name below. Once you gain access to a private " +"room, it will appear in your regular room listings so you don't have to keep " +"returning here." +msgstr "" + +#: ../roomops.c:2178 +msgid "Enter room name:" +msgstr "" + +#: ../roomops.c:2185 +msgid "Enter room password:" +msgstr "" + +#: ../roomops.c:2194 +msgid "Go there" +msgstr "" + +#: ../roomops.c:2247 +msgid "Zap (forget/unsubscribe) the current room" +msgstr "" + +#: ../roomops.c:2252 +#, c-format +msgid "" +"If you select this option, %s will disappear from your room list. " +"Is this what you wish to do?
    \n" +msgstr "" + +#: ../roomops.c:2257 +msgid "Zap this room" +msgstr "" + +#: ../roomops.c:2987 ../roomops.c:2993 +msgid "Room list" +msgstr "" + +#: ../roomops.c:2990 +msgid "Folder list" +msgstr "" + +#: ../rss.c:34 +msgid "Email" +msgstr "" + +#: ../rss.c:73 +msgid "Not logged in" +msgstr "" + +#: ../rss.c:92 +msgid "Error retrieving RSS feed: couldn't find messages\n" +msgstr "" + +#: ../siteconfig.c:38 +msgid "Site configuration" +msgstr "" + +#: ../siteconfig.c:61 +msgid "General" +msgstr "" + +#: ../siteconfig.c:62 +msgid "Access" +msgstr "" + +#: ../siteconfig.c:63 +msgid "Network" +msgstr "" + +#: ../siteconfig.c:64 +msgid "Tuning" +msgstr "" + +#: ../siteconfig.c:65 +msgid "Directory" +msgstr "" + +#: ../siteconfig.c:66 +msgid "Auto-purger" +msgstr "" + +#: ../siteconfig.c:67 +msgid "Indexing/Journaling" +msgstr "" + +#: ../siteconfig.c:71 +msgid "General site configuration items" +msgstr "" + +#: ../siteconfig.c:75 +msgid "Access controls and site policy settings" +msgstr "" + +#: ../siteconfig.c:79 +msgid "Network services" +msgstr "" + +#: ../siteconfig.c:80 ../siteconfig.c:90 +msgid "" +"Changes made on this screen will not take effect until you restart the " +"Citadel server." +msgstr "" + +#: ../siteconfig.c:85 +msgid "Advanced server fine-tuning controls" +msgstr "" + +#: ../siteconfig.c:89 +msgid "Configure the LDAP connector for Citadel" +msgstr "" + +#: ../siteconfig.c:95 +msgid "Configure automatic expiry of old messages" +msgstr "" + +#: ../siteconfig.c:96 +msgid "These settings may be overridden on a per-floor or per-room basis." +msgstr "" + +#: ../siteconfig.c:100 +msgid "Indexing and Journaling" +msgstr "" + +#: ../siteconfig.c:101 +msgid "Warning: these facilities are resource intensive." +msgstr "" + +#: ../siteconfig.c:119 +#, c-format +msgid "Fully qualified domain name" +msgstr "" + +#: ../siteconfig.c:126 +#, c-format +msgid "Human-readable node name" +msgstr "" + +#: ../siteconfig.c:133 +#, c-format +msgid "Telephone number" +msgstr "" + +#: ../siteconfig.c:140 +#, c-format +msgid "Automatically grant room-aide status to users who create private rooms" +msgstr "" + +#: ../siteconfig.c:148 +#, c-format +msgid "Server connection idle timeout (in seconds)" +msgstr "" + +#: ../siteconfig.c:155 +#, c-format +msgid "Initial access level for new users" +msgstr "" + +#: ../siteconfig.c:169 +#, c-format +msgid "Require registration for new users" +msgstr "" + +#: ../siteconfig.c:177 +#, c-format +msgid "Quarantine messages from problem users" +msgstr "" + +#: ../siteconfig.c:185 +#, c-format +msgid "Name of quarantine room" +msgstr "" + +#: ../siteconfig.c:192 +#, c-format +msgid "Paginator prompt (for text mode clients)" +msgstr "" + +#: ../siteconfig.c:199 +#, c-format +msgid "Restrict access to Internet mail" +msgstr "" + +#: ../siteconfig.c:207 +#, c-format +msgid "Geographic location of this system" +msgstr "" + +#: ../siteconfig.c:214 +#, c-format +msgid "Name of system administrator" +msgstr "" + +#: ../siteconfig.c:221 +#, c-format +msgid "Maximum concurrent sessions (0 = no limit)" +msgstr "" + +#: ../siteconfig.c:228 +#, c-format +msgid "Default user purge time (days)" +msgstr "" + +#: ../siteconfig.c:235 +#, c-format +msgid "Default room purge time (days)" +msgstr "" + +#: ../siteconfig.c:242 +#, c-format +msgid "Name of room to log pages" +msgstr "" + +#: ../siteconfig.c:249 +#, c-format +msgid "Access level required to create rooms" +msgstr "" + +#: ../siteconfig.c:263 +#, c-format +msgid "Maximum message length" +msgstr "" + +#: ../siteconfig.c:270 +#, c-format +msgid "Minimum number of worker threads" +msgstr "" + +#: ../siteconfig.c:277 +#, c-format +msgid "Maximum number of worker threads" +msgstr "" + +#: ../siteconfig.c:284 +#, c-format +msgid "POP3 listener port (-1 to disable)" +msgstr "" + +#: ../siteconfig.c:291 +#, c-format +msgid "SMTP MTA port (-1 to disable)" +msgstr "" + +#: ../siteconfig.c:298 +#, c-format +msgid "Correct forged From: lines during authenticated SMTP" +msgstr "" + +#: ../siteconfig.c:306 +#, c-format +msgid "Allow aides to zap (forget) rooms" +msgstr "" + +#: ../siteconfig.c:314 +#, c-format +msgid "IMAP listener port (-1 to disable)" +msgstr "" + +#: ../siteconfig.c:321 +#, c-format +msgid "Network run frequency (in seconds)" +msgstr "" + +#: ../siteconfig.c:328 +#, c-format +msgid "Disable self-service user account creation" +msgstr "" + +#: ../siteconfig.c:336 +#, c-format +msgid "Hour to run database auto-purge" +msgstr "" + +#: ../siteconfig.c:352 +#, c-format +msgid "Host name of LDAP server (blank to disable)" +msgstr "" + +#: ../siteconfig.c:359 +#, c-format +msgid "Port number of LDAP server (blank to disable)" +msgstr "" + +#: ../siteconfig.c:366 +#, c-format +msgid "Base DN" +msgstr "" + +#: ../siteconfig.c:373 +#, c-format +msgid "Bind DN" +msgstr "" + +#: ../siteconfig.c:380 +#, c-format +msgid "Password for bind DN" +msgstr "" + +#: ../siteconfig.c:388 +#, c-format +msgid "Server IP address (0.0.0.0 for 'any')" +msgstr "" + +#: ../siteconfig.c:395 +#, c-format +msgid "SMTP MSA port (-1 to disable)" +msgstr "" + +#: ../siteconfig.c:402 +#, c-format +msgid "IMAP over SSL port (-1 to disable)" +msgstr "" + +#: ../siteconfig.c:409 +#, c-format +msgid "POP3 over SSL port (-1 to disable)" +msgstr "" + +#: ../siteconfig.c:416 +#, c-format +msgid "SMTP over SSL port (-1 to disable)" +msgstr "" + +#: ../siteconfig.c:423 +#, c-format +msgid "Enable full text index" +msgstr "" + +#: ../siteconfig.c:431 +#, c-format +msgid "Automatically delete committed database logs" +msgstr "" + +#: ../siteconfig.c:439 +#, c-format +msgid "Instantly expunge deleted messages in IMAP" +msgstr "" + +#: ../siteconfig.c:447 +#, c-format +msgid "Allow unauthenticated SMTP clients to spoof this site's domains" +msgstr "" + +#: ../siteconfig.c:455 +#, c-format +msgid "Perform journaling of email messages" +msgstr "" + +#: ../siteconfig.c:463 +#, c-format +msgid "Perform journaling of non-email messages" +msgstr "" + +#: ../siteconfig.c:471 +#, c-format +msgid "Email destination of journalized messages" +msgstr "" + +#: ../siteconfig.c:497 +#, c-format +msgid "Default message expire policy for public rooms" +msgstr "" + +#: ../siteconfig.c:518 +#, c-format +msgid "Default message expire policy for private mailboxes" +msgstr "" + +#: ../siteconfig.c:522 +#, c-format +msgid "Same policy as public rooms" +msgstr "" + +#: ../siteconfig.c:644 +msgid "Your system configuration has been updated." +msgstr "" + +#: ../subst.c:216 +msgid "ERROR: could not open template " +msgstr "" + +#: ../summary.c:35 +msgid "(nothing)" +msgstr "" + +#: ../summary.c:50 +msgid "Messages" +msgstr "" + +#: ../summary.c:87 +msgid "Who's online now" +msgstr "" + +#: ../summary.c:122 +msgid "(None)" +msgstr "" + +#: ../summary.c:135 +msgid "(This server does not support task lists)" +msgstr "" + +#: ../summary.c:151 +msgid "Today on your calendar" +msgstr "" + +#: ../summary.c:164 +msgid "(Nothing)" +msgstr "" + +#: ../summary.c:176 +msgid "(This server does not support calendars)" +msgstr "" + +#: ../summary.c:188 +msgid "About this server" +msgstr "" + +#: ../summary.c:192 +#, c-format +msgid "" +"You are connected to %s, running %s with %s, and located in %s. Your system " +"administrator is %s." +msgstr "" + +#: ../summary.c:259 +#, c-format +msgid "Summary page for %s" +msgstr "" + +#: ../sysmsgs.c:40 +#, c-format +msgid "Edit %s" +msgstr "" + +#: ../sysmsgs.c:44 +#, c-format +msgid "" +"Enter %s below. Text is formatted to the reader's screen width. To defeat " +"the formatting, indent a line at least one space." +msgstr "" + +#: ../sysmsgs.c:79 +#, c-format +msgid "Cancelled. %s was not saved." +msgstr "" + +#: ../sysmsgs.c:98 +#, c-format +msgid "%s has been saved." +msgstr "" + +#: ../useredit.c:31 +msgid "Edit or delete users" +msgstr "" + +#: ../useredit.c:40 +msgid "Add users" +msgstr "" + +#: ../useredit.c:43 +msgid "" +"To create a new user account, enter the desired user name in the box below " +"and click 'Create'." +msgstr "" + +#: ../useredit.c:48 +msgid "New user: " +msgstr "" + +#: ../useredit.c:51 +msgid "Create" +msgstr "" + +#: ../useredit.c:57 +msgid "Edit or Delete users" +msgstr "" + +#: ../useredit.c:60 +msgid "" +"To edit an existing user account, select the user name from the list and " +"click 'Edit'." +msgstr "" + +#: ../useredit.c:83 +msgid "Edit configuration" +msgstr "" + +#: ../useredit.c:84 +msgid "Edit address book entry" +msgstr "" + +#: ../useredit.c:86 +msgid "Delete user" +msgstr "" + +#: ../useredit.c:86 +msgid "Delete this user?" +msgstr "" + +#: ../useredit.c:204 +msgid "" +"An error occurred while trying to create or edit this address book entry." +msgstr "" + +#: ../useredit.c:283 +msgid "Edit user account: " +msgstr "" + +#: ../useredit.c:303 +msgid "Password" +msgstr "" + +#: ../useredit.c:310 +msgid "Permission to send Internet mail" +msgstr "" + +#: ../useredit.c:319 +msgid "Number of logins" +msgstr "" + +#: ../useredit.c:326 +msgid "Messages submitted" +msgstr "" + +#: ../useredit.c:333 +msgid "Access level" +msgstr "" + +#: ../useredit.c:347 +msgid "User ID number" +msgstr "" + +#: ../useredit.c:355 +msgid "Date and time of last login" +msgstr "" + +#: ../useredit.c:370 +msgid "Auto-purge after this many days" +msgstr "" + +#: ../useredit.c:402 +msgid "Changes were not saved." +msgstr "" + +#: ../useredit.c:486 +#, c-format +msgid "A new user has been created." +msgstr "" + +#: ../userlist.c:48 +#, c-format +msgid "User list for %s" +msgstr "" + +#: ../userlist.c:66 +msgid "User Name" +msgstr "" + +#: ../userlist.c:67 +msgid "Number" +msgstr "" + +#: ../userlist.c:68 +msgid "Access Level" +msgstr "" + +#: ../userlist.c:69 +msgid "Last Login" +msgstr "" + +#: ../userlist.c:70 +msgid "Total Logins" +msgstr "" + +#: ../userlist.c:71 +msgid "Total Posts" +msgstr "" + +#: ../userlist.c:129 +msgid "User profile" +msgstr "" + +#: ../userlist.c:165 +#, c-format +msgid "Click here to send an instant message to %s" +msgstr "" + +#: ../vcard_edit.c:184 +msgid "Edit contact information" +msgstr "" + +#: ../vcard_edit.c:200 +msgid "Prefix" +msgstr "" + +#: ../vcard_edit.c:200 +msgid "First" +msgstr "" + +#: ../vcard_edit.c:200 +msgid "Middle" +msgstr "" + +#: ../vcard_edit.c:200 +msgid "Last" +msgstr "" + +#: ../vcard_edit.c:200 +msgid "Suffix" +msgstr "" + +#: ../vcard_edit.c:221 +msgid "Display name:" +msgstr "" + +#: ../vcard_edit.c:228 +msgid "Title:" +msgstr "" + +#: ../vcard_edit.c:235 +msgid "Organization:" +msgstr "" + +#: ../vcard_edit.c:246 +msgid "PO box:" +msgstr "" + +#: ../vcard_edit.c:262 +msgid "City:" +msgstr "" + +#: ../vcard_edit.c:268 +msgid "State:" +msgstr "" + +#: ../vcard_edit.c:274 +msgid "ZIP code:" +msgstr "" + +#: ../vcard_edit.c:280 +msgid "Country:" +msgstr "" + +#: ../vcard_edit.c:290 +msgid "Home telephone:" +msgstr "" + +#: ../vcard_edit.c:296 +msgid "Work telephone:" +msgstr "" + +#: ../vcard_edit.c:307 +msgid "Primary Internet e-mail address" +msgstr "" + +#: ../vcard_edit.c:314 +msgid "Internet e-mail aliases" +msgstr "" + +#: ../webcit.c:685 +#, c-format +msgid "An error occurred while retrieving this part: %s\n" +msgstr "" + +#: ../webcit.c:771 +msgid "Make this my start page" +msgstr "" + +#: ../webcit.c:790 +msgid "You no longer have a start page selected." +msgstr "" + +#: ../webcit.c:826 +msgid "Authorization Required" +msgstr "" + +#: ../webcit.c:828 +#, c-format +msgid "" +"The resource you requested requires a valid username and password. You could " +"not be logged in: %s\n" +msgstr "" + +#: ../webcit.c:1247 +#, c-format +msgid "" +"You are connected to a Citadel server running Citadel %d.%02d. \n" +"In order to run this version of WebCit you must also have Citadel %d.%02d or " +"newer.\n" +"\n" +"\n" +msgstr "" + +#: ../webcit.c:1484 ../webcit.c:1486 +msgid "Room info" +msgstr "" + +#: ../webcit.c:1489 ../webcit.c:1491 +msgid "Your bio" +msgstr "" + +#: ../webcit.c:1499 +msgid "your photo" +msgstr "" + +#: ../webcit.c:1505 +msgid "the icon for this room" +msgstr "" + +#: ../webcit.c:1519 +msgid "the icon for this floor" +msgstr "" + +#: ../who.c:27 +msgid "User name" +msgstr "" + +#: ../who.c:28 +msgid "Room" +msgstr "" + +#: ../who.c:29 +msgid "From host" +msgstr "" + +#: ../who.c:62 +msgid "(kill)" +msgstr "" + +#: ../who.c:65 +msgid "(edit)" +msgstr "" + +#: ../who.c:141 +msgid "Do you really want to kill this session?" +msgstr "" + +#: ../who.c:151 +#, c-format +msgid "Users currently on %s" +msgstr "" + +#: ../who.c:166 +#, c-format +msgid "" +"Click on a name to read user info. Click on %s to send an instant message " +"to that user." +msgstr "" + +#: ../who.c:228 +msgid "Edit your session display" +msgstr "" + +#: ../who.c:232 +msgid "" +"This screen allows you to change the way your session appears in the 'Who is " +"online' listing. To turn off any 'fake' name you've previously set, simply " +"click the appropriate 'change' button without typing anything in the " +"corresponding box. " +msgstr "" + +#: ../who.c:244 +msgid "Room name:" +msgstr "" + +#: ../who.c:249 +msgid "Change room name" +msgstr "" + +#: ../who.c:253 +msgid "Host name:" +msgstr "" + +#: ../who.c:258 +msgid "Change host name" +msgstr "" + +#: ../who.c:268 +msgid "Change user name" +msgstr "" + +#: ../wiki.c:64 +#, c-format +msgid "There is no room called '%s'." +msgstr "" + +#: ../wiki.c:74 +#, c-format +msgid "'%s' is not a Wiki room." +msgstr "" + +#: ../wiki.c:100 +#, c-format +msgid "There is no page called '%s' here." +msgstr "" + +#: ../wiki.c:102 +msgid "" +"Select the 'Edit this page' link in the room banner if you would like to " +"create this page." +msgstr "" diff --git a/webcit/po/es.po b/webcit/po/es.po new file mode 100644 index 000000000..b39ea82db --- /dev/null +++ b/webcit/po/es.po @@ -0,0 +1,2828 @@ +# WebCit +# Copyright (C) 2006 The Citadel Project - http://www.citadel.org +# This file is distributed under the terms of the GNU General Public License v2. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: WEBCIT 6.40\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-03-14 22:17-0500\n" +"PO-Revision-Date: 2006-04-13 16:23-0500\n" +"Last-Translator: Gabriel C. Huertas \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../src/auth.c:23 +msgid "Deleted" +msgstr "Borrado" + +#: ../src/auth.c:24 ../src/auth.c:72 +msgid "New User" +msgstr "Nuevo Usuario" + +#: ../src/auth.c:25 +msgid "Problem User" +msgstr "Usuario Problemático" + +#: ../src/auth.c:26 +msgid "Local User" +msgstr "Usuario Local" + +#: ../src/auth.c:27 +msgid "Network User" +msgstr "Usuario de la red" + +#: ../src/auth.c:28 +msgid "Preferred User" +msgstr "Usuario Preferente" + +#: ../src/auth.c:29 +msgid "Aide" +msgstr "Administrador" + +#: ../src/auth.c:52 +#, c-format +msgid "" +"
    • If you already have an account on %s, enter your user name " +"and password and click "Login."
    • If you are a new user, " +"enter the name and password you wish to use, and click "New User." " +"
    • Please log off properly when finished.
    • You must use a browser that " +"supports frames and cookies.
    • Also keep in mind that if " +"your browser is configured to block pop-up windows, you will not be able to " +"receive any instant messages.
    " +msgstr "" +"
    • Si ya dispone de una cuenta en %s, introduzca su nombre de usuario " +"y contraseña y seleccione "Login."
    • Si es un usuario nuevo, " +"introduzca su nombre y la contraseña que le gustaría utilizar, y pulse "Nuevo Usuario." " +"
    • Por favor, cierre su conexión adecuadamente al terminar.
    • Debe utilizar un explorador que " +"soporte frames y cookies.
    • Tenga también en cuenta que si " +"su explorador esta configurado para bloquear pop windows, no podrá recibir " +"mensajería instantánea.
    " + +#: ../src/auth.c:68 ../src/who.c:263 +msgid "User name:" +msgstr "Nombre de usuario:" + +#: ../src/auth.c:69 +msgid "Password:" +msgstr "Contraseña" + +#: ../src/auth.c:70 +msgid "Language:" +msgstr "Lenguaje" + +#: ../src/auth.c:71 +msgid "Login" +msgstr "Login" + +#: ../src/auth.c:73 ../src/paging.c:510 +msgid "Exit" +msgstr "Salir" + +#: ../src/auth.c:75 +#, c-format +msgid "%s - powered by Citadel" +msgstr "%s - Motor Citadel" + +#: ../src/auth.c:174 ../src/auth.c:542 +msgid "Blank passwords are not allowed." +msgstr "No se permiten contraseñas en blanco" + +#: ../src/auth.c:195 +msgid "Your password was not accepted." +msgstr "Su contraseña no ha sido aceptada" + +#: ../src/auth.c:303 +msgid "" +"This program was unable to connect or stay connected to the Citadel server. " +"Please report this problem to your system administrator." +msgstr "" +"Este programa fue incapaz de conectarse o de permanecer conectado al servidor Citadel." +"Por favor, informe de este problema al administrador del sistema." + +#: ../src/auth.c:310 +msgid "Log in again" +msgstr "Iniciar acceso de nuevo" + +#: ../src/auth.c:313 +msgid "Close window" +msgstr "Cerrar ventana" + +#: ../src/auth.c:334 ../src/mainmenu.c:241 +msgid "Validate new users" +msgstr "Validación de nuevos usuarios" + +#: ../src/auth.c:354 +msgid "No users require validation at this time." +msgstr "Ningún usuario requiere validación por el momento" + +#: ../src/auth.c:395 +#, c-format +msgid "Current access level: %d (%s)\n" +msgstr "Nivel actual de acceso: %d (%s)\n" + +#: ../src/auth.c:403 +msgid "Select access level for this user:" +msgstr "Seleccione el nivel de acceso para este usuario:" + +#: ../src/auth.c:466 ../src/mainmenu.c:137 +msgid "Change your password" +msgstr "Cambie su contraseña" + +#: ../src/auth.c:495 +msgid "Enter new password:" +msgstr "Introducir nueva contraseña" + +#: ../src/auth.c:499 +msgid "Enter it again to confirm:" +msgstr "Introdúzcala de nuevo como confirmación:" + +#: ../src/auth.c:504 +msgid "Change password" +msgstr "Cambia contraseña" + +#: ../src/auth.c:506 ../src/calendar.c:616 ../src/event.c:390 +#: ../src/graphics.c:58 ../src/iconbar.c:712 ../src/mainmenu.c:300 +#: ../src/messages.c:2942 ../src/messages.c:3063 ../src/messages.c:3151 +#: ../src/netconf.c:86 ../src/netconf.c:149 ../src/paging.c:58 +#: ../src/preferences.c:389 ../src/roomops.c:1280 ../src/roomops.c:1608 +#: ../src/roomops.c:2041 ../src/roomops.c:2190 ../src/roomops.c:2254 +#: ../src/siteconfig.c:564 ../src/sysmsgs.c:59 ../src/useredit.c:381 +#: ../src/vcard_edit.c:336 ../src/who.c:273 +msgid "Cancel" +msgstr "Cancelar" + +#: ../src/auth.c:523 +msgid "Cancelled. Password was not changed." +msgstr "Cancelado. No se cambió la contraseña." + +#: ../src/auth.c:534 +msgid "They don't match. Password was not changed." +msgstr "No cuadran. La contraseña no se cambia." + +#: ../src/availability.c:140 +msgid "availability unknown" +msgstr "disponibilidad desconocida" + +#: ../src/availability.c:161 +msgid "free" +msgstr "libre" + +#: ../src/availability.c:171 +msgid "BUSY" +msgstr "OCUPADO" + +#: ../src/calendar.c:24 +msgid "" +"This message contains calendaring/scheduling information, but support for " +"calendars is not available on this particular system. Please ask your " +"system administrator to install a new version of the Citadel web service " +"with calendaring enabled.
    \n" +msgstr "" +"Este mensaje contiene información sobre porgrmación anticipada de tareas y calendarios,pero" +"los calendarios no son soportados por este sistema particular. Por favor, pida a su administrador " +"de sistemas que instale una nueva versión del servicio web Citadel " +"con activación de calendarios.
    \n" + +#: ../src/calendar.c:38 +msgid "" +"Cannot display calendar item. You are seeing this error because your " +"WebCit service has not been installed with calendar support. Please contact " +"your system administrator.
    \n" +msgstr "" +"No puedo mostrar elemento del calendario.Este error significa que " +"WebCit no está instalado con soporte para calendarios. Contacte con " +"su administrador de sistemas.
    \n" + +#: ../src/calendar.c:50 +msgid "" +"Cannot display to-do item. You are seeing this error because your WebCit " +"service has not been installed with calendar support. Please contact your " +"system administrator.
    \n" +msgstr "" +"No se puede mostrar el elemento «por hacer». Está viendo este mensaje porque su servicio WebCit " +"se instaló sin soporte para calendarios. Por favor, contacte con su " +"adminstrador de sistemas.
    \n" + +#: ../src/calendar.c:107 +msgid "Meeting invitation" +msgstr "Invitación a reunión" + +#: ../src/calendar.c:116 +msgid "Attendee's reply to your invitation" +msgstr "Respuesta en atención a la invitación" + +#: ../src/calendar.c:125 +msgid "Published event" +msgstr "Evento publicado" + +#: ../src/calendar.c:130 +msgid "This is an unknown type of calendar item." +msgstr "Este es un elemento de calendario desconocido." + +#: ../src/calendar.c:139 ../src/calendar.c:560 +msgid "Summary:" +msgstr "Sumario" + +#: ../src/calendar.c:148 +msgid "Location:" +msgstr "Localización" + +#: ../src/calendar.c:174 +msgid "Date:" +msgstr "Fecha" + +#: ../src/calendar.c:181 +msgid "Starting date/time:" +msgstr "Fecha/hora de comienzo:" + +#: ../src/calendar.c:192 +msgid "Ending date/time:" +msgstr "Fecha/hora de finalización:" + +#: ../src/calendar.c:201 ../src/calendar.c:596 +msgid "Description:" +msgstr "Descripción:" + +#: ../src/calendar.c:210 +msgid "Attendee:" +msgstr "Attn.:" + +#: ../src/calendar.c:250 +#, c-format +msgid "This is an update of '%s' which is already in your calendar." +msgstr "Esta es una actualizaciñon de '%s' que está ya en su calendario." + +#: ../src/calendar.c:254 +#, c-format +msgid "This event would conflict with '%s' which is already in your calendar." +msgstr "Este evento entrará en conflicto con '%s' que está ya en su calendario." + +#: ../src/calendar.c:259 +msgid "Update:" +msgstr "Actualizar:" + +#: ../src/calendar.c:260 +msgid "CONFLICT:" +msgstr "CONFLICTO" + +#: ../src/calendar.c:278 +msgid "How would you like to respond to this invitation?" +msgstr "¿Como le gustaría responder a esta invitación?" + +#: ../src/calendar.c:279 +msgid "Accept" +msgstr "Aceptar" + +#: ../src/calendar.c:280 +msgid "Tentative" +msgstr "Tentativa" + +#: ../src/calendar.c:281 +msgid "Decline" +msgstr "Declinar" + +#: ../src/calendar.c:305 +msgid "Click Update to accept this reply and update your calendar." +msgstr "Pulse Actualizar para aceptar esta respuesta y actualizar su calendario." + +#: ../src/calendar.c:306 +msgid "Update" +msgstr "Actualizar" + +#: ../src/calendar.c:307 +msgid "Ignore" +msgstr "Ignorar" + +#: ../src/calendar.c:334 +msgid "There was an error parsing this calendar item." +msgstr "Se produjo un error al pasar este elemento de calendario." + +#: ../src/calendar.c:361 +msgid "Respond to meeting request" +msgstr "Responder a convocatoria de reunión" + +#: ../src/calendar.c:380 +msgid "" +"You have accepted this meeting invitation. It has been entered into your " +"calendar." +msgstr "" +"Aceptaste la convocatoria de reunión. Se ha anotado en tu " +"calendario" +#: ../src/calendar.c:384 +msgid "" +"You have tentatively accepted this meeting invitation. It has been " +"'pencilled in' to your calendar." +msgstr "" +"Aceptaste tentativamente la convocatoria de reunión. Se anotó" +"'a lápiz' en tu calendario" +#: ../src/calendar.c:388 +msgid "" +"You have declined this meeting invitation. It has not been entered " +"into your calendar." +msgstr "" +"Declinaste la convocatoria de reunión. No se anotó " +"en tu calendario" + +#: ../src/calendar.c:393 +msgid "A reply has been sent to the meeting organizer." +msgstr "Se envió una respuesta al organizador de la reunión." + +#: ../src/calendar.c:403 ../src/calendar.c:457 +msgid "Return to messages" +msgstr "Volver a mensajes" + +#: ../src/calendar.c:422 +msgid "Update your calendar with this RSVP" +msgstr "Actualizar el calendario con este RVSP" + +#: ../src/calendar.c:441 +msgid "Your calendar has been updated to reflect this RSVP." +msgstr "Su calendario se actualizó para reflegar este RSVP. " + +#: ../src/calendar.c:443 +msgid "" +"You have chosen to ignore this RSVP. Your calendar has not been " +"updated." +msgstr "Eligió ignorar este RSVP. Su calendario no se actualizó " + +#: ../src/calendar.c:544 +msgid "Edit task" +msgstr "Editar tarea" + +#: ../src/calendar.c:571 +msgid "Start date:" +msgstr "Fecha de inicio" + +#: ../src/calendar.c:584 +msgid "Due date:" +msgstr "Fecha finalización" + +#: ../src/calendar.c:614 ../src/event.c:387 +msgid "Save" +msgstr "Salvar" + +#: ../src/calendar.c:615 ../src/event.c:388 ../src/messages.c:950 +#: ../src/messages.c:2327 +msgid "Delete" +msgstr "Borrar" + +#: ../src/calendar_tools.c:73 +msgid "Month: " +msgstr "Mes" + +#: ../src/calendar_tools.c:87 +msgid "Day: " +msgstr "Día" + +#: ../src/calendar_tools.c:97 +msgid "Year: " +msgstr "Año" + +#: ../src/calendar_tools.c:115 +msgid "Hour: " +msgstr "Hora" + +#: ../src/calendar_tools.c:135 +msgid "Minute: " +msgstr "Minuto" + +#: ../src/calendar_tools.c:204 +msgid "(status unknown)" +msgstr "(estado desconocido)" + +#: ../src/calendar_tools.c:220 +msgid "(needs action)" +msgstr "(requiere actuación)" + +#: ../src/calendar_tools.c:223 +msgid "(accepted)" +msgstr "(aceptado)" + +#: ../src/calendar_tools.c:226 +msgid "(declined)" +msgstr "(declinado)" + +#: ../src/calendar_tools.c:229 +msgid "(tenative)" +msgstr "(tentativo)" + +#: ../src/calendar_tools.c:232 +msgid "(delegated)" +msgstr "(delegado)" + +#: ../src/calendar_tools.c:235 +msgid "(completed)" +msgstr "(completado)" + +#: ../src/calendar_tools.c:238 +msgid "(in process)" +msgstr "(en proceso)" + +#: ../src/calendar_tools.c:241 +msgid "(none)" +msgstr "(ninguno)" + +#: ../src/calendar_view.c:17 +msgid "The calendar view is not available." +msgstr "La visualización del calendario no está disponible." + +#: ../src/calendar_view.c:24 +msgid "The tasks view is not available." +msgstr "La visualización de tareas no está disponible." + +#: ../src/calendar_view.c:435 +msgid "Week" +msgstr "Semana" + +#: ../src/calendar_view.c:437 +msgid "Hours" +msgstr "Horas" + +#: ../src/calendar_view.c:438 ../src/messages.c:2322 +msgid "Subject" +msgstr "Asunto" + +#: ../src/calendar_view.c:439 ../src/event.c:164 +msgid "Start" +msgstr "Comienzo" + +#: ../src/calendar_view.c:440 ../src/event.c:218 +msgid "End" +msgstr "Fin" + +#: ../src/calendar_view.c:930 +msgid "Name of task" +msgstr "Nombre de la tarea" + +#: ../src/calendar_view.c:932 +msgid "Date due" +msgstr "Fecha coclusión" + +#: ../src/event.c:76 ../src/paging.c:78 +msgid "Add or edit an event" +msgstr "Añadir o editar un evento" + +#: ../src/event.c:142 ../src/iconbar.c:123 ../src/iconbar.c:539 +msgid "Summary" +msgstr "Sumario" + +#: ../src/event.c:153 +msgid "Location" +msgstr "Localización" + +#: ../src/event.c:207 +msgid "All day event" +msgstr "Todos los eventos del día" + +#: ../src/event.c:246 ../src/iconbar.c:199 ../src/iconbar.c:586 +msgid "Notes" +msgstr "Notas" + +#: ../src/event.c:288 +msgid "Organizer" +msgstr "Organizador" + +#: ../src/event.c:293 +msgid "(you are the organizer)" +msgstr "(tu eres el organizador)" + +#: ../src/event.c:311 +msgid "Show time as:" +msgstr "Mostrar hora como:" + +#: ../src/event.c:333 +msgid "Free" +msgstr "Libre" + +#: ../src/event.c:340 +msgid "Busy" +msgstr "Ocupado" + +#: ../src/event.c:346 +msgid "Attendees" +msgstr "Attn." + +#: ../src/event.c:349 +msgid "(One per line)" +msgstr "(Uno por línea)" + +#: ../src/event.c:389 +msgid "Check attendee availability" +msgstr "Comprobar posibilidad de atender" + +#: ../src/floors.c:34 +msgid "Add/change/delete floors" +msgstr "Añadir/cambiar/borrar/niveles" + +#: ../src/floors.c:51 ../src/siteconfig.c:49 ../src/vcard_edit.c:78 +#: ../src/wiki.c:66 ../src/wiki.c:76 +msgid "Error" +msgstr "Error" + +#: ../src/floors.c:62 +msgid "Floor number" +msgstr "Número de nivel" + +#: ../src/floors.c:64 +msgid "Floor name" +msgstr "Nombre de nivel" + +#: ../src/floors.c:66 +msgid "Number of rooms" +msgstr "Número de salas" + +#: ../src/floors.c:68 +msgid "Floor CSS" +msgstr "Sala CSS" + +#: ../src/floors.c:81 +msgid "(delete floor)" +msgstr "(borrar sala)" + +#: ../src/floors.c:87 +msgid "(edit graphic)" +msgstr "(editar gráfico)" + +#: ../src/floors.c:100 +msgid "Change name" +msgstr "Cambiar nombre" + +#: ../src/floors.c:113 +msgid "Change CSS" +msgstr "Cambiar CSS" + +#: ../src/floors.c:125 +msgid "Create new floor" +msgstr "Crear nuevo nivel" + +#: ../src/floors.c:146 +#, c-format +msgid "Floor has been deleted." +msgstr "El nivel fue borrado." + +#: ../src/floors.c:169 +#, c-format +msgid "New floor has been created." +msgstr "Un nuevo nivel ha sido creado." + +#: ../src/graphics.c:27 +msgid "Image upload" +msgstr "Cargar imagen" + +#: ../src/graphics.c:45 +msgid "" +"You can upload any image directly from your computer, as long as it is in " +"GIF format (JPEG, PNG, etc. won't work)." +msgstr "" +"Puede cargar cualquier imagen de su ordenador directamente, siempre que esté" +"en formato GIF (JPEG, PNG, etc no funcionarán)." + +#: ../src/graphics.c:50 +msgid "Please select a file to upload:" +msgstr "Por favor, seleccione el fichero a cargar:" + +#: ../src/graphics.c:54 +msgid "Upload" +msgstr "Cargar" + +#: ../src/graphics.c:56 +msgid "Reset form" +msgstr "Resetear formulario" + +#: ../src/graphics.c:74 +msgid "Graphics upload has been cancelled." +msgstr "Carga de gafico cancelada." + +#: ../src/graphics.c:81 +msgid "You didn't upload a file." +msgstr "No subiste ningún fichero." + +#: ../src/html2html.c:109 +#, c-format +msgid "realloc() error! couldn't get %d bytes: %s" +msgstr "¡realloc() error! no se pudieron conseguir %d bytes: %s" + +#: ../src/iconbar.c:105 ../src/iconbar.c:391 +msgid "Find out more about Citadel" +msgstr "Saber más sobre Citadel" + +#: ../src/iconbar.c:106 ../src/iconbar.c:392 +msgid "CITADEL" +msgstr "CITADEL" + +#: ../src/iconbar.c:110 +msgid "switch to room list" +msgstr "cambiar a lista de salas" + +#: ../src/iconbar.c:116 ../src/iconbar.c:540 +msgid "Your summary page" +msgstr "Tu página sumario" + +#: ../src/iconbar.c:133 +msgid "Go to your email inbox" +msgstr "Ir a tu buzón de correo entrante" + +#: ../src/iconbar.c:140 +msgid "Mail" +msgstr "Correo" + +#: ../src/iconbar.c:158 +msgid "Go to your personal calendar" +msgstr "Ir a tu calendario personal" + +#: ../src/iconbar.c:165 ../src/iconbar.c:603 ../src/roomops.c:22 +msgid "Calendar" +msgstr "Calendario" + +#: ../src/iconbar.c:175 +msgid "Go to your personal address book" +msgstr "Ir a tu libreta personal de direcciones" + +#: ../src/iconbar.c:182 ../src/iconbar.c:570 +msgid "Contacts" +msgstr "Contactos" + +#: ../src/iconbar.c:192 +msgid "Go to your personal notes" +msgstr "Ir a tus notas personales" + +#: ../src/iconbar.c:209 +msgid "Go to your personal task list" +msgstr "Ir a tu lista de tareas personal" + +#: ../src/iconbar.c:216 ../src/iconbar.c:618 ../src/summary.c:109 +msgid "Tasks" +msgstr "Tareas" + +#: ../src/iconbar.c:224 +msgid "List all of your accessible rooms" +msgstr "Listar todas las salas accesibles" + +#: ../src/iconbar.c:231 ../src/iconbar.c:634 +msgid "Rooms" +msgstr "Salas" + +#: ../src/iconbar.c:240 +msgid "See who is online right now" +msgstr "Ver quien está online ahora mismo" + +#: ../src/iconbar.c:247 ../src/iconbar.c:650 +msgid "Who is online?" +msgstr "¿Quién está en línea?" + +#: ../src/iconbar.c:265 ../src/iconbar.c:666 +msgid "Chat" +msgstr "Chat" + +#: ../src/iconbar.c:275 +msgid "Advanced Options Menu: Advanced Room commands, Account Info, and Chat" +msgstr "Menú de opciones avanzadas: Comandos Avanzados para Salas, información de cuentas,y Chat" + +#: ../src/iconbar.c:282 +msgid "Advanced" +msgstr "Avanzado" + +#: ../src/iconbar.c:292 +msgid "Room and system administration functions" +msgstr "Funciones de administración de sala y sistema" + +#: ../src/iconbar.c:299 ../src/roomops.c:997 +msgid "Administration" +msgstr "Administración" + +#: ../src/iconbar.c:307 ../src/iconbar.c:316 ../src/iconbar.c:402 +#: ../src/iconbar.c:411 ../src/mainmenu.c:110 +msgid "Log off" +msgstr "Log off (desconectar)" + +#: ../src/iconbar.c:308 ../src/iconbar.c:403 +msgid "Log off now?" +msgstr "¿Desconectar ahora?" + +#: ../src/iconbar.c:326 +msgid "Customize this menu" +msgstr "Personalizar este menú" + +#: ../src/iconbar.c:327 +msgid "customize this menu" +msgstr "personalizar este menú" + +#: ../src/iconbar.c:396 +msgid "switch to menu" +msgstr "cambiar a menú" + +#: ../src/iconbar.c:481 +msgid "Customize the icon bar" +msgstr "Personalizar la barra de iconos" + +#: ../src/iconbar.c:493 +msgid "Display icons as:" +msgstr "Mostrar iconos como:" + +#: ../src/iconbar.c:499 +msgid "pictures and text" +msgstr "imágenes y texto" + +#: ../src/iconbar.c:500 +msgid "pictures only" +msgstr "sólo imágenes" + +#: ../src/iconbar.c:501 +msgid "text only" +msgstr "sólo texto" + +#: ../src/iconbar.c:506 +msgid "" +"Select the icons you would like to see displayed in the 'icon bar' menu on " +"the left side of the screen." +msgstr "" +"Seleccione los iconos que le gustaría mostrar en la 'icon bar' menú a la" +"izquierda de la pantalla" + +#: ../src/iconbar.c:524 +msgid "Site logo" +msgstr "Logotipo del sitio" + +#: ../src/iconbar.c:525 +msgid "An icon describing this site" +msgstr "Un icono descriptor de este sitio" + +#: ../src/iconbar.c:554 +msgid "Mail (inbox)" +msgstr "Correo (entrante)" + +#: ../src/iconbar.c:555 +msgid "A shortcut to your email Inbox" +msgstr "Atajo a su buzón de correo" + +#: ../src/iconbar.c:571 +msgid "Your personal address book" +msgstr "Su libreta de direcciones personal" + +#: ../src/iconbar.c:587 +msgid "Your personal notes" +msgstr "Sus notas personales" + +#: ../src/iconbar.c:604 +msgid "A shortcut to your personal calendar" +msgstr "Atajo a su calendario personal" + +#: ../src/iconbar.c:619 +msgid "A shortcut to your personal task list" +msgstr "Atajo a su lista personal de tareas" + +#: ../src/iconbar.c:635 +msgid "" +"Clicking this icon displays a list of all accessible rooms (or folders) " +"available." +msgstr "" +"Pulsando en este icono se mostrará una lista de todas las salas disponibles" +" (o carpetas)" +#: ../src/iconbar.c:651 +msgid "Clicking this icon displays a list of all users currently logged in." +msgstr "Pulsando en este icono se mostrará una lista de todos los usuarios actualmente conectados." + +#: ../src/iconbar.c:667 +msgid "" +"Clicking this icon enters real-time chat mode with other users in the same " +"room." +msgstr "" +"Pulsando en este icono se entra en el mmodo de chat a tiempor real con otros usuarios " +"en la misma sala" + +#: ../src/iconbar.c:684 +msgid "Advanced options" +msgstr "Opciones avanzadas" + +#: ../src/iconbar.c:685 +msgid "Access to the complete menu of Citadel functions." +msgstr "Acceso al menú completo de funciones de Citadel." + +#: ../src/iconbar.c:701 +msgid "Citadel logo" +msgstr "Logotipo de Citadel" + +#: ../src/iconbar.c:702 +msgid "Displays the 'Powered by Citadel' icon" +msgstr "Muestra el icono 'Powered by Citadel' " + +#: ../src/iconbar.c:711 ../src/netconf.c:146 ../src/roomops.c:1279 +#: ../src/roomops.c:1606 ../src/siteconfig.c:562 ../src/sysmsgs.c:57 +#: ../src/useredit.c:381 ../src/vcard_edit.c:335 +msgid "Save changes" +msgstr "Salvar cambios" + +#: ../src/iconbar.c:766 +msgid "" +"Your icon bar has been updated. Please select any of its choices to " +"continue." +msgstr "" +"Sy barra de iconos ha sido actualizada. Por favor selecciones alguno de sus opciones " +"para continuar." +#: ../src/inetconf.c:38 +msgid "localhost" +msgstr "localhost" + +#: ../src/inetconf.c:39 +msgid "directory" +msgstr "directorio" + +#: ../src/inetconf.c:40 +msgid "gatewaydomain" +msgstr "gatewaydomain" + +#: ../src/inetconf.c:41 +msgid "smarthost" +msgstr "smarthost" + +#: ../src/inetconf.c:42 +msgid "rbl" +msgstr "rbl" + +#: ../src/inetconf.c:43 +msgid "spamassassin" +msgstr "spamassassin" + +#: ../src/inetconf.c:45 +msgid "Local host aliases" +msgstr "Alias del host local" + +#: ../src/inetconf.c:46 +msgid "Directory domains" +msgstr "Dominios de directorios" + +#: ../src/inetconf.c:47 +msgid "Gateway domains" +msgstr "Dominios de puerta de enlace" + +#: ../src/inetconf.c:48 +msgid "Smart hosts" +msgstr "Smart hosts" + +#: ../src/inetconf.c:49 +msgid "RBL hosts" +msgstr "RBL hosts" + +#: ../src/inetconf.c:50 +msgid "SpamAssassin hosts" +msgstr "SpamAssasin hosts" + +#: ../src/inetconf.c:52 +msgid "(domains for which this host receives mail)" +msgstr "(dominios desde los cuales este host recibirá correo)" + +#: ../src/inetconf.c:53 +msgid "(domains mapped with the Global Address Book)" +msgstr "(dominios mapeados con la Libreta de Direcciones Global)" + +#: ../src/inetconf.c:54 +msgid "(domains whose subdomains match Citadel hosts)" +msgstr "(dominios cuyos subdominios se corresponden con con el host Citadel)" + +#: ../src/inetconf.c:55 +msgid "(if present, forward all outbound mail to one of these hosts)" +msgstr "(si está activo, reenviar todo el correo de salida a uno de estos hosts)" + +#: ../src/inetconf.c:56 +msgid "(hosts running a Realtime Blackhole List)" +msgstr "(host corriendo una lista Agujero Negro en tiempo real)" + +#: ../src/inetconf.c:57 +msgid "(hosts running the SpamAssassin service)" +msgstr "(host corriendo el servicio SpamAssassin)" + +#: ../src/inetconf.c:94 +msgid "Internet configuration" +msgstr "Configuración de internet" + +#: ../src/inetconf.c:121 +msgid "Delete this entry?" +msgstr "¿Borrar esta entrada?" + +#: ../src/inetconf.c:123 ../src/netconf.c:209 +msgid "(Delete)" +msgstr "(Borrar)" + +#: ../src/inetconf.c:173 +#, c-format +msgid "%s has been deleted." +msgstr "%s ha sido borrado" + +#: ../src/listsub.c:44 +msgid "List subscription" +msgstr "Lista subscripción" + +#: ../src/listsub.c:56 +msgid "List subscribe/unsubscribe" +msgstr "Listar suscribir/cancelar subscripción" + +#: ../src/listsub.c:76 +msgid "Confirmation request sent" +msgstr "Enviada solicitud de confirmación" + +#: ../src/listsub.c:78 +#, c-format +msgid "" +"You are subscribing %s to the %s mailing list. The " +"listserver has sent you an e-mail with one additional Web link for you to " +"click on to confirm your subscription. This extra step is for your " +"protection, as it prevents others from being able to subscribe you to lists " +"without your consent.

    Please click on the link which is being e-" +"mailed to you and your subscription will be confirmed.
    \n" +msgstr "" +"Te estás suscribiendo a %s en la %s lista de correo. El " +"servidor de la lista te ha enviado un email con un link web " +" y debe pulsarlo par confirmar su suscripción. Esta medida se toma " +"por su seguridad, de forma que se impida a otros suscribirle " +"sin su consentimiento.

    Por favor, pulse en el link que se le ha enviado" +"y su suscripción será activada.
    \n" + +#: ../src/listsub.c:91 +msgid "Go back..." +msgstr "Ir atrás" + +#: ../src/mainmenu.c:23 +msgid "Basic commands" +msgstr "Comandos básicos" + +#: ../src/mainmenu.c:32 +msgid "List known rooms" +msgstr "Listar salas conocidas" + +#: ../src/mainmenu.c:34 +msgid "Where can I go from here?" +msgstr "¿A dónde se puede ir desde aquí?" + +#: ../src/mainmenu.c:39 ../src/roomops.c:646 +msgid "Goto next room" +msgstr "Ir a la siguiente sala" + +#: ../src/mainmenu.c:42 +msgid "...with unread messages" +msgstr "...con mensajes no leídos" + +#: ../src/mainmenu.c:47 +msgid "Skip to next room" +msgstr "Saltar a la siguiente sala" + +#: ../src/mainmenu.c:50 +msgid "(come back here later)" +msgstr "(volver aquí después)" + +#: ../src/mainmenu.c:57 ../src/roomops.c:450 +msgid "Ungoto" +msgstr "Atrás" + +#: ../src/mainmenu.c:60 +#, c-format +msgid "(oops! Back to %s)" +msgstr "(¡oh! Vuelta a %s)" + +#: ../src/mainmenu.c:68 ../src/roomops.c:459 +msgid "Read new messages" +msgstr "Leer mensajes nuevos" + +#: ../src/mainmenu.c:71 +msgid "...in this room" +msgstr "... en esta sala" + +#: ../src/mainmenu.c:76 ../src/roomops.c:559 +msgid "Read all messages" +msgstr "Leer todos los mensajes" + +#: ../src/mainmenu.c:79 +msgid "...old and new" +msgstr "...viejos y nuevos" + +#: ../src/mainmenu.c:84 ../src/roomops.c:621 +msgid "Enter a message" +msgstr "Redactar mensaje" + +#: ../src/mainmenu.c:87 +msgid "(post in this room)" +msgstr "(postear a esta sala)" + +#: ../src/mainmenu.c:94 +msgid "Summary page" +msgstr "Página sumario" + +#: ../src/mainmenu.c:97 +msgid "Summary of my account" +msgstr "Sumario de mi cuenta" + +#: ../src/mainmenu.c:102 +msgid "User list" +msgstr "Lista de usuarios" + +#: ../src/mainmenu.c:105 +msgid "(all registered users)" +msgstr "(todos los usuarios registrados)" + +#: ../src/mainmenu.c:113 +msgid "Bye!" +msgstr "¡Adiós!" + +#: ../src/mainmenu.c:122 +msgid "Your info" +msgstr "Su información" + +#: ../src/mainmenu.c:127 +msgid "Change your preferences and settings" +msgstr "Cambiar sus preferencias y configuración" + +#: ../src/mainmenu.c:132 +msgid "Update your contact information" +msgstr "Actualizar su información de contacto" + +#: ../src/mainmenu.c:142 +msgid "Enter your 'bio'" +msgstr "Introducir 'bio' (biografía)" + +#: ../src/mainmenu.c:147 +msgid "Edit your online photo" +msgstr "Editar su foto en línea" + +#: ../src/mainmenu.c:154 +msgid "Advanced room commands" +msgstr "Comandos avanzados de sala" + +#: ../src/mainmenu.c:160 +msgid "Edit or delete this room" +msgstr "Editar o borrar esta sala" + +#: ../src/mainmenu.c:166 +msgid "Go to a 'hidden' room" +msgstr "Ir a una sala 'hidden' (oculta)" + +#: ../src/mainmenu.c:171 ../src/roomops.c:1937 +msgid "Create a new room" +msgstr "Crear nueva sala" + +#: ../src/mainmenu.c:176 +#, c-format +msgid "Zap (forget) this room (%s)" +msgstr "Zap (olvidar) esta sala (%s)" + +#: ../src/mainmenu.c:181 +msgid "List all forgotten rooms" +msgstr "Listar todas las salas olvidadas" + +#: ../src/mainmenu.c:200 +msgid "System Administration Menu" +msgstr "Menú de Administración de Sistema" + +#: ../src/mainmenu.c:209 +msgid "Global Configuration" +msgstr "Configuración Global" + +#: ../src/mainmenu.c:214 +msgid "Edit site-wide configuration" +msgstr "Editar configuración general del sitio" + +#: ../src/mainmenu.c:219 +msgid "Domain names and Internet mail configuration" +msgstr "Dominios y configuración de correo de internet" + +#: ../src/mainmenu.c:224 +msgid "Configure replication with other Citadel servers" +msgstr "Configurar replicación con otros servidores Citadel" + +#: ../src/mainmenu.c:231 +msgid "User account management" +msgstr "Gestión de cuentas de usuario" + +#: ../src/mainmenu.c:236 +msgid "Add, change, delete user accounts" +msgstr "Añadir, cambiar, borrar cuentas de usuarios" + +#: ../src/mainmenu.c:246 +msgid "Rooms and Floors" +msgstr "Salas y Niveles" + +#: ../src/mainmenu.c:251 +msgid "Add, change, or delete floors" +msgstr "Añadir, cambiar o borrar niveles" + +#: ../src/mainmenu.c:273 +msgid "Enter a server command" +msgstr "Introducir comando de servidor" + +#: ../src/mainmenu.c:282 +msgid "" +"This screen allows you to enter Citadel server commands which are not " +"supported by WebCit. If you do not know what that means, then this screen " +"will not be of much use to you." +msgstr "" +"Esta pantalla te permite introducir comandos del servidor Citadel que " +"no están soportados por WebCit. Si no sabes que quiere decir eso, esta pantalla " +"no te será de mucha utilidad. " + +#: ../src/mainmenu.c:289 +msgid "Enter command:" +msgstr "Introducir comando" + +#: ../src/mainmenu.c:292 +msgid "Command input (if requesting SEND_LISTING transfer mode):" +msgstr "Introducción de comando (si se pidiera SEND_LISTING transfer mode):" + +#: ../src/mainmenu.c:296 +#, c-format +msgid "Detected host header is %s://%s" +msgstr "La cabecera detectada del host es %s://%s" + +#: ../src/mainmenu.c:298 +msgid "Send command" +msgstr "Enviar comando" + +#: ../src/mainmenu.c:327 +msgid "Server command results" +msgstr "Resultado de los comandos de servidor" + +#: ../src/messages.c:491 +msgid " (work)" +msgstr " (trabajo)" + +#: ../src/messages.c:493 +msgid " (home)" +msgstr " (casa)" + +#: ../src/messages.c:495 +msgid " (cell)" +msgstr " (celular)" + +#: ../src/messages.c:506 ../src/vcard_edit.c:252 +msgid "Address:" +msgstr "Dirección:" + +#: ../src/messages.c:566 +msgid "Telephone:" +msgstr "Teléfono" + +#: ../src/messages.c:571 +msgid "E-mail:" +msgstr "E-mail" + +#: ../src/messages.c:679 ../src/messages.c:1276 +msgid "ERROR:" +msgstr "ERROR" + +#: ../src/messages.c:702 ../src/messages.c:979 ../src/messages.c:1285 +#: ../src/messages.c:1388 +msgid "unexpected end of message" +msgstr "finalización inesperada de mensaje" + +#: ../src/messages.c:715 ../src/messages.c:1297 +msgid "from " +msgstr "de" + +#: ../src/messages.c:743 ../src/messages.c:1313 +msgid "in " +msgstr "en" + +#: ../src/messages.c:764 ../src/messages.c:1334 +msgid "to " +msgstr "a" + +#: ../src/messages.c:817 +msgid "View" +msgstr "Ver" + +#: ../src/messages.c:819 +msgid "Download" +msgstr "Descargar" + +#: ../src/messages.c:866 ../src/messages.c:2899 +msgid "CC:" +msgstr "CC:" + +#: ../src/messages.c:874 ../src/messages.c:1370 +msgid "Subject:" +msgstr "Asunto:" + +#: ../src/messages.c:898 ../src/rss.c:28 +msgid "Reply" +msgstr "Responder" + +#: ../src/messages.c:913 +msgid "ReplyQuoted" +msgstr "Respuesta entrecomillada" + +#: ../src/messages.c:930 +msgid "ReplyAll" +msgstr "Responder Todos" + +#: ../src/messages.c:938 +msgid "Forward" +msgstr "Reenviar" + +#: ../src/messages.c:945 ../src/messages.c:3149 +msgid "Move" +msgstr "Mover" + +#: ../src/messages.c:950 +msgid "Delete this message?" +msgstr "¿Borrar este mensaje?" + +#: ../src/messages.c:956 +msgid "Headers" +msgstr "Cabeceras" + +#: ../src/messages.c:961 +msgid "Print" +msgstr "Imprimir" + +#: ../src/messages.c:1072 +#, c-format +msgid "I don't know how to display %s" +msgstr "No se como mostrar %s" + +#: ../src/messages.c:1107 ../src/messages.c:1634 +msgid "edit" +msgstr "editar" + +#: ../src/messages.c:1597 ../src/messages.c:1905 +msgid "(no subject)" +msgstr "(sin asunto)" + +#: ../src/messages.c:1725 +msgid "(no name)" +msgstr "(sin nombre)" + +#: ../src/messages.c:1777 +msgid "This address book is empty." +msgstr "Esta libreta de direcciones está vacía." + +#: ../src/messages.c:2202 +msgid "No new messages." +msgstr "No hay mensajes nuevos." + +#: ../src/messages.c:2204 +msgid "No old messages." +msgstr "No hay mensajes antiguos" + +#: ../src/messages.c:2206 +msgid "No messages here." +msgstr "No hay mensajes aquí" + +#: ../src/messages.c:2324 +msgid "Sender" +msgstr "Remitente" + +#: ../src/messages.c:2326 +msgid "Date" +msgstr "Fecha" + +#: ../src/messages.c:2341 +msgid "Click on any note to edit it." +msgstr "Pulse en cualquier nota para editarla" + +#: ../src/messages.c:2444 +msgid "Reading #" +msgstr "Leyendo #" + +#: ../src/messages.c:2497 +#, c-format +msgid "of %d messages." +msgstr "de %d mensajes." + +#: ../src/messages.c:2682 +#, c-format +msgid "Cancelled. Message was not posted." +msgstr "Cancelado. El mensaje no ha sido enviado." + +#: ../src/messages.c:2688 +#, c-format +msgid "Automatically cancelled because you have already saved this message." +msgstr "Cancelado automáticamente porque ya habías salvado este mensaje." + +#: ../src/messages.c:2708 +#, c-format +msgid "Message has been sent.\n" +msgstr "El mensaje ha sido enviado.\n" + +#: ../src/messages.c:2711 +#, c-format +msgid "Message has been posted.\n" +msgstr "El mensaje ha sido enviado.\n" + +#: ../src/messages.c:2845 +msgid " from " +msgstr " de " + +#: ../src/messages.c:2855 +msgid " in " +msgstr " en " + +#: ../src/messages.c:2888 +msgid "To:" +msgstr "A" + +#: ../src/messages.c:2910 +msgid "BCC:" +msgstr "BCC" + +#: ../src/messages.c:2928 +msgid "Subject (optional):" +msgstr "Asunto" + +#: ../src/messages.c:2937 ../src/messages.c:3058 ../src/paging.c:57 +msgid "Send message" +msgstr "Enviar mensaje" + +#: ../src/messages.c:2939 ../src/messages.c:3060 +msgid "Post message" +msgstr "Postear mensaje" + +#: ../src/messages.c:2955 +msgid "--- forwarded message ---" +msgstr "--- mensaje reenviado ---" + +#: ../src/messages.c:3035 +msgid "Attachments:" +msgstr "Adjuntos" + +#: ../src/messages.c:3050 +msgid "Attach file:" +msgstr "Adjuntar fichero" + +#: ../src/messages.c:3053 ../src/roomops.c:1472 ../src/roomops.c:1502 +msgid "Add" +msgstr "Añadir" + +#: ../src/messages.c:3122 +msgid "Confirm move of message" +msgstr "Confirme mover mensaje" + +#: ../src/messages.c:3129 +msgid "Move this message to:" +msgstr "Mover este mensaje a:" + +#: ../src/messages.c:3175 +#, c-format +msgid "The message was not moved." +msgstr "No se movió el mensaje." + +#: ../src/netconf.c:68 ../src/netconf.c:183 +msgid "Add a new node" +msgstr "Añadir un nuevo nodo" + +#: ../src/netconf.c:75 ../src/netconf.c:129 ../src/siteconfig.c:112 +#, c-format +msgid "Node name" +msgstr "Nombre de nodo" + +#: ../src/netconf.c:77 ../src/netconf.c:133 +msgid "Shared secret" +msgstr "Secreto compartido" + +#: ../src/netconf.c:79 ../src/netconf.c:137 +msgid "Host or IP address" +msgstr "Host o dirección IP" + +#: ../src/netconf.c:81 ../src/netconf.c:141 +msgid "Port number" +msgstr "Puerto número" + +#: ../src/netconf.c:84 +msgid "Add node" +msgstr "Añadir nodo" + +#: ../src/netconf.c:110 +msgid "Edit node configuration for " +msgstr "Editar configuración de nodo para" + +#: ../src/netconf.c:176 +msgid "Network configuration" +msgstr "Configuración de Red" + +#: ../src/netconf.c:189 +msgid "Currently configured nodes" +msgstr "Nodos actualmente configurados" + +#: ../src/netconf.c:204 +msgid "(Edit)" +msgstr "(Editar)" + +#: ../src/netconf.c:229 +msgid "Confirm delete" +msgstr "Confirmar borrar" + +#: ../src/netconf.c:236 +msgid "Are you sure you want to delete " +msgstr "¿Estás seguro de querer borrar?" + +#: ../src/netconf.c:243 +msgid "Yes" +msgstr "Si" + +#: ../src/netconf.c:246 +msgid "No" +msgstr "No" + +#: ../src/netconf.c:309 +msgid "Back to menu" +msgstr "Volver al menú" + +#: ../src/notes.c:126 +msgid "An error has occurred." +msgstr "Se produjo un error" + +#: ../src/paging.c:24 +msgid "Send instant message" +msgstr "Enviar mensaje instantáneo" + +#: ../src/paging.c:33 +msgid "Send an instant message to: " +msgstr "Enviar un mensaje instantáneo a: " + +#: ../src/paging.c:49 +msgid "Enter message text:" +msgstr "Introducir texto de mensaje: " + +#: ../src/paging.c:89 +msgid "Message was not sent." +msgstr "El mensaje no se envió." + +#: ../src/paging.c:99 +msgid "Message has been sent to " +msgstr "El mensaje ha sido enviado a " + +#: ../src/paging.c:110 +msgid "[ close window ]" +msgstr "[ cerrar ventana ]" + +#: ../src/paging.c:170 +msgid "" +"You have one or more instant messages waiting, but the Citadel Instant " +"Messenger window failed to open. This is probably because you have a popup " +"blocker installed. Please configure your popup blocker to allow popups from " +"this site if you wish to receive instant messages." +msgstr "" +"Tienes uno o más mensajes instantáneos esperando, pero la ventana" +"de mensajería instantánea no se pudo abrir. Esto ha sido causado probablemente " +"porque tienes instalado un bloqueo de popups, configure su herramienta para" +"permitir poups de este sitio si quiere recibir mensajería instantánea." + +#: ../src/paging.c:309 ../src/paging.c:471 +msgid "An error occurred while setting up the chat socket." +msgstr "Se produjo un error al intentar activar la conexión de chat. " + +#: ../src/paging.c:336 +msgid "Now exiting chat mode." +msgstr "Saliendo de modo chat." + +#: ../src/paging.c:507 +msgid "Send" +msgstr "Enviar" + +#: ../src/paging.c:508 +msgid "Help" +msgstr "Ayuda" + +#: ../src/paging.c:509 +msgid "List users" +msgstr "Listar usuarios" + +#: ../src/preferences.c:205 +msgid "Preferences and settings" +msgstr "Preferencias y configuración" + +#: ../src/preferences.c:226 +msgid "Room list view" +msgstr "Ver listado de salas" + +#: ../src/preferences.c:232 +msgid "Tree (folders) view" +msgstr "Ver (carpetas) en árbol" + +#: ../src/preferences.c:238 +msgid "Table (rooms) view" +msgstr "Ver (salas) en tabla" + +#: ../src/preferences.c:249 +msgid "Calendar hour format" +msgstr "Formato horario del calendario" + +#: ../src/preferences.c:255 +msgid "12 hour (am/pm)" +msgstr "12 horas (am/pm)" + +#: ../src/preferences.c:261 +msgid "24 hour" +msgstr "24 horas" + +#: ../src/preferences.c:272 +msgid "Calendar day view begins at:" +msgstr "La visualización del calendario comienza por el dia:" + +#: ../src/preferences.c:301 +msgid "Calendar day view ends at:" +msgstr "Los dias mostrados del calendario finalizan en:" + +#: ../src/preferences.c:330 +msgid "Attach signature to email messages?" +msgstr "¿Añadir firma a el correo electrónico?" + +#: ../src/preferences.c:348 +msgid "No signature" +msgstr "Sin firma" + +#: ../src/preferences.c:354 +msgid "Use this signature:" +msgstr "Usar esta firma:" + +#: ../src/preferences.c:378 +msgid "Default character set for email headers:" +msgstr "Juego de caracteres por defecto para cabeceras de correo:" + +#: ../src/preferences.c:388 +msgid "Change" +msgstr "Cambiar" + +#: ../src/preferences.c:407 +msgid "Cancelled. No settings were changed." +msgstr "Cancelado. No se cambió la configuración." + +#: ../src/roomops.c:19 +msgid "Bulletin Board" +msgstr "Tablón de anuncios" + +#: ../src/roomops.c:20 +msgid "Mail Folder" +msgstr "Carpeta de Correo" + +#: ../src/roomops.c:21 +msgid "Address Book" +msgstr "Libreta de Direcciones" + +#: ../src/roomops.c:23 +msgid "Task List" +msgstr "Lista de Tareas" + +#: ../src/roomops.c:24 +msgid "Notes List" +msgstr "Lista de Notas" + +#: ../src/roomops.c:25 +msgid "Wiki" +msgstr "Wiki" + +#: ../src/roomops.c:26 +msgid "Calendar List" +msgstr "Lista de Calendario" + +#: ../src/roomops.c:258 +msgid "Zapped (forgotten) rooms" +msgstr "Salas Zapped (olvidadas)" + +#: ../src/roomops.c:264 +msgid "Click on any room to un-zap it and goto that room.\n" +msgstr "Pulse en cualqueir sala para recordarla y entrar en ella.\n" + +#: ../src/roomops.c:358 +msgid "View as:" +msgstr "Ver como:" + +#: ../src/roomops.c:429 +#, c-format +msgid "%d new of %d messages" +msgstr "%d nuevo de %d mensajes" + +#: ../src/roomops.c:473 +msgid "View contacts" +msgstr "Ver contactos" + +#: ../src/roomops.c:484 +msgid "Day view" +msgstr "Visualización de día" + +#: ../src/roomops.c:493 +msgid "Month view" +msgstr "VIsualización mensual" + +#: ../src/roomops.c:504 +msgid "Calendar list" +msgstr "Lista de calendario" + +#: ../src/roomops.c:515 +msgid "View tasks" +msgstr "Ver tareas" + +#: ../src/roomops.c:526 +msgid "View notes" +msgstr "Ver notas" + +#: ../src/roomops.c:537 +msgid "View message list" +msgstr "Ver lista de mensajes" + +#: ../src/roomops.c:548 +msgid "Wiki home" +msgstr "Wiki home" + +#: ../src/roomops.c:573 +msgid "Add new contact" +msgstr "Añadir nuevo contacto" + +#: ../src/roomops.c:583 +msgid "Add new event" +msgstr "Añadir nuevo evento" + +#: ../src/roomops.c:592 +msgid "Add new task" +msgstr "Añadir nueva tarea" + +#: ../src/roomops.c:601 +msgid "Add new note" +msgstr "Añadir nueva nota" + +#: ../src/roomops.c:612 +msgid "Edit this page" +msgstr "Editar esta página" + +#: ../src/roomops.c:634 +msgid "" +"Leave all messages marked as unread, go to next room with unread messages" +msgstr "" +"Dejar todos los mensajes marcados como no leídos, yr a la siguiente sala con mensajes no leídos" + +#: ../src/roomops.c:635 +msgid "Skip this room" +msgstr "Saltarse esta sala" + +#: ../src/roomops.c:645 +msgid "Mark all messages as read, go to next room with unread messages" +msgstr "Marcar todso los mensajes como leídos, ir a la siguiente sala con mensajes por leer" + +#: ../src/roomops.c:1013 +msgid "Configuration" +msgstr "Configuración" + +#: ../src/roomops.c:1029 +msgid "Message expire policy" +msgstr "Política de expiración de mensajes" + +#: ../src/roomops.c:1045 +msgid "Access controls" +msgstr "Controles de acceso" + +#: ../src/roomops.c:1061 +msgid "Sharing" +msgstr "Compartir" + +#: ../src/roomops.c:1077 +msgid "Mailing list service" +msgstr "Servicio de lista de correo" + +#: ../src/roomops.c:1099 +msgid "Are you sure you want to delete this room?" +msgstr "¿Esta seguro de querer borrar esta sala?" + +#: ../src/roomops.c:1101 +msgid "Delete this room" +msgstr "Borrar esta sala" + +#: ../src/roomops.c:1104 +msgid "Set or change the icon for this room's banner" +msgstr "Determinar o cambiar el icono para el baner de esta sala" + +#: ../src/roomops.c:1107 +msgid "Edit this room's Info file" +msgstr "Editar el fichero informativo de esta sala" + +#: ../src/roomops.c:1116 ../src/roomops.c:1949 +msgid "Name of room: " +msgstr "Nombre de la sala: " + +#: ../src/roomops.c:1123 ../src/roomops.c:1953 +msgid "Resides on floor: " +msgstr "Nivel al que pertenece: " + +#: ../src/roomops.c:1137 ../src/roomops.c:1995 +msgid "Type of room:" +msgstr "Tipo de sala:" + +#: ../src/roomops.c:1144 +msgid "Public room" +msgstr "Sala pública" + +#: ../src/roomops.c:1152 +msgid "Private - guess name" +msgstr "Privada - invitación nominativa" + +#: ../src/roomops.c:1159 +msgid "Private - require password:" +msgstr "Privada - requiere contraseña:" + +#: ../src/roomops.c:1169 ../src/roomops.c:2026 +msgid "Private - invitation only" +msgstr "Privada - sólo mediante invitación" + +#: ../src/roomops.c:1173 +msgid "If private, cause current users to forget room" +msgstr "Si privada, hacer que los usuarios actuales olviden la sala" + +#: ../src/roomops.c:1181 +msgid "Preferred users only" +msgstr "Usuarios preferentes solamente" + +#: ../src/roomops.c:1187 +msgid "Read-only room" +msgstr "Sala de sólo lectura" + +#: ../src/roomops.c:1194 +msgid "File directory room" +msgstr "Sala directorio de ficheros" + +#: ../src/roomops.c:1197 +msgid "Directory name: " +msgstr "Nombre de directorio" + +#: ../src/roomops.c:1205 +msgid "Uploading allowed" +msgstr "Subidas permitidas" + +#: ../src/roomops.c:1211 +msgid "Downloading allowed" +msgstr "Bajadas permitidas" + +#: ../src/roomops.c:1217 +msgid "Visible directory" +msgstr "Directorio visible" + +#: ../src/roomops.c:1226 +msgid "Network shared room" +msgstr "Sala de intercambio en red" + +#: ../src/roomops.c:1232 +msgid "Permanent (does not auto-purge)" +msgstr "Permanente (sin purga automática)" + +#: ../src/roomops.c:1237 +msgid "Anonymous messages" +msgstr "Mensajes anónimos" + +#: ../src/roomops.c:1245 +msgid "No anonymous messages" +msgstr "Sin mensajes anónimos" + +#: ../src/roomops.c:1251 +msgid "All messages are anonymous" +msgstr "Todos los mensajes anónimos" + +#: ../src/roomops.c:1257 +msgid "Prompt user when entering messages" +msgstr "Preguntar al usuario cuando esté introduciendo mensajes" + +#: ../src/roomops.c:1263 +msgid "Room aide: " +msgstr "Administrador de la sala" + +#: ../src/roomops.c:1335 +msgid "Shared with" +msgstr "Compartido con" + +#: ../src/roomops.c:1338 +msgid "Not shared with" +msgstr "No compartido con" + +#: ../src/roomops.c:1343 ../src/roomops.c:1388 +msgid "Remote node name" +msgstr "Nombre del nodo remoto" + +#: ../src/roomops.c:1345 ../src/roomops.c:1390 +msgid "Remote room name" +msgstr "Nombre de la sala remota" + +#: ../src/roomops.c:1347 ../src/roomops.c:1392 +msgid "Actions" +msgstr "Acciones" + +#: ../src/roomops.c:1380 +msgid "Unshare" +msgstr "Dejar de compartir" + +#: ../src/roomops.c:1417 +msgid "Share" +msgstr "Compartir" + +#: ../src/roomops.c:1425 +msgid "Notes:" +msgstr "Notas:" + +#: ../src/roomops.c:1426 +msgid "" +"When sharing a room, it must be shared from both ends. Adding a node to the " +"'shared' list sends messages out, but in order to receive messages, the " +"other nodes must be configured to send messages out to your system as well. " +"
  • If the remote room name is blank, it is assumed that the room name is " +"identical on the remote node.
  • If the remote room name is different, the " +"remote node must also configure the name of the room here.
    \n" +msgstr "" +"Las sals compartidas deben compartirse desde los dos lados. Añadiendo un nodo a la " +"lista 'shared' (compartida) se envían mensajes afuera, pero para recibir, los " +"otros nodos tienen que estar configurados para enviar mensajes a su tu sistema también. " +"
  • Si el nombre de la sala remota está vacío, se asume que su nombre es idéntico " +"en el nodo remoto.
  • Si el nombre de la sala remota es diferente, el " +"nodo remoto debe configurar el nombre de la sala también aquí.
    \n" + +#: ../src/roomops.c:1447 +msgid "" +"The contents of this room are being mailed as individual messages " +"to the following list recipients:

    \n" +msgstr "" +"El contenido de esta sala está siendo enviado por correo como mensajes individuales " +"a los siguientes receptores:

    \n" + +#: ../src/roomops.c:1464 ../src/roomops.c:1494 +msgid "(remove)" +msgstr "(remover)" + +#: ../src/roomops.c:1477 +msgid "" +"The contents of this room are being mailed in digest form to the " +"following list recipients:

    \n" +msgstr "" +"El contenido de esta sala se envia por correo compilado en boletines diarios a " +"los siguientes receptores:

    \n" + +#: ../src/roomops.c:1508 +msgid "" +"This room is configured to allow self-service subscribe/unsubscribe requests." +msgstr "" +"Esta sala está configurada para permitir autoservicio en los porcesos de suscripción/cancelación." + +#: ../src/roomops.c:1511 +msgid "Click to disable." +msgstr "Pulse para desactivar" + +#: ../src/roomops.c:1513 +msgid "The URL for subscribe/unsubscribe is: " +msgstr "La URL para suscribirse/cancelar suscripción es:" + +#: ../src/roomops.c:1519 +msgid "" +"This room is not configured to allow self-service subscribe/" +"unsubscribe requests." +msgstr "" +"Esta sala noestá configurada para permitir autoservicio en cuanto peticiones de" +"suscripción/cancelación." + +#: ../src/roomops.c:1523 +msgid "Click to enable." +msgstr "Pulse para activar." + +#: ../src/roomops.c:1552 +msgid "Message expire policy for this room" +msgstr "Política de expiración de mensajes para esta sala" + +#: ../src/roomops.c:1558 +msgid "Use the default policy for this floor" +msgstr "Use la política por defecto para esta sala" + +#: ../src/roomops.c:1562 ../src/roomops.c:1589 ../src/siteconfig.c:501 +#: ../src/siteconfig.c:526 +#, c-format +msgid "Never automatically expire messages" +msgstr "Nunca producir expiración automática de mensajes" + +#: ../src/roomops.c:1566 ../src/roomops.c:1593 ../src/siteconfig.c:505 +#: ../src/siteconfig.c:530 +#, c-format +msgid "Expire by message count" +msgstr "Expirar según cuenta de mensajes" + +#: ../src/roomops.c:1570 ../src/roomops.c:1597 ../src/siteconfig.c:509 +#: ../src/siteconfig.c:534 +#, c-format +msgid "Expire by message age" +msgstr "Expirar según la edad del mensaje" + +#: ../src/roomops.c:1572 ../src/roomops.c:1599 ../src/siteconfig.c:511 +#: ../src/siteconfig.c:536 +#, c-format +msgid "Number of messages or days: " +msgstr "Número de mensajes o días" + +#: ../src/roomops.c:1579 +msgid "Message expire policy for this floor" +msgstr "Política de expiración de mensajes para este nivel" + +#: ../src/roomops.c:1585 +msgid "Use the system default" +msgstr "Usar las configuraciones por defecto" + +#: ../src/roomops.c:1660 ../src/roomops.c:3032 +msgid "Cancelled. Changes were not saved." +msgstr "Cancelado. Los cambios no se salvaron" + +#: ../src/roomops.c:1799 +msgid "Your changes have been saved." +msgstr "Los cambios han sido salvados" + +#: ../src/roomops.c:1831 +#, c-format +msgid "User %s kicked out of room %s.\n" +msgstr "Usuario %s expulado de la sala %s.\n" + +#: ../src/roomops.c:1845 +#, c-format +msgid "User %s invited to room %s.\n" +msgstr "Usuario %s invitado a la sala %s.\n" + +#: ../src/roomops.c:1873 +msgid "" +"The users listed below have access to this room. To remove a user from the " +"access list, select the user name from the list and click 'Kick'." +msgstr "" +"Los usuarios listados abajo tiene acceso a esta sala. Para borrar un usuario " +"seleccione el usuario de la lista de acceso y pulse 'Kick'." + +#: ../src/roomops.c:1893 +msgid "Kick" +msgstr "Kick" + +#: ../src/roomops.c:1897 +msgid "" +"To grant another user access to this room, enter the user name in the box " +"below and click 'Invite'." +msgstr "" +"Para garantizar el acceso de un usuario a la sala, introduzca su nombre ne la caja " +"de abajo y pulse 'Invitar'." + +#: ../src/roomops.c:1903 +msgid "Invite:" +msgstr "Invitar" + +#: ../src/roomops.c:1908 +msgid "Invite" +msgstr "Invitar" + +#: ../src/roomops.c:1972 +msgid "Default view for room: " +msgstr "Vista por defecto para esta sala" + +#: ../src/roomops.c:2004 +msgid "Public (automatically appears to everyone)" +msgstr "Pública (automáticamente aparece visible a todos)" + +#: ../src/roomops.c:2011 +msgid "Private - hidden (accessible to anyone who knows its name)" +msgstr "Privada - oculta (accesible solo a quienes conocen su nombre)" + +#: ../src/roomops.c:2018 +msgid "Private - require password: " +msgstr "Privada - se requiere contraseña:" + +#: ../src/roomops.c:2034 +msgid "Personal (mailbox for you only)" +msgstr "Personal (buzón de correo para tí solo)" + +#: ../src/roomops.c:2039 +msgid "Create new room" +msgstr "Crear nueva sala" + +#: ../src/roomops.c:2107 +msgid "Cancelled. No new room was created." +msgstr "Cancelado. Ninguna sala nueva se creó." + +#: ../src/roomops.c:2150 +msgid "Go to a hidden room" +msgstr "Ir a una sala oculta" + +#: ../src/roomops.c:2161 +msgid "" +"If you know the name of a hidden (guess-name) or passworded room, you can " +"enter that room by typing its name below. Once you gain access to a private " +"room, it will appear in your regular room listings so you don't have to keep " +"returning here." +msgstr "" +"Si conoces el nombre de una sala oculta (nombre de invitación) o protegida con contraseña, puedes" +"entrar en la sala escribiendo el nombre abajo. Una vez que hayas ganado acceso a una sala" +"privada, aparecerá regularmente en tu lista de salas disponibles, por lo que no tendrás que " +"repetir este proceso. " + +#: ../src/roomops.c:2173 +msgid "Enter room name:" +msgstr "Intoduzca el nombre de sala:" + +#: ../src/roomops.c:2180 +msgid "Enter room password:" +msgstr "Introduzaca la contraseña de sala:" + +#: ../src/roomops.c:2189 +msgid "Go there" +msgstr "Ir allí" + +#: ../src/roomops.c:2242 +msgid "Zap (forget/unsubscribe) the current room" +msgstr "Zap (olvidar/cancela suscripción) a la sala actual" + +#: ../src/roomops.c:2247 +#, c-format +msgid "" +"If you select this option, %s will disappear from your room list. " +"Is this what you wish to do?
    \n" +msgstr "" +"Si selecciona esta opción, %s desaparecerá de su lista de salas. " +"¿Es eso lo que desea?
    \n" + +#: ../src/roomops.c:2252 +msgid "Zap this room" +msgstr "Zap a esta sala" + +#: ../src/roomops.c:2982 ../src/roomops.c:2988 +msgid "Room list" +msgstr "Lista de Salas" + +#: ../src/roomops.c:2985 +msgid "Folder list" +msgstr "Lista de carpetas" + +#: ../src/rss.c:34 +msgid "Email" +msgstr "Email" + +#: ../src/rss.c:73 +msgid "Not logged in" +msgstr "No conectado ahora" + +#: ../src/rss.c:92 +msgid "Error retrieving RSS feed: couldn't find messages\n" +msgstr "Error de respuesta RSS: no se pudieron encontrar mensajes\n" + +#: ../src/siteconfig.c:38 +msgid "Site configuration" +msgstr "Configuración del sitio" + +#: ../src/siteconfig.c:61 +msgid "General" +msgstr "General" + +#: ../src/siteconfig.c:62 +msgid "Access" +msgstr "Acceso" + +#: ../src/siteconfig.c:63 +msgid "Network" +msgstr "Red" + +#: ../src/siteconfig.c:64 +msgid "Tuning" +msgstr "Afinar" + +#: ../src/siteconfig.c:65 +msgid "Directory" +msgstr "Directorio" + +#: ../src/siteconfig.c:66 +msgid "Auto-purger" +msgstr "Autopurgar" + +#: ../src/siteconfig.c:67 +msgid "Indexing/Journaling" +msgstr "Indexar/Journaling" + +#: ../src/siteconfig.c:71 +msgid "General site configuration items" +msgstr "Elementos de configuración general del sitio" + +#: ../src/siteconfig.c:75 +msgid "Access controls and site policy settings" +msgstr "Control de acceso y política general del sitio" + +#: ../src/siteconfig.c:79 +msgid "Network services" +msgstr "Servicios de red" + +#: ../src/siteconfig.c:80 ../src/siteconfig.c:90 +msgid "" +"Changes made on this screen will not take effect until you restart the " +"Citadel server." +msgstr "" +"Los cambios practicados en esta pantalla no surtirán efectos hasta que reinicies " +"el Servidor Citadel" +#: ../src/siteconfig.c:85 +msgid "Advanced server fine-tuning controls" +msgstr "Control de afinación fina avanzada del servidor" + +#: ../src/siteconfig.c:89 +msgid "Configure the LDAP connector for Citadel" +msgstr "Configurar la conexión LDAP para Citadel" + +#: ../src/siteconfig.c:95 +msgid "Configure automatic expiry of old messages" +msgstr "Configurar expiración automática de mensajes antiguos" + +#: ../src/siteconfig.c:96 +msgid "These settings may be overridden on a per-floor or per-room basis." +msgstr "Esta configuración puede ser obviada en configuraciones por-sala o por-nivel aparte." + +#: ../src/siteconfig.c:100 +msgid "Indexing and Journaling" +msgstr "Indexado y jornalización" + +#: ../src/siteconfig.c:101 +msgid "Warning: these facilities are resource intensive." +msgstr "Advertencia: estas utilidades consumen muchos recursos." + +#: ../src/siteconfig.c:119 +#, c-format +msgid "Fully qualified domain name" +msgstr "Nombre de dominio totalmente cualificado" + +#: ../src/siteconfig.c:126 +#, c-format +msgid "Human-readable node name" +msgstr "Nombre del nodo humanamente legible" + +#: ../src/siteconfig.c:133 +#, c-format +msgid "Telephone number" +msgstr "Número de teléfono" + +#: ../src/siteconfig.c:140 +#, c-format +msgid "Automatically grant room-aide status to users who create private rooms" +msgstr "Garantizar automáticamente estatus de administrador de sala al usuario que crea una sala privada" + +#: ../src/siteconfig.c:148 +#, c-format +msgid "Server connection idle timeout (in seconds)" +msgstr "Tiempo máximo de espera de conexión (en segundos)" + +#: ../src/siteconfig.c:155 +#, c-format +msgid "Initial access level for new users" +msgstr "Nivel de acceso inicial para nuevos usuarios" + +#: ../src/siteconfig.c:169 +#, c-format +msgid "Require registration for new users" +msgstr "Se requiere registro para nuevos usuarios" + +#: ../src/siteconfig.c:177 +#, c-format +msgid "Quarantine messages from problem users" +msgstr "Poner en cuarentena mensajes de usuarios problemáticos" + +#: ../src/siteconfig.c:185 +#, c-format +msgid "Name of quarantine room" +msgstr "Nombre de la sala de cuarentena" + +#: ../src/siteconfig.c:192 +#, c-format +msgid "Paginator prompt (for text mode clients)" +msgstr "Paginador de texto (para clintes en modo texto)" + +#: ../src/siteconfig.c:199 +#, c-format +msgid "Restrict access to Internet mail" +msgstr "Restringir acceso a Correo Internet" + +#: ../src/siteconfig.c:207 +#, c-format +msgid "Geographic location of this system" +msgstr "Localización geográfica de este sistema" + +#: ../src/siteconfig.c:214 +#, c-format +msgid "Name of system administrator" +msgstr "Nombre del administrador de sistema" + +#: ../src/siteconfig.c:221 +#, c-format +msgid "Maximum concurrent sessions (0 = no limit)" +msgstr "Número máximo de sesiones concurrentes (0 = sin límite)" + +#: ../src/siteconfig.c:228 +#, c-format +msgid "Default user purge time (days)" +msgstr "Purga de usuario por defecto (dias)" + +#: ../src/siteconfig.c:235 +#, c-format +msgid "Default room purge time (days)" +msgstr "Purga por defecto de salas (días)" + +#: ../src/siteconfig.c:242 +#, c-format +msgid "Name of room to log pages" +msgstr "Nombre de la sala para páginas de log" + +#: ../src/siteconfig.c:249 +#, c-format +msgid "Access level required to create rooms" +msgstr "Nivel de acceso requerido para crear salas" + +#: ../src/siteconfig.c:263 +#, c-format +msgid "Maximum message length" +msgstr "Longitud máxima de mensajes" + +#: ../src/siteconfig.c:270 +#, c-format +msgid "Minimum number of worker threads" +msgstr "Número mínimo de temáticas funcionando" + +#: ../src/siteconfig.c:277 +#, c-format +msgid "Maximum number of worker threads" +msgstr "Número máximo de temáticas funcionando" + +#: ../src/siteconfig.c:284 +#, c-format +msgid "POP3 listener port (-1 to disable)" +msgstr "Puerto de escucha POP3 (-1 para desactivar)" + +#: ../src/siteconfig.c:291 +#, c-format +msgid "SMTP MTA port (-1 to disable)" +msgstr "Puerto SMTP MTA (-1 para desactivar)" + +#: ../src/siteconfig.c:298 +#, c-format +msgid "Correct forged From: lines during authenticated SMTP" +msgstr "Correfir forged From: lineas durante SMTP autenticada" + +#: ../src/siteconfig.c:306 +#, c-format +msgid "Allow aides to zap (forget) rooms" +msgstr "Permitir a administradores olvidar (zap) salas" + +#: ../src/siteconfig.c:314 +#, c-format +msgid "IMAP listener port (-1 to disable)" +msgstr "Puerto de escucha IMAP (-1 para desactivar)" + +#: ../src/siteconfig.c:321 +#, c-format +msgid "Network run frequency (in seconds)" +msgstr "Frecuencia de marcha de red (en segundos)" + +#: ../src/siteconfig.c:328 +#, c-format +msgid "Disable self-service user account creation" +msgstr "Desactivar autoservicio en cuanto a creación de cuentas de usuario" + +#: ../src/siteconfig.c:336 +#, c-format +msgid "Hour to run database auto-purge" +msgstr "Hora para correr la autopurga de bases de datos" + +#: ../src/siteconfig.c:352 +#, c-format +msgid "Host name of LDAP server (blank to disable)" +msgstr "Nombre del Host del sevidor LDAP (en blanco para desactivar)" + +#: ../src/siteconfig.c:359 +#, c-format +msgid "Port number of LDAP server (blank to disable)" +msgstr "Número del puerto del servidor LDAP (en blanco para desactivar)" + +#: ../src/siteconfig.c:366 +#, c-format +msgid "Base DN" +msgstr "Base DN" + +#: ../src/siteconfig.c:373 +#, c-format +msgid "Bind DN" +msgstr "Bind DN" + +#: ../src/siteconfig.c:380 +#, c-format +msgid "Password for bind DN" +msgstr "Contraseña para bind DN" + +#: ../src/siteconfig.c:388 +#, c-format +msgid "Server IP address (0.0.0.0 for 'any')" +msgstr "Dirección de servidor IP (0.0.0.0 para 'cualquiera')" + +#: ../src/siteconfig.c:395 +#, c-format +msgid "SMTP MSA port (-1 to disable)" +msgstr "Puerto SMTP MSA (-1 para desactivar)" + +#: ../src/siteconfig.c:402 +#, c-format +msgid "IMAP over SSL port (-1 to disable)" +msgstr "Puerto IMAP sobre SSL (-1 para desactivar)" + +#: ../src/siteconfig.c:409 +#, c-format +msgid "POP3 over SSL port (-1 to disable)" +msgstr "Puerto POP3 sobre SSL (-1 para desactivar)" + +#: ../src/siteconfig.c:416 +#, c-format +msgid "SMTP over SSL port (-1 to disable)" +msgstr "Puerto SMTP sobre SSL (-1 para desactivar)" + +#: ../src/siteconfig.c:423 +#, c-format +msgid "Enable full text index" +msgstr "Activar índice de texto completo" + +#: ../src/siteconfig.c:431 +#, c-format +msgid "Automatically delete committed database logs" +msgstr "Borrar automáticamente logs de la base de datos pasados" + +#: ../src/siteconfig.c:439 +#, c-format +msgid "Instantly expunge deleted messages in IMAP" +msgstr "Desechar automáticamente mensajes borrados en IMAP" + +#: ../src/siteconfig.c:447 +#, c-format +msgid "Allow unauthenticated SMTP clients to spoof this site's domains" +msgstr "Permitir a cliente SMTP no autenticados hacer spoof a los dominios de este sitio" + +#: ../src/siteconfig.c:455 +#, c-format +msgid "Perform journaling of email messages" +msgstr "Realizar jornalización de mensajes de correo electrónico" + +#: ../src/siteconfig.c:463 +#, c-format +msgid "Perform journaling of non-email messages" +msgstr "Realizar jornalización de mensajes de tipo no email" + +#: ../src/siteconfig.c:471 +#, c-format +msgid "Email destination of journalized messages" +msgstr "Correo electrónico de destino de los mensajes jornalizados" + +#: ../src/siteconfig.c:497 +#, c-format +msgid "Default message expire policy for public rooms" +msgstr "Política de expiración por defecto para salas públicas" + +#: ../src/siteconfig.c:518 +#, c-format +msgid "Default message expire policy for private mailboxes" +msgstr "Política de expiración de mensajes por defecto para buzones privados" + +#: ../src/siteconfig.c:522 +#, c-format +msgid "Same policy as public rooms" +msgstr "Misma política que para salas públicas" + +#: ../src/siteconfig.c:644 +msgid "Your system configuration has been updated." +msgstr "Su confiración de sistema ha sido actualizada" + +#: ../src/subst.c:216 +msgid "ERROR: could not open template " +msgstr "ERROR: no se pudo abrir la plantilla (template) " + +#: ../src/summary.c:35 +msgid "(nothing)" +msgstr "(nada)" + +#: ../src/summary.c:50 +msgid "Messages" +msgstr "Mensajes" + +#: ../src/summary.c:87 +msgid "Who's online now" +msgstr "Quién está en línea ahora" + +#: ../src/summary.c:122 +msgid "(None)" +msgstr "(Ninguno)" + +#: ../src/summary.c:135 +msgid "(This server does not support task lists)" +msgstr "(Este servidro no soporta listas de tarea)" + +#: ../src/summary.c:151 +msgid "Today on your calendar" +msgstr "Hoy en su calendario" + +#: ../src/summary.c:164 +msgid "(Nothing)" +msgstr "(Nada)" + +#: ../src/summary.c:176 +msgid "(This server does not support calendars)" +msgstr "(Este servidro no soporta calendarios)" + +#: ../src/summary.c:188 +msgid "About this server" +msgstr "Acerca de este servidor" + +#: ../src/summary.c:192 +#, c-format +msgid "" +"You are connected to %s, running %s with %s, and located in %s. Your system " +"administrator is %s." +msgstr "" +"Estás conectado a %s, corriendo %s con %s, y localizado en %s. Tu administrador de sistema " +"es %s." + +#: ../src/summary.c:259 +#, c-format +msgid "Summary page for %s" +msgstr "Página sumario para %s" + +#: ../src/sysmsgs.c:40 +#, c-format +msgid "Edit %s" +msgstr "Editar %s" + +#: ../src/sysmsgs.c:44 +#, c-format +msgid "" +"Enter %s below. Text is formatted to the reader's screen width. To defeat " +"the formatting, indent a line at least one space." +msgstr "" +"Introducir %s abajo. El texto se reformateará según ancho de pantalla del lector. " +"To defeat the formatting, indent a line at least one space." + +#: ../src/sysmsgs.c:79 +#, c-format +msgid "Cancelled. %s was not saved." +msgstr "Cancelado %s no se salvó" + +#: ../src/sysmsgs.c:98 +#, c-format +msgid "%s has been saved." +msgstr "%s no se salvó" + +#: ../src/useredit.c:31 +msgid "Edit or delete users" +msgstr "Editar o borrar usuarios" + +#: ../src/useredit.c:40 +msgid "Add users" +msgstr "Añadir usuarios" + +#: ../src/useredit.c:43 +msgid "" +"To create a new user account, enter the desired user name in the box below " +"and click 'Create'." +msgstr "" +"Para crear una nueva cuenta de usuario, introduzca el usuario deseado en la caja de abajo " +"y pulse 'Crear'." + +#: ../src/useredit.c:48 +msgid "New user: " +msgstr "Nuevo usuario: " + +#: ../src/useredit.c:51 +msgid "Create" +msgstr "Crear" + +#: ../src/useredit.c:57 +msgid "Edit or Delete users" +msgstr "Editar o Borrar usuarios" + +#: ../src/useredit.c:60 +msgid "" +"To edit an existing user account, select the user name from the list and " +"click 'Edit'." +msgstr "" +"Para editar una cuenta de usuario existente, seleccione el nombre de usuario de la lista " +"y pulse 'Editar'." + +#: ../src/useredit.c:83 +msgid "Edit configuration" +msgstr "Editar configuración" + +#: ../src/useredit.c:84 +msgid "Edit address book entry" +msgstr "Editar entrada de la libreta de direcciones" + +#: ../src/useredit.c:86 +msgid "Delete user" +msgstr "Borrar usuario" + +#: ../src/useredit.c:86 +msgid "Delete this user?" +msgstr "¿Borrar este usuario?" + +#: ../src/useredit.c:204 +msgid "" +"An error occurred while trying to create or edit this address book entry.." +msgstr "" +"Ocurrió un error mientras se intentaba crear o editar esta entrada de la libreta de direcciones." +#: ../src/useredit.c:283 +msgid "Edit user account: " +msgstr "Editar cuenta de usuario:" + +#: ../src/useredit.c:303 +msgid "Password" +msgstr "Contraseña" + +#: ../src/useredit.c:310 +msgid "Permission to send Internet mail" +msgstr "Autorización para enviar correo Internet" + +#: ../src/useredit.c:319 +msgid "Number of logins" +msgstr "Número de conexiones" + +#: ../src/useredit.c:326 +msgid "Messages submitted" +msgstr "Mensajes enviados" + +#: ../src/useredit.c:333 +msgid "Access level" +msgstr "Nivel de acceso" + +#: ../src/useredit.c:347 +msgid "User ID number" +msgstr "ID de usuario" + +#: ../src/useredit.c:355 +msgid "Date and time of last login" +msgstr "Fecha y hora de la última conexión" + +#: ../src/useredit.c:370 +msgid "Auto-purge after this many days" +msgstr "Autopurgar despues de estos muchos dias" + +#: ../src/useredit.c:402 +msgid "Changes were not saved." +msgstr "Los cambios no se salvaron" + +#: ../src/useredit.c:486 +#, c-format +msgid "A new user has been created." +msgstr "Se creó un nuevo usuario" + +#: ../src/userlist.c:48 +#, c-format +msgid "User list for %s" +msgstr "Lista de usuarios %s" + +#: ../src/userlist.c:66 +msgid "User Name" +msgstr "Nombre de Usuario" + +#: ../src/userlist.c:67 +msgid "Number" +msgstr "Número" + +#: ../src/userlist.c:68 +msgid "Access Level" +msgstr "Nivel de Acceso" + +#: ../src/userlist.c:69 +msgid "Last Login" +msgstr "Última conexión" + +#: ../src/userlist.c:70 +msgid "Total Logins" +msgstr "Total de conexiones" + +#: ../src/userlist.c:71 +msgid "Total Posts" +msgstr "Correos Totales" + +#: ../src/userlist.c:129 +msgid "User profile" +msgstr "Profile de usuario" + +#: ../src/userlist.c:165 +#, c-format +msgid "Click here to send an instant message to %s" +msgstr "Pulse aquí para enviar un mensaje instantáneo a %s" + +#: ../src/vcard_edit.c:184 +msgid "Edit contact information" +msgstr "Editar información de contacto" + +#: ../src/vcard_edit.c:200 +msgid "Prefix" +msgstr "Prefijo" + +#: ../src/vcard_edit.c:200 +msgid "First" +msgstr "Primero" + +#: ../src/vcard_edit.c:200 +msgid "Middle" +msgstr "Medio" + +#: ../src/vcard_edit.c:200 +msgid "Último" +msgstr "" + +#: ../src/vcard_edit.c:200 +msgid "Suffix" +msgstr "Sufijo" + +#: ../src/vcard_edit.c:221 +msgid "Display name:" +msgstr "Mostrar nombre:" + +#: ../src/vcard_edit.c:228 +msgid "Title:" +msgstr "Título:" + +#: ../src/vcard_edit.c:235 +msgid "Organization:" +msgstr "Organización:" + +#: ../src/vcard_edit.c:246 +msgid "PO box:" +msgstr "Aptdo. Correos" + +#: ../src/vcard_edit.c:262 +msgid "City:" +msgstr "Ciudad" + +#: ../src/vcard_edit.c:268 +msgid "State:" +msgstr "Estado:" + +#: ../src/vcard_edit.c:274 +msgid "ZIP code:" +msgstr "Código postal" + +#: ../src/vcard_edit.c:280 +msgid "Country:" +msgstr "País" + +#: ../src/vcard_edit.c:290 +msgid "Home telephone:" +msgstr "Teléfono de casa" + +#: ../src/vcard_edit.c:296 +msgid "Work telephone:" +msgstr "Teléfono del trabajo" + +#: ../src/vcard_edit.c:307 +msgid "Primary Internet e-mail address" +msgstr "Dirección de email primaria" + +#: ../src/vcard_edit.c:314 +msgid "Internet e-mail aliases" +msgstr "Alias de email" + +#: ../src/webcit.c:685 +#, c-format +msgid "An error occurred while retrieving this part: %s\n" +msgstr "Ocurrió un error mientras se recuperaba esta parte: %s\n" + +#: ../src/webcit.c:771 +msgid "Make this my start page" +msgstr "Hacer de esta mi página de inicio" + +#: ../src/webcit.c:790 +msgid "You no longer have a start page selected." +msgstr "Ya no tiene página de inicio seleccionada." + +#: ../src/webcit.c:826 +msgid "Authorization Required" +msgstr "Autorización requerida" + +#: ../src/webcit.c:828 +#, c-format +msgid "" +"The resource you requested requires a valid username and password. You could " +"not be logged in: %s\n" +msgstr "" +"El recurso solicitado rquiere un nombre y contraseña de usuarios válidos. No " +"podrás conectarte a: %s\n" + +#: ../src/webcit.c:1255 +#, c-format +msgid "" +"You are connected to a Citadel server running Citadel %d.%02d. \n" +"In order to run this version of WebCit you must also have Citadel %d.%02d or " +"newer.\n" +"\n" +"\n" +msgstr "" +"Estas conectado a un servidor Citadel, corriendo Citadel %d.%02d. \n" +"Para poder correr esta versión de WebCit, también debes tener Citade %d.%02d o " +"posterior.\n" +"\n" +"\n" + +#: ../src/webcit.c:1492 ../src/webcit.c:1494 +msgid "Room info" +msgstr "Información de sala" + +#: ../src/webcit.c:1497 ../src/webcit.c:1499 +msgid "Your bio" +msgstr "Tu biografía" + +#: ../src/webcit.c:1507 +msgid "your photo" +msgstr "tu foto" + +#: ../src/webcit.c:1513 +msgid "the icon for this room" +msgstr "el icono par esta sala" + +#: ../src/webcit.c:1527 +msgid "the icon for this floor" +msgstr "el icono para este nivel" + +#: ../src/who.c:27 +msgid "User name" +msgstr "Nombre de usuario" + +#: ../src/who.c:28 +msgid "Room" +msgstr "Sala" + +#: ../src/who.c:29 +msgid "From host" +msgstr "Desde el host" + +#: ../src/who.c:62 +msgid "(kill)" +msgstr "(matar)" + +#: ../src/who.c:65 +msgid "(edit)" +msgstr "(editar)" + +#: ../src/who.c:141 +msgid "Do you really want to kill this session?" +msgstr "¿Realmente quiere matar esta sesión?" + +#: ../src/who.c:151 +#, c-format +msgid "Users currently on %s" +msgstr "Usuarios actualmente en %s" + +#: ../src/who.c:166 +#, c-format +msgid "" +"Click on a name to read user info. Click on %s to send an instant message " +"to that user." +msgstr "" +"Pulse en un nombre para leer la información del usuario. Pulse en %s para enviar un mensaje instantáneo " +"a ese usuario. " + +#: ../src/who.c:228 +msgid "Edit your session display" +msgstr "Editar la vista de sus sesión" + +#: ../src/who.c:232 +msgid "" +"This screen allows you to change the way your session appears in the 'Who is " +"online' listing. To turn off any 'fake' name you've previously set, simply " +"click the appropriate 'change' button without typing anything in the " +"corresponding box. " +msgstr "" +"Esta pantalla te permite cambiar la forma en que tu sesión aparece en 'Quién está en línea' " +"Para desactivar cualquier nombre 'fake' (falso alias) creado previamente, simplemente " +"pulse el botón apropiado 'cambiar' sin escribir nada en la caja " +"correspondiente. " + +#: ../src/who.c:244 +msgid "Room name:" +msgstr "Nombre de sala" + +#: ../src/who.c:249 +msgid "Change room name" +msgstr "Cambiar nombre de sala" + +#: ../src/who.c:253 +msgid "Host name:" +msgstr "Nombre de Host" + +#: ../src/who.c:258 +msgid "Change host name" +msgstr "Cambiar nombre de host" + +#: ../src/who.c:268 +msgid "Change user name" +msgstr "Cambiar nombre de usuario" + +#: ../src/wiki.c:64 +#, c-format +msgid "There is no room called '%s'." +msgstr "No existe la sala denominada '%s'." + +#: ../src/wiki.c:74 +#, c-format +msgid "'%s' is not a Wiki room." +msgstr "'%s' no es una sala Wiki." + +#: ../src/wiki.c:100 +#, c-format +msgid "There is no page called '%s' here." +msgstr "Aquí no existe ninguna página denominada '%s'." + +#: ../src/wiki.c:102 +msgid "" +"Select the 'Edit this page' link in the room banner if you would like to " +"create this page." +msgstr "" +"Seleccione el enlace 'Editar esta página' en el banner de la sala si desea" +"crear esta página." diff --git a/webcit/po/it.po b/webcit/po/it.po new file mode 100644 index 000000000..c56a63476 --- /dev/null +++ b/webcit/po/it.po @@ -0,0 +1,2844 @@ +# translation of it.po to italian +# Copyright (C) 2005 The Citadel Project - http://www.citadel.org +# This file is distributed under the same license as the WebCit package. +# +# Gabriele Tassoni , 2005, 2006. +msgid "" +msgstr "" +"Project-Id-Version: it\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-02-13 21:49+0100\n" +"PO-Revision-Date: 2006-02-27 10:07+0100\n" +"Last-Translator: Gabriele Tassoni \n" +"Language-Team: italian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.1\n" + +#: ../auth.c:23 +msgid "Deleted" +msgstr "Cancellato" + +#: ../auth.c:24 ../auth.c:72 +msgid "New User" +msgstr "Nuovo Utente" + +#: ../auth.c:25 +msgid "Problem User" +msgstr "Utente con Problemi" + +#: ../auth.c:26 +msgid "Local User" +msgstr "Utente Locale" + +#: ../auth.c:27 +msgid "Network User" +msgstr "Utente di Rete" + +#: ../auth.c:28 +msgid "Preferred User" +msgstr "Utente Preferito" + +#: ../auth.c:29 +msgid "Aide" +msgstr "Amministratore" + +#: ../auth.c:52 +#, c-format +msgid "" +"
    • If you already have an account on %s, enter your user name " +"and password and click "Login."
    • If you are a new user, " +"enter the name and password you wish to use, and click "New User." " +"
    • Please log off properly when finished.
    • You must use a browser that " +"supports frames and cookies.
    • Also keep in mind that if " +"your browser is configured to block pop-up windows, you will not be able to " +"receive any instant messages.
    " +msgstr "" +"
    • Se hai già un account su %s, fornisci il tuo nome " +"utente e la tua password e clicca su "Login."
    • Se sei un " +"nuovo utente, fornisci il nome utente e la password che vorresti e " +"clicca su "Nuovo Utente."
    • Per favore, eseguire il logout in " +"maniera corretta prima di uscire.
    • Devi usare un Browser che supporti i " +"frames e i cookies.
    • Tieni anche a mente che se il tuo " +"browser è configurato per bloccare le finestre di pop up, non " +"riuscirai a ricevere nessun messaggio istantaneo.
    " + +#: ../auth.c:68 ../who.c:263 +msgid "User name:" +msgstr "Nome utente:" + +#: ../auth.c:69 +msgid "Password:" +msgstr "Password:" + +#: ../auth.c:70 +msgid "Language:" +msgstr "Lingua:" + +#: ../auth.c:71 +msgid "Login" +msgstr "Login" + +#: ../auth.c:73 ../paging.c:510 +msgid "Exit" +msgstr "Uscita" + +#: ../auth.c:75 +#, c-format +msgid "%s - powered by Citadel" +msgstr "%s - potenziato da Citadel" + +#: ../auth.c:166 ../auth.c:534 +msgid "Blank passwords are not allowed." +msgstr "Le password vuote non sono ammesse." + +#: ../auth.c:187 +msgid "Your password was not accepted." +msgstr "La tua password non è stata accettata." + +#: ../auth.c:295 +msgid "" +"This program was unable to connect or stay connected to the Citadel server. " +"Please report this problem to your system administrator." +msgstr "" +"Questo programma non riesce a collegarsi o a rimanere collegato al server " +"Citadel. Per favore, segnala questo errore all'amministratore di sistema." + +#: ../auth.c:302 +msgid "Log in again" +msgstr "Esegui nuovamente il Log in" + +#: ../auth.c:305 +msgid "Close window" +msgstr "Chiudi la finestra" + +#: ../auth.c:326 ../mainmenu.c:241 +msgid "Validate new users" +msgstr "Valida il nuovo utente" + +#: ../auth.c:346 +msgid "No users require validation at this time." +msgstr "Non si richiede l'autenticazione utente in questo momento" + +#: ../auth.c:387 +#, c-format +msgid "Current access level: %d (%s)\n" +msgstr "Attuale livello di accesso: %d (%s)\n" + +#: ../auth.c:395 +msgid "Select access level for this user:" +msgstr "Seleziona il livello di accesso per l'utente corrente:" + +#: ../auth.c:458 ../mainmenu.c:137 +msgid "Change your password" +msgstr "Cambia la tua password" + +#: ../auth.c:487 +msgid "Enter new password:" +msgstr "Inserisci la nuova password:" + +#: ../auth.c:491 +msgid "Enter it again to confirm:" +msgstr "Inseriscila nuovamente per conferma:" + +#: ../auth.c:496 +msgid "Change password" +msgstr "Cambia la password" + +#: ../auth.c:498 ../calendar.c:616 ../event.c:390 ../graphics.c:58 +#: ../iconbar.c:712 ../mainmenu.c:300 ../messages.c:2894 ../messages.c:3015 +#: ../messages.c:3103 ../netconf.c:86 ../netconf.c:149 ../paging.c:58 +#: ../preferences.c:389 ../roomops.c:1285 ../roomops.c:1613 ../roomops.c:2046 +#: ../roomops.c:2195 ../roomops.c:2259 ../siteconfig.c:564 ../sysmsgs.c:59 +#: ../useredit.c:381 ../vcard_edit.c:336 ../who.c:273 +msgid "Cancel" +msgstr "Cancella" + +#: ../auth.c:515 +msgid "Cancelled. Password was not changed." +msgstr "Aziona cancellata. La password non è stata cambiata. " + +#: ../auth.c:526 +msgid "They don't match. Password was not changed." +msgstr "Le password non coincidono. Cambiamento non effettuato." + +#: ../availability.c:140 +msgid "availability unknown" +msgstr "Disponibilità sconosciuta" + +#: ../availability.c:161 +msgid "free" +msgstr "libero" + +#: ../availability.c:171 +msgid "BUSY" +msgstr "OCCUPATO" + +#: ../calendar.c:24 +msgid "" +"This message contains calendaring/scheduling information, but support for " +"calendars is not available on this particular system. Please ask your " +"system administrator to install a new version of the Citadel web service " +"with calendaring enabled.
    \n" +msgstr "" +"Questo messaggio contiene informazioni di organizzazione/programmazione, " +"ma in questo particolare sistema, il supporto per i calendari non è " +"disponibile. Per favore, chiedi al tuo amministratore di sistema di " +"installare una nuova versione del servizion web di Citadel con il calendario " +"abilitato.
    \n" + +#: ../calendar.c:38 +msgid "" +"Cannot display calendar item. You are seeing this error because your " +"WebCit service has not been installed with calendar support. Please contact " +"your system administrator.
    \n" +msgstr "" +"Non posso mostrare l'oggetto calendario. Stai vedendo questo messaggio " +"perchè il servizio WebCit non è stato installato col supporto " +"al calendario. Per favore, contatta il tuo amministratore di sistema.
    \n" + +#: ../calendar.c:50 +msgid "" +"Cannot display to-do item. You are seeing this error because your WebCit " +"service has not been installed with calendar support. Please contact your " +"system administrator.
    \n" +msgstr "" +"Non posso mostrare l'oggetto cose da fare. Stai vedendo questo messaggio " +"perchè il servizio WebCit non è stato installato col supporto " +"al calendario. Per favore, contatta il tuo amministratore di sistema.
    \n" + +#: ../calendar.c:107 +msgid "Meeting invitation" +msgstr "Invito a un incontro" + +#: ../calendar.c:116 +msgid "Attendee's reply to your invitation" +msgstr "Risposta del membro al tuo invito" + +#: ../calendar.c:125 +msgid "Published event" +msgstr "Evento pubblicato" + +#: ../calendar.c:130 +msgid "This is an unknown type of calendar item." +msgstr "Questo è un tipo di calendario sconosciuto." + +#: ../calendar.c:139 ../calendar.c:560 +msgid "Summary:" +msgstr "Sommario:" + +#: ../calendar.c:148 +msgid "Location:" +msgstr "Luogo:" + +#: ../calendar.c:174 +msgid "Date:" +msgstr "Data:" + +#: ../calendar.c:181 +msgid "Starting date/time:" +msgstr "Data e ora di inizio:" + +#: ../calendar.c:192 +msgid "Ending date/time:" +msgstr "Data e ora di fine:" + +#: ../calendar.c:201 ../calendar.c:596 +msgid "Description:" +msgstr "Descrizione:" + +#: ../calendar.c:210 +msgid "Attendee:" +msgstr "Membro:" + +#: ../calendar.c:250 +#, c-format +msgid "This is an update of '%s' which is already in your calendar." +msgstr "Questo è un aggiornamento di '%s' giè nel tuo calendario." + +#: ../calendar.c:254 +#, c-format +msgid "This event would conflict with '%s' which is already in your calendar." +msgstr "" +"Questo evento è in conflitto con l'evento '%s' già presente " +"nel tuo calendario." + +#: ../calendar.c:259 +msgid "Update:" +msgstr "Aggiorna:" + +#: ../calendar.c:260 +msgid "CONFLICT:" +msgstr "CONFLITTO:" + +#: ../calendar.c:278 +msgid "How would you like to respond to this invitation?" +msgstr "Come vuoi rispondere a questo invito?" + +#: ../calendar.c:279 +msgid "Accept" +msgstr "Accetta" + +#: ../calendar.c:280 +msgid "Tentative" +msgstr "Tentativo" + +#: ../calendar.c:281 +msgid "Decline" +msgstr "Declina" + +#: ../calendar.c:305 +msgid "Click Update to accept this reply and update your calendar." +msgstr "" +"Seleziona Aggiorna Per accettare questa risposta e aggiornare il tuo " +"calendario." + +#: ../calendar.c:306 +msgid "Update" +msgstr "Aggiorna" + +#: ../calendar.c:307 +msgid "Ignore" +msgstr "Ignora" + +#: ../calendar.c:334 +msgid "There was an error parsing this calendar item." +msgstr "C'è un errore in questo oggetto del calendario." + +#: ../calendar.c:361 +msgid "Respond to meeting request" +msgstr "Rispondi alla richiesta di incontro" + +#: ../calendar.c:380 +msgid "" +"You have accepted this meeting invitation. It has been entered into your " +"calendar." +msgstr "" +"Hai accettato questo invito all'incontro. è stato aggiunto al tuo " +"calendario." + +#: ../calendar.c:384 +msgid "" +"You have tentatively accepted this meeting invitation. It has been " +"'pencilled in' to your calendar." +msgstr "" +"Hai accettato questo messaggio in forse. è stato \"segnato a matita\" " +"nel tuo calendario" + +#: ../calendar.c:388 +msgid "" +"You have declined this meeting invitation. It has not been entered " +"into your calendar." +msgstr "Hai declinato l'invito. Non è stato inserito nel tuo calendario." + +#: ../calendar.c:393 +msgid "A reply has been sent to the meeting organizer." +msgstr "Una risposta è stata mandata all'organizzatore dell'incontro." + +#: ../calendar.c:403 ../calendar.c:457 +msgid "Return to messages" +msgstr "Ritorna ai messaggi." + +#: ../calendar.c:422 +msgid "Update your calendar with this RSVP" +msgstr "Aggiorna il tuo calendario con questo RSVP" + +#: ../calendar.c:441 +msgid "Your calendar has been updated to reflect this RSVP." +msgstr "Il tuo calendario è stato aggiornato per riflettere questo RSVP." + +#: ../calendar.c:443 +msgid "" +"You have chosen to ignore this RSVP. Your calendar has not been " +"updated." +msgstr "" +"Hai scelto di ignorare questo RSVP. il tuo calendario non " +"verrà aggiornato." + +#: ../calendar.c:544 +msgid "Edit task" +msgstr "Aggiorna questa operazione." + +#: ../calendar.c:571 +msgid "Start date:" +msgstr "Data di inizio:" + +#: ../calendar.c:584 +msgid "Due date:" +msgstr "Scadenza:" + +#: ../calendar.c:614 ../event.c:387 +msgid "Save" +msgstr "Salva" + +#: ../calendar.c:615 ../event.c:388 ../messages.c:903 ../messages.c:2281 +msgid "Delete" +msgstr "Cancella" + +#: ../calendar_tools.c:73 +msgid "Month: " +msgstr "Mese:" + +#: ../calendar_tools.c:87 +msgid "Day: " +msgstr "Giorno:" + +#: ../calendar_tools.c:97 +msgid "Year: " +msgstr "Anno:" + +#: ../calendar_tools.c:115 +msgid "Hour: " +msgstr "Ora:" + +#: ../calendar_tools.c:135 +msgid "Minute: " +msgstr "Minuto:" + +#: ../calendar_tools.c:204 +msgid "(status unknown)" +msgstr "(stato sconosciuto)" + +#: ../calendar_tools.c:220 +msgid "(needs action)" +msgstr "(serve una azione)" + +#: ../calendar_tools.c:223 +msgid "(accepted)" +msgstr "(accettato)" + +#: ../calendar_tools.c:226 +msgid "(declined)" +msgstr "(declinato)" + +#: ../calendar_tools.c:229 +msgid "(tenative)" +msgstr "(tentativo) " + +#: ../calendar_tools.c:232 +msgid "(delegated)" +msgstr "(delegato)" + +#: ../calendar_tools.c:235 +msgid "(completed)" +msgstr "(completato)" + +#: ../calendar_tools.c:238 +msgid "(in process)" +msgstr "(in lavorazione)" + +#: ../calendar_tools.c:241 +msgid "(none)" +msgstr "(nessuno)" + +#: ../calendar_view.c:17 +msgid "The calendar view is not available." +msgstr "La vista calendario non è disponibile." + +#: ../calendar_view.c:24 +msgid "The tasks view is not available." +msgstr "La vista operazione non è disponibile." + +#: ../calendar_view.c:435 +msgid "Week" +msgstr "Settimana" + +#: ../calendar_view.c:437 +msgid "Hours" +msgstr "Ore" + +#: ../calendar_view.c:438 ../messages.c:2276 +msgid "Subject" +msgstr "Oggetto" + +#: ../calendar_view.c:439 ../event.c:164 +msgid "Start" +msgstr "Inizio" + +#: ../calendar_view.c:440 ../event.c:218 +msgid "End" +msgstr "Fine" + +#: ../calendar_view.c:930 +msgid "Name of task" +msgstr "Nome dell'operazione" + +#: ../calendar_view.c:932 +msgid "Date due" +msgstr "Data dovuta" + +#: ../event.c:76 ../paging.c:78 +msgid "Add or edit an event" +msgstr "Aggiungi o modifica un evento" + +#: ../event.c:142 ../iconbar.c:123 ../iconbar.c:539 +msgid "Summary" +msgstr "Sommario" + +#: ../event.c:153 +msgid "Location" +msgstr "Luogo" + +#: ../event.c:207 +msgid "All day event" +msgstr "Evento per tutto il giorno" + +#: ../event.c:246 ../iconbar.c:199 ../iconbar.c:586 +msgid "Notes" +msgstr "Note" + +#: ../event.c:288 +msgid "Organizer" +msgstr "Organizer" + +#: ../event.c:293 +msgid "(you are the organizer)" +msgstr "(tu sei l'organizzatore)" + +#: ../event.c:311 +msgid "Show time as:" +msgstr "Mostra l'ora come:" + +#: ../event.c:333 +msgid "Free" +msgstr "Libero" + +#: ../event.c:340 +msgid "Busy" +msgstr "Occupato" + +#: ../event.c:346 +msgid "Attendees" +msgstr "Membri" + +#: ../event.c:349 +msgid "(One per line)" +msgstr "(Uno per linea)" + +#: ../event.c:389 +msgid "Check attendee availability" +msgstr "Controlla la disponibilità del membro." + +#: ../floors.c:34 +msgid "Add/change/delete floors" +msgstr "Agiungi, cambia o cancella i piani" + +#: ../floors.c:51 ../siteconfig.c:49 ../vcard_edit.c:78 ../wiki.c:66 +#: ../wiki.c:76 +msgid "Error" +msgstr "Errore" + +#: ../floors.c:62 +msgid "Floor number" +msgstr "Numero del piano" + +#: ../floors.c:64 +msgid "Floor name" +msgstr "Nome del piano" + +#: ../floors.c:66 +msgid "Number of rooms" +msgstr "Numero di stanze" + +#: ../floors.c:68 +msgid "Floor CSS" +msgstr "Stile del Piano" + +#: ../floors.c:81 +msgid "(delete floor)" +msgstr "(Cancella il piano)" + +#: ../floors.c:87 +msgid "(edit graphic)" +msgstr "(Modifica la grafica)" + +#: ../floors.c:100 +msgid "Change name" +msgstr "Cambia nome" + +#: ../floors.c:113 +msgid "Change CSS" +msgstr "Modifica lo Stile" + +#: ../floors.c:125 +msgid "Create new floor" +msgstr "Crea un nuovo piano" + +#: ../floors.c:146 +#, c-format +msgid "Floor has been deleted." +msgstr "Il piano è stato cancellato." + +#: ../floors.c:169 +#, c-format +msgid "New floor has been created." +msgstr "Il nuovo piano è stato creato." + +#: ../graphics.c:27 +msgid "Image upload" +msgstr "Carica l'immagine" + +#: ../graphics.c:45 +msgid "" +"You can upload any image directly from your computer, as long as it is in " +"GIF format (JPEG, PNG, etc. won't work)." +msgstr "" +"Puoi caricare una qualsiasi immagine direttamente dal tuo computer, sempre " +"che sia in formato GIF (JPEG, PNG, etc. non funzioneranno)" + +#: ../graphics.c:50 +msgid "Please select a file to upload:" +msgstr "Per favore, seleziona un file da caricare:" + +#: ../graphics.c:54 +msgid "Upload" +msgstr "Carica" + +#: ../graphics.c:56 +msgid "Reset form" +msgstr "Cancella" + +#: ../graphics.c:74 +msgid "Graphics upload has been cancelled." +msgstr "Il caricamento della grafica è stato cancellato." + +#: ../graphics.c:81 +msgid "You didn't upload a file." +msgstr "Non carichi un file." + +#: ../html2html.c:109 +#, c-format +msgid "realloc() error! couldn't get %d bytes: %s" +msgstr "errore di realloc()! non riesco a ottenere %d bytes: %s" + +#: ../iconbar.c:105 ../iconbar.c:391 +msgid "Find out more about Citadel" +msgstr "Scopri di più su Citadel" + +#: ../iconbar.c:106 ../iconbar.c:392 +msgid "CITADEL" +msgstr "CITADEL" + +#: ../iconbar.c:110 +msgid "switch to room list" +msgstr "Visualizza le cartelle" + +#: ../iconbar.c:116 ../iconbar.c:540 +msgid "Your summary page" +msgstr "Visualizza il sommario" + +#: ../iconbar.c:133 +msgid "Go to your email inbox" +msgstr "Leggi la tua Posta in Arrivo" + +#: ../iconbar.c:140 +msgid "Mail" +msgstr "Posta" + +#: ../iconbar.c:158 +msgid "Go to your personal calendar" +msgstr "Visualizza il tuo calendario personale" + +#: ../iconbar.c:165 ../iconbar.c:603 ../roomops.c:22 +msgid "Calendar" +msgstr "Calendario" + +#: ../iconbar.c:175 +msgid "Go to your personal address book" +msgstr "Vai ai tuoi contatti personali" + +#: ../iconbar.c:182 ../iconbar.c:570 +msgid "Contacts" +msgstr "Contatti" + +#: ../iconbar.c:192 +msgid "Go to your personal notes" +msgstr "Visualizza le tue Note personali" + +#: ../iconbar.c:209 +msgid "Go to your personal task list" +msgstr "Visualizza le Attività da portare a termine" + +#: ../iconbar.c:216 ../iconbar.c:618 ../summary.c:109 +msgid "Tasks" +msgstr "Attività" + +#: ../iconbar.c:224 +msgid "List all of your accessible rooms" +msgstr "Mostra tutte le tue stanze accessibili" + +#: ../iconbar.c:231 ../iconbar.c:634 +msgid "Rooms" +msgstr "Stanze" + +#: ../iconbar.c:240 +msgid "See who is online right now" +msgstr "Mostra gli altri utenti collegati in questo momento" + +#: ../iconbar.c:247 ../iconbar.c:650 +msgid "Who is online?" +msgstr "Chi è on line?" + +#: ../iconbar.c:265 ../iconbar.c:666 +msgid "Chat" +msgstr "Chat" + +#: ../iconbar.c:275 +msgid "Advanced Options Menu: Advanced Room commands, Account Info, and Chat" +msgstr "" +"Menu di opzioni avnzate: Comandi avanzati di stanza, Informazioni " +"dell'utente e Chat" + +#: ../iconbar.c:282 +msgid "Advanced" +msgstr "Avanzato" + +#: ../iconbar.c:292 +msgid "Room and system administration functions" +msgstr "Funzioni di amministrazione delle stanze e di sistema" + +#: ../iconbar.c:299 ../roomops.c:1002 +msgid "Administration" +msgstr "Amministrazione" + +#: ../iconbar.c:307 ../iconbar.c:316 ../iconbar.c:402 ../iconbar.c:411 +#: ../mainmenu.c:110 +msgid "Log off" +msgstr "Esci" + +#: ../iconbar.c:308 ../iconbar.c:403 +msgid "Log off now?" +msgstr "Uscire adesso?" + +#: ../iconbar.c:326 +msgid "Customize this menu" +msgstr "Personalizza questo menu" + +#: ../iconbar.c:327 +msgid "customize this menu" +msgstr "modifica questo menu" + +#: ../iconbar.c:396 +msgid "switch to menu" +msgstr "Visualizza il menu" + +#: ../iconbar.c:481 +msgid "Customize the icon bar" +msgstr "Personalizza la barra delle icone" + +#: ../iconbar.c:493 +msgid "Display icons as:" +msgstr "Mostra le icone come:" + +#: ../iconbar.c:499 +msgid "pictures and text" +msgstr "immagini e testo" + +#: ../iconbar.c:500 +msgid "pictures only" +msgstr "solo immagini" + +#: ../iconbar.c:501 +msgid "text only" +msgstr "solo testo" + +#: ../iconbar.c:506 +msgid "" +"Select the icons you would like to see displayed in the 'icon bar' menu on " +"the left side of the screen." +msgstr "Seleziona le icone che vorresti vedere nel menu alla sinistra dello schermo." + +#: ../iconbar.c:524 +msgid "Site logo" +msgstr "Logo del sito" + +#: ../iconbar.c:525 +msgid "An icon describing this site" +msgstr "Una icona che descriva questo sito" + +#: ../iconbar.c:554 +msgid "Mail (inbox)" +msgstr "Mail (Posta in arrivo)" + +#: ../iconbar.c:555 +msgid "A shortcut to your email Inbox" +msgstr "Un collegamento alla tua Posta in Arrivo" + +#: ../iconbar.c:571 +msgid "Your personal address book" +msgstr "I tuoi Contatti personali" + +#: ../iconbar.c:587 +msgid "Your personal notes" +msgstr "Le tue note personali" + +#: ../iconbar.c:604 +msgid "A shortcut to your personal calendar" +msgstr "Un collegamento al tuo calendario personale" + +#: ../iconbar.c:619 +msgid "A shortcut to your personal task list" +msgstr "Un collegamento alla tua lista di operazioni da effettuare" + +#: ../iconbar.c:635 +msgid "" +"Clicking this icon displays a list of all accessible rooms (or folders) " +"available." +msgstr "" +"Cliccando questa icona, mostra una lista di tutte le stanze o cartelle " +"disponibili." + +#: ../iconbar.c:651 +msgid "Clicking this icon displays a list of all users currently logged in." +msgstr "" +"Cliccando su questa icona, mostra tutti gli utenti collegati in questo " +"momento." + +#: ../iconbar.c:667 +msgid "" +"Clicking this icon enters real-time chat mode with other users in the same " +"room." +msgstr "" +"Cliccando su questa icona vi porterà a una chat in tempo reale con " +"gli altri utenti nella stessa stanza." + +#: ../iconbar.c:684 +msgid "Advanced options" +msgstr "Opzioni avanzate" + +#: ../iconbar.c:685 +msgid "Access to the complete menu of Citadel functions." +msgstr "Accesso al menu completo delle funzioni di Citadel." + +#: ../iconbar.c:701 +msgid "Citadel logo" +msgstr "Logo Citadel" + +#: ../iconbar.c:702 +msgid "Displays the 'Powered by Citadel' icon" +msgstr "Mostra l'icona Potenziato da Citadel" + +#: ../iconbar.c:711 ../netconf.c:146 ../roomops.c:1284 ../roomops.c:1611 +#: ../siteconfig.c:562 ../sysmsgs.c:57 ../useredit.c:381 ../vcard_edit.c:335 +msgid "Save changes" +msgstr "Cambia i cambiamenti" + +#: ../iconbar.c:766 +msgid "" +"Your icon bar has been updated. Please select any of its choices to " +"continue." +msgstr "" +"La tua bara delle icone è stata aggiornata. Per favore, seleziona una " +"delle sue possibilità per continuare." + +#: ../inetconf.c:38 +msgid "localhost" +msgstr "localhost" + +#: ../inetconf.c:39 +msgid "directory" +msgstr "directory" + +#: ../inetconf.c:40 +msgid "gatewaydomain" +msgstr "dominio del gateway" + +#: ../inetconf.c:41 +msgid "smarthost" +msgstr "smarthost" + +#: ../inetconf.c:42 +msgid "rbl" +msgstr "rbl" + +#: ../inetconf.c:43 +msgid "spamassassin" +msgstr "spamassassin" + +#: ../inetconf.c:45 +msgid "Local host aliases" +msgstr "Alias degli host locali" + +#: ../inetconf.c:46 +msgid "Directory domains" +msgstr "Domini delle directory" + +#: ../inetconf.c:47 +msgid "Gateway domains" +msgstr "Domini del gateway" + +#: ../inetconf.c:48 +msgid "Smart hosts" +msgstr "Smart Host" + +#: ../inetconf.c:49 +msgid "RBL hosts" +msgstr "Host RBL" + +#: ../inetconf.c:50 +msgid "SpamAssassin hosts" +msgstr "Host Spamassassin" + +#: ../inetconf.c:52 +msgid "(domains for which this host receives mail)" +msgstr "(Domini per cui questo host riceve email)" + +#: ../inetconf.c:53 +msgid "(domains mapped with the Global Address Book)" +msgstr "(Domini mappati nei Contatti Globali)" + +#: ../inetconf.c:54 +msgid "(domains whose subdomains match Citadel hosts)" +msgstr "(domini i cui sottodomini coincidono con host Citadel)" + +#: ../inetconf.c:55 +msgid "(if present, forward all outbound mail to one of these hosts)" +msgstr "(Se presenti, invia tutta la posta non locale a uno di questi host)" + +#: ../inetconf.c:56 +msgid "(hosts running a Realtime Blackhole List)" +msgstr "(host che usano una lista Blackhole in tempo reale)" + +#: ../inetconf.c:57 +msgid "(hosts running the SpamAssassin service)" +msgstr "(host che forniscono il servizio spamassassin)" + +#: ../inetconf.c:94 +msgid "Internet configuration" +msgstr "Configurazione internet" + +#: ../inetconf.c:121 +msgid "Delete this entry?" +msgstr "Cancello questa voce?" + +#: ../inetconf.c:123 ../netconf.c:209 +msgid "(Delete)" +msgstr "(Cancella)" + +#: ../inetconf.c:173 +#, c-format +msgid "%s has been deleted." +msgstr "%s è stato cancellato." + +#: ../listsub.c:44 +msgid "List subscription" +msgstr "Mostra le sottoscrizioni" + +#: ../listsub.c:56 +msgid "List subscribe/unsubscribe" +msgstr "Mostra le sottoscrizioni/cancella la sottoscrizione" + +#: ../listsub.c:76 +msgid "Confirmation request sent" +msgstr "Richiesta di conferma inviata" + +#: ../listsub.c:78 +#, c-format +msgid "" +"You are subscribing %s to the %s mailing list. The " +"listserver has sent you an e-mail with one additional Web link for you to " +"click on to confirm your subscription. This extra step is for your " +"protection, as it prevents others from being able to subscribe you to lists " +"without your consent.

    Please click on the link which is being e-" +"mailed to you and your subscription will be confirmed.
    \n" +msgstr "" +"Stai sottoscrivendo %s alla mailing list %s. Il server di " +"posta ti ha inviato una email contenente un collegamento da cliccare per " +"confermare la tua sottoscrizione. questo passo è necessario per la " +"tua protezione, in modo da evitare che altre persone possano sottoscriverti " +"senza il tuo consenso.

    Per favore, clicca sul collegamento " +"presente nella email per confermare la tua sottoscrizione.
    \n" + +#: ../listsub.c:91 +msgid "Go back..." +msgstr "Indietro..." + +#: ../mainmenu.c:23 +msgid "Basic commands" +msgstr "Comandi base" + +#: ../mainmenu.c:32 +msgid "List known rooms" +msgstr "Mostra le stanze conosciute" + +#: ../mainmenu.c:34 +msgid "Where can I go from here?" +msgstr "Dove posso andare da qui?" + +#: ../mainmenu.c:39 ../roomops.c:646 +msgid "Goto next room" +msgstr "Vai alla Prossima Stanza" + +#: ../mainmenu.c:42 +msgid "...with unread messages" +msgstr "... contenente messaggi non letti" + +#: ../mainmenu.c:47 +msgid "Skip to next room" +msgstr "Salta alla prossima stanza" + +#: ../mainmenu.c:50 +msgid "(come back here later)" +msgstr "(torna più tardi)" + +#: ../mainmenu.c:57 ../roomops.c:450 +msgid "Ungoto" +msgstr "Stanza Precedente" + +#: ../mainmenu.c:60 +#, c-format +msgid "(oops! Back to %s)" +msgstr "(oops! Torna a %s)" + +#: ../mainmenu.c:68 ../roomops.c:459 +msgid "Read new messages" +msgstr "Leggi i nuovi messaggi" + +#: ../mainmenu.c:71 +msgid "...in this room" +msgstr "... in questa stanza" + +#: ../mainmenu.c:76 ../roomops.c:559 +msgid "Read all messages" +msgstr "leggi tutti i messaggi" + +#: ../mainmenu.c:79 +msgid "...old and new" +msgstr "...vecchi e nuovo" + +#: ../mainmenu.c:84 ../roomops.c:621 +msgid "Enter a message" +msgstr "Componi un messaggio" + +#: ../mainmenu.c:87 +msgid "(post in this room)" +msgstr "(scrivi in questa stanza)" + +#: ../mainmenu.c:94 +msgid "Summary page" +msgstr "Sommario" + +#: ../mainmenu.c:97 +msgid "Summary of my account" +msgstr "Sommario del mio account" + +#: ../mainmenu.c:102 +msgid "User list" +msgstr "Utenti" + +#: ../mainmenu.c:105 +msgid "(all registered users)" +msgstr "(tutti gli utenti registrati)" + +#: ../mainmenu.c:113 +msgid "Bye!" +msgstr "Ciao!" + +#: ../mainmenu.c:122 +msgid "Your info" +msgstr "Le tue Informazioni" + +#: ../mainmenu.c:127 +msgid "Change your preferences and settings" +msgstr "Modifica le tue preferenze e impostazioni" + +#: ../mainmenu.c:132 +msgid "Update your contact information" +msgstr "Aggiorna i tuoi dati personali" + +#: ../mainmenu.c:142 +msgid "Enter your 'bio'" +msgstr "Inserisci la tua biografia" + +#: ../mainmenu.c:147 +msgid "Edit your online photo" +msgstr "Modifica la tua foto on line" + +#: ../mainmenu.c:154 +msgid "Advanced room commands" +msgstr "Comandi di stanza avanzati" + +#: ../mainmenu.c:160 +msgid "Edit or delete this room" +msgstr "Cancella o modifica questa stanza" + +#: ../mainmenu.c:166 +msgid "Go to a 'hidden' room" +msgstr "Entra in una stanza \"nascosta\"" + +#: ../mainmenu.c:171 ../roomops.c:1942 +msgid "Create a new room" +msgstr "Crea una nuova stanza" + +#: ../mainmenu.c:176 +#, c-format +msgid "Zap (forget) this room (%s)" +msgstr "Dimentica questa stanza (%s)" + +#: ../mainmenu.c:181 +msgid "List all forgotten rooms" +msgstr "Mostra tutte le stanze dimenticate" + +#: ../mainmenu.c:200 +msgid "System Administration Menu" +msgstr "Menu di amministrazione di sistema" + +#: ../mainmenu.c:209 +msgid "Global Configuration" +msgstr "Configurazione globale" + +#: ../mainmenu.c:214 +msgid "Edit site-wide configuration" +msgstr "Modifica la configurazione per tutto il sito" + +#: ../mainmenu.c:219 +msgid "Domain names and Internet mail configuration" +msgstr "Configurazione dei nomi di dominio e della posta internet" + +#: ../mainmenu.c:224 +msgid "Configure replication with other Citadel servers" +msgstr "Configura la replicazione con altri server Citadel" + +#: ../mainmenu.c:231 +msgid "User account management" +msgstr "Gestione account utenti" + +#: ../mainmenu.c:236 +msgid "Add, change, delete user accounts" +msgstr "Aggiungi, modifica, cancella degli account di utenti" + +#: ../mainmenu.c:246 +msgid "Rooms and Floors" +msgstr "Stanze e piani" + +#: ../mainmenu.c:251 +msgid "Add, change, or delete floors" +msgstr "Aggiungi, modifica o cancella i piani" + +#: ../mainmenu.c:273 +msgid "Enter a server command" +msgstr "inserisci un comando per il server" + +#: ../mainmenu.c:282 +msgid "" +"This screen allows you to enter Citadel server commands which are not " +"supported by WebCit. If you do not know what that means, then this screen " +"will not be of much use to you." +msgstr "" +"Questa schermata ti permette di inviare comandi al server non supportati da " +"WebCit. Se non sai cosa significhi, allora questa schermata non ti " +"sarà di molto aiuto." + +#: ../mainmenu.c:289 +msgid "Enter command:" +msgstr "Inserisci il comando:" + +#: ../mainmenu.c:292 +msgid "Command input (if requesting SEND_LISTING transfer mode):" +msgstr "Input del comando (se si richiede un modo di traferimento SEND_LISTING):" + +#: ../mainmenu.c:296 +#, c-format +msgid "Detected host header is %s://%s" +msgstr "L'intestazione dell'host rilevata è %s://%s" + +#: ../mainmenu.c:298 +msgid "Send command" +msgstr "Invia il comando" + +#: ../mainmenu.c:327 +msgid "Server command results" +msgstr "Risultato del comando impartito al Server" + +#: ../messages.c:444 +msgid " (work)" +msgstr "(lavoro)" + +#: ../messages.c:446 +msgid " (home)" +msgstr "(casa)" + +#: ../messages.c:448 +msgid " (cell)" +msgstr "(cellulare)" + +#: ../messages.c:459 ../vcard_edit.c:252 +msgid "Address:" +msgstr "Indirizzo:" + +#: ../messages.c:519 +msgid "Telephone:" +msgstr "Telefono:" + +#: ../messages.c:524 +msgid "E-mail:" +msgstr "E-mail:" + +#: ../messages.c:632 ../messages.c:1229 +msgid "ERROR:" +msgstr "ERRORE:" + +#: ../messages.c:655 ../messages.c:932 ../messages.c:1238 ../messages.c:1341 +msgid "unexpected end of message" +msgstr "Fine del messaggio inaspettata" + +#: ../messages.c:668 ../messages.c:1250 +msgid "from " +msgstr "da" + +#: ../messages.c:696 ../messages.c:1266 +msgid "in " +msgstr "in" + +#: ../messages.c:717 ../messages.c:1287 +msgid "to " +msgstr "a" + +#: ../messages.c:770 +msgid "View" +msgstr "Vedi" + +#: ../messages.c:772 +msgid "Download" +msgstr "Scarica" + +#: ../messages.c:819 ../messages.c:2851 +msgid "CC:" +msgstr "CC:" + +#: ../messages.c:827 ../messages.c:1323 +msgid "Subject:" +msgstr "Oggetto:" + +#: ../messages.c:851 ../rss.c:28 +msgid "Reply" +msgstr "Rispondi" + +#: ../messages.c:866 +msgid "ReplyQuoted" +msgstr "Rispondi con cronistoria" + +#: ../messages.c:883 +msgid "ReplyAll" +msgstr "Rispondi A Tutti" + +#: ../messages.c:891 +msgid "Forward" +msgstr "Inoltra" + +#: ../messages.c:898 ../messages.c:3101 +msgid "Move" +msgstr "Sposta" + +#: ../messages.c:903 +msgid "Delete this message?" +msgstr "Cancellare questo messaggio?" + +#: ../messages.c:909 +msgid "Headers" +msgstr "Intestazione" + +#: ../messages.c:914 +msgid "Print" +msgstr "Stampa" + +#: ../messages.c:1025 +#, c-format +msgid "I don't know how to display %s" +msgstr "Non so come mostrare %s" + +#: ../messages.c:1060 ../messages.c:1587 +msgid "edit" +msgstr "Modifica" + +#: ../messages.c:1550 ../messages.c:1859 +msgid "(no subject)" +msgstr "(nessun oggetto)" + +#: ../messages.c:1678 +msgid "(no name)" +msgstr "(nessun nome)" + +#: ../messages.c:1730 +msgid "This address book is empty." +msgstr "Questa lista contatti è vuota" + +#: ../messages.c:2156 +msgid "No new messages." +msgstr "Nessun nuovo messaggio" + +#: ../messages.c:2158 +msgid "No old messages." +msgstr "Nessun vecchio messaggio." + +#: ../messages.c:2160 +msgid "No messages here." +msgstr "Nessun messaggio." + +#: ../messages.c:2278 +msgid "Sender" +msgstr "Mittente" + +#: ../messages.c:2280 +msgid "Date" +msgstr "Data" + +#: ../messages.c:2295 +msgid "Click on any note to edit it." +msgstr "Clicca su una nota per modificarla." + +#: ../messages.c:2398 +msgid "Reading #" +msgstr "Numero di letture" + +#: ../messages.c:2451 +#, c-format +msgid "of %d messages." +msgstr "di %d messaggi." + +#: ../messages.c:2635 +#, c-format +msgid "Cancelled. Message was not posted." +msgstr "Cancellato. Il messaggio non è stato inviato." + +#: ../messages.c:2641 +#, c-format +msgid "Automatically cancelled because you have already saved this message." +msgstr "Cancellato automaticamente, hai già salvato questo messaggio." + +#: ../messages.c:2660 +#, c-format +msgid "Message has been sent.\n" +msgstr "Il messaggio è stato inviato.\n" + +#: ../messages.c:2663 +#, c-format +msgid "Message has been posted.\n" +msgstr "Il messaggio è stato postato.\n" + +#: ../messages.c:2797 +msgid " from " +msgstr "da" + +#: ../messages.c:2807 +msgid " in " +msgstr "in" + +#: ../messages.c:2840 +msgid "To:" +msgstr "A:" + +#: ../messages.c:2862 +msgid "BCC:" +msgstr "BCC:" + +#: ../messages.c:2880 +msgid "Subject (optional):" +msgstr "Oggetto (opzionale):" + +#: ../messages.c:2889 ../messages.c:3010 ../paging.c:57 +msgid "Send message" +msgstr "Invia il messaggio" + +#: ../messages.c:2891 ../messages.c:3012 +msgid "Post message" +msgstr "Posta il messaggio" + +#: ../messages.c:2907 +msgid "--- forwarded message ---" +msgstr "--- messaggio inoltrato ---" + +#: ../messages.c:2987 +msgid "Attachments:" +msgstr "Allegati:" + +#: ../messages.c:3002 +msgid "Attach file:" +msgstr "Allega file:" + +#: ../messages.c:3005 ../roomops.c:1477 ../roomops.c:1507 +msgid "Add" +msgstr "Aggiungi" + +#: ../messages.c:3074 +msgid "Confirm move of message" +msgstr "Conferma lo spostamento del messaggio" + +#: ../messages.c:3081 +msgid "Move this message to:" +msgstr "Sposta questo messaggio in:" + +#: ../messages.c:3127 +#, c-format +msgid "The message was not moved." +msgstr "Il messaggio non è stato spostato" + +#: ../netconf.c:68 ../netconf.c:183 +msgid "Add a new node" +msgstr "Aggiungi un nuovo nodo" + +#: ../netconf.c:75 ../netconf.c:129 ../siteconfig.c:112 +#, c-format +msgid "Node name" +msgstr "Nome del nodo" + +#: ../netconf.c:77 ../netconf.c:133 +msgid "Shared secret" +msgstr "Segreto condiviso" + +#: ../netconf.c:79 ../netconf.c:137 +msgid "Host or IP address" +msgstr "Nome dell'host o indirizzo IP" + +#: ../netconf.c:81 ../netconf.c:141 +msgid "Port number" +msgstr "Numero di porta" + +#: ../netconf.c:84 +msgid "Add node" +msgstr "Aggiungi un nodo" + +#: ../netconf.c:110 +msgid "Edit node configuration for " +msgstr "Modifica la configurazione del nodo per" + +#: ../netconf.c:176 +msgid "Network configuration" +msgstr "Configurazione di rete" + +#: ../netconf.c:189 +msgid "Currently configured nodes" +msgstr "Nodi configurati" + +#: ../netconf.c:204 +msgid "(Edit)" +msgstr "(Modifica)" + +#: ../netconf.c:229 +msgid "Confirm delete" +msgstr "Conferma la cancellazione" + +#: ../netconf.c:236 +msgid "Are you sure you want to delete " +msgstr "Sei sicuro di voler cancellare?" + +#: ../netconf.c:243 +msgid "Yes" +msgstr "Si" + +#: ../netconf.c:246 +msgid "No" +msgstr "No" + +#: ../netconf.c:309 +msgid "Back to menu" +msgstr "Torna al menu" + +#: ../notes.c:126 +msgid "An error has occurred." +msgstr "E' avvenuto un errore." + +#: ../paging.c:24 +msgid "Send instant message" +msgstr "Invia un Messaggio Istantaneo" + +#: ../paging.c:33 +msgid "Send an instant message to: " +msgstr "Invia un Messaggio istantaneo a:" + +#: ../paging.c:49 +msgid "Enter message text:" +msgstr "Inserisci il testo del messaggio:" + +#: ../paging.c:89 +msgid "Message was not sent." +msgstr "Il Messaggio non è stato spedito." + +#: ../paging.c:99 +msgid "Message has been sent to " +msgstr "Il Messaggio è stato spedito a" + +#: ../paging.c:110 +msgid "[ close window ]" +msgstr "[ chiudi la finestra ]" + +#: ../paging.c:170 +msgid "" +"You have one or more instant messages waiting, but the Citadel Instant " +"Messenger window failed to open. This is probably because you have a popup " +"blocker installed. Please configure your popup blocker to allow popups from " +"this site if you wish to receive instant messages." +msgstr "" +"Hai uno o più messaggi in coda che aspettano di essere letti, ma la finestra " +"per i Messaggi Istantanei di Citadel non può essere aperta. La causa può " +"essere un popup blocker installato nel tuo browser. Per favore, se vuoi " +"ricevere Messaggi Istantanei, configura il tuo popup blocker in modo da " +"permettere i popup da questo sito." + +#: ../paging.c:309 ../paging.c:471 +msgid "An error occurred while setting up the chat socket." +msgstr "Si è verificato un errore durante la creazione della connessione per la chat." + +#: ../paging.c:336 +msgid "Now exiting chat mode." +msgstr "Uscita dalla modalità chat." + +#: ../paging.c:507 +msgid "Send" +msgstr "Invia" + +#: ../paging.c:508 +msgid "Help" +msgstr "Aiuto" + +#: ../paging.c:509 +msgid "List users" +msgstr "Mostra gli utenti" + +#: ../preferences.c:205 +msgid "Preferences and settings" +msgstr "Preferenze e impostazioni" + +#: ../preferences.c:226 +msgid "Room list view" +msgstr "Vista della lista delle stanze" + +#: ../preferences.c:232 +msgid "Tree (folders) view" +msgstr "Vista ad albero (cartelle)" + +#: ../preferences.c:238 +msgid "Table (rooms) view" +msgstr "Vista a tabella (stanze)" + +#: ../preferences.c:249 +msgid "Calendar hour format" +msgstr "Formato dell'ora nel calendario" + +#: ../preferences.c:255 +msgid "12 hour (am/pm)" +msgstr "12 ore (am/pm)" + +#: ../preferences.c:261 +msgid "24 hour" +msgstr "24 ore" + +#: ../preferences.c:272 +msgid "Calendar day view begins at:" +msgstr "La vista giornaliera del calendario inizia il:" + +#: ../preferences.c:301 +msgid "Calendar day view ends at:" +msgstr "La vista giornaliera del calendario finisce il:" + +#: ../preferences.c:330 +msgid "Attach signature to email messages?" +msgstr "Allega la firma ai messaggi email?" + +#: ../preferences.c:348 +msgid "No signature" +msgstr "Nessuna firma" + +#: ../preferences.c:354 +msgid "Use this signature:" +msgstr "Usa questa firma:" + +#: ../preferences.c:378 +msgid "Default character set for email headers:" +msgstr "Set di caratteri di default per le intestazioni delle email:" + +#: ../preferences.c:388 +msgid "Change" +msgstr "Cambia" + +#: ../preferences.c:407 +msgid "Cancelled. No settings were changed." +msgstr "Attività cancellata. Nessuna impostazione è stata cambiata." + +#: ../roomops.c:19 +msgid "Bulletin Board" +msgstr "Forum" + +#: ../roomops.c:20 +msgid "Mail Folder" +msgstr "Cartella di Posta" + +#: ../roomops.c:21 +msgid "Address Book" +msgstr "Contatti" + +#: ../roomops.c:23 +msgid "Task List" +msgstr "Lista delle Attività" + +#: ../roomops.c:24 +msgid "Notes List" +msgstr "Lista delle Note" + +#: ../roomops.c:25 +msgid "Wiki" +msgstr "Wiki" + +#: ../roomops.c:26 +msgid "Calendar List" +msgstr "Lista Calendario" + +#: ../roomops.c:258 +msgid "Zapped (forgotten) rooms" +msgstr "Stanze zappate (dimenticate)" + +#: ../roomops.c:264 +msgid "Click on any room to un-zap it and goto that room.\n" +msgstr "Clicca su una stanza per dezapparla ed entrarci.\n" + +#: ../roomops.c:358 +msgid "View as:" +msgstr "Vedi come:" + +#: ../roomops.c:429 +#, c-format +msgid "%d new of %d messages" +msgstr "%d nuovi messaggi su %d totali" + +#: ../roomops.c:473 +msgid "View contacts" +msgstr "Vista contatti" + +#: ../roomops.c:484 +msgid "Day view" +msgstr "Vista giornaliera" + +#: ../roomops.c:493 +msgid "Month view" +msgstr "Vista mensile" + +#: ../roomops.c:504 +msgid "Calendar list" +msgstr "Lista dei Calendari" + +#: ../roomops.c:515 +msgid "View tasks" +msgstr "Mostra le Attività" + +#: ../roomops.c:526 +msgid "View notes" +msgstr "Mostra le note" + +#: ../roomops.c:537 +msgid "View message list" +msgstr "Vedi la lista dei messaggi" + +#: ../roomops.c:548 +msgid "Wiki home" +msgstr "Home Page del Wiki" + +#: ../roomops.c:573 +msgid "Add new contact" +msgstr "Aggiungi un nuovo contatto" + +#: ../roomops.c:583 +msgid "Add new event" +msgstr "Aggiungi un nuovo evento" + +#: ../roomops.c:592 +msgid "Add new task" +msgstr "Aggiungi una nuova Attività" + +#: ../roomops.c:601 +msgid "Add new note" +msgstr "Aggiungi una nuova nota" + +#: ../roomops.c:612 +msgid "Edit this page" +msgstr "Modifica questa pagina" + +#: ../roomops.c:634 +msgid "Leave all messages marked as unread, go to next room with unread messages" +msgstr "" +"Lascia tutti i messaggi marcati come non letti, passa alla stanza successiva " +"con messaggi non letti." + +#: ../roomops.c:635 +msgid "Skip this room" +msgstr "Salta questa stanza" + +#: ../roomops.c:645 +msgid "Mark all messages as read, go to next room with unread messages" +msgstr "" +"Marca tutti i messaggi come letti, vai alla prossima stanza con messaggi non " +"letti" + +#: ../roomops.c:1018 +msgid "Configuration" +msgstr "Configurazione" + +#: ../roomops.c:1034 +msgid "Message expire policy" +msgstr "Politica di cancellazione dei messaggi" + +#: ../roomops.c:1050 +msgid "Access controls" +msgstr "Controllo Accessi" + +#: ../roomops.c:1066 +msgid "Sharing" +msgstr "Condivisione" + +#: ../roomops.c:1082 +msgid "Mailing list service" +msgstr "Servizio Mailing List" + +#: ../roomops.c:1104 +msgid "Are you sure you want to delete this room?" +msgstr "Sicuro di voler cancellare questa stanza?" + +#: ../roomops.c:1106 +msgid "Delete this room" +msgstr "Cancella questa stanza" + +#: ../roomops.c:1109 +msgid "Set or change the icon for this room's banner" +msgstr "Imposta o modifica l'icona per il banner di questa stanza" + +#: ../roomops.c:1112 +msgid "Edit this room's Info file" +msgstr "Modifica il file di Informazioni di questa stanza" + +#: ../roomops.c:1121 ../roomops.c:1954 +msgid "Name of room: " +msgstr "Nome delle stanza:" + +#: ../roomops.c:1128 ../roomops.c:1958 +msgid "Resides on floor: " +msgstr "Appartiene al piano:" + +#: ../roomops.c:1142 ../roomops.c:2000 +msgid "Type of room:" +msgstr "TIpo di stanza:" + +#: ../roomops.c:1149 +msgid "Public room" +msgstr "Stanza pubblica" + +#: ../roomops.c:1157 +msgid "Private - guess name" +msgstr "Privato - indovina il nome" + +#: ../roomops.c:1164 +msgid "Private - require password:" +msgstr "Privato - richiede la password" + +#: ../roomops.c:1174 ../roomops.c:2031 +msgid "Private - invitation only" +msgstr "Privato - solo su invito" + +#: ../roomops.c:1178 +msgid "If private, cause current users to forget room" +msgstr "Se impostato come privato, l'utente corrente dimenticherà la stanza" + +#: ../roomops.c:1186 +msgid "Preferred users only" +msgstr "Solo utenti preferiti" + +#: ../roomops.c:1192 +msgid "Read-only room" +msgstr "Stanza in sola lettura" + +#: ../roomops.c:1199 +msgid "File directory room" +msgstr "Stanza direttorio di file" + +#: ../roomops.c:1202 +msgid "Directory name: " +msgstr "Nome del direttorio:" + +#: ../roomops.c:1210 +msgid "Uploading allowed" +msgstr "Upload permesso" + +#: ../roomops.c:1216 +msgid "Downloading allowed" +msgstr "Download permesso" + +#: ../roomops.c:1222 +msgid "Visible directory" +msgstr "Direttorio visibile" + +#: ../roomops.c:1231 +msgid "Network shared room" +msgstr "Stanza condivisa in rete" + +#: ../roomops.c:1237 +msgid "Permanent (does not auto-purge)" +msgstr "Permanente (non si auto cancella)" + +#: ../roomops.c:1242 +msgid "Anonymous messages" +msgstr "Messaggio anonimo" + +#: ../roomops.c:1250 +msgid "No anonymous messages" +msgstr "Nessun messaggio anonimo" + +#: ../roomops.c:1256 +msgid "All messages are anonymous" +msgstr "Tutti i messaggi sono anonimi" + +#: ../roomops.c:1262 +msgid "Prompt user when entering messages" +msgstr "Notifica l'utente quando si sta digitando il messaggio" + +#: ../roomops.c:1268 +msgid "Room aide: " +msgstr "Amministratore della stanza: " + +#: ../roomops.c:1340 +msgid "Shared with" +msgstr "Condivisa con" + +#: ../roomops.c:1343 +msgid "Not shared with" +msgstr "Non condivisa con" + +#: ../roomops.c:1348 ../roomops.c:1393 +msgid "Remote node name" +msgstr "nome del nodo remoto" + +#: ../roomops.c:1350 ../roomops.c:1395 +msgid "Remote room name" +msgstr "Nome della stanza remota" + +#: ../roomops.c:1352 ../roomops.c:1397 +msgid "Actions" +msgstr "Azioni" + +#: ../roomops.c:1385 +msgid "Unshare" +msgstr "Elimina condivisione" + +#: ../roomops.c:1422 +msgid "Share" +msgstr "Condividi" + +#: ../roomops.c:1430 +msgid "Notes:" +msgstr "note:" + +#: ../roomops.c:1431 +msgid "" +"When sharing a room, it must be shared from both ends. Adding a node to the " +"'shared' list sends messages out, but in order to receive messages, the " +"other nodes must be configured to send messages out to your system as well. " +"
  • If the remote room name is blank, it is assumed that the room name is " +"identical on the remote node.
  • If the remote room name is different, the " +"remote node must also configure the name of the room here.
    \n" +msgstr "" +"La condivisione di una stanza deve essere effettuata in tutti i server in " +"cui è presente. Aggiungendo un nodo alla lista di condivisioni fa in modo " +"che il messaggio venga inviato, ma per ricevere, anche il nuovo nodo deve " +"essere configurato per inviare i messaggi al primo.
  • Se il nome remoto " +"della stanza è vuoto, è implicito che il nome della stanza remota sarà lo " +"stesso.
  • Se il nome remoto è diverso, si deve configurare anche il nodo " +"della stanza iniziale.
    \n" + +#: ../roomops.c:1452 +msgid "" +"The contents of this room are being mailed as individual messages " +"to the following list recipients:

    \n" +msgstr "" +"I contenuti di questa stanza verranno inviati come messaggi " +"individuali alla seguente lista di destinatari:

    \n" + +#: ../roomops.c:1469 ../roomops.c:1499 +msgid "(remove)" +msgstr "(rimuovi)" + +#: ../roomops.c:1482 +msgid "" +"The contents of this room are being mailed in digest form to the " +"following list recipients:

    \n" +msgstr "" +"I contenuti di questa stanza saranno inviati come selezione di " +"messaggi alla seguente lista di destinatari

    \n" + +#: ../roomops.c:1513 +msgid "This room is configured to allow self-service subscribe/unsubscribe requests." +msgstr "" +"Questa stanza è configurate per permettere la sottoscrizione/cancellazione " +"automatica degli utenti." + +#: ../roomops.c:1516 +msgid "Click to disable." +msgstr "Clicca per disabilitare." + +#: ../roomops.c:1518 +msgid "The URL for subscribe/unsubscribe is: " +msgstr "L'indirizzo per sottoscriversi/cancellarsi dalla stanza è:" + +#: ../roomops.c:1524 +msgid "" +"This room is not configured to allow self-service subscribe/" +"unsubscribe requests." +msgstr "" +"Questa stanza non è stata configurata per permettere la " +"sottoscrizione/cancellazione automatica degli utenti." + +#: ../roomops.c:1528 +msgid "Click to enable." +msgstr "Clicca per abilitare." + +#: ../roomops.c:1557 +msgid "Message expire policy for this room" +msgstr "Politica di cancellazione dei messaggi per questa stanza" + +#: ../roomops.c:1563 +msgid "Use the default policy for this floor" +msgstr "Usa la politica di default per questo piano" + +#: ../roomops.c:1567 ../roomops.c:1594 ../siteconfig.c:501 ../siteconfig.c:526 +#, c-format +msgid "Never automatically expire messages" +msgstr "Non permettere ai messaggi di auto cancellarsi" + +#: ../roomops.c:1571 ../roomops.c:1598 ../siteconfig.c:505 ../siteconfig.c:530 +#, c-format +msgid "Expire by message count" +msgstr "Cancella per numero di messaggi" + +#: ../roomops.c:1575 ../roomops.c:1602 ../siteconfig.c:509 ../siteconfig.c:534 +#, c-format +msgid "Expire by message age" +msgstr "Elimina per età del messaggio" + +#: ../roomops.c:1577 ../roomops.c:1604 ../siteconfig.c:511 ../siteconfig.c:536 +#, c-format +msgid "Number of messages or days: " +msgstr "Numero di messaggi o giorni:" + +#: ../roomops.c:1584 +msgid "Message expire policy for this floor" +msgstr "Politica di cancellazione messaggi per questo piano" + +#: ../roomops.c:1590 +msgid "Use the system default" +msgstr "Usa il default di sistema" + +#: ../roomops.c:1665 ../roomops.c:3037 +msgid "Cancelled. Changes were not saved." +msgstr "Attività Cancellata.Le modifiche non sono state salvate." + +#: ../roomops.c:1804 +msgid "Your changes have been saved." +msgstr "Le tue modifiche sono state salvate." + +#: ../roomops.c:1836 +#, c-format +msgid "User %s kicked out of room %s.\n" +msgstr "L'utente %s è stato espulso dalla stanza %s.\n" + +#: ../roomops.c:1850 +#, c-format +msgid "User %s invited to room %s.\n" +msgstr "L'utente %s è stato invitato nella stanza %s.\n" + +#: ../roomops.c:1878 +msgid "" +"The users listed below have access to this room. To remove a user from the " +"access list, select the user name from the list and click 'Kick'." +msgstr "" +"Gli utenti mostrati sotto hanno accesso a questa stanza. Per rimuovere un " +"utente dalla lista degli accessi, selezionalo e clicca 'Espelli'." + +#: ../roomops.c:1898 +msgid "Kick" +msgstr "Espelli" + +#: ../roomops.c:1902 +msgid "" +"To grant another user access to this room, enter the user name in the box " +"below and click 'Invite'." +msgstr "" +"Per permettere a un altro utente l'accesso a questa stanza, inserisci il suo " +"nome utente e clicca 'Invita'." + +#: ../roomops.c:1908 +msgid "Invite:" +msgstr "Invita:" + +#: ../roomops.c:1913 +msgid "Invite" +msgstr "Invita" + +#: ../roomops.c:1977 +msgid "Default view for room: " +msgstr "Vista di default della stanza:" + +#: ../roomops.c:2009 +msgid "Public (automatically appears to everyone)" +msgstr "Pubblica (Appare automaticamente a tutti gli utenti)" + +#: ../roomops.c:2016 +msgid "Private - hidden (accessible to anyone who knows its name)" +msgstr "Privata - nascosta (Accessibile solo a chi ne conosce il nome)" + +#: ../roomops.c:2023 +msgid "Private - require password: " +msgstr "Privata - richiede password" + +#: ../roomops.c:2039 +msgid "Personal (mailbox for you only)" +msgstr "Personale (cassetta della posta solo per te)" + +#: ../roomops.c:2044 +msgid "Create new room" +msgstr "Crea una nuova stanza" + +#: ../roomops.c:2112 +msgid "Cancelled. No new room was created." +msgstr "Attività Cancellata.Nessuna nuova stanza è stata creata." + +#: ../roomops.c:2155 +msgid "Go to a hidden room" +msgstr "Vai a una stanza segreta" + +#: ../roomops.c:2166 +msgid "" +"If you know the name of a hidden (guess-name) or passworded room, you can " +"enter that room by typing its name below. Once you gain access to a private " +"room, it will appear in your regular room listings so you don't have to keep " +"returning here." +msgstr "" +"Se conosci il nome di una stanza nascosta (indovina il nome) o protetta da " +"password, puoi digitarlo qui sotto per accedervi. Una volta che hai " +"l'accesso a una stanza privata, comparirà nella tua lista di stanze, così " +"non dovrai ripetere questo passaggio." + +#: ../roomops.c:2178 +msgid "Enter room name:" +msgstr "Inserisci il nome della stanza:" + +#: ../roomops.c:2185 +msgid "Enter room password:" +msgstr "Inserisci la password della stanza:" + +#: ../roomops.c:2194 +msgid "Go there" +msgstr "Entra nella stanza" + +#: ../roomops.c:2247 +msgid "Zap (forget/unsubscribe) the current room" +msgstr "Zap (dimentica/cancella la tua sottoscrizione) questa stanza" + +#: ../roomops.c:2252 +#, c-format +msgid "" +"If you select this option, %s will disappear from your room list. " +"Is this what you wish to do?
    \n" +msgstr "" +"Se selezioni questa opzione, %s scomparirà dalla tua lista delle " +"stanze, vuoi farlo davvero?

    \n" + +#: ../roomops.c:2257 +msgid "Zap this room" +msgstr "Zap questa stanza" + +#: ../roomops.c:2987 ../roomops.c:2993 +msgid "Room list" +msgstr "Lista delle stanze" + +#: ../roomops.c:2990 +msgid "Folder list" +msgstr "Lista delle cartelle" + +#: ../rss.c:34 +msgid "Email" +msgstr "Email" + +#: ../rss.c:73 +msgid "Not logged in" +msgstr "Non autenticato" + +#: ../rss.c:92 +msgid "Error retrieving RSS feed: couldn't find messages\n" +msgstr "Errore nella ricezione del RSS: non riesco a trovare dei messaggi
    \n" + +#: ../siteconfig.c:38 +msgid "Site configuration" +msgstr "Configurazione del sito" + +#: ../siteconfig.c:61 +msgid "General" +msgstr "Generale" + +#: ../siteconfig.c:62 +msgid "Access" +msgstr "Accesso" + +#: ../siteconfig.c:63 +msgid "Network" +msgstr "Rete" + +#: ../siteconfig.c:64 +msgid "Tuning" +msgstr "Rifiniture" + +#: ../siteconfig.c:65 +msgid "Directory" +msgstr "Direttorio" + +#: ../siteconfig.c:66 +msgid "Auto-purger" +msgstr "Eliminatore automatico" + +#: ../siteconfig.c:67 +msgid "Indexing/Journaling" +msgstr "Indicizza" + +#: ../siteconfig.c:71 +msgid "General site configuration items" +msgstr "Oggetti di configurazione generali del sito" + +#: ../siteconfig.c:75 +msgid "Access controls and site policy settings" +msgstr "Controlli di accesso e impostazioni delle politiche del sito" + +#: ../siteconfig.c:79 +msgid "Network services" +msgstr "Servizi di rete" + +#: ../siteconfig.c:80 ../siteconfig.c:90 +msgid "" +"Changes made on this screen will not take effect until you restart the " +"Citadel server." +msgstr "" +"I cambiamenti in questa schemata non avranno effetto finchè non si riavvia " +"il server Citadel." + +#: ../siteconfig.c:85 +msgid "Advanced server fine-tuning controls" +msgstr "Controlli avanzati per la configurazione delle rifiniture " + +#: ../siteconfig.c:89 +msgid "Configure the LDAP connector for Citadel" +msgstr "Configura il connettore LDAP per Citadel" + +#: ../siteconfig.c:95 +msgid "Configure automatic expiry of old messages" +msgstr "Configura la cancellazione automatica dei vecchi messaggi" + +#: ../siteconfig.c:96 +msgid "These settings may be overridden on a per-floor or per-room basis." +msgstr "" +"Queste impostazioni possono essere escluse da impostazioni specifiche alla " +"stanza o al piano." + +#: ../siteconfig.c:100 +msgid "Indexing and Journaling" +msgstr "Indicizzazione" + +#: ../siteconfig.c:101 +msgid "Warning: these facilities are resource intensive." +msgstr "Attenzione: queste caratteristiche richiedono molte risorse." + +#: ../siteconfig.c:119 +#, c-format +msgid "Fully qualified domain name" +msgstr "Nome di dominio completo" + +#: ../siteconfig.c:126 +#, c-format +msgid "Human-readable node name" +msgstr "Nome del nodo leggibile da umani" + +#: ../siteconfig.c:133 +#, c-format +msgid "Telephone number" +msgstr "Numero di telefono" + +#: ../siteconfig.c:140 +#, c-format +msgid "Automatically grant room-aide status to users who create private rooms" +msgstr "" +"Imposta automaticamente lo stato di aide per la stanza agli utenti che " +"creano stanze private" + +#: ../siteconfig.c:148 +#, c-format +msgid "Server connection idle timeout (in seconds)" +msgstr "Timeout della connessione per il server in attesa (in secondi)" + +#: ../siteconfig.c:155 +#, c-format +msgid "Initial access level for new users" +msgstr "Livello di accesso iniziale per i nuovi utenti" + +#: ../siteconfig.c:169 +#, c-format +msgid "Require registration for new users" +msgstr "Richiedi la registrazione per i nuovo utenti" + +#: ../siteconfig.c:177 +#, c-format +msgid "Quarantine messages from problem users" +msgstr "Poni in quarantena i messaggi da utenti con problemi" + +#: ../siteconfig.c:185 +#, c-format +msgid "Name of quarantine room" +msgstr "Nome della stanza di quarantena" + +#: ../siteconfig.c:192 +#, c-format +msgid "Paginator prompt (for text mode clients)" +msgstr "Richiamo di impaginazione (per i client solo testo)" + +#: ../siteconfig.c:199 +#, c-format +msgid "Restrict access to Internet mail" +msgstr "Restringi l'accesso alla posta internet" + +#: ../siteconfig.c:207 +#, c-format +msgid "Geographic location of this system" +msgstr "Località geografica di questo server" + +#: ../siteconfig.c:214 +#, c-format +msgid "Name of system administrator" +msgstr "Nome dell'amministratore di sistema" + +#: ../siteconfig.c:221 +#, c-format +msgid "Maximum concurrent sessions (0 = no limit)" +msgstr "Numero massimo di sessioni concorrenti (0 = nessun limite)" + +#: ../siteconfig.c:228 +#, c-format +msgid "Default user purge time (days)" +msgstr "Tempo di eliminazione di default degli utenti (in giorni)" + +#: ../siteconfig.c:235 +#, c-format +msgid "Default room purge time (days)" +msgstr "Tempo di eliminazioni di default delle stanze (in giorni)" + +#: ../siteconfig.c:242 +#, c-format +msgid "Name of room to log pages" +msgstr "Nome delle stanze per il log delle pagine" + +#: ../siteconfig.c:249 +#, c-format +msgid "Access level required to create rooms" +msgstr "Livello di accesso richiesto per creare le stanze" + +#: ../siteconfig.c:263 +#, c-format +msgid "Maximum message length" +msgstr "Massima lunghezza dei messaggi" + +#: ../siteconfig.c:270 +#, c-format +msgid "Minimum number of worker threads" +msgstr "Numero minimo di discussioni attive" + +#: ../siteconfig.c:277 +#, c-format +msgid "Maximum number of worker threads" +msgstr "Massimo numero di discussioni attive" + +#: ../siteconfig.c:284 +#, c-format +msgid "POP3 listener port (-1 to disable)" +msgstr "Porta POP3 (-1 per disabilitare)" + +#: ../siteconfig.c:291 +#, c-format +msgid "SMTP MTA port (-1 to disable)" +msgstr "Porta SMTP MTA (-1 per disabilitare)" + +#: ../siteconfig.c:298 +#, c-format +msgid "Correct forged From: lines during authenticated SMTP" +msgstr "Correggi le linee From: forgiate durante una sessione SMTP autenticata" + +#: ../siteconfig.c:306 +#, c-format +msgid "Allow aides to zap (forget) rooms" +msgstr "Permetti agli amministratori di dimenticare le stanze" + +#: ../siteconfig.c:314 +#, c-format +msgid "IMAP listener port (-1 to disable)" +msgstr "Porta IMAP (-1 per disabilitare)" + +#: ../siteconfig.c:321 +#, c-format +msgid "Network run frequency (in seconds)" +msgstr "Velocità della rete (in secondi)" + +#: ../siteconfig.c:328 +#, c-format +msgid "Disable self-service user account creation" +msgstr "Disabilita l'autocreazione degli account utente" + +#: ../siteconfig.c:336 +#, c-format +msgid "Hour to run database auto-purge" +msgstr "Ora in cui lanciare la pulizia del database" + +#: ../siteconfig.c:352 +#, c-format +msgid "Host name of LDAP server (blank to disable)" +msgstr "Nome del server LDAP (vuoto per disabilitare)" + +#: ../siteconfig.c:359 +#, c-format +msgid "Port number of LDAP server (blank to disable)" +msgstr "Nuero di porta del server LDAP (vuoto per disabilitare)" + +#: ../siteconfig.c:366 +#, c-format +msgid "Base DN" +msgstr "DN di base" + +#: ../siteconfig.c:373 +#, c-format +msgid "Bind DN" +msgstr "DN bind" + +#: ../siteconfig.c:380 +#, c-format +msgid "Password for bind DN" +msgstr "Password per il DN bind" + +#: ../siteconfig.c:388 +#, c-format +msgid "Server IP address (0.0.0.0 for 'any')" +msgstr "Indirizzo ip del server (0.0.0.0 per 'qualsiasi')" + +#: ../siteconfig.c:395 +#, c-format +msgid "SMTP MSA port (-1 to disable)" +msgstr "Porta SMTP MSA (-1 per disabilitare)" + +#: ../siteconfig.c:402 +#, c-format +msgid "IMAP over SSL port (-1 to disable)" +msgstr "Porta IMAP SSL (-1 per disabiliare)" + +#: ../siteconfig.c:409 +#, c-format +msgid "POP3 over SSL port (-1 to disable)" +msgstr "Porta POP3 SSL (-1 per disabilitare)" + +#: ../siteconfig.c:416 +#, c-format +msgid "SMTP over SSL port (-1 to disable)" +msgstr "Porta SMTP SSL (-1 per disabilitare)" + +#: ../siteconfig.c:423 +#, c-format +msgid "Enable full text index" +msgstr "Abilita l'indicizzazione completa dei testi" + +#: ../siteconfig.c:431 +#, c-format +msgid "Automatically delete committed database logs" +msgstr "Cancella automaticamente i log del database approvati" + +#: ../siteconfig.c:439 +#, c-format +msgid "Instantly expunge deleted messages in IMAP" +msgstr "Elimina automaticamente i messaggi cancellati nelle cartelle IMAP" + +#: ../siteconfig.c:447 +#, c-format +msgid "Allow unauthenticated SMTP clients to spoof this site's domains" +msgstr "Permetti ai client SMTP non autenticati lo spoofing dei domini del server" + +#: ../siteconfig.c:455 +#, c-format +msgid "Perform journaling of email messages" +msgstr "Esegui l'indicizzazione delle email" + +#: ../siteconfig.c:463 +#, c-format +msgid "Perform journaling of non-email messages" +msgstr "Esegui l'indicizzazione dei messaggi non-email" + +#: ../siteconfig.c:471 +#, c-format +msgid "Email destination of journalized messages" +msgstr "Email di destinazione dei messaggi indicizzati" + +#: ../siteconfig.c:497 +#, c-format +msgid "Default message expire policy for public rooms" +msgstr "Politica di default per la cancellazione delle stanze publiche" + +#: ../siteconfig.c:518 +#, c-format +msgid "Default message expire policy for private mailboxes" +msgstr "Politica di default per la cancellazione delle cassette postali private" + +#: ../siteconfig.c:522 +#, c-format +msgid "Same policy as public rooms" +msgstr "Stessa politica delle stanze private" + +#: ../siteconfig.c:644 +msgid "Your system configuration has been updated." +msgstr "La configurazione del tuo sistema è stata aggiornata" + +#: ../subst.c:216 +msgid "ERROR: could not open template " +msgstr "ERRORE non riesco ad aprire il template" + +#: ../summary.c:35 +msgid "(nothing)" +msgstr "(nulla)" + +#: ../summary.c:50 +msgid "Messages" +msgstr "Messaggi" + +#: ../summary.c:87 +msgid "Who's online now" +msgstr "Chi è online adesso?" + +#: ../summary.c:122 +msgid "(None)" +msgstr "(Nessuno)" + +#: ../summary.c:135 +msgid "(This server does not support task lists)" +msgstr "(Questo server non supporta la lista delle operazioni)" + +#: ../summary.c:151 +msgid "Today on your calendar" +msgstr "Oggi nel tuo calendario" + +#: ../summary.c:164 +msgid "(Nothing)" +msgstr "(Nulla)" + +#: ../summary.c:176 +msgid "(This server does not support calendars)" +msgstr "(Questo server non supporta i calendari)" + +#: ../summary.c:188 +msgid "About this server" +msgstr "A proposito di questo server" + +#: ../summary.c:192 +#, c-format +msgid "" +"You are connected to %s, running %s with %s, and located in %s. Your system " +"administrator is %s." +msgstr "" +"Sei connesso a %s, %s è in esecuzione con %s e localizzato in %s. Il tuo " +"amministratore di sistema è %s." + +#: ../summary.c:259 +#, c-format +msgid "Summary page for %s" +msgstr "Pagina riassuntiva per %s" + +#: ../sysmsgs.c:40 +#, c-format +msgid "Edit %s" +msgstr "Modifica %s" + +#: ../sysmsgs.c:44 +#, c-format +msgid "" +"Enter %s below. Text is formatted to the reader's screen width. To defeat " +"the formatting, indent a line at least one space." +msgstr "" +"Inserisci %s qui sotto. Il testo viene formattato dalla larghezza dello " +"schermo del lettore. Per non seguire la formattazione, indentare la linea di " +"almeno uno spazio." + +#: ../sysmsgs.c:79 +#, c-format +msgid "Cancelled. %s was not saved." +msgstr "Attività cancellata. %s non è stato salvato." + +#: ../sysmsgs.c:98 +#, c-format +msgid "%s has been saved." +msgstr "%s è stato salvato." + +#: ../useredit.c:31 +msgid "Edit or delete users" +msgstr "Modifica o cancella gli utenti" + +#: ../useredit.c:40 +msgid "Add users" +msgstr "Aggiungi utenti" + +#: ../useredit.c:43 +msgid "" +"To create a new user account, enter the desired user name in the box below " +"and click 'Create'." +msgstr "" +"Per creare un nuovo account utente, inserisci il nome utente desiderato " +"nella casella riportata sotto e clicca 'Crea'." + +#: ../useredit.c:48 +msgid "New user: " +msgstr "Nuovo utente:" + +#: ../useredit.c:51 +msgid "Create" +msgstr "Crea" + +#: ../useredit.c:57 +msgid "Edit or Delete users" +msgstr "Modifica o cancella gli utenti" + +#: ../useredit.c:60 +msgid "" +"To edit an existing user account, select the user name from the list and " +"click 'Edit'." +msgstr "" +"Per modificare un utente esistente, seleziona il suo nome dalla lista e " +"clicca 'Modifica'." + +#: ../useredit.c:83 +msgid "Edit configuration" +msgstr "Modifica la configurazione" + +#: ../useredit.c:84 +msgid "Edit address book entry" +msgstr "Modifica il contatto" + +#: ../useredit.c:86 +msgid "Delete user" +msgstr "Cancella l'utente" + +#: ../useredit.c:86 +msgid "Delete this user?" +msgstr "Cancellare questo utente?" + +#: ../useredit.c:204 +msgid "An error occurred while trying to create or edit this address book entry." +msgstr "" +"E' avvenuto un errore durante la creazione o la cancellazione di questa voce " +"della rubrica dei contatti" + +#: ../useredit.c:283 +msgid "Edit user account: " +msgstr "Modifica l'account dell'utente:" + +#: ../useredit.c:303 +msgid "Password" +msgstr "Password" + +#: ../useredit.c:310 +msgid "Permission to send Internet mail" +msgstr "Permesso di inviare email a internet" + +#: ../useredit.c:319 +msgid "Number of logins" +msgstr "Numero di login" + +#: ../useredit.c:326 +msgid "Messages submitted" +msgstr "Numero di Messaggi" + +#: ../useredit.c:333 +msgid "Access level" +msgstr "Livello di accesso" + +#: ../useredit.c:347 +msgid "User ID number" +msgstr "Numero indentificativo" + +#: ../useredit.c:355 +msgid "Date and time of last login" +msgstr "Data e giorno dell'ultimo accesso" + +#: ../useredit.c:370 +msgid "Auto-purge after this many days" +msgstr "Auto elimina dopo questo numero di giorni" + +#: ../useredit.c:402 +msgid "Changes were not saved." +msgstr "I cambiamento non sono stati salvati." + +#: ../useredit.c:486 +#, c-format +msgid "A new user has been created." +msgstr "E' stato creato un nuovo utente." + +#: ../userlist.c:48 +#, c-format +msgid "User list for %s" +msgstr "Lista utenti per %s" + +#: ../userlist.c:66 +msgid "User Name" +msgstr "Nome Utente" + +#: ../userlist.c:67 +msgid "Number" +msgstr "Numero" + +#: ../userlist.c:68 +msgid "Access Level" +msgstr "Livello di Accesso" + +#: ../userlist.c:69 +msgid "Last Login" +msgstr "Ultimo Login" + +#: ../userlist.c:70 +msgid "Total Logins" +msgstr "Login Totali" + +#: ../userlist.c:71 +msgid "Total Posts" +msgstr "Messaggi Totali" + +#: ../userlist.c:129 +msgid "User profile" +msgstr "Profilo utente" + +#: ../userlist.c:165 +#, c-format +msgid "Click here to send an instant message to %s" +msgstr "Clicca qui per inviare un messaggio istantaneo a %s" + +#: ../vcard_edit.c:184 +msgid "Edit contact information" +msgstr "Modifica le informazioni del contatto" + +#: ../vcard_edit.c:200 +msgid "Prefix" +msgstr "Prefisso" + +#: ../vcard_edit.c:200 +msgid "First" +msgstr "Nome" + +#: ../vcard_edit.c:200 +msgid "Middle" +msgstr "Secondo nome" + +#: ../vcard_edit.c:200 +msgid "Last" +msgstr "Cognome" + +#: ../vcard_edit.c:200 +msgid "Suffix" +msgstr "Suffisso" + +#: ../vcard_edit.c:221 +msgid "Display name:" +msgstr "Nome da mostrare:" + +#: ../vcard_edit.c:228 +msgid "Title:" +msgstr "Titolo:" + +#: ../vcard_edit.c:235 +msgid "Organization:" +msgstr "Organizzazione:" + +#: ../vcard_edit.c:246 +msgid "PO box:" +msgstr "Presso:" + +#: ../vcard_edit.c:262 +msgid "City:" +msgstr "Città:" + +#: ../vcard_edit.c:268 +msgid "State:" +msgstr "Provincia:" + +#: ../vcard_edit.c:274 +msgid "ZIP code:" +msgstr "C.A.P.:" + +#: ../vcard_edit.c:280 +msgid "Country:" +msgstr "Nazione:" + +#: ../vcard_edit.c:290 +msgid "Home telephone:" +msgstr "Telefono di casa:" + +#: ../vcard_edit.c:296 +msgid "Work telephone:" +msgstr "Telefono di lavoro:" + +#: ../vcard_edit.c:307 +msgid "Primary Internet e-mail address" +msgstr "Indirizzo email principale" + +#: ../vcard_edit.c:314 +msgid "Internet e-mail aliases" +msgstr "Alias degli indirizzi email esterni" + +#: ../webcit.c:685 +#, c-format +msgid "An error occurred while retrieving this part: %s\n" +msgstr "E' avvenuto un errore durante il recupero di questa parte: %s
    \n" + +#: ../webcit.c:771 +msgid "Make this my start page" +msgstr "Imposta questa pagina come principale" + +#: ../webcit.c:790 +msgid "You no longer have a start page selected." +msgstr "Non hai più una pagina principale selezionata." + +#: ../webcit.c:826 +msgid "Authorization Required" +msgstr "Autorizzazione richiesta" + +#: ../webcit.c:828 +#, c-format +msgid "" +"The resource you requested requires a valid username and password. You could " +"not be logged in: %s\n" +msgstr "" +"Questa risorsa richiede un nome utente e una password. Non puoi essere " +"autenticato e accedere a: %s\n" + +#: ../webcit.c:1247 +#, c-format +msgid "" +"You are connected to a Citadel server running Citadel %d.%02d. \n" +"In order to run this version of WebCit you must also have Citadel %d.%02d or " +"newer.\n" +"\n" +"\n" +msgstr "" +"Sei collegato a un server Citadel con installato Citadel %d.%02d. \n" +"Per poter usare questa versione di WebCit, devi avere Citadel %d.%02d o più " +"recente.\n" +"\n" +"\n" + +#: ../webcit.c:1484 ../webcit.c:1486 +msgid "Room info" +msgstr "Informazioni di stanza" + +#: ../webcit.c:1489 ../webcit.c:1491 +msgid "Your bio" +msgstr "Le tue informazioni personali" + +#: ../webcit.c:1499 +msgid "your photo" +msgstr "La tua foto" + +#: ../webcit.c:1505 +msgid "the icon for this room" +msgstr "l'icona di questa stanza" + +#: ../webcit.c:1519 +msgid "the icon for this floor" +msgstr "L'icona per questo piano" + +#: ../who.c:27 +msgid "User name" +msgstr "Nome utente" + +#: ../who.c:28 +msgid "Room" +msgstr "Stanza" + +#: ../who.c:29 +msgid "From host" +msgstr "Dall'host" + +#: ../who.c:62 +msgid "(kill)" +msgstr "(termina)" + +#: ../who.c:65 +msgid "(edit)" +msgstr "(modifica)" + +#: ../who.c:141 +msgid "Do you really want to kill this session?" +msgstr "Vuoi davvero terminare questa sessione?" + +#: ../who.c:151 +#, c-format +msgid "Users currently on %s" +msgstr "Utenti attualmente su %s" + +#: ../who.c:166 +#, c-format +msgid "" +"Click on a name to read user info. Click on %s to send an instant message " +"to that user." +msgstr "" +"Clicca su un nome per leggere le informazioni utente.Clicca su %s per " +"inviare un messaggio istantaneo a questo utente." + +#: ../who.c:228 +msgid "Edit your session display" +msgstr "Modifica la tua vista della sessione" + +#: ../who.c:232 +msgid "" +"This screen allows you to change the way your session appears in the 'Who is " +"online' listing. To turn off any 'fake' name you've previously set, simply " +"click the appropriate 'change' button without typing anything in the " +"corresponding box. " +msgstr "" +"Questa schermata ti permette di cambiare il modo in cui appare la tua " +"sessione nella lista \"chi è on line\". Per eliminare qualsiasi nome " +"fittizio abbia usato in precedenza, clicca semplicemente sul bottone di " +"\"modifica\" appropriaton senza digitare nulla nella casella corrispondente." + +#: ../who.c:244 +msgid "Room name:" +msgstr "Nome della stanza:" + +#: ../who.c:249 +msgid "Change room name" +msgstr "Cambia il nome della stanza" + +#: ../who.c:253 +msgid "Host name:" +msgstr "Nome dell'host:" + +#: ../who.c:258 +msgid "Change host name" +msgstr "Cambia il nome dell'host" + +#: ../who.c:268 +msgid "Change user name" +msgstr "Cambia nome utente" + +#: ../wiki.c:64 +#, c-format +msgid "There is no room called '%s'." +msgstr "Nessuna stanza col nome '%s'." + +#: ../wiki.c:74 +#, c-format +msgid "'%s' is not a Wiki room." +msgstr "'%s' non è una stanza di tipo Wiki." + +#: ../wiki.c:100 +#, c-format +msgid "There is no page called '%s' here." +msgstr "Nessuna pagina chamata '%s'." + +#: ../wiki.c:102 +msgid "" +"Select the 'Edit this page' link in the room banner if you would like to " +"create this page." +msgstr "Seleziona il collegamento 'Modifica questa pagina' se la vuoi creare." + diff --git a/webcit/po/webcit.pot b/webcit/po/webcit.pot new file mode 100644 index 000000000..7c88b958a --- /dev/null +++ b/webcit/po/webcit.pot @@ -0,0 +1,2728 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR The Citadel Project - http://www.citadel.org +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-02-13 21:49+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../auth.c:23 +msgid "Deleted" +msgstr "" + +#: ../auth.c:24 ../auth.c:72 +msgid "New User" +msgstr "" + +#: ../auth.c:25 +msgid "Problem User" +msgstr "" + +#: ../auth.c:26 +msgid "Local User" +msgstr "" + +#: ../auth.c:27 +msgid "Network User" +msgstr "" + +#: ../auth.c:28 +msgid "Preferred User" +msgstr "" + +#: ../auth.c:29 +msgid "Aide" +msgstr "" + +#: ../auth.c:52 +#, c-format +msgid "" +"
    • If you already have an account on %s, enter your user name " +"and password and click "Login."
    • If you are a new user, " +"enter the name and password you wish to use, and click "New User." " +"
    • Please log off properly when finished.
    • You must use a browser that " +"supports frames and cookies.
    • Also keep in mind that if " +"your browser is configured to block pop-up windows, you will not be able to " +"receive any instant messages.
    " +msgstr "" + +#: ../auth.c:68 ../who.c:263 +msgid "User name:" +msgstr "" + +#: ../auth.c:69 +msgid "Password:" +msgstr "" + +#: ../auth.c:70 +msgid "Language:" +msgstr "" + +#: ../auth.c:71 +msgid "Login" +msgstr "" + +#: ../auth.c:73 ../paging.c:510 +msgid "Exit" +msgstr "" + +#: ../auth.c:75 +#, c-format +msgid "%s - powered by Citadel" +msgstr "" + +#: ../auth.c:166 ../auth.c:534 +msgid "Blank passwords are not allowed." +msgstr "" + +#: ../auth.c:187 +msgid "Your password was not accepted." +msgstr "" + +#: ../auth.c:295 +msgid "" +"This program was unable to connect or stay connected to the Citadel server. " +"Please report this problem to your system administrator." +msgstr "" + +#: ../auth.c:302 +msgid "Log in again" +msgstr "" + +#: ../auth.c:305 +msgid "Close window" +msgstr "" + +#: ../auth.c:326 ../mainmenu.c:241 +msgid "Validate new users" +msgstr "" + +#: ../auth.c:346 +msgid "No users require validation at this time." +msgstr "" + +#: ../auth.c:387 +#, c-format +msgid "Current access level: %d (%s)\n" +msgstr "" + +#: ../auth.c:395 +msgid "Select access level for this user:" +msgstr "" + +#: ../auth.c:458 ../mainmenu.c:137 +msgid "Change your password" +msgstr "" + +#: ../auth.c:487 +msgid "Enter new password:" +msgstr "" + +#: ../auth.c:491 +msgid "Enter it again to confirm:" +msgstr "" + +#: ../auth.c:496 +msgid "Change password" +msgstr "" + +#: ../auth.c:498 ../calendar.c:616 ../event.c:390 ../graphics.c:58 +#: ../iconbar.c:712 ../mainmenu.c:300 ../messages.c:2894 ../messages.c:3015 +#: ../messages.c:3103 ../netconf.c:86 ../netconf.c:149 ../paging.c:58 +#: ../preferences.c:389 ../roomops.c:1285 ../roomops.c:1613 ../roomops.c:2046 +#: ../roomops.c:2195 ../roomops.c:2259 ../siteconfig.c:564 ../sysmsgs.c:59 +#: ../useredit.c:381 ../vcard_edit.c:336 ../who.c:273 +msgid "Cancel" +msgstr "" + +#: ../auth.c:515 +msgid "Cancelled. Password was not changed." +msgstr "" + +#: ../auth.c:526 +msgid "They don't match. Password was not changed." +msgstr "" + +#: ../availability.c:140 +msgid "availability unknown" +msgstr "" + +#: ../availability.c:161 +msgid "free" +msgstr "" + +#: ../availability.c:171 +msgid "BUSY" +msgstr "" + +#: ../calendar.c:24 +msgid "" +"This message contains calendaring/scheduling information, but support for " +"calendars is not available on this particular system. Please ask your " +"system administrator to install a new version of the Citadel web service " +"with calendaring enabled.
    \n" +msgstr "" + +#: ../calendar.c:38 +msgid "" +"Cannot display calendar item. You are seeing this error because your " +"WebCit service has not been installed with calendar support. Please contact " +"your system administrator.
    \n" +msgstr "" + +#: ../calendar.c:50 +msgid "" +"Cannot display to-do item. You are seeing this error because your WebCit " +"service has not been installed with calendar support. Please contact your " +"system administrator.
    \n" +msgstr "" + +#: ../calendar.c:107 +msgid "Meeting invitation" +msgstr "" + +#: ../calendar.c:116 +msgid "Attendee's reply to your invitation" +msgstr "" + +#: ../calendar.c:125 +msgid "Published event" +msgstr "" + +#: ../calendar.c:130 +msgid "This is an unknown type of calendar item." +msgstr "" + +#: ../calendar.c:139 ../calendar.c:560 +msgid "Summary:" +msgstr "" + +#: ../calendar.c:148 +msgid "Location:" +msgstr "" + +#: ../calendar.c:174 +msgid "Date:" +msgstr "" + +#: ../calendar.c:181 +msgid "Starting date/time:" +msgstr "" + +#: ../calendar.c:192 +msgid "Ending date/time:" +msgstr "" + +#: ../calendar.c:201 ../calendar.c:596 +msgid "Description:" +msgstr "" + +#: ../calendar.c:210 +msgid "Attendee:" +msgstr "" + +#: ../calendar.c:250 +#, c-format +msgid "This is an update of '%s' which is already in your calendar." +msgstr "" + +#: ../calendar.c:254 +#, c-format +msgid "This event would conflict with '%s' which is already in your calendar." +msgstr "" + +#: ../calendar.c:259 +msgid "Update:" +msgstr "" + +#: ../calendar.c:260 +msgid "CONFLICT:" +msgstr "" + +#: ../calendar.c:278 +msgid "How would you like to respond to this invitation?" +msgstr "" + +#: ../calendar.c:279 +msgid "Accept" +msgstr "" + +#: ../calendar.c:280 +msgid "Tentative" +msgstr "" + +#: ../calendar.c:281 +msgid "Decline" +msgstr "" + +#: ../calendar.c:305 +msgid "Click Update to accept this reply and update your calendar." +msgstr "" + +#: ../calendar.c:306 +msgid "Update" +msgstr "" + +#: ../calendar.c:307 +msgid "Ignore" +msgstr "" + +#: ../calendar.c:334 +msgid "There was an error parsing this calendar item." +msgstr "" + +#: ../calendar.c:361 +msgid "Respond to meeting request" +msgstr "" + +#: ../calendar.c:380 +msgid "" +"You have accepted this meeting invitation. It has been entered into your " +"calendar." +msgstr "" + +#: ../calendar.c:384 +msgid "" +"You have tentatively accepted this meeting invitation. It has been " +"'pencilled in' to your calendar." +msgstr "" + +#: ../calendar.c:388 +msgid "" +"You have declined this meeting invitation. It has not been entered " +"into your calendar." +msgstr "" + +#: ../calendar.c:393 +msgid "A reply has been sent to the meeting organizer." +msgstr "" + +#: ../calendar.c:403 ../calendar.c:457 +msgid "Return to messages" +msgstr "" + +#: ../calendar.c:422 +msgid "Update your calendar with this RSVP" +msgstr "" + +#: ../calendar.c:441 +msgid "Your calendar has been updated to reflect this RSVP." +msgstr "" + +#: ../calendar.c:443 +msgid "" +"You have chosen to ignore this RSVP. Your calendar has not been " +"updated." +msgstr "" + +#: ../calendar.c:544 +msgid "Edit task" +msgstr "" + +#: ../calendar.c:571 +msgid "Start date:" +msgstr "" + +#: ../calendar.c:584 +msgid "Due date:" +msgstr "" + +#: ../calendar.c:614 ../event.c:387 +msgid "Save" +msgstr "" + +#: ../calendar.c:615 ../event.c:388 ../messages.c:903 ../messages.c:2281 +msgid "Delete" +msgstr "" + +#: ../calendar_tools.c:73 +msgid "Month: " +msgstr "" + +#: ../calendar_tools.c:87 +msgid "Day: " +msgstr "" + +#: ../calendar_tools.c:97 +msgid "Year: " +msgstr "" + +#: ../calendar_tools.c:115 +msgid "Hour: " +msgstr "" + +#: ../calendar_tools.c:135 +msgid "Minute: " +msgstr "" + +#: ../calendar_tools.c:204 +msgid "(status unknown)" +msgstr "" + +#: ../calendar_tools.c:220 +msgid "(needs action)" +msgstr "" + +#: ../calendar_tools.c:223 +msgid "(accepted)" +msgstr "" + +#: ../calendar_tools.c:226 +msgid "(declined)" +msgstr "" + +#: ../calendar_tools.c:229 +msgid "(tenative)" +msgstr "" + +#: ../calendar_tools.c:232 +msgid "(delegated)" +msgstr "" + +#: ../calendar_tools.c:235 +msgid "(completed)" +msgstr "" + +#: ../calendar_tools.c:238 +msgid "(in process)" +msgstr "" + +#: ../calendar_tools.c:241 +msgid "(none)" +msgstr "" + +#: ../calendar_view.c:17 +msgid "The calendar view is not available." +msgstr "" + +#: ../calendar_view.c:24 +msgid "The tasks view is not available." +msgstr "" + +#: ../calendar_view.c:435 +msgid "Week" +msgstr "" + +#: ../calendar_view.c:437 +msgid "Hours" +msgstr "" + +#: ../calendar_view.c:438 ../messages.c:2276 +msgid "Subject" +msgstr "" + +#: ../calendar_view.c:439 ../event.c:164 +msgid "Start" +msgstr "" + +#: ../calendar_view.c:440 ../event.c:218 +msgid "End" +msgstr "" + +#: ../calendar_view.c:930 +msgid "Name of task" +msgstr "" + +#: ../calendar_view.c:932 +msgid "Date due" +msgstr "" + +#: ../event.c:76 ../paging.c:78 +msgid "Add or edit an event" +msgstr "" + +#: ../event.c:142 ../iconbar.c:123 ../iconbar.c:539 +msgid "Summary" +msgstr "" + +#: ../event.c:153 +msgid "Location" +msgstr "" + +#: ../event.c:207 +msgid "All day event" +msgstr "" + +#: ../event.c:246 ../iconbar.c:199 ../iconbar.c:586 +msgid "Notes" +msgstr "" + +#: ../event.c:288 +msgid "Organizer" +msgstr "" + +#: ../event.c:293 +msgid "(you are the organizer)" +msgstr "" + +#: ../event.c:311 +msgid "Show time as:" +msgstr "" + +#: ../event.c:333 +msgid "Free" +msgstr "" + +#: ../event.c:340 +msgid "Busy" +msgstr "" + +#: ../event.c:346 +msgid "Attendees" +msgstr "" + +#: ../event.c:349 +msgid "(One per line)" +msgstr "" + +#: ../event.c:389 +msgid "Check attendee availability" +msgstr "" + +#: ../floors.c:34 +msgid "Add/change/delete floors" +msgstr "" + +#: ../floors.c:51 ../siteconfig.c:49 ../vcard_edit.c:78 ../wiki.c:66 +#: ../wiki.c:76 +msgid "Error" +msgstr "" + +#: ../floors.c:62 +msgid "Floor number" +msgstr "" + +#: ../floors.c:64 +msgid "Floor name" +msgstr "" + +#: ../floors.c:66 +msgid "Number of rooms" +msgstr "" + +#: ../floors.c:68 +msgid "Floor CSS" +msgstr "" + +#: ../floors.c:81 +msgid "(delete floor)" +msgstr "" + +#: ../floors.c:87 +msgid "(edit graphic)" +msgstr "" + +#: ../floors.c:100 +msgid "Change name" +msgstr "" + +#: ../floors.c:113 +msgid "Change CSS" +msgstr "" + +#: ../floors.c:125 +msgid "Create new floor" +msgstr "" + +#: ../floors.c:146 +#, c-format +msgid "Floor has been deleted." +msgstr "" + +#: ../floors.c:169 +#, c-format +msgid "New floor has been created." +msgstr "" + +#: ../graphics.c:27 +msgid "Image upload" +msgstr "" + +#: ../graphics.c:45 +msgid "" +"You can upload any image directly from your computer, as long as it is in " +"GIF format (JPEG, PNG, etc. won't work)." +msgstr "" + +#: ../graphics.c:50 +msgid "Please select a file to upload:" +msgstr "" + +#: ../graphics.c:54 +msgid "Upload" +msgstr "" + +#: ../graphics.c:56 +msgid "Reset form" +msgstr "" + +#: ../graphics.c:74 +msgid "Graphics upload has been cancelled." +msgstr "" + +#: ../graphics.c:81 +msgid "You didn't upload a file." +msgstr "" + +#: ../html2html.c:109 +#, c-format +msgid "realloc() error! couldn't get %d bytes: %s" +msgstr "" + +#: ../iconbar.c:105 ../iconbar.c:391 +msgid "Find out more about Citadel" +msgstr "" + +#: ../iconbar.c:106 ../iconbar.c:392 +msgid "CITADEL" +msgstr "" + +#: ../iconbar.c:110 +msgid "switch to room list" +msgstr "" + +#: ../iconbar.c:116 ../iconbar.c:540 +msgid "Your summary page" +msgstr "" + +#: ../iconbar.c:133 +msgid "Go to your email inbox" +msgstr "" + +#: ../iconbar.c:140 +msgid "Mail" +msgstr "" + +#: ../iconbar.c:158 +msgid "Go to your personal calendar" +msgstr "" + +#: ../iconbar.c:165 ../iconbar.c:603 ../roomops.c:22 +msgid "Calendar" +msgstr "" + +#: ../iconbar.c:175 +msgid "Go to your personal address book" +msgstr "" + +#: ../iconbar.c:182 ../iconbar.c:570 +msgid "Contacts" +msgstr "" + +#: ../iconbar.c:192 +msgid "Go to your personal notes" +msgstr "" + +#: ../iconbar.c:209 +msgid "Go to your personal task list" +msgstr "" + +#: ../iconbar.c:216 ../iconbar.c:618 ../summary.c:109 +msgid "Tasks" +msgstr "" + +#: ../iconbar.c:224 +msgid "List all of your accessible rooms" +msgstr "" + +#: ../iconbar.c:231 ../iconbar.c:634 +msgid "Rooms" +msgstr "" + +#: ../iconbar.c:240 +msgid "See who is online right now" +msgstr "" + +#: ../iconbar.c:247 ../iconbar.c:650 +msgid "Who is online?" +msgstr "" + +#: ../iconbar.c:265 ../iconbar.c:666 +msgid "Chat" +msgstr "" + +#: ../iconbar.c:275 +msgid "Advanced Options Menu: Advanced Room commands, Account Info, and Chat" +msgstr "" + +#: ../iconbar.c:282 +msgid "Advanced" +msgstr "" + +#: ../iconbar.c:292 +msgid "Room and system administration functions" +msgstr "" + +#: ../iconbar.c:299 ../roomops.c:1002 +msgid "Administration" +msgstr "" + +#: ../iconbar.c:307 ../iconbar.c:316 ../iconbar.c:402 ../iconbar.c:411 +#: ../mainmenu.c:110 +msgid "Log off" +msgstr "" + +#: ../iconbar.c:308 ../iconbar.c:403 +msgid "Log off now?" +msgstr "" + +#: ../iconbar.c:326 +msgid "Customize this menu" +msgstr "" + +#: ../iconbar.c:327 +msgid "customize this menu" +msgstr "" + +#: ../iconbar.c:396 +msgid "switch to menu" +msgstr "" + +#: ../iconbar.c:481 +msgid "Customize the icon bar" +msgstr "" + +#: ../iconbar.c:493 +msgid "Display icons as:" +msgstr "" + +#: ../iconbar.c:499 +msgid "pictures and text" +msgstr "" + +#: ../iconbar.c:500 +msgid "pictures only" +msgstr "" + +#: ../iconbar.c:501 +msgid "text only" +msgstr "" + +#: ../iconbar.c:506 +msgid "" +"Select the icons you would like to see displayed in the 'icon bar' menu on " +"the left side of the screen." +msgstr "" + +#: ../iconbar.c:524 +msgid "Site logo" +msgstr "" + +#: ../iconbar.c:525 +msgid "An icon describing this site" +msgstr "" + +#: ../iconbar.c:554 +msgid "Mail (inbox)" +msgstr "" + +#: ../iconbar.c:555 +msgid "A shortcut to your email Inbox" +msgstr "" + +#: ../iconbar.c:571 +msgid "Your personal address book" +msgstr "" + +#: ../iconbar.c:587 +msgid "Your personal notes" +msgstr "" + +#: ../iconbar.c:604 +msgid "A shortcut to your personal calendar" +msgstr "" + +#: ../iconbar.c:619 +msgid "A shortcut to your personal task list" +msgstr "" + +#: ../iconbar.c:635 +msgid "" +"Clicking this icon displays a list of all accessible rooms (or folders) " +"available." +msgstr "" + +#: ../iconbar.c:651 +msgid "Clicking this icon displays a list of all users currently logged in." +msgstr "" + +#: ../iconbar.c:667 +msgid "" +"Clicking this icon enters real-time chat mode with other users in the same " +"room." +msgstr "" + +#: ../iconbar.c:684 +msgid "Advanced options" +msgstr "" + +#: ../iconbar.c:685 +msgid "Access to the complete menu of Citadel functions." +msgstr "" + +#: ../iconbar.c:701 +msgid "Citadel logo" +msgstr "" + +#: ../iconbar.c:702 +msgid "Displays the 'Powered by Citadel' icon" +msgstr "" + +#: ../iconbar.c:711 ../netconf.c:146 ../roomops.c:1284 ../roomops.c:1611 +#: ../siteconfig.c:562 ../sysmsgs.c:57 ../useredit.c:381 ../vcard_edit.c:335 +msgid "Save changes" +msgstr "" + +#: ../iconbar.c:766 +msgid "" +"Your icon bar has been updated. Please select any of its choices to " +"continue." +msgstr "" + +#: ../inetconf.c:38 +msgid "localhost" +msgstr "" + +#: ../inetconf.c:39 +msgid "directory" +msgstr "" + +#: ../inetconf.c:40 +msgid "gatewaydomain" +msgstr "" + +#: ../inetconf.c:41 +msgid "smarthost" +msgstr "" + +#: ../inetconf.c:42 +msgid "rbl" +msgstr "" + +#: ../inetconf.c:43 +msgid "spamassassin" +msgstr "" + +#: ../inetconf.c:45 +msgid "Local host aliases" +msgstr "" + +#: ../inetconf.c:46 +msgid "Directory domains" +msgstr "" + +#: ../inetconf.c:47 +msgid "Gateway domains" +msgstr "" + +#: ../inetconf.c:48 +msgid "Smart hosts" +msgstr "" + +#: ../inetconf.c:49 +msgid "RBL hosts" +msgstr "" + +#: ../inetconf.c:50 +msgid "SpamAssassin hosts" +msgstr "" + +#: ../inetconf.c:52 +msgid "(domains for which this host receives mail)" +msgstr "" + +#: ../inetconf.c:53 +msgid "(domains mapped with the Global Address Book)" +msgstr "" + +#: ../inetconf.c:54 +msgid "(domains whose subdomains match Citadel hosts)" +msgstr "" + +#: ../inetconf.c:55 +msgid "(if present, forward all outbound mail to one of these hosts)" +msgstr "" + +#: ../inetconf.c:56 +msgid "(hosts running a Realtime Blackhole List)" +msgstr "" + +#: ../inetconf.c:57 +msgid "(hosts running the SpamAssassin service)" +msgstr "" + +#: ../inetconf.c:94 +msgid "Internet configuration" +msgstr "" + +#: ../inetconf.c:121 +msgid "Delete this entry?" +msgstr "" + +#: ../inetconf.c:123 ../netconf.c:209 +msgid "(Delete)" +msgstr "" + +#: ../inetconf.c:173 +#, c-format +msgid "%s has been deleted." +msgstr "" + +#: ../listsub.c:44 +msgid "List subscription" +msgstr "" + +#: ../listsub.c:56 +msgid "List subscribe/unsubscribe" +msgstr "" + +#: ../listsub.c:76 +msgid "Confirmation request sent" +msgstr "" + +#: ../listsub.c:78 +#, c-format +msgid "" +"You are subscribing %s to the %s mailing list. The " +"listserver has sent you an e-mail with one additional Web link for you to " +"click on to confirm your subscription. This extra step is for your " +"protection, as it prevents others from being able to subscribe you to lists " +"without your consent.

    Please click on the link which is being e-" +"mailed to you and your subscription will be confirmed.
    \n" +msgstr "" + +#: ../listsub.c:91 +msgid "Go back..." +msgstr "" + +#: ../mainmenu.c:23 +msgid "Basic commands" +msgstr "" + +#: ../mainmenu.c:32 +msgid "List known rooms" +msgstr "" + +#: ../mainmenu.c:34 +msgid "Where can I go from here?" +msgstr "" + +#: ../mainmenu.c:39 ../roomops.c:646 +msgid "Goto next room" +msgstr "" + +#: ../mainmenu.c:42 +msgid "...with unread messages" +msgstr "" + +#: ../mainmenu.c:47 +msgid "Skip to next room" +msgstr "" + +#: ../mainmenu.c:50 +msgid "(come back here later)" +msgstr "" + +#: ../mainmenu.c:57 ../roomops.c:450 +msgid "Ungoto" +msgstr "" + +#: ../mainmenu.c:60 +#, c-format +msgid "(oops! Back to %s)" +msgstr "" + +#: ../mainmenu.c:68 ../roomops.c:459 +msgid "Read new messages" +msgstr "" + +#: ../mainmenu.c:71 +msgid "...in this room" +msgstr "" + +#: ../mainmenu.c:76 ../roomops.c:559 +msgid "Read all messages" +msgstr "" + +#: ../mainmenu.c:79 +msgid "...old and new" +msgstr "" + +#: ../mainmenu.c:84 ../roomops.c:621 +msgid "Enter a message" +msgstr "" + +#: ../mainmenu.c:87 +msgid "(post in this room)" +msgstr "" + +#: ../mainmenu.c:94 +msgid "Summary page" +msgstr "" + +#: ../mainmenu.c:97 +msgid "Summary of my account" +msgstr "" + +#: ../mainmenu.c:102 +msgid "User list" +msgstr "" + +#: ../mainmenu.c:105 +msgid "(all registered users)" +msgstr "" + +#: ../mainmenu.c:113 +msgid "Bye!" +msgstr "" + +#: ../mainmenu.c:122 +msgid "Your info" +msgstr "" + +#: ../mainmenu.c:127 +msgid "Change your preferences and settings" +msgstr "" + +#: ../mainmenu.c:132 +msgid "Update your contact information" +msgstr "" + +#: ../mainmenu.c:142 +msgid "Enter your 'bio'" +msgstr "" + +#: ../mainmenu.c:147 +msgid "Edit your online photo" +msgstr "" + +#: ../mainmenu.c:154 +msgid "Advanced room commands" +msgstr "" + +#: ../mainmenu.c:160 +msgid "Edit or delete this room" +msgstr "" + +#: ../mainmenu.c:166 +msgid "Go to a 'hidden' room" +msgstr "" + +#: ../mainmenu.c:171 ../roomops.c:1942 +msgid "Create a new room" +msgstr "" + +#: ../mainmenu.c:176 +#, c-format +msgid "Zap (forget) this room (%s)" +msgstr "" + +#: ../mainmenu.c:181 +msgid "List all forgotten rooms" +msgstr "" + +#: ../mainmenu.c:200 +msgid "System Administration Menu" +msgstr "" + +#: ../mainmenu.c:209 +msgid "Global Configuration" +msgstr "" + +#: ../mainmenu.c:214 +msgid "Edit site-wide configuration" +msgstr "" + +#: ../mainmenu.c:219 +msgid "Domain names and Internet mail configuration" +msgstr "" + +#: ../mainmenu.c:224 +msgid "Configure replication with other Citadel servers" +msgstr "" + +#: ../mainmenu.c:231 +msgid "User account management" +msgstr "" + +#: ../mainmenu.c:236 +msgid "Add, change, delete user accounts" +msgstr "" + +#: ../mainmenu.c:246 +msgid "Rooms and Floors" +msgstr "" + +#: ../mainmenu.c:251 +msgid "Add, change, or delete floors" +msgstr "" + +#: ../mainmenu.c:273 +msgid "Enter a server command" +msgstr "" + +#: ../mainmenu.c:282 +msgid "" +"This screen allows you to enter Citadel server commands which are not " +"supported by WebCit. If you do not know what that means, then this screen " +"will not be of much use to you." +msgstr "" + +#: ../mainmenu.c:289 +msgid "Enter command:" +msgstr "" + +#: ../mainmenu.c:292 +msgid "Command input (if requesting SEND_LISTING transfer mode):" +msgstr "" + +#: ../mainmenu.c:296 +#, c-format +msgid "Detected host header is %s://%s" +msgstr "" + +#: ../mainmenu.c:298 +msgid "Send command" +msgstr "" + +#: ../mainmenu.c:327 +msgid "Server command results" +msgstr "" + +#: ../messages.c:444 +msgid " (work)" +msgstr "" + +#: ../messages.c:446 +msgid " (home)" +msgstr "" + +#: ../messages.c:448 +msgid " (cell)" +msgstr "" + +#: ../messages.c:459 ../vcard_edit.c:252 +msgid "Address:" +msgstr "" + +#: ../messages.c:519 +msgid "Telephone:" +msgstr "" + +#: ../messages.c:524 +msgid "E-mail:" +msgstr "" + +#: ../messages.c:632 ../messages.c:1229 +msgid "ERROR:" +msgstr "" + +#: ../messages.c:655 ../messages.c:932 ../messages.c:1238 ../messages.c:1341 +msgid "unexpected end of message" +msgstr "" + +#: ../messages.c:668 ../messages.c:1250 +msgid "from " +msgstr "" + +#: ../messages.c:696 ../messages.c:1266 +msgid "in " +msgstr "" + +#: ../messages.c:717 ../messages.c:1287 +msgid "to " +msgstr "" + +#: ../messages.c:770 +msgid "View" +msgstr "" + +#: ../messages.c:772 +msgid "Download" +msgstr "" + +#: ../messages.c:819 ../messages.c:2851 +msgid "CC:" +msgstr "" + +#: ../messages.c:827 ../messages.c:1323 +msgid "Subject:" +msgstr "" + +#: ../messages.c:851 ../rss.c:28 +msgid "Reply" +msgstr "" + +#: ../messages.c:866 +msgid "ReplyQuoted" +msgstr "" + +#: ../messages.c:883 +msgid "ReplyAll" +msgstr "" + +#: ../messages.c:891 +msgid "Forward" +msgstr "" + +#: ../messages.c:898 ../messages.c:3101 +msgid "Move" +msgstr "" + +#: ../messages.c:903 +msgid "Delete this message?" +msgstr "" + +#: ../messages.c:909 +msgid "Headers" +msgstr "" + +#: ../messages.c:914 +msgid "Print" +msgstr "" + +#: ../messages.c:1025 +#, c-format +msgid "I don't know how to display %s" +msgstr "" + +#: ../messages.c:1060 ../messages.c:1587 +msgid "edit" +msgstr "" + +#: ../messages.c:1550 ../messages.c:1859 +msgid "(no subject)" +msgstr "" + +#: ../messages.c:1678 +msgid "(no name)" +msgstr "" + +#: ../messages.c:1730 +msgid "This address book is empty." +msgstr "" + +#: ../messages.c:2156 +msgid "No new messages." +msgstr "" + +#: ../messages.c:2158 +msgid "No old messages." +msgstr "" + +#: ../messages.c:2160 +msgid "No messages here." +msgstr "" + +#: ../messages.c:2278 +msgid "Sender" +msgstr "" + +#: ../messages.c:2280 +msgid "Date" +msgstr "" + +#: ../messages.c:2295 +msgid "Click on any note to edit it." +msgstr "" + +#: ../messages.c:2398 +msgid "Reading #" +msgstr "" + +#: ../messages.c:2451 +#, c-format +msgid "of %d messages." +msgstr "" + +#: ../messages.c:2635 +#, c-format +msgid "Cancelled. Message was not posted." +msgstr "" + +#: ../messages.c:2641 +#, c-format +msgid "Automatically cancelled because you have already saved this message." +msgstr "" + +#: ../messages.c:2660 +#, c-format +msgid "Message has been sent.\n" +msgstr "" + +#: ../messages.c:2663 +#, c-format +msgid "Message has been posted.\n" +msgstr "" + +#: ../messages.c:2797 +msgid " from " +msgstr "" + +#: ../messages.c:2807 +msgid " in " +msgstr "" + +#: ../messages.c:2840 +msgid "To:" +msgstr "" + +#: ../messages.c:2862 +msgid "BCC:" +msgstr "" + +#: ../messages.c:2880 +msgid "Subject (optional):" +msgstr "" + +#: ../messages.c:2889 ../messages.c:3010 ../paging.c:57 +msgid "Send message" +msgstr "" + +#: ../messages.c:2891 ../messages.c:3012 +msgid "Post message" +msgstr "" + +#: ../messages.c:2907 +msgid "--- forwarded message ---" +msgstr "" + +#: ../messages.c:2987 +msgid "Attachments:" +msgstr "" + +#: ../messages.c:3002 +msgid "Attach file:" +msgstr "" + +#: ../messages.c:3005 ../roomops.c:1477 ../roomops.c:1507 +msgid "Add" +msgstr "" + +#: ../messages.c:3074 +msgid "Confirm move of message" +msgstr "" + +#: ../messages.c:3081 +msgid "Move this message to:" +msgstr "" + +#: ../messages.c:3127 +#, c-format +msgid "The message was not moved." +msgstr "" + +#: ../netconf.c:68 ../netconf.c:183 +msgid "Add a new node" +msgstr "" + +#: ../netconf.c:75 ../netconf.c:129 ../siteconfig.c:112 +#, c-format +msgid "Node name" +msgstr "" + +#: ../netconf.c:77 ../netconf.c:133 +msgid "Shared secret" +msgstr "" + +#: ../netconf.c:79 ../netconf.c:137 +msgid "Host or IP address" +msgstr "" + +#: ../netconf.c:81 ../netconf.c:141 +msgid "Port number" +msgstr "" + +#: ../netconf.c:84 +msgid "Add node" +msgstr "" + +#: ../netconf.c:110 +msgid "Edit node configuration for " +msgstr "" + +#: ../netconf.c:176 +msgid "Network configuration" +msgstr "" + +#: ../netconf.c:189 +msgid "Currently configured nodes" +msgstr "" + +#: ../netconf.c:204 +msgid "(Edit)" +msgstr "" + +#: ../netconf.c:229 +msgid "Confirm delete" +msgstr "" + +#: ../netconf.c:236 +msgid "Are you sure you want to delete " +msgstr "" + +#: ../netconf.c:243 +msgid "Yes" +msgstr "" + +#: ../netconf.c:246 +msgid "No" +msgstr "" + +#: ../netconf.c:309 +msgid "Back to menu" +msgstr "" + +#: ../notes.c:126 +msgid "An error has occurred." +msgstr "" + +#: ../paging.c:24 +msgid "Send instant message" +msgstr "" + +#: ../paging.c:33 +msgid "Send an instant message to: " +msgstr "" + +#: ../paging.c:49 +msgid "Enter message text:" +msgstr "" + +#: ../paging.c:89 +msgid "Message was not sent." +msgstr "" + +#: ../paging.c:99 +msgid "Message has been sent to " +msgstr "" + +#: ../paging.c:110 +msgid "[ close window ]" +msgstr "" + +#: ../paging.c:170 +msgid "" +"You have one or more instant messages waiting, but the Citadel Instant " +"Messenger window failed to open. This is probably because you have a popup " +"blocker installed. Please configure your popup blocker to allow popups from " +"this site if you wish to receive instant messages." +msgstr "" + +#: ../paging.c:309 ../paging.c:471 +msgid "An error occurred while setting up the chat socket." +msgstr "" + +#: ../paging.c:336 +msgid "Now exiting chat mode." +msgstr "" + +#: ../paging.c:507 +msgid "Send" +msgstr "" + +#: ../paging.c:508 +msgid "Help" +msgstr "" + +#: ../paging.c:509 +msgid "List users" +msgstr "" + +#: ../preferences.c:205 +msgid "Preferences and settings" +msgstr "" + +#: ../preferences.c:226 +msgid "Room list view" +msgstr "" + +#: ../preferences.c:232 +msgid "Tree (folders) view" +msgstr "" + +#: ../preferences.c:238 +msgid "Table (rooms) view" +msgstr "" + +#: ../preferences.c:249 +msgid "Calendar hour format" +msgstr "" + +#: ../preferences.c:255 +msgid "12 hour (am/pm)" +msgstr "" + +#: ../preferences.c:261 +msgid "24 hour" +msgstr "" + +#: ../preferences.c:272 +msgid "Calendar day view begins at:" +msgstr "" + +#: ../preferences.c:301 +msgid "Calendar day view ends at:" +msgstr "" + +#: ../preferences.c:330 +msgid "Attach signature to email messages?" +msgstr "" + +#: ../preferences.c:348 +msgid "No signature" +msgstr "" + +#: ../preferences.c:354 +msgid "Use this signature:" +msgstr "" + +#: ../preferences.c:378 +msgid "Default character set for email headers:" +msgstr "" + +#: ../preferences.c:388 +msgid "Change" +msgstr "" + +#: ../preferences.c:407 +msgid "Cancelled. No settings were changed." +msgstr "" + +#: ../roomops.c:19 +msgid "Bulletin Board" +msgstr "" + +#: ../roomops.c:20 +msgid "Mail Folder" +msgstr "" + +#: ../roomops.c:21 +msgid "Address Book" +msgstr "" + +#: ../roomops.c:23 +msgid "Task List" +msgstr "" + +#: ../roomops.c:24 +msgid "Notes List" +msgstr "" + +#: ../roomops.c:25 +msgid "Wiki" +msgstr "" + +#: ../roomops.c:26 +msgid "Calendar List" +msgstr "" + +#: ../roomops.c:258 +msgid "Zapped (forgotten) rooms" +msgstr "" + +#: ../roomops.c:264 +msgid "Click on any room to un-zap it and goto that room.\n" +msgstr "" + +#: ../roomops.c:358 +msgid "View as:" +msgstr "" + +#: ../roomops.c:429 +#, c-format +msgid "%d new of %d messages" +msgstr "" + +#: ../roomops.c:473 +msgid "View contacts" +msgstr "" + +#: ../roomops.c:484 +msgid "Day view" +msgstr "" + +#: ../roomops.c:493 +msgid "Month view" +msgstr "" + +#: ../roomops.c:504 +msgid "Calendar list" +msgstr "" + +#: ../roomops.c:515 +msgid "View tasks" +msgstr "" + +#: ../roomops.c:526 +msgid "View notes" +msgstr "" + +#: ../roomops.c:537 +msgid "View message list" +msgstr "" + +#: ../roomops.c:548 +msgid "Wiki home" +msgstr "" + +#: ../roomops.c:573 +msgid "Add new contact" +msgstr "" + +#: ../roomops.c:583 +msgid "Add new event" +msgstr "" + +#: ../roomops.c:592 +msgid "Add new task" +msgstr "" + +#: ../roomops.c:601 +msgid "Add new note" +msgstr "" + +#: ../roomops.c:612 +msgid "Edit this page" +msgstr "" + +#: ../roomops.c:634 +msgid "" +"Leave all messages marked as unread, go to next room with unread messages" +msgstr "" + +#: ../roomops.c:635 +msgid "Skip this room" +msgstr "" + +#: ../roomops.c:645 +msgid "Mark all messages as read, go to next room with unread messages" +msgstr "" + +#: ../roomops.c:1018 +msgid "Configuration" +msgstr "" + +#: ../roomops.c:1034 +msgid "Message expire policy" +msgstr "" + +#: ../roomops.c:1050 +msgid "Access controls" +msgstr "" + +#: ../roomops.c:1066 +msgid "Sharing" +msgstr "" + +#: ../roomops.c:1082 +msgid "Mailing list service" +msgstr "" + +#: ../roomops.c:1104 +msgid "Are you sure you want to delete this room?" +msgstr "" + +#: ../roomops.c:1106 +msgid "Delete this room" +msgstr "" + +#: ../roomops.c:1109 +msgid "Set or change the icon for this room's banner" +msgstr "" + +#: ../roomops.c:1112 +msgid "Edit this room's Info file" +msgstr "" + +#: ../roomops.c:1121 ../roomops.c:1954 +msgid "Name of room: " +msgstr "" + +#: ../roomops.c:1128 ../roomops.c:1958 +msgid "Resides on floor: " +msgstr "" + +#: ../roomops.c:1142 ../roomops.c:2000 +msgid "Type of room:" +msgstr "" + +#: ../roomops.c:1149 +msgid "Public room" +msgstr "" + +#: ../roomops.c:1157 +msgid "Private - guess name" +msgstr "" + +#: ../roomops.c:1164 +msgid "Private - require password:" +msgstr "" + +#: ../roomops.c:1174 ../roomops.c:2031 +msgid "Private - invitation only" +msgstr "" + +#: ../roomops.c:1178 +msgid "If private, cause current users to forget room" +msgstr "" + +#: ../roomops.c:1186 +msgid "Preferred users only" +msgstr "" + +#: ../roomops.c:1192 +msgid "Read-only room" +msgstr "" + +#: ../roomops.c:1199 +msgid "File directory room" +msgstr "" + +#: ../roomops.c:1202 +msgid "Directory name: " +msgstr "" + +#: ../roomops.c:1210 +msgid "Uploading allowed" +msgstr "" + +#: ../roomops.c:1216 +msgid "Downloading allowed" +msgstr "" + +#: ../roomops.c:1222 +msgid "Visible directory" +msgstr "" + +#: ../roomops.c:1231 +msgid "Network shared room" +msgstr "" + +#: ../roomops.c:1237 +msgid "Permanent (does not auto-purge)" +msgstr "" + +#: ../roomops.c:1242 +msgid "Anonymous messages" +msgstr "" + +#: ../roomops.c:1250 +msgid "No anonymous messages" +msgstr "" + +#: ../roomops.c:1256 +msgid "All messages are anonymous" +msgstr "" + +#: ../roomops.c:1262 +msgid "Prompt user when entering messages" +msgstr "" + +#: ../roomops.c:1268 +msgid "Room aide: " +msgstr "" + +#: ../roomops.c:1340 +msgid "Shared with" +msgstr "" + +#: ../roomops.c:1343 +msgid "Not shared with" +msgstr "" + +#: ../roomops.c:1348 ../roomops.c:1393 +msgid "Remote node name" +msgstr "" + +#: ../roomops.c:1350 ../roomops.c:1395 +msgid "Remote room name" +msgstr "" + +#: ../roomops.c:1352 ../roomops.c:1397 +msgid "Actions" +msgstr "" + +#: ../roomops.c:1385 +msgid "Unshare" +msgstr "" + +#: ../roomops.c:1422 +msgid "Share" +msgstr "" + +#: ../roomops.c:1430 +msgid "Notes:" +msgstr "" + +#: ../roomops.c:1431 +msgid "" +"When sharing a room, it must be shared from both ends. Adding a node to the " +"'shared' list sends messages out, but in order to receive messages, the " +"other nodes must be configured to send messages out to your system as well. " +"
  • If the remote room name is blank, it is assumed that the room name is " +"identical on the remote node.
  • If the remote room name is different, the " +"remote node must also configure the name of the room here.
    \n" +msgstr "" + +#: ../roomops.c:1452 +msgid "" +"The contents of this room are being mailed as individual messages " +"to the following list recipients:

    \n" +msgstr "" + +#: ../roomops.c:1469 ../roomops.c:1499 +msgid "(remove)" +msgstr "" + +#: ../roomops.c:1482 +msgid "" +"The contents of this room are being mailed in digest form to the " +"following list recipients:

    \n" +msgstr "" + +#: ../roomops.c:1513 +msgid "" +"This room is configured to allow self-service subscribe/unsubscribe requests." +msgstr "" + +#: ../roomops.c:1516 +msgid "Click to disable." +msgstr "" + +#: ../roomops.c:1518 +msgid "The URL for subscribe/unsubscribe is: " +msgstr "" + +#: ../roomops.c:1524 +msgid "" +"This room is not configured to allow self-service subscribe/" +"unsubscribe requests." +msgstr "" + +#: ../roomops.c:1528 +msgid "Click to enable." +msgstr "" + +#: ../roomops.c:1557 +msgid "Message expire policy for this room" +msgstr "" + +#: ../roomops.c:1563 +msgid "Use the default policy for this floor" +msgstr "" + +#: ../roomops.c:1567 ../roomops.c:1594 ../siteconfig.c:501 ../siteconfig.c:526 +#, c-format +msgid "Never automatically expire messages" +msgstr "" + +#: ../roomops.c:1571 ../roomops.c:1598 ../siteconfig.c:505 ../siteconfig.c:530 +#, c-format +msgid "Expire by message count" +msgstr "" + +#: ../roomops.c:1575 ../roomops.c:1602 ../siteconfig.c:509 ../siteconfig.c:534 +#, c-format +msgid "Expire by message age" +msgstr "" + +#: ../roomops.c:1577 ../roomops.c:1604 ../siteconfig.c:511 ../siteconfig.c:536 +#, c-format +msgid "Number of messages or days: " +msgstr "" + +#: ../roomops.c:1584 +msgid "Message expire policy for this floor" +msgstr "" + +#: ../roomops.c:1590 +msgid "Use the system default" +msgstr "" + +#: ../roomops.c:1665 ../roomops.c:3037 +msgid "Cancelled. Changes were not saved." +msgstr "" + +#: ../roomops.c:1804 +msgid "Your changes have been saved." +msgstr "" + +#: ../roomops.c:1836 +#, c-format +msgid "User %s kicked out of room %s.\n" +msgstr "" + +#: ../roomops.c:1850 +#, c-format +msgid "User %s invited to room %s.\n" +msgstr "" + +#: ../roomops.c:1878 +msgid "" +"The users listed below have access to this room. To remove a user from the " +"access list, select the user name from the list and click 'Kick'." +msgstr "" + +#: ../roomops.c:1898 +msgid "Kick" +msgstr "" + +#: ../roomops.c:1902 +msgid "" +"To grant another user access to this room, enter the user name in the box " +"below and click 'Invite'." +msgstr "" + +#: ../roomops.c:1908 +msgid "Invite:" +msgstr "" + +#: ../roomops.c:1913 +msgid "Invite" +msgstr "" + +#: ../roomops.c:1977 +msgid "Default view for room: " +msgstr "" + +#: ../roomops.c:2009 +msgid "Public (automatically appears to everyone)" +msgstr "" + +#: ../roomops.c:2016 +msgid "Private - hidden (accessible to anyone who knows its name)" +msgstr "" + +#: ../roomops.c:2023 +msgid "Private - require password: " +msgstr "" + +#: ../roomops.c:2039 +msgid "Personal (mailbox for you only)" +msgstr "" + +#: ../roomops.c:2044 +msgid "Create new room" +msgstr "" + +#: ../roomops.c:2112 +msgid "Cancelled. No new room was created." +msgstr "" + +#: ../roomops.c:2155 +msgid "Go to a hidden room" +msgstr "" + +#: ../roomops.c:2166 +msgid "" +"If you know the name of a hidden (guess-name) or passworded room, you can " +"enter that room by typing its name below. Once you gain access to a private " +"room, it will appear in your regular room listings so you don't have to keep " +"returning here." +msgstr "" + +#: ../roomops.c:2178 +msgid "Enter room name:" +msgstr "" + +#: ../roomops.c:2185 +msgid "Enter room password:" +msgstr "" + +#: ../roomops.c:2194 +msgid "Go there" +msgstr "" + +#: ../roomops.c:2247 +msgid "Zap (forget/unsubscribe) the current room" +msgstr "" + +#: ../roomops.c:2252 +#, c-format +msgid "" +"If you select this option, %s will disappear from your room list. " +"Is this what you wish to do?
    \n" +msgstr "" + +#: ../roomops.c:2257 +msgid "Zap this room" +msgstr "" + +#: ../roomops.c:2987 ../roomops.c:2993 +msgid "Room list" +msgstr "" + +#: ../roomops.c:2990 +msgid "Folder list" +msgstr "" + +#: ../rss.c:34 +msgid "Email" +msgstr "" + +#: ../rss.c:73 +msgid "Not logged in" +msgstr "" + +#: ../rss.c:92 +msgid "Error retrieving RSS feed: couldn't find messages\n" +msgstr "" + +#: ../siteconfig.c:38 +msgid "Site configuration" +msgstr "" + +#: ../siteconfig.c:61 +msgid "General" +msgstr "" + +#: ../siteconfig.c:62 +msgid "Access" +msgstr "" + +#: ../siteconfig.c:63 +msgid "Network" +msgstr "" + +#: ../siteconfig.c:64 +msgid "Tuning" +msgstr "" + +#: ../siteconfig.c:65 +msgid "Directory" +msgstr "" + +#: ../siteconfig.c:66 +msgid "Auto-purger" +msgstr "" + +#: ../siteconfig.c:67 +msgid "Indexing/Journaling" +msgstr "" + +#: ../siteconfig.c:71 +msgid "General site configuration items" +msgstr "" + +#: ../siteconfig.c:75 +msgid "Access controls and site policy settings" +msgstr "" + +#: ../siteconfig.c:79 +msgid "Network services" +msgstr "" + +#: ../siteconfig.c:80 ../siteconfig.c:90 +msgid "" +"Changes made on this screen will not take effect until you restart the " +"Citadel server." +msgstr "" + +#: ../siteconfig.c:85 +msgid "Advanced server fine-tuning controls" +msgstr "" + +#: ../siteconfig.c:89 +msgid "Configure the LDAP connector for Citadel" +msgstr "" + +#: ../siteconfig.c:95 +msgid "Configure automatic expiry of old messages" +msgstr "" + +#: ../siteconfig.c:96 +msgid "These settings may be overridden on a per-floor or per-room basis." +msgstr "" + +#: ../siteconfig.c:100 +msgid "Indexing and Journaling" +msgstr "" + +#: ../siteconfig.c:101 +msgid "Warning: these facilities are resource intensive." +msgstr "" + +#: ../siteconfig.c:119 +#, c-format +msgid "Fully qualified domain name" +msgstr "" + +#: ../siteconfig.c:126 +#, c-format +msgid "Human-readable node name" +msgstr "" + +#: ../siteconfig.c:133 +#, c-format +msgid "Telephone number" +msgstr "" + +#: ../siteconfig.c:140 +#, c-format +msgid "Automatically grant room-aide status to users who create private rooms" +msgstr "" + +#: ../siteconfig.c:148 +#, c-format +msgid "Server connection idle timeout (in seconds)" +msgstr "" + +#: ../siteconfig.c:155 +#, c-format +msgid "Initial access level for new users" +msgstr "" + +#: ../siteconfig.c:169 +#, c-format +msgid "Require registration for new users" +msgstr "" + +#: ../siteconfig.c:177 +#, c-format +msgid "Quarantine messages from problem users" +msgstr "" + +#: ../siteconfig.c:185 +#, c-format +msgid "Name of quarantine room" +msgstr "" + +#: ../siteconfig.c:192 +#, c-format +msgid "Paginator prompt (for text mode clients)" +msgstr "" + +#: ../siteconfig.c:199 +#, c-format +msgid "Restrict access to Internet mail" +msgstr "" + +#: ../siteconfig.c:207 +#, c-format +msgid "Geographic location of this system" +msgstr "" + +#: ../siteconfig.c:214 +#, c-format +msgid "Name of system administrator" +msgstr "" + +#: ../siteconfig.c:221 +#, c-format +msgid "Maximum concurrent sessions (0 = no limit)" +msgstr "" + +#: ../siteconfig.c:228 +#, c-format +msgid "Default user purge time (days)" +msgstr "" + +#: ../siteconfig.c:235 +#, c-format +msgid "Default room purge time (days)" +msgstr "" + +#: ../siteconfig.c:242 +#, c-format +msgid "Name of room to log pages" +msgstr "" + +#: ../siteconfig.c:249 +#, c-format +msgid "Access level required to create rooms" +msgstr "" + +#: ../siteconfig.c:263 +#, c-format +msgid "Maximum message length" +msgstr "" + +#: ../siteconfig.c:270 +#, c-format +msgid "Minimum number of worker threads" +msgstr "" + +#: ../siteconfig.c:277 +#, c-format +msgid "Maximum number of worker threads" +msgstr "" + +#: ../siteconfig.c:284 +#, c-format +msgid "POP3 listener port (-1 to disable)" +msgstr "" + +#: ../siteconfig.c:291 +#, c-format +msgid "SMTP MTA port (-1 to disable)" +msgstr "" + +#: ../siteconfig.c:298 +#, c-format +msgid "Correct forged From: lines during authenticated SMTP" +msgstr "" + +#: ../siteconfig.c:306 +#, c-format +msgid "Allow aides to zap (forget) rooms" +msgstr "" + +#: ../siteconfig.c:314 +#, c-format +msgid "IMAP listener port (-1 to disable)" +msgstr "" + +#: ../siteconfig.c:321 +#, c-format +msgid "Network run frequency (in seconds)" +msgstr "" + +#: ../siteconfig.c:328 +#, c-format +msgid "Disable self-service user account creation" +msgstr "" + +#: ../siteconfig.c:336 +#, c-format +msgid "Hour to run database auto-purge" +msgstr "" + +#: ../siteconfig.c:352 +#, c-format +msgid "Host name of LDAP server (blank to disable)" +msgstr "" + +#: ../siteconfig.c:359 +#, c-format +msgid "Port number of LDAP server (blank to disable)" +msgstr "" + +#: ../siteconfig.c:366 +#, c-format +msgid "Base DN" +msgstr "" + +#: ../siteconfig.c:373 +#, c-format +msgid "Bind DN" +msgstr "" + +#: ../siteconfig.c:380 +#, c-format +msgid "Password for bind DN" +msgstr "" + +#: ../siteconfig.c:388 +#, c-format +msgid "Server IP address (0.0.0.0 for 'any')" +msgstr "" + +#: ../siteconfig.c:395 +#, c-format +msgid "SMTP MSA port (-1 to disable)" +msgstr "" + +#: ../siteconfig.c:402 +#, c-format +msgid "IMAP over SSL port (-1 to disable)" +msgstr "" + +#: ../siteconfig.c:409 +#, c-format +msgid "POP3 over SSL port (-1 to disable)" +msgstr "" + +#: ../siteconfig.c:416 +#, c-format +msgid "SMTP over SSL port (-1 to disable)" +msgstr "" + +#: ../siteconfig.c:423 +#, c-format +msgid "Enable full text index" +msgstr "" + +#: ../siteconfig.c:431 +#, c-format +msgid "Automatically delete committed database logs" +msgstr "" + +#: ../siteconfig.c:439 +#, c-format +msgid "Instantly expunge deleted messages in IMAP" +msgstr "" + +#: ../siteconfig.c:447 +#, c-format +msgid "Allow unauthenticated SMTP clients to spoof this site's domains" +msgstr "" + +#: ../siteconfig.c:455 +#, c-format +msgid "Perform journaling of email messages" +msgstr "" + +#: ../siteconfig.c:463 +#, c-format +msgid "Perform journaling of non-email messages" +msgstr "" + +#: ../siteconfig.c:471 +#, c-format +msgid "Email destination of journalized messages" +msgstr "" + +#: ../siteconfig.c:497 +#, c-format +msgid "Default message expire policy for public rooms" +msgstr "" + +#: ../siteconfig.c:518 +#, c-format +msgid "Default message expire policy for private mailboxes" +msgstr "" + +#: ../siteconfig.c:522 +#, c-format +msgid "Same policy as public rooms" +msgstr "" + +#: ../siteconfig.c:644 +msgid "Your system configuration has been updated." +msgstr "" + +#: ../subst.c:216 +msgid "ERROR: could not open template " +msgstr "" + +#: ../summary.c:35 +msgid "(nothing)" +msgstr "" + +#: ../summary.c:50 +msgid "Messages" +msgstr "" + +#: ../summary.c:87 +msgid "Who's online now" +msgstr "" + +#: ../summary.c:122 +msgid "(None)" +msgstr "" + +#: ../summary.c:135 +msgid "(This server does not support task lists)" +msgstr "" + +#: ../summary.c:151 +msgid "Today on your calendar" +msgstr "" + +#: ../summary.c:164 +msgid "(Nothing)" +msgstr "" + +#: ../summary.c:176 +msgid "(This server does not support calendars)" +msgstr "" + +#: ../summary.c:188 +msgid "About this server" +msgstr "" + +#: ../summary.c:192 +#, c-format +msgid "" +"You are connected to %s, running %s with %s, and located in %s. Your system " +"administrator is %s." +msgstr "" + +#: ../summary.c:259 +#, c-format +msgid "Summary page for %s" +msgstr "" + +#: ../sysmsgs.c:40 +#, c-format +msgid "Edit %s" +msgstr "" + +#: ../sysmsgs.c:44 +#, c-format +msgid "" +"Enter %s below. Text is formatted to the reader's screen width. To defeat " +"the formatting, indent a line at least one space." +msgstr "" + +#: ../sysmsgs.c:79 +#, c-format +msgid "Cancelled. %s was not saved." +msgstr "" + +#: ../sysmsgs.c:98 +#, c-format +msgid "%s has been saved." +msgstr "" + +#: ../useredit.c:31 +msgid "Edit or delete users" +msgstr "" + +#: ../useredit.c:40 +msgid "Add users" +msgstr "" + +#: ../useredit.c:43 +msgid "" +"To create a new user account, enter the desired user name in the box below " +"and click 'Create'." +msgstr "" + +#: ../useredit.c:48 +msgid "New user: " +msgstr "" + +#: ../useredit.c:51 +msgid "Create" +msgstr "" + +#: ../useredit.c:57 +msgid "Edit or Delete users" +msgstr "" + +#: ../useredit.c:60 +msgid "" +"To edit an existing user account, select the user name from the list and " +"click 'Edit'." +msgstr "" + +#: ../useredit.c:83 +msgid "Edit configuration" +msgstr "" + +#: ../useredit.c:84 +msgid "Edit address book entry" +msgstr "" + +#: ../useredit.c:86 +msgid "Delete user" +msgstr "" + +#: ../useredit.c:86 +msgid "Delete this user?" +msgstr "" + +#: ../useredit.c:204 +msgid "" +"An error occurred while trying to create or edit this address book entry." +msgstr "" + +#: ../useredit.c:283 +msgid "Edit user account: " +msgstr "" + +#: ../useredit.c:303 +msgid "Password" +msgstr "" + +#: ../useredit.c:310 +msgid "Permission to send Internet mail" +msgstr "" + +#: ../useredit.c:319 +msgid "Number of logins" +msgstr "" + +#: ../useredit.c:326 +msgid "Messages submitted" +msgstr "" + +#: ../useredit.c:333 +msgid "Access level" +msgstr "" + +#: ../useredit.c:347 +msgid "User ID number" +msgstr "" + +#: ../useredit.c:355 +msgid "Date and time of last login" +msgstr "" + +#: ../useredit.c:370 +msgid "Auto-purge after this many days" +msgstr "" + +#: ../useredit.c:402 +msgid "Changes were not saved." +msgstr "" + +#: ../useredit.c:486 +#, c-format +msgid "A new user has been created." +msgstr "" + +#: ../userlist.c:48 +#, c-format +msgid "User list for %s" +msgstr "" + +#: ../userlist.c:66 +msgid "User Name" +msgstr "" + +#: ../userlist.c:67 +msgid "Number" +msgstr "" + +#: ../userlist.c:68 +msgid "Access Level" +msgstr "" + +#: ../userlist.c:69 +msgid "Last Login" +msgstr "" + +#: ../userlist.c:70 +msgid "Total Logins" +msgstr "" + +#: ../userlist.c:71 +msgid "Total Posts" +msgstr "" + +#: ../userlist.c:129 +msgid "User profile" +msgstr "" + +#: ../userlist.c:165 +#, c-format +msgid "Click here to send an instant message to %s" +msgstr "" + +#: ../vcard_edit.c:184 +msgid "Edit contact information" +msgstr "" + +#: ../vcard_edit.c:200 +msgid "Prefix" +msgstr "" + +#: ../vcard_edit.c:200 +msgid "First" +msgstr "" + +#: ../vcard_edit.c:200 +msgid "Middle" +msgstr "" + +#: ../vcard_edit.c:200 +msgid "Last" +msgstr "" + +#: ../vcard_edit.c:200 +msgid "Suffix" +msgstr "" + +#: ../vcard_edit.c:221 +msgid "Display name:" +msgstr "" + +#: ../vcard_edit.c:228 +msgid "Title:" +msgstr "" + +#: ../vcard_edit.c:235 +msgid "Organization:" +msgstr "" + +#: ../vcard_edit.c:246 +msgid "PO box:" +msgstr "" + +#: ../vcard_edit.c:262 +msgid "City:" +msgstr "" + +#: ../vcard_edit.c:268 +msgid "State:" +msgstr "" + +#: ../vcard_edit.c:274 +msgid "ZIP code:" +msgstr "" + +#: ../vcard_edit.c:280 +msgid "Country:" +msgstr "" + +#: ../vcard_edit.c:290 +msgid "Home telephone:" +msgstr "" + +#: ../vcard_edit.c:296 +msgid "Work telephone:" +msgstr "" + +#: ../vcard_edit.c:307 +msgid "Primary Internet e-mail address" +msgstr "" + +#: ../vcard_edit.c:314 +msgid "Internet e-mail aliases" +msgstr "" + +#: ../webcit.c:685 +#, c-format +msgid "An error occurred while retrieving this part: %s\n" +msgstr "" + +#: ../webcit.c:771 +msgid "Make this my start page" +msgstr "" + +#: ../webcit.c:790 +msgid "You no longer have a start page selected." +msgstr "" + +#: ../webcit.c:826 +msgid "Authorization Required" +msgstr "" + +#: ../webcit.c:828 +#, c-format +msgid "" +"The resource you requested requires a valid username and password. You could " +"not be logged in: %s\n" +msgstr "" + +#: ../webcit.c:1247 +#, c-format +msgid "" +"You are connected to a Citadel server running Citadel %d.%02d. \n" +"In order to run this version of WebCit you must also have Citadel %d.%02d or " +"newer.\n" +"\n" +"\n" +msgstr "" + +#: ../webcit.c:1484 ../webcit.c:1486 +msgid "Room info" +msgstr "" + +#: ../webcit.c:1489 ../webcit.c:1491 +msgid "Your bio" +msgstr "" + +#: ../webcit.c:1499 +msgid "your photo" +msgstr "" + +#: ../webcit.c:1505 +msgid "the icon for this room" +msgstr "" + +#: ../webcit.c:1519 +msgid "the icon for this floor" +msgstr "" + +#: ../who.c:27 +msgid "User name" +msgstr "" + +#: ../who.c:28 +msgid "Room" +msgstr "" + +#: ../who.c:29 +msgid "From host" +msgstr "" + +#: ../who.c:62 +msgid "(kill)" +msgstr "" + +#: ../who.c:65 +msgid "(edit)" +msgstr "" + +#: ../who.c:141 +msgid "Do you really want to kill this session?" +msgstr "" + +#: ../who.c:151 +#, c-format +msgid "Users currently on %s" +msgstr "" + +#: ../who.c:166 +#, c-format +msgid "" +"Click on a name to read user info. Click on %s to send an instant message " +"to that user." +msgstr "" + +#: ../who.c:228 +msgid "Edit your session display" +msgstr "" + +#: ../who.c:232 +msgid "" +"This screen allows you to change the way your session appears in the 'Who is " +"online' listing. To turn off any 'fake' name you've previously set, simply " +"click the appropriate 'change' button without typing anything in the " +"corresponding box. " +msgstr "" + +#: ../who.c:244 +msgid "Room name:" +msgstr "" + +#: ../who.c:249 +msgid "Change room name" +msgstr "" + +#: ../who.c:253 +msgid "Host name:" +msgstr "" + +#: ../who.c:258 +msgid "Change host name" +msgstr "" + +#: ../who.c:268 +msgid "Change user name" +msgstr "" + +#: ../wiki.c:64 +#, c-format +msgid "There is no room called '%s'." +msgstr "" + +#: ../wiki.c:74 +#, c-format +msgid "'%s' is not a Wiki room." +msgstr "" + +#: ../wiki.c:100 +#, c-format +msgid "There is no page called '%s' here." +msgstr "" + +#: ../wiki.c:102 +msgid "" +"Select the 'Edit this page' link in the room banner if you would like to " +"create this page." +msgstr "" diff --git a/webcit/preferences.c b/webcit/preferences.c new file mode 100644 index 000000000..9284ead8b --- /dev/null +++ b/webcit/preferences.c @@ -0,0 +1,428 @@ +/* + * $Id$ + */ +/** + * \defgroup ManagePrefs Manage user preferences with a little help from the Citadel server. + * \ingroup CitadelConfig + * + */ +/*@{*/ +#include "webcit.h" +#include "webserver.h" +#include "groupdav.h" + + +/** + * \brief display preferences dialog + */ +void load_preferences(void) { + char buf[SIZ]; + long msgnum = 0L; + + serv_printf("GOTO %s", USERCONFIGROOM); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') return; + + serv_puts("MSGS ALL|0|1"); + serv_getln(buf, sizeof buf); + if (buf[0] == '8') { + serv_puts("subj|__ WebCit Preferences __"); + serv_puts("000"); + } + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + msgnum = atol(buf); + } + + if (msgnum > 0L) { + serv_printf("MSG0 %ld", msgnum); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + while (serv_getln(buf, sizeof buf), + (strcmp(buf, "text") && strcmp(buf, "000"))) { + } + if (!strcmp(buf, "text")) { + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + if (WC->preferences == NULL) { + WC->preferences = malloc(SIZ); + strcpy(WC->preferences, ""); + } + else { + WC->preferences = realloc( + WC->preferences, + strlen(WC->preferences) + +SIZ + ); + } + strcat(WC->preferences, buf); + strcat(WC->preferences, "\n"); + } + } + } + } + + /** Go back to the room we're supposed to be in */ + serv_printf("GOTO %s", WC->wc_roomname); + serv_getln(buf, sizeof buf); +} + +/** + * \brief Goto the user's configuration room, creating it if necessary. + * \return 0 on success or nonzero upon failure. + */ +int goto_config_room(void) { + char buf[SIZ]; + + serv_printf("GOTO %s", USERCONFIGROOM); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') { /* try to create the config room if not there */ + serv_printf("CRE8 1|%s|4|0", USERCONFIGROOM); + serv_getln(buf, sizeof buf); + serv_printf("GOTO %s", USERCONFIGROOM); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') return(1); + } + return(0); +} + +/** + * \brief save the modifications + */ +void save_preferences(void) { + char buf[SIZ]; + long msgnum = 0L; + + if (goto_config_room() != 0) return; /* oh well. */ + serv_puts("MSGS ALL|0|1"); + serv_getln(buf, sizeof buf); + if (buf[0] == '8') { + serv_puts("subj|__ WebCit Preferences __"); + serv_puts("000"); + } + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + msgnum = atol(buf); + } + + if (msgnum > 0L) { + serv_printf("DELE %ld", msgnum); + serv_getln(buf, sizeof buf); + } + + serv_printf("ENT0 1||0|1|__ WebCit Preferences __|"); + serv_getln(buf, sizeof buf); + if (buf[0] == '4') { + serv_puts(WC->preferences); + serv_puts(""); + serv_puts("000"); + } + + /** Go back to the room we're supposed to be in */ + serv_printf("GOTO %s", WC->wc_roomname); + serv_getln(buf, sizeof buf); +} + +/** + * \brief query the actual setting of key in the citadel database + * \param key config key to query + * \param value value to the key to get + * \param value_len length of the value string + */ +void get_preference(char *key, char *value, size_t value_len) { + int num_prefs; + int i; + char buf[SIZ]; + char thiskey[SIZ]; + + strcpy(value, ""); + + num_prefs = num_tokens(WC->preferences, '\n'); + for (i=0; ipreferences, i, '\n', sizeof buf); + extract_token(thiskey, buf, 0, '|', sizeof thiskey); + if (!strcasecmp(thiskey, key)) { + extract_token(value, buf, 1, '|', value_len); + } + } +} + +/** + * \brief Write a key into the webcit preferences database for this user + * + * \params key key whichs value is to be modified + * \param value value to set + * \param save_to_server 1 = flush all data to the server, 0 = cache it for now + */ +void set_preference(char *key, char *value, int save_to_server) { + int num_prefs; + int i; + char buf[SIZ]; + char thiskey[SIZ]; + char *newprefs = NULL; + + newprefs = malloc(strlen(WC->preferences) + strlen(key) + strlen(value) + 10); + if (newprefs == NULL) return; + strcpy(newprefs, ""); + + num_prefs = num_tokens(WC->preferences, '\n'); + for (i=0; ipreferences, i, '\n', sizeof buf); + if (num_tokens(buf, '|') == 2) { + extract_token(thiskey, buf, 0, '|', sizeof thiskey); + if (strcasecmp(thiskey, key)) { + strcat(newprefs, buf); + strcat(newprefs, "\n"); + } + } + } + + sprintf(&newprefs[strlen(newprefs)], "%s|%s\n", key, value); + free(WC->preferences); + WC->preferences = newprefs; + + if (save_to_server) save_preferences(); +} + + + + +/** + * \brief display form for changing your preferences and settings + */ +void display_preferences(void) +{ + output_headers(1, 1, 2, 0, 0, 0); + char ebuf[300]; + char buf[256]; + char calhourformat[16]; + int i; + + wprintf("
    \n"); + wprintf("
    "); + wprintf("\""); + wprintf(" "); + wprintf(_("Preferences and settings")); + wprintf(""); + offer_start_page(); + wprintf("
    \n"); + wprintf("
    \n" + "
    \n"); + + wprintf("
    " + "
    \n"); + + /** begin form */ + wprintf("
    \n" + "
    \n" + "\n"); + + /** + * Room list view + */ + get_preference("roomlistview", buf, sizeof buf); + wprintf("\n"); + + /** + * Calendar hour format + */ + get_preference("calhourformat", calhourformat, sizeof calhourformat); + if (calhourformat[0] == 0) strcpy(calhourformat, "12"); + wprintf("\n"); + + /** + * Calendar day view -- day start time + */ + get_preference("daystart", buf, sizeof buf); + if (buf[0] == 0) strcpy(buf, "8"); + wprintf("\n"); + + /** + * Calendar day view -- day end time + */ + get_preference("dayend", buf, sizeof buf); + if (buf[0] == 0) strcpy(buf, "17"); + wprintf("\n"); + + /** + * Signature + */ + get_preference("use_sig", buf, sizeof buf); + if (buf[0] == 0) strcpy(buf, "no"); + wprintf("\n"); + + wprintf(" " + ); + + /** Character set to assume is in use for improperly encoded headers */ + get_preference("default_header_charset", buf, sizeof buf); + if (buf[0] == 0) strcpy(buf, "UTF-8"); + wprintf(""); + + /** submit buttons */ + wprintf("
    "); + wprintf(_("Room list view")); + wprintf(""); + + wprintf(""); + wprintf(_("Tree (folders) view")); + wprintf("
    \n"); + + wprintf(""); + wprintf(_("Table (rooms) view")); + wprintf("
    \n"); + + wprintf("
    "); + wprintf(_("Calendar hour format")); + wprintf(""); + + wprintf(""); + wprintf(_("12 hour (am/pm)")); + wprintf("
    \n"); + + wprintf(""); + wprintf(_("24 hour")); + wprintf("
    \n"); + + wprintf("
    "); + wprintf(_("Calendar day view begins at:")); + wprintf(""); + + wprintf("\n"); + wprintf("
    "); + wprintf(_("Calendar day view ends at:")); + wprintf(""); + + wprintf("\n"); + wprintf("
    "); + wprintf(_("Attach signature to email messages?")); + wprintf(""); + + wprintf(" " + ); + + wprintf(""); + wprintf(_("No signature")); + wprintf("
    \n"); + + wprintf(""); + wprintf(_("Use this signature:")); + wprintf("
    " + "
    " + "
    " + ); + + wprintf("
    \n"); + + wprintf("
    "); + wprintf(_("Default character set for email headers:")); + wprintf(""); + wprintf("", buf); + wprintf("
    \n" + "" + " " + "\n", + _("Change"), + _("Cancel") + ); + + /** end form */ + wprintf("
    \n"); + wprintf("
    \n"); + wDumpContent(1); +} + +/** + * \brief Commit new preferences and settings + */ +void set_preferences(void) +{ + char ebuf[300]; + + if (strlen(bstr("change_button")) == 0) { + safestrncpy(WC->ImportantMessage, + _("Cancelled. No settings were changed."), + sizeof WC->ImportantMessage); + display_main_menu(); + return; + } + + /** + * Set the last argument to 1 only for the final setting, so + * we don't send the prefs file to the server repeatedly + */ + set_preference("roomlistview", bstr("roomlistview"), 0); + set_preference("calhourformat", bstr("calhourformat"), 0); + set_preference("use_sig", bstr("use_sig"), 0); + set_preference("daystart", bstr("daystart"), 0); + set_preference("dayend", bstr("dayend"), 0); + set_preference("default_header_charset", bstr("default_header_charset"), 0); + + euid_escapize(ebuf, bstr("signature")); + set_preference("signature", ebuf, 1); + + display_main_menu(); +} + + +/*@}*/ diff --git a/webcit/roomops.c b/webcit/roomops.c new file mode 100644 index 000000000..73eb0d6cb --- /dev/null +++ b/webcit/roomops.c @@ -0,0 +1,3055 @@ +/* + * $Id$ + */ +/** + * \defgroup RoomOps Lots of different room-related operations. + * \ingroup CitadelCommunitacion + */ +/*@{*/ +#include "webcit.h" + +char floorlist[128][SIZ]; /**< list of our floor names */ + +char *viewdefs[8]; /**< the different kinds of available views */ + +/** + * \brief initialize the viewdefs with localized strings + */ +void initialize_viewdefs(void) { + viewdefs[0] = _("Bulletin Board"); + viewdefs[1] = _("Mail Folder"); + viewdefs[2] = _("Address Book"); + viewdefs[3] = _("Calendar"); + viewdefs[4] = _("Task List"); + viewdefs[5] = _("Notes List"); + viewdefs[6] = _("Wiki"); + viewdefs[7] = _("Calendar List"); +} + +/** + * \brief Determine which views are allowed as the default for creating a new room. + * + * \param which_view The view ID being queried. + */ +int is_view_allowed_as_default(int which_view) +{ + switch(which_view) { + case VIEW_BBS: return(1); + case VIEW_MAILBOX: return(1); + case VIEW_ADDRESSBOOK: return(1); + case VIEW_CALENDAR: return(1); + case VIEW_TASKS: return(1); + case VIEW_NOTES: return(1); + case VIEW_WIKI: return(0); /**< because it isn't finished yet */ + case VIEW_CALBRIEF: return(0); + default: return(0); /**< should never get here */ + } +} + + +/** + * \brief load the list of floors + */ +void load_floorlist(void) +{ + int a; + char buf[SIZ]; + + for (a = 0; a < 128; ++a) + floorlist[a][0] = 0; + + serv_puts("LFLR"); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') { + strcpy(floorlist[0], "Main Floor"); + return; + } + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + extract_token(floorlist[extract_int(buf, 0)], buf, 1, '|', sizeof floorlist[0]); + } +} + + +/** + * \brief Free a session's march list + * + * \param wcf Pointer to session being cleared + */ +void free_march_list(struct wcsession *wcf) +{ + struct march *mptr; + + while (wcf->march != NULL) { + mptr = wcf->march->next; + free(wcf->march); + wcf->march = mptr; + } + +} + + + +/** + * \brief remove a room from the march list + */ +void remove_march(char *aaa) +{ + struct march *mptr, *mptr2; + + if (WC->march == NULL) + return; + + if (!strcasecmp(WC->march->march_name, aaa)) { + mptr = WC->march->next; + free(WC->march); + WC->march = mptr; + return; + } + mptr2 = WC->march; + for (mptr = WC->march; mptr != NULL; mptr = mptr->next) { + if (!strcasecmp(mptr->march_name, aaa)) { + mptr2->next = mptr->next; + free(mptr); + mptr = mptr2; + } else { + mptr2 = mptr; + } + } +} + + + + +/** + * \brief display rooms in tree structure??? + * \param rp the roomlist to build a tree from + */ +void room_tree_list(struct roomlisting *rp) +{ + char rmname[64]; + int f; + + if (rp == NULL) { + return; + } + + room_tree_list(rp->lnext); + + strcpy(rmname, rp->rlname); + f = rp->rlflags; + + wprintf(""); + escputs1(rmname, 1, 1); + if ((f & QR_DIRECTORY) && (f & QR_NETWORK)) + wprintf("}"); + else if (f & QR_DIRECTORY) + wprintf("]"); + else if (f & QR_NETWORK) + wprintf(")"); + else + wprintf(">"); + wprintf(" \n"); + + room_tree_list(rp->rnext); + free(rp); +} + + +/** + * \brief Room ordering stuff (compare first by floor, then by order) + * \param r1 first roomlist to compare + * \param r2 second roomlist co compare + * \return are they the same??? + */ +int rordercmp(struct roomlisting *r1, struct roomlisting *r2) +{ + if ((r1 == NULL) && (r2 == NULL)) + return (0); + if (r1 == NULL) + return (-1); + if (r2 == NULL) + return (1); + if (r1->rlfloor < r2->rlfloor) + return (-1); + if (r1->rlfloor > r2->rlfloor) + return (1); + if (r1->rlorder < r2->rlorder) + return (-1); + if (r1->rlorder > r2->rlorder) + return (1); + return (0); +} + + +/** + * \brief Common code for all room listings + * \param variety what??? + */ +void listrms(char *variety) +{ + char buf[SIZ]; + int num_rooms = 0; + + struct roomlisting *rl = NULL; + struct roomlisting *rp; + struct roomlisting *rs; + + + /** Ask the server for a room list */ + serv_puts(variety); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') { + wprintf(" "); + return; + } + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + ++num_rooms; + rp = malloc(sizeof(struct roomlisting)); + extract_token(rp->rlname, buf, 0, '|', sizeof rp->rlname); + rp->rlflags = extract_int(buf, 1); + rp->rlfloor = extract_int(buf, 2); + rp->rlorder = extract_int(buf, 3); + rp->lnext = NULL; + rp->rnext = NULL; + + rs = rl; + if (rl == NULL) { + rl = rp; + } else + while (rp != NULL) { + if (rordercmp(rp, rs) < 0) { + if (rs->lnext == NULL) { + rs->lnext = rp; + rp = NULL; + } else { + rs = rs->lnext; + } + } else { + if (rs->rnext == NULL) { + rs->rnext = rp; + rp = NULL; + } else { + rs = rs->rnext; + } + } + } + } + + room_tree_list(rl); + + /** + * If no rooms were listed, print an nbsp to make the cell + * borders show up anyway. + */ + if (num_rooms == 0) wprintf(" "); +} + + +/** + * \brief list all forgotten rooms + */ +void zapped_list(void) +{ + output_headers(1, 1, 0, 0, 0, 0); + + svprintf("BOXTITLE", WCS_STRING, _("Zapped (forgotten) rooms")); + do_template("beginbox"); + + listrms("LZRM -1"); + + wprintf("

    \n"); + wprintf(_("Click on any room to un-zap it and goto that room.\n")); + do_template("endbox"); + wDumpContent(1); +} + + +/** + * \brief read this room's info file (set v to 1 for verbose mode) + */ +void readinfo(void) +{ + char buf[SIZ]; + + serv_puts("RINF"); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + fmout("CENTER"); + } + else { + wprintf(" "); + } +} + + + + +/** + * \brief Display room banner icon. + * The server doesn't actually + * need the room name, but we supply it in order to + * keep the browser from using a cached icon from + * another room. + */ +void embed_room_graphic(void) { + char buf[SIZ]; + + serv_puts("OIMG _roompic_"); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + wprintf("wc_roomname); + wprintf("\">"); + serv_puts("CLOS"); + serv_getln(buf, sizeof buf); + } + else if (WC->wc_view == VIEW_ADDRESSBOOK) { + wprintf("" + ); + } + else if ( (WC->wc_view == VIEW_CALENDAR) || (WC->wc_view == VIEW_CALBRIEF) ) { + wprintf("" + ); + } + else if (WC->wc_view == VIEW_TASKS) { + wprintf("" + ); + } + else if (WC->wc_view == VIEW_NOTES) { + wprintf("" + ); + } + else if (WC->wc_view == VIEW_MAILBOX) { + wprintf("" + ); + } + else { + wprintf("" + ); + } + +} + + + +/** + * \brief Display the current view and offer an option to change it + */ +void embed_view_o_matic(void) { + int i; + + wprintf("
    \n" + ""); + wprintf(_("View as:")); + wprintf(" " + "
    \n"); +} + + +/** + * \brief view room banner + * \param got what??? + * \param navbar_style + */ +void embed_room_banner(char *got, int navbar_style) { + char buf[256]; + + /** + * We need to have the information returned by a GOTO server command. + * If it isn't supplied, we fake it by issuing our own GOTO. + */ + if (got == NULL) { + serv_printf("GOTO %s", WC->wc_roomname); + serv_getln(buf, sizeof buf); + got = buf; + } + + /** The browser needs some information for its own use */ + wprintf("\n", + WC->wc_is_trash + ); + + /** + * If the user happens to select the "make this my start page" link, + * we want it to remember the URL as a "/dotskip" one instead of + * a "skip" or "gotonext" or something like that. + */ + snprintf(WC->this_page, sizeof(WC->this_page), "dotskip&room=%s", + WC->wc_roomname); + + /** Check for new mail. */ + WC->new_mail = extract_int(&got[4], 9); + WC->wc_view = extract_int(&got[4], 11); + + svprintf("ROOMNAME", WCS_STRING, "%s", WC->wc_roomname); + svprintf("NUMMSGS", WCS_STRING, + _("%d new of %d messages"), + extract_int(&got[4], 1), + extract_int(&got[4], 2) + ); + svcallback("ROOMPIC", embed_room_graphic); + svcallback("ROOMINFO", readinfo); + svcallback("VIEWOMATIC", embed_view_o_matic); + svcallback("START", offer_start_page); + + do_template("roombanner"); + if (navbar_style != navbar_none) { + + wprintf("
    \n" + "\n"); + + + if (navbar_style == navbar_default) wprintf( + "\n", _("Ungoto") + ); + + if ( (navbar_style == navbar_default) && (WC->wc_view == VIEW_BBS) ) { + wprintf( + "\n", _("Read new messages") + ); + } + + if (navbar_style == navbar_default) { + switch(WC->wc_view) { + case VIEW_ADDRESSBOOK: + wprintf( + "\n", _("View contacts") + ); + break; + case VIEW_CALENDAR: + wprintf( + "\n", _("Day view") + ); + wprintf( + "\n", _("Month view") + ); + break; + case VIEW_CALBRIEF: + wprintf( + "\n", _("Calendar list") + ); + break; + case VIEW_TASKS: + wprintf( + "\n", _("View tasks") + ); + break; + case VIEW_NOTES: + wprintf( + "\n", _("View notes") + ); + break; + case VIEW_MAILBOX: + wprintf( + "\n", _("View message list") + ); + break; + case VIEW_WIKI: + wprintf( + "\n", _("Wiki home") + ); + break; + default: + wprintf( + "\n", _("Read all messages") + ); + break; + } + } + + if (navbar_style == navbar_default) { + switch(WC->wc_view) { + case VIEW_ADDRESSBOOK: + wprintf( + "\n", _("Add new contact") + ); + break; + case VIEW_CALENDAR: + case VIEW_CALBRIEF: + wprintf("\n", _("Add new event") + ); + break; + case VIEW_TASKS: + wprintf( + "\n", _("Add new task") + ); + break; + case VIEW_NOTES: + wprintf( + "\n", _("Add new note") + ); + break; + case VIEW_WIKI: + safestrncpy(buf, bstr("page"), sizeof buf); + str_wiki_index(buf); + wprintf( + "\n", buf, _("Edit this page") + ); + break; + default: + wprintf( + "\n", _("Enter a message") + ); + break; + } + } + + if (navbar_style == navbar_default) wprintf( + "\n", + _("Leave all messages marked as unread, go to next room with unread messages"), + _("Skip this room") + ); + + if (navbar_style == navbar_default) wprintf( + "\n", + _("Mark all messages as read, go to next room with unread messages"), + _("Goto next room") + ); + + wprintf("
    " + "" + "" + "%s" + "" + "" + "" + "%s" + "" + "" + "" + "" + "%s" + "" + "" + "" + "" + "%s" + "" + "" + "" + "" + "%s" + "" + "" + "" + "" + "%s" + "" + "" + "" + "" + "%s" + "" + "" + "" + "" + "%s" + "" + "" + "" + "" + "%s" + "" + "" + "" + "" + "%s" + "" + "" + "" + "" + "%s" + "" + "" + "%s" + " 0) wprintf("?year=%s", bstr("year")); + if (strlen(bstr("month")) > 0) wprintf("?month=%s", bstr("month")); + if (strlen(bstr("day")) > 0) wprintf("?day=%s", bstr("day")); + wprintf("\">" + "" + "%s" + "" + "" + "%s" + "" + "" + "%s" + "" + "" + "%s" + "" + "" + "%s" + "" + "" + "" + "%s" + "" + "" + "" + "%s" + "
    \n"); + } + +} + + + + + +/** + * \brief back end routine to take the session to a new room + * \param gname room to go to + * + */ +int gotoroom(char *gname) +{ + char buf[SIZ]; + static long ls = (-1L); + int err = 0; + + /** store ungoto information */ + strcpy(WC->ugname, WC->wc_roomname); + WC->uglsn = ls; + + /** move to the new room */ + serv_printf("GOTO %s", gname); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') { + buf[3] = 0; + err = atoi(buf); + serv_puts("GOTO _BASEROOM_"); + serv_getln(buf, sizeof buf); + } + if (buf[0] != '2') { + buf[3] = 0; + err = atoi(buf); + return err; + } + extract_token(WC->wc_roomname, &buf[4], 0, '|', sizeof WC->wc_roomname); + WC->room_flags = extract_int(&buf[4], 4); + /* highest_msg_read = extract_int(&buf[4],6); + maxmsgnum = extract_int(&buf[4],5); + */ + WC->is_mailbox = extract_int(&buf[4],7); + ls = extract_long(&buf[4], 6); + WC->wc_floor = extract_int(&buf[4], 10); + WC->wc_view = extract_int(&buf[4], 11); + WC->wc_default_view = extract_int(&buf[4], 12); + WC->wc_is_trash = extract_int(&buf[4], 13); + + if (WC->is_aide) + WC->is_room_aide = WC->is_aide; + else + WC->is_room_aide = (char) extract_int(&buf[4], 8); + + remove_march(WC->wc_roomname); + if (!strcasecmp(gname, "_BASEROOM_")) + remove_march(gname); + + return err; +} + + +/** + * \brief Locate the room on the march list which we most want to go to. + * Each room + * is measured given a "weight" of preference based on various factors. + * \param desired_floor the room number on the citadel server + * \return the roomname + */ +char *pop_march(int desired_floor) +{ + static char TheRoom[128]; + int TheFloor = 0; + int TheOrder = 32767; + int TheWeight = 0; + int weight; + struct march *mptr = NULL; + + strcpy(TheRoom, "_BASEROOM_"); + if (WC->march == NULL) + return (TheRoom); + + for (mptr = WC->march; mptr != NULL; mptr = mptr->next) { + weight = 0; + if ((strcasecmp(mptr->march_name, "_BASEROOM_"))) + weight = weight + 10000; + if (mptr->march_floor == desired_floor) + weight = weight + 5000; + + weight = weight + ((128 - (mptr->march_floor)) * 128); + weight = weight + (128 - (mptr->march_order)); + + if (weight > TheWeight) { + TheWeight = weight; + strcpy(TheRoom, mptr->march_name); + TheFloor = mptr->march_floor; + TheOrder = mptr->march_order; + } + } + return (TheRoom); +} + + + +/** + *\brief Goto next room having unread messages. + * We want to skip over rooms that the user has already been to, and take the + * user back to the lobby when done. The room we end up in is placed in + * newroom - which is set to 0 (the lobby) initially. + * We start the search in the current room rather than the beginning to prevent + * two or more concurrent users from dragging each other back to the same room. + */ +void gotonext(void) +{ + char buf[256]; + struct march *mptr, *mptr2; + char next_room[128]; + + /** + * First check to see if the march-mode list is already allocated. + * If it is, pop the first room off the list and go there. + */ + + if (WC->march == NULL) { + serv_puts("LKRN"); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + mptr = (struct march *) malloc(sizeof(struct march)); + mptr->next = NULL; + extract_token(mptr->march_name, buf, 0, '|', sizeof mptr->march_name); + mptr->march_floor = extract_int(buf, 2); + mptr->march_order = extract_int(buf, 3); + if (WC->march == NULL) { + WC->march = mptr; + } else { + mptr2 = WC->march; + while (mptr2->next != NULL) + mptr2 = mptr2->next; + mptr2->next = mptr; + } + } + /** + * add _BASEROOM_ to the end of the march list, so the user will end up + * in the system base room (usually the Lobby>) at the end of the loop + */ + mptr = (struct march *) malloc(sizeof(struct march)); + mptr->next = NULL; + strcpy(mptr->march_name, "_BASEROOM_"); + if (WC->march == NULL) { + WC->march = mptr; + } else { + mptr2 = WC->march; + while (mptr2->next != NULL) + mptr2 = mptr2->next; + mptr2->next = mptr; + } + /** + * ...and remove the room we're currently in, so a oto doesn't make us + * walk around in circles + */ + remove_march(WC->wc_roomname); + } + if (WC->march != NULL) { + strcpy(next_room, pop_march(-1)); + } else { + strcpy(next_room, "_BASEROOM_"); + } + + + smart_goto(next_room); +} + + +/** + * \brief goto next room + * \param next_room next room to go to + */ +void smart_goto(char *next_room) { + gotoroom(next_room); + readloop("readnew"); +} + + + +/** + * \brief mark all messages in current room as having been read + */ +void slrp_highest(void) +{ + char buf[256]; + + serv_puts("SLRP HIGHEST"); + serv_getln(buf, sizeof buf); +} + + +/** + * \brief un-goto the previous room + */ +void ungoto(void) +{ + char buf[SIZ]; + + if (!strcmp(WC->ugname, "")) { + smart_goto(WC->wc_roomname); + return; + } + serv_printf("GOTO %s", WC->ugname); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') { + smart_goto(WC->wc_roomname); + return; + } + if (WC->uglsn >= 0L) { + serv_printf("SLRP %ld", WC->uglsn); + serv_getln(buf, sizeof buf); + } + strcpy(buf, WC->ugname); + strcpy(WC->ugname, ""); + smart_goto(buf); +} + + + + + +/** + * \brief Set/clear/read the "self-service list subscribe" flag for a room + * + * \param newval set to 0 to clear, 1 to set, any other value to leave unchanged. + * \return return the new value. + */ + +int self_service(int newval) { + int current_value = 0; + char buf[SIZ]; + + char name[SIZ]; + char password[SIZ]; + char dirname[SIZ]; + int flags, floor, order, view, flags2; + + serv_puts("GETR"); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') return(0); + + extract_token(name, &buf[4], 0, '|', sizeof name); + extract_token(password, &buf[4], 1, '|', sizeof password); + extract_token(dirname, &buf[4], 2, '|', sizeof dirname); + flags = extract_int(&buf[4], 3); + floor = extract_int(&buf[4], 4); + order = extract_int(&buf[4], 5); + view = extract_int(&buf[4], 6); + flags2 = extract_int(&buf[4], 7); + + if (flags2 & QR2_SELFLIST) { + current_value = 1; + } + else { + current_value = 0; + } + + if (newval == 1) { + flags2 = flags2 | QR2_SELFLIST; + } + else if (newval == 0) { + flags2 = flags2 & ~QR2_SELFLIST; + } + else { + return(current_value); + } + + if (newval != current_value) { + serv_printf("SETR %s|%s|%s|%d|0|%d|%d|%d|%d", + name, password, dirname, flags, + floor, order, view, flags2); + serv_getln(buf, sizeof buf); + } + + return(newval); + +} + + + + + + +/** + * \brief display the form for editing a room + */ +void display_editroom(void) +{ + char buf[SIZ]; + char cmd[SIZ]; + char node[SIZ]; + char remote_room[SIZ]; + char recp[SIZ]; + char er_name[128]; + char er_password[10]; + char er_dirname[15]; + char er_roomaide[26]; + unsigned er_flags; + int er_floor; + int i, j; + char *tab; + char *shared_with; + char *not_shared_with; + int roompolicy = 0; + int roomvalue = 0; + int floorpolicy = 0; + int floorvalue = 0; + + tab = bstr("tab"); + if (strlen(tab) == 0) tab = "admin"; + + load_floorlist(); + serv_puts("GETR"); + serv_getln(buf, sizeof buf); + + if (buf[0] != '2') { + strcpy(WC->ImportantMessage, &buf[4]); + display_main_menu(); + return; + } + extract_token(er_name, &buf[4], 0, '|', sizeof er_name); + extract_token(er_password, &buf[4], 1, '|', sizeof er_password); + extract_token(er_dirname, &buf[4], 2, '|', sizeof er_dirname); + er_flags = extract_int(&buf[4], 3); + er_floor = extract_int(&buf[4], 4); + + output_headers(1, 1, 1, 0, 0, 0); + + /** print the tabbed dialog */ + wprintf("
    " + "
    " + "" + "" + "\n"); + + if (!strcmp(tab, "admin")) { + wprintf("\n"); + } + else { + wprintf("\n"); + } + + wprintf("\n"); + + if (!strcmp(tab, "config")) { + wprintf("\n"); + } + else { + wprintf("\n"); + } + + wprintf("\n"); + + if (!strcmp(tab, "expire")) { + wprintf("\n"); + } + else { + wprintf("\n"); + } + + wprintf("\n"); + + if (!strcmp(tab, "access")) { + wprintf("\n"); + } + else { + wprintf("\n"); + } + + wprintf("\n"); + + if (!strcmp(tab, "sharing")) { + wprintf("\n"); + } + else { + wprintf("\n"); + } + + wprintf("\n"); + + if (!strcmp(tab, "listserv")) { + wprintf("\n"); + } + else { + wprintf("\n"); + } + + wprintf("\n"); + + wprintf("
     "); + } + else { + wprintf(""); + } + wprintf(_("Administration")); + if (!strcmp(tab, "admin")) { + wprintf(" "); + } + else { + wprintf(""); + } + wprintf(_("Configuration")); + if (!strcmp(tab, "config")) { + wprintf(" "); + } + else { + wprintf(""); + } + wprintf(_("Message expire policy")); + if (!strcmp(tab, "expire")) { + wprintf(" "); + } + else { + wprintf(""); + } + wprintf(_("Access controls")); + if (!strcmp(tab, "access")) { + wprintf(" "); + } + else { + wprintf(""); + } + wprintf(_("Sharing")); + if (!strcmp(tab, "sharing")) { + wprintf(" "); + } + else { + wprintf(""); + } + wprintf(_("Mailing list service")); + if (!strcmp(tab, "listserv")) { + wprintf(" 
    \n"); + /** end tabbed dialog */ + + /** begin content of whatever tab is open now */ + wprintf("
    " + "\n" + "
    \n"); + + if (!strcmp(tab, "admin")) { + wprintf(""); + } + + if (!strcmp(tab, "config")) { + wprintf("
    \n"); + + wprintf("
    • "); + wprintf(_("Name of room: ")); + wprintf("\n", + er_name, + (sizeof(er_name)-1) + ); + + wprintf("
    • "); + wprintf(_("Resides on floor: ")); + wprintf("\n"); + + wprintf("
    • "); + wprintf(_("Type of room:")); + wprintf("
        \n"); + + wprintf("
      • "); + wprintf(_("Public room")); + wprintf("\n"); + + wprintf("
      • "); + wprintf(_("Private - guess name")); + + wprintf("\n
      • "); + wprintf(_("Private - require password:")); + wprintf("\n\n", + er_password); + + wprintf("
      • "); + wprintf(_("Private - invitation only")); + + wprintf("\n
      • "); + wprintf(_("If private, cause current users to forget room")); + + wprintf("\n
      \n"); + + wprintf("
    • "); + wprintf(_("Preferred users only")); + + wprintf("\n
    • "); + wprintf(_("Read-only room")); + + /** directory stuff */ + wprintf("\n
    • "); + wprintf(_("File directory room")); + + wprintf("\n
      • "); + wprintf(_("Directory name: ")); + wprintf("\n", + er_dirname); + + wprintf("
      • "); + wprintf(_("Uploading allowed")); + + wprintf("\n
      • "); + wprintf(_("Downloading allowed")); + + wprintf("\n
      • "); + wprintf(_("Visible directory")); + wprintf("
      \n"); + + /** end of directory stuff */ + + wprintf("
    • "); + wprintf(_("Network shared room")); + + wprintf("\n
    • "); + wprintf(_("Permanent (does not auto-purge)")); + + /** start of anon options */ + + wprintf("\n
    • "); + wprintf(_("Anonymous messages")); + wprintf("
        \n"); + + wprintf("
      • "); + wprintf(_("No anonymous messages")); + + wprintf("\n
      • "); + wprintf(_("All messages are anonymous")); + + wprintf("\n
      • "); + wprintf(_("Prompt user when entering messages")); + wprintf("
      \n"); + + /* end of anon options */ + + wprintf("
    • "); + wprintf(_("Room aide: ")); + serv_puts("GETA"); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') { + wprintf("%s\n", &buf[4]); + } else { + extract_token(er_roomaide, &buf[4], 0, '|', sizeof er_roomaide); + wprintf("\n", er_roomaide); + } + + wprintf("
    \n"); + wprintf("\n" + "" + " " + "" + "
    \n", + _("Save changes"), + _("Cancel") + ); + } + + + /** Sharing the room with other Citadel nodes... */ + if (!strcmp(tab, "sharing")) { + + shared_with = strdup(""); + not_shared_with = strdup(""); + + /** Learn the current configuration */ + serv_puts("CONF getsys|application/x-citadel-ignet-config"); + serv_getln(buf, sizeof buf); + if (buf[0]=='1') while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + extract_token(node, buf, 0, '|', sizeof node); + not_shared_with = realloc(not_shared_with, + strlen(not_shared_with) + 32); + strcat(not_shared_with, node); + strcat(not_shared_with, "\n"); + } + + serv_puts("GNET"); + serv_getln(buf, sizeof buf); + if (buf[0]=='1') while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + extract_token(cmd, buf, 0, '|', sizeof cmd); + extract_token(node, buf, 1, '|', sizeof node); + extract_token(remote_room, buf, 2, '|', sizeof remote_room); + if (!strcasecmp(cmd, "ignet_push_share")) { + shared_with = realloc(shared_with, + strlen(shared_with) + 32); + strcat(shared_with, node); + if (strlen(remote_room) > 0) { + strcat(shared_with, "|"); + strcat(shared_with, remote_room); + } + strcat(shared_with, "\n"); + } + } + + for (i=0; i
    " + "" + "" + "\n" + "" + "
    "); + wprintf(_("Shared with")); + wprintf(""); + wprintf(_("Not shared with")); + wprintf("
    \n"); + + wprintf("\n"); + + for (i=0; i 0) { + wprintf("" + "\n", node); + + wprintf(""); + + wprintf("\n"); + } + } + + wprintf("
    "); + wprintf(_("Remote node name")); + wprintf(""); + wprintf(_("Remote room name")); + wprintf(""); + wprintf(_("Actions")); + wprintf("
    %s"); + if (strlen(remote_room) > 0) { + escputs(remote_room); + } + wprintf(""); + + wprintf(" 0) { + wprintf("|"); + urlescputs(remote_room); + } + wprintf("\">"); + wprintf("\n"); + wprintf("\n"); + wprintf("", _("Unshare")); + wprintf("
    \n"); + wprintf("
    \n"); + wprintf("\n"); + + for (i=0; i 0) { + wprintf("
    " + "
    \n"); + } + } + + wprintf("
    "); + wprintf(_("Remote node name")); + wprintf(""); + wprintf(_("Remote room name")); + wprintf(""); + wprintf(_("Actions")); + wprintf("
    "); + escputs(node); + wprintf("" + "" + ""); + wprintf(""); + wprintf("\n"); + wprintf("\n"); + wprintf("", _("Share")); + wprintf("
    \n"); + wprintf("

    \n" + "%s
    • ", _("Notes:")); + wprintf(_("When sharing a room, " + "it must be shared from both ends. Adding a node to " + "the 'shared' list sends messages out, but in order to" + " receive messages, the other nodes must be configured" + " to send messages out to your system as well. " + "
    • If the remote room name is blank, it is assumed " + "that the room name is identical on the remote node." + "
    • If the remote room name is different, the remote " + "node must also configure the name of the room here." + "

    \n" + )); + + } + + /** Mailing list management */ + if (!strcmp(tab, "listserv")) { + + wprintf("
    " + "" + "
    "); + + wprintf(_("The contents of this room are being " + "mailed as individual messages " + "to the following list recipients:" + "

    \n")); + + serv_puts("GNET"); + serv_getln(buf, sizeof buf); + if (buf[0]=='1') while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + extract_token(cmd, buf, 0, '|', sizeof cmd); + if (!strcasecmp(cmd, "listrecp")) { + extract_token(recp, buf, 1, '|', sizeof recp); + + escputs(recp); + wprintf(" "); + wprintf(_("(remove)")); + wprintf("
    "); + } + } + wprintf("
    \n" + "\n" + "\n"); + wprintf("\n"); + wprintf("", _("Add")); + wprintf("
    \n"); + + wprintf("
    \n"); + + wprintf(_("The contents of this room are being " + "mailed in digest form " + "to the following list recipients:" + "

    \n")); + + serv_puts("GNET"); + serv_getln(buf, sizeof buf); + if (buf[0]=='1') while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + extract_token(cmd, buf, 0, '|', sizeof cmd); + if (!strcasecmp(cmd, "digestrecp")) { + extract_token(recp, buf, 1, '|', sizeof recp); + + escputs(recp); + wprintf(" "); + wprintf(_("(remove)")); + wprintf("
    "); + } + } + wprintf("
    \n" + "\n" + "\n"); + wprintf("\n"); + wprintf("", _("Add")); + wprintf("
    \n"); + + wprintf("

    \n"); + + if (self_service(999) == 1) { + wprintf(_("This room is configured to allow " + "self-service subscribe/unsubscribe requests.")); + wprintf(""); + wprintf(_("Click to disable.")); + wprintf("
    \n"); + wprintf(_("The URL for subscribe/unsubscribe is: ")); + wprintf("%s://%s/listsub
    \n", + (is_https ? "https" : "http"), + WC->http_host); + } + else { + wprintf(_("This room is not configured to allow " + "self-service subscribe/unsubscribe requests.")); + wprintf(" "); + wprintf(_("Click to enable.")); + wprintf("
    \n"); + } + + + wprintf("
    \n"); + } + + + /** Mailing list management */ + if (!strcmp(tab, "expire")) { + + serv_puts("GPEX room"); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + roompolicy = extract_int(&buf[4], 0); + roomvalue = extract_int(&buf[4], 1); + } + + serv_puts("GPEX floor"); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + floorpolicy = extract_int(&buf[4], 0); + floorvalue = extract_int(&buf[4], 1); + } + + wprintf("
    \n"); + wprintf("\n"); + wprintf("\n"); + + if (WC->axlevel >= 6) { + wprintf("\n"); + wprintf("\n"); + + wprintf("
    "); + wprintf(_("Message expire policy for this room")); + wprintf("
    ("); + escputs(WC->wc_roomname); + wprintf(")
    "); + wprintf("", + ((roompolicy == 0) ? "CHECKED" : "") ); + wprintf(_("Use the default policy for this floor")); + wprintf("
    \n"); + wprintf("", + ((roompolicy == 1) ? "CHECKED" : "") ); + wprintf(_("Never automatically expire messages")); + wprintf("
    \n"); + wprintf("", + ((roompolicy == 2) ? "CHECKED" : "") ); + wprintf(_("Expire by message count")); + wprintf("
    \n"); + wprintf("", + ((roompolicy == 3) ? "CHECKED" : "") ); + wprintf(_("Expire by message age")); + wprintf("
    "); + wprintf(_("Number of messages or days: ")); + wprintf("", roomvalue); + wprintf("

    "); + wprintf(_("Message expire policy for this floor")); + wprintf("
    ("); + escputs(floorlist[WC->wc_floor]); + wprintf(")
    "); + wprintf("", + ((floorpolicy == 0) ? "CHECKED" : "") ); + wprintf(_("Use the system default")); + wprintf("
    \n"); + wprintf("", + ((floorpolicy == 1) ? "CHECKED" : "") ); + wprintf(_("Never automatically expire messages")); + wprintf("
    \n"); + wprintf("", + ((floorpolicy == 2) ? "CHECKED" : "") ); + wprintf(_("Expire by message count")); + wprintf("
    \n"); + wprintf("", + ((floorpolicy == 3) ? "CHECKED" : "") ); + wprintf(_("Expire by message age")); + wprintf("
    "); + wprintf(_("Number of messages or days: ")); + wprintf("", + floorvalue); + } + + wprintf("
    \n"); + wprintf("

    \n"); + wprintf("", _("Save changes")); + wprintf(" "); + wprintf("", _("Cancel")); + wprintf("
    \n" + "\n" + "
    \n" + ); + + } + + /** Mailing list management */ + if (!strcmp(tab, "access")) { + display_whok(); + } + + /** end content of whatever tab is open now */ + wprintf("
    \n"); + + wDumpContent(1); +} + + +/** + * \brief Toggle self-service list subscription + */ +void toggle_self_service(void) { + int newval = 0; + + newval = atoi(bstr("newval")); + self_service(newval); + display_editroom(); +} + + + +/** + * \brief save new parameters for a room + */ +void editroom(void) +{ + char buf[SIZ]; + char er_name[128]; + char er_password[10]; + char er_dirname[15]; + char er_roomaide[26]; + int er_floor; + unsigned er_flags; + int bump; + + + if (strlen(bstr("ok_button")) == 0) { + strcpy(WC->ImportantMessage, + _("Cancelled. Changes were not saved.")); + display_editroom(); + return; + } + serv_puts("GETR"); + serv_getln(buf, sizeof buf); + + if (buf[0] != '2') { + strcpy(WC->ImportantMessage, &buf[4]); + display_editroom(); + return; + } + extract_token(er_name, &buf[4], 0, '|', sizeof er_name); + extract_token(er_password, &buf[4], 1, '|', sizeof er_password); + extract_token(er_dirname, &buf[4], 2, '|', sizeof er_dirname); + er_flags = extract_int(&buf[4], 3); + + strcpy(er_roomaide, bstr("er_roomaide")); + if (strlen(er_roomaide) == 0) { + serv_puts("GETA"); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') { + strcpy(er_roomaide, ""); + } else { + extract_token(er_roomaide, &buf[4], 0, '|', sizeof er_roomaide); + } + } + strcpy(buf, bstr("er_name")); + buf[128] = 0; + if (strlen(buf) > 0) { + strcpy(er_name, buf); + } + + strcpy(buf, bstr("er_password")); + buf[10] = 0; + if (strlen(buf) > 0) + strcpy(er_password, buf); + + strcpy(buf, bstr("er_dirname")); + buf[15] = 0; + if (strlen(buf) > 0) + strcpy(er_dirname, buf); + + strcpy(buf, bstr("type")); + er_flags &= !(QR_PRIVATE | QR_PASSWORDED | QR_GUESSNAME); + + if (!strcmp(buf, "invonly")) { + er_flags |= (QR_PRIVATE); + } + if (!strcmp(buf, "hidden")) { + er_flags |= (QR_PRIVATE | QR_GUESSNAME); + } + if (!strcmp(buf, "passworded")) { + er_flags |= (QR_PRIVATE | QR_PASSWORDED); + } + if (!strcmp(bstr("prefonly"), "yes")) { + er_flags |= QR_PREFONLY; + } else { + er_flags &= ~QR_PREFONLY; + } + + if (!strcmp(bstr("readonly"), "yes")) { + er_flags |= QR_READONLY; + } else { + er_flags &= ~QR_READONLY; + } + + if (!strcmp(bstr("permanent"), "yes")) { + er_flags |= QR_PERMANENT; + } else { + er_flags &= ~QR_PERMANENT; + } + + if (!strcmp(bstr("network"), "yes")) { + er_flags |= QR_NETWORK; + } else { + er_flags &= ~QR_NETWORK; + } + + if (!strcmp(bstr("directory"), "yes")) { + er_flags |= QR_DIRECTORY; + } else { + er_flags &= ~QR_DIRECTORY; + } + + if (!strcmp(bstr("ulallowed"), "yes")) { + er_flags |= QR_UPLOAD; + } else { + er_flags &= ~QR_UPLOAD; + } + + if (!strcmp(bstr("dlallowed"), "yes")) { + er_flags |= QR_DOWNLOAD; + } else { + er_flags &= ~QR_DOWNLOAD; + } + + if (!strcmp(bstr("visdir"), "yes")) { + er_flags |= QR_VISDIR; + } else { + er_flags &= ~QR_VISDIR; + } + + strcpy(buf, bstr("anon")); + + er_flags &= ~(QR_ANONONLY | QR_ANONOPT); + if (!strcmp(buf, "anononly")) + er_flags |= QR_ANONONLY; + if (!strcmp(buf, "anon2")) + er_flags |= QR_ANONOPT; + + bump = 0; + if (!strcmp(bstr("bump"), "yes")) + bump = 1; + + er_floor = atoi(bstr("er_floor")); + + sprintf(buf, "SETR %s|%s|%s|%u|%d|%d", + er_name, er_password, er_dirname, er_flags, bump, er_floor); + serv_puts(buf); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') { + strcpy(WC->ImportantMessage, &buf[4]); + display_editroom(); + return; + } + gotoroom(er_name); + + if (strlen(er_roomaide) > 0) { + sprintf(buf, "SETA %s", er_roomaide); + serv_puts(buf); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') { + strcpy(WC->ImportantMessage, &buf[4]); + display_main_menu(); + return; + } + } + gotoroom(er_name); + strcpy(WC->ImportantMessage, _("Your changes have been saved.")); + display_editroom(); + return; +} + + +/** + * \brief Display form for Invite, Kick, and show Who Knows a room + */ +void do_invt_kick(void) { + char buf[SIZ], room[SIZ], username[SIZ]; + + serv_puts("GETR"); + serv_getln(buf, sizeof buf); + + if (buf[0] != '2') { + escputs(&buf[4]); + return; + } + extract_token(room, &buf[4], 0, '|', sizeof room); + + strcpy(username, bstr("username")); + + if (strlen(bstr("kick_button")) > 0) { + sprintf(buf, "KICK %s", username); + serv_puts(buf); + serv_getln(buf, sizeof buf); + + if (buf[0] != '2') { + strcpy(WC->ImportantMessage, &buf[4]); + } else { + sprintf(WC->ImportantMessage, + _("User %s kicked out of room %s.\n"), + username, room); + } + } + + if (strlen(bstr("invite_button")) > 0) { + sprintf(buf, "INVT %s", username); + serv_puts(buf); + serv_getln(buf, sizeof buf); + + if (buf[0] != '2') { + strcpy(WC->ImportantMessage, &buf[4]); + } else { + sprintf(WC->ImportantMessage, + _("User %s invited to room %s.\n"), + username, room); + } + } + + display_editroom(); +} + + + +/** + * \brief Display form for Invite, Kick, and show Who Knows a room + */ +void display_whok(void) +{ + char buf[SIZ], room[SIZ], username[SIZ]; + + serv_puts("GETR"); + serv_getln(buf, sizeof buf); + + if (buf[0] != '2') { + escputs(&buf[4]); + return; + } + extract_token(room, &buf[4], 0, '|', sizeof room); + + + wprintf("
    "); + wprintf(_("The users listed below have access to this room. " + "To remove a user from the access list, select the user " + "name from the list and click 'Kick'.")); + wprintf("

    "); + + wprintf("
    \n"); + wprintf("\n"); + wprintf("
    \n"); + + wprintf("", _("Kick")); + wprintf("
    \n"); + + wprintf("
    "); + wprintf(_("To grant another user access to this room, enter the " + "user name in the box below and click 'Invite'.")); + wprintf("

    "); + + wprintf("
    \n"); + wprintf("\n"); + wprintf(_("Invite:")); + wprintf(" "); + wprintf("
    \n" + "" + "" + "
    \n", _("Invite")); + + wprintf("
    \n"); + wDumpContent(1); +} + + + +/** + * \brief display the form for entering a new room + */ +void display_entroom(void) +{ + int i; + char buf[SIZ]; + + serv_puts("CRE8 0"); + serv_getln(buf, sizeof buf); + + if (buf[0] != '2') { + strcpy(WC->ImportantMessage, &buf[4]); + display_main_menu(); + return; + } + + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
    \n" + "
    " + ""); + wprintf(_("Create a new room")); + wprintf("" + "
    \n" + "
    \n
    \n" + ); + + wprintf("
    " + "
    \n"); + + wprintf("
    \n"); + + wprintf("
    • "); + wprintf(_("Name of room: ")); + wprintf("\n"); + + wprintf("
    • "); + wprintf(_("Resides on floor: ")); + load_floorlist(); + wprintf("\n"); + + /** + * Our clever little snippet of JavaScript automatically selects + * a public room if the view is set to Bulletin Board or wiki, and + * it selects a mailbox room otherwise. The user can override this, + * of course. We also disable the floor selector for mailboxes. + */ + wprintf("
    • "); + wprintf(_("Default view for room: ")); + wprintf("\n"); + + wprintf("
    • "); + wprintf(_("Type of room:")); + wprintf("
        \n"); + + wprintf("
      • "); + wprintf(_("Public (automatically appears to everyone)")); + + wprintf("\n
      • "); + wprintf(_("Private - hidden (accessible to anyone who knows its name)")); + + wprintf("\n
      • "); + wprintf(_("Private - require password: ")); + wprintf("\n"); + + wprintf("
      • "); + wprintf(_("Private - invitation only")); + + wprintf("\n
      • "); + wprintf(_("Personal (mailbox for you only)")); + + wprintf("\n
      \n"); + + wprintf("
      \n"); + wprintf("", _("Create new room")); + wprintf(" "); + wprintf("", _("Cancel")); + wprintf("
      \n"); + wprintf("
    • \n
      "); + serv_printf("MESG roomaccess"); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + fmout("CENTER"); + } + wprintf("
    \n"); + wDumpContent(1); +} + + + + +/** + * \brief support function for entroom() -- sets the default view + */ +void er_set_default_view(int newview) { + + char buf[SIZ]; + + char rm_name[SIZ]; + char rm_pass[SIZ]; + char rm_dir[SIZ]; + int rm_bits1; + int rm_floor; + int rm_listorder; + int rm_bits2; + + serv_puts("GETR"); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') return; + + extract_token(rm_name, &buf[4], 0, '|', sizeof rm_name); + extract_token(rm_pass, &buf[4], 1, '|', sizeof rm_pass); + extract_token(rm_dir, &buf[4], 2, '|', sizeof rm_dir); + rm_bits1 = extract_int(&buf[4], 3); + rm_floor = extract_int(&buf[4], 4); + rm_listorder = extract_int(&buf[4], 5); + rm_bits2 = extract_int(&buf[4], 7); + + serv_printf("SETR %s|%s|%s|%d|0|%d|%d|%d|%d", + rm_name, rm_pass, rm_dir, rm_bits1, rm_floor, + rm_listorder, newview, rm_bits2 + ); + serv_getln(buf, sizeof buf); +} + + + +/** + * \brief enter a new room + */ +void entroom(void) +{ + char buf[SIZ]; + char er_name[SIZ]; + char er_type[SIZ]; + char er_password[SIZ]; + int er_floor; + int er_num_type; + int er_view; + + if (strlen(bstr("ok_button")) == 0) { + strcpy(WC->ImportantMessage, + _("Cancelled. No new room was created.")); + display_main_menu(); + return; + } + strcpy(er_name, bstr("er_name")); + strcpy(er_type, bstr("type")); + strcpy(er_password, bstr("er_password")); + er_floor = atoi(bstr("er_floor")); + er_view = atoi(bstr("er_view")); + + er_num_type = 0; + if (!strcmp(er_type, "hidden")) + er_num_type = 1; + if (!strcmp(er_type, "passworded")) + er_num_type = 2; + if (!strcmp(er_type, "invonly")) + er_num_type = 3; + if (!strcmp(er_type, "personal")) + er_num_type = 4; + + sprintf(buf, "CRE8 1|%s|%d|%s|%d|%d|%d", + er_name, er_num_type, er_password, er_floor, 0, er_view); + serv_puts(buf); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') { + strcpy(WC->ImportantMessage, &buf[4]); + display_main_menu(); + return; + } + gotoroom(er_name); + do_change_view(er_view); /* Now go there */ +} + + +/** + * \brief display the screen to enter a private room + */ +void display_private(char *rname, int req_pass) +{ + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
    \n" + "
    " + ""); + wprintf(_("Go to a hidden room")); + wprintf("" + "
    \n" + "
    \n
    \n" + ); + + wprintf("
    " + "
    \n"); + + wprintf("
    \n"); + wprintf("
    "); + wprintf(_("If you know the name of a hidden (guess-name) or " + "passworded room, you can enter that room by typing " + "its name below. Once you gain access to a private " + "room, it will appear in your regular room listings " + "so you don't have to keep returning here.")); + wprintf("\n

    "); + + wprintf("
    \n"); + + wprintf("\n" + "
    "); + wprintf(_("Enter room name:")); + wprintf("" + "\n", rname); + + if (req_pass) { + wprintf("
    "); + wprintf(_("Enter room password:")); + wprintf(""); + wprintf("\n"); + } + wprintf("

    \n"); + + wprintf("" + " " + "", + _("Go there"), + _("Cancel") + ); + wprintf("
    \n"); + wprintf("
    \n"); + wDumpContent(1); +} + +/** + * \brief goto a private room + */ +void goto_private(void) +{ + char hold_rm[SIZ]; + char buf[SIZ]; + + if (strlen(bstr("ok_button")) == 0) { + display_main_menu(); + return; + } + strcpy(hold_rm, WC->wc_roomname); + strcpy(buf, "GOTO "); + strcat(buf, bstr("gr_name")); + strcat(buf, "|"); + strcat(buf, bstr("gr_pass")); + serv_puts(buf); + serv_getln(buf, sizeof buf); + + if (buf[0] == '2') { + smart_goto(bstr("gr_name")); + return; + } + if (!strncmp(buf, "540", 3)) { + display_private(bstr("gr_name"), 1); + return; + } + output_headers(1, 1, 1, 0, 0, 0); + wprintf("%s\n", &buf[4]); + wDumpContent(1); + return; +} + + +/** + * \brief display the screen to zap a room + */ +void display_zap(void) +{ + output_headers(1, 1, 2, 0, 0, 0); + + wprintf("
    \n"); + wprintf("
    "); + wprintf(""); + wprintf(_("Zap (forget/unsubscribe) the current room")); + wprintf("\n"); + wprintf("
    \n"); + wprintf("
    \n
    \n"); + + wprintf(_("If you select this option, %s will " + "disappear from your room list. Is this what you wish " + "to do?
    \n"), WC->wc_roomname); + + wprintf("
    \n"); + wprintf("", _("Zap this room")); + wprintf(" "); + wprintf("", _("Cancel")); + wprintf("
    \n"); + wDumpContent(1); +} + + +/** + * \brief zap a room + */ +void zap(void) +{ + char buf[SIZ]; + char final_destination[SIZ]; + + /** + * If the forget-room routine fails for any reason, we fall back + * to the current room; otherwise, we go to the Lobby + */ + strcpy(final_destination, WC->wc_roomname); + + if (strlen(bstr("ok_button")) > 0) { + serv_printf("GOTO %s", WC->wc_roomname); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + serv_puts("FORG"); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + strcpy(final_destination, "_BASEROOM_"); + } + } + } + smart_goto(final_destination); +} + + + +/** + * \brief Delete the current room + */ +void delete_room(void) +{ + char buf[SIZ]; + + serv_puts("KILL 1"); + serv_getln(buf, sizeof buf); + if (buf[0] != '2') { + strcpy(WC->ImportantMessage, &buf[4]); + display_main_menu(); + return; + } else { + smart_goto("_BASEROOM_"); + } +} + + + +/** + * \brief Perform changes to a room's network configuration + */ +void netedit(void) { + FILE *fp; + char buf[SIZ]; + char line[SIZ]; + char cmpa0[SIZ]; + char cmpa1[SIZ]; + char cmpb0[SIZ]; + char cmpb1[SIZ]; + + if (strlen(bstr("line"))==0) { + display_editroom(); + return; + } + + strcpy(line, bstr("prefix")); + strcat(line, bstr("line")); + strcat(line, bstr("suffix")); + + fp = tmpfile(); + if (fp == NULL) { + display_editroom(); + return; + } + + serv_puts("GNET"); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') { + fclose(fp); + display_editroom(); + return; + } + + /** This loop works for add *or* remove. Spiffy, eh? */ + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + extract_token(cmpa0, buf, 0, '|', sizeof cmpa0); + extract_token(cmpa1, buf, 1, '|', sizeof cmpa1); + extract_token(cmpb0, line, 0, '|', sizeof cmpb0); + extract_token(cmpb1, line, 1, '|', sizeof cmpb1); + if ( (strcasecmp(cmpa0, cmpb0)) + || (strcasecmp(cmpa1, cmpb1)) ) { + fprintf(fp, "%s\n", buf); + } + } + + rewind(fp); + serv_puts("SNET"); + serv_getln(buf, sizeof buf); + if (buf[0] != '4') { + fclose(fp); + display_editroom(); + return; + } + + while (fgets(buf, sizeof buf, fp) != NULL) { + buf[strlen(buf)-1] = 0; + serv_puts(buf); + } + + if (strlen(bstr("add_button")) > 0) { + serv_puts(line); + } + + serv_puts("000"); + fclose(fp); + display_editroom(); +} + + + +/** + * \brief Convert a room name to a folder-ish-looking name. + * \param folder the folderish name + * \param room the room name + * \param floor the floor name + * \param is_mailbox is it a mailbox? + */ +void room_to_folder(char *folder, char *room, int floor, int is_mailbox) +{ + int i; + + /** + * For mailboxes, just do it straight... + */ + if (is_mailbox) { + sprintf(folder, "My folders|%s", room); + } + + /** + * Otherwise, prefix the floor name as a "public folders" moniker + */ + else { + sprintf(folder, "%s|%s", floorlist[floor], room); + } + + /** + * Replace "\" characters with "|" for pseudo-folder-delimiting + */ + for (i=0; iwc_view = newview; + smart_goto(WC->wc_roomname); +} + + + +/** + * \brief Change the view for this room + */ +void change_view(void) { + int view; + + view = atol(bstr("view")); + do_change_view(view); +} + + +/** + * \brief One big expanded tree list view --- like a folder list + * \param fold the folder to view + * \param max_folders how many folders??? + * \param num_floors hom many floors??? + */ +void do_folder_view(struct folder *fold, int max_folders, int num_floors) { + char buf[SIZ]; + int levels; + int i; + int has_subfolders = 0; + int *parents; + + parents = malloc(max_folders * sizeof(int)); + + /** BEGIN TREE MENU */ + wprintf("
    Loading folder list...
    \n"); + + /** include NanoTree */ + wprintf("\n"); + + /** initialize NanoTree */ + wprintf("\n" + ); + + free(parents); + /** END TREE MENU */ +} + +/** + * \brief Boxes and rooms and lists ... oh my! + * \param fold the folder to view + * \param max_folders how many folders??? + * \param num_floors hom many floors??? + */ +void do_rooms_view(struct folder *fold, int max_folders, int num_floors) { + char buf[256]; + char floor_name[256]; + char old_floor_name[256]; + char boxtitle[256]; + int levels, oldlevels; + int i, t; + int num_boxes = 0; + static int columns = 3; + int boxes_per_column = 0; + int current_column = 0; + int nf; + + strcpy(floor_name, ""); + strcpy(old_floor_name, ""); + + nf = num_floors; + while (nf % columns != 0) ++nf; + boxes_per_column = (nf / columns); + if (boxes_per_column < 1) boxes_per_column = 1; + + /** Outer table (for columnization) */ + wprintf("" + "
    "); + + levels = 0; + oldlevels = 0; + for (i=0; i 0) ) { + /* End inner box */ + do_template("endbox"); + + ++num_boxes; + if ((num_boxes % boxes_per_column) == 0) { + ++current_column; + if (current_column < columns) { + wprintf("\n"); + } + } + } + strcpy(old_floor_name, floor_name); + + if (levels == 1) { + /** Begin inner box */ + stresc(boxtitle, floor_name, 1, 0); + svprintf("BOXTITLE", WCS_STRING, boxtitle); + do_template("beginbox"); + } + + oldlevels = levels; + + if (levels > 1) { + wprintf(" "); + if (levels>2) for (t=0; t<(levels-2); ++t) wprintf("   "); + if (fold[i].selectable) { + wprintf(""); + } + else { + wprintf(""); + } + if (fold[i].hasnewmsgs) { + wprintf(""); + } + else { + wprintf(""); + } + extract_token(buf, fold[i].name, levels-1, '|', sizeof buf); + escputs(buf); + wprintf(""); + if (fold[i].selectable) { + wprintf(""); + } + else { + wprintf(""); + } + if (!strcasecmp(fold[i].name, "My Folders|Mail")) { + wprintf(" (INBOX)"); + } + wprintf("
    \n"); + } + } + /** End the final inner box */ + do_template("endbox"); + + wprintf("
    \n"); +} + +/** + * \brief print a floor div??? + * \param which_floordiv name of the floordiv??? + */ +void set_floordiv_expanded(char *which_floordiv) { + begin_ajax_response(); + safestrncpy(WC->floordiv_expanded, which_floordiv, sizeof WC->floordiv_expanded); + end_ajax_response(); +} + +/** + * \brief view the iconbar + * \param fold the folder to view + * \param max_folders how many folders??? + * \param num_floors hom many floors??? + */ +void do_iconbar_view(struct folder *fold, int max_folders, int num_floors) { + char buf[256]; + char floor_name[256]; + char old_floor_name[256]; + char floordivtitle[256]; + char floordiv_id[32]; + int levels, oldlevels; + int i, t; + int num_drop_targets = 0; + char *icon = NULL; + + strcpy(floor_name, ""); + strcpy(old_floor_name, ""); + + levels = 0; + oldlevels = 0; + for (i=0; i 0) ) { + /** End inner box */ + wprintf("
    \n"); + wprintf("
    \n"); /** floordiv */ + } + strcpy(old_floor_name, floor_name); + + if (levels == 1) { + /** Begin floor */ + stresc(floordivtitle, floor_name, 0, 0); + sprintf(floordiv_id, "floordiv%d", i); + wprintf("" + "%s
    \n", floordiv_id, floordivtitle); + wprintf("
    ", + floordiv_id, + (!strcasecmp(floordiv_id, WC->floordiv_expanded) ? "block" : "none") + ); + } + + oldlevels = levels; + + if (levels > 1) { + wprintf("
    ", i); + wprintf(" "); + if (levels>2) for (t=0; t<(levels-2); ++t) wprintf(" "); + + /** choose the icon */ + if (fold[i].view == VIEW_ADDRESSBOOK) { + icon = "viewcontacts_16x.gif" ; + } + else if (fold[i].view == VIEW_CALENDAR) { + icon = "calarea_16x.gif" ; + } + else if (fold[i].view == VIEW_CALBRIEF) { + icon = "calarea_16x.gif" ; + } + else if (fold[i].view == VIEW_TASKS) { + icon = "taskmanag_16x.gif" ; + } + else if (fold[i].view == VIEW_NOTES) { + icon = "storenotes_16x.gif" ; + } + else if (fold[i].view == VIEW_MAILBOX) { + icon = "privatemess_16x.gif" ; + } + else { + icon = "chatrooms_16x.gif" ; + } + + if (fold[i].selectable) { + wprintf(""); + wprintf("\"\" ", icon); + } + else { + wprintf(""); + } + if (fold[i].hasnewmsgs) { + wprintf(""); + } + else { + wprintf(""); + } + extract_token(buf, fold[i].name, levels-1, '|', sizeof buf); + escputs(buf); + if (!strcasecmp(fold[i].name, "My Folders|Mail")) { + wprintf(" (INBOX)"); + } + wprintf(""); + if (fold[i].selectable) { + wprintf(""); + } + else { + wprintf(""); + } + wprintf("
    "); + wprintf("
    \n"); /** roomdiv */ + } + } + wprintf("
    \n"); /** floordiv */ + + + /** BEGIN: The old invisible pixel trick, to get our JavaScript to initialize */ + wprintf(" 1) { + wprintf("drop_targets_elements[%d]=$('roomdiv%d');\n", num_drop_targets, i); + wprintf("drop_targets_roomnames[%d]='", num_drop_targets); + jsescputs(fold[i].room); + wprintf("';\n"); + ++num_drop_targets; + } + } + + wprintf("num_drop_targets = %d;\n", num_drop_targets); + if (strlen(WC->floordiv_expanded) > 1) { + wprintf("which_div_expanded = '%s';\n", WC->floordiv_expanded); + } + + wprintf("\">\n"); + /** END: The old invisible pixel trick, to get our JavaScript to initialize */ +} + + + +/** + * \brief Show the room list. + * (only should get called by + * knrooms() because that's where output_headers() is called from) + * \param viewpref the view preferences??? + */ + +void list_all_rooms_by_floor(char *viewpref) { + char buf[SIZ]; + int swap = 0; + struct folder *fold = NULL; + struct folder ftmp; + int max_folders = 0; + int alloc_folders = 0; + int i, j; + int ra_flags = 0; + int flags = 0; + int num_floors = 1; /** add an extra one for private folders */ + + /** If our cached folder list is very old, burn it. */ + if (WC->cache_fold != NULL) { + if ((time(NULL) - WC->cache_timestamp) > 300) { + free(WC->cache_fold); + WC->cache_fold = NULL; + } + } + + /** Can we do the iconbar roomlist from cache? */ + if ((WC->cache_fold != NULL) && (!strcasecmp(viewpref, "iconbar"))) { + do_iconbar_view(WC->cache_fold, WC->cache_max_folders, WC->cache_num_floors); + return; + } + + /** Grab the floor table so we know how to build the list... */ + load_floorlist(); + + /** Start with the mailboxes */ + max_folders = 1; + alloc_folders = 1; + fold = malloc(sizeof(struct folder)); + memset(fold, 0, sizeof(struct folder)); + strcpy(fold[0].name, "My folders"); + fold[0].is_mailbox = 1; + + /** Then add floors */ + serv_puts("LFLR"); + serv_getln(buf, sizeof buf); + if (buf[0]=='1') while(serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + if (max_folders >= alloc_folders) { + alloc_folders = max_folders + 100; + fold = realloc(fold, + alloc_folders * sizeof(struct folder)); + } + memset(&fold[max_folders], 0, sizeof(struct folder)); + extract_token(fold[max_folders].name, buf, 1, '|', sizeof fold[max_folders].name); + ++max_folders; + ++num_floors; + } + + /** Now add rooms */ + serv_puts("LKRA"); + serv_getln(buf, sizeof buf); + if (buf[0]=='1') while(serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + if (max_folders >= alloc_folders) { + alloc_folders = max_folders + 100; + fold = realloc(fold, + alloc_folders * sizeof(struct folder)); + } + memset(&fold[max_folders], 0, sizeof(struct folder)); + extract_token(fold[max_folders].room, buf, 0, '|', sizeof fold[max_folders].room); + ra_flags = extract_int(buf, 5); + flags = extract_int(buf, 1); + fold[max_folders].floor = extract_int(buf, 2); + fold[max_folders].hasnewmsgs = + ((ra_flags & UA_HASNEWMSGS) ? 1 : 0 ); + if (flags & QR_MAILBOX) { + fold[max_folders].is_mailbox = 1; + } + fold[max_folders].view = extract_int(buf, 6); + room_to_folder(fold[max_folders].name, + fold[max_folders].room, + fold[max_folders].floor, + fold[max_folders].is_mailbox); + fold[max_folders].selectable = 1; + ++max_folders; + } + + /** Bubble-sort the folder list */ + for (i=0; i 0) { + memcpy(&ftmp, &fold[j], sizeof(struct folder)); + memcpy(&fold[j], &fold[j+1], + sizeof(struct folder)); + memcpy(&fold[j+1], &ftmp, + sizeof(struct folder)); + } + } + } + + + if (!strcasecmp(viewpref, "folders")) { + do_folder_view(fold, max_folders, num_floors); + } + else if (!strcasecmp(viewpref, "hackish_view")) { + for (i=0; i\n"); + } + } + else if (!strcasecmp(viewpref, "iconbar")) { + do_iconbar_view(fold, max_folders, num_floors); + } + else { + do_rooms_view(fold, max_folders, num_floors); + } + + /* Don't free the folder list ... cache it for future use! */ + if (WC->cache_fold != NULL) { + free(WC->cache_fold); + } + WC->cache_fold = fold; + WC->cache_max_folders = max_folders; + WC->cache_num_floors = num_floors; + WC->cache_timestamp = time(NULL); +} + + +/** + * \brief Do either a known rooms list or a folders list, depending on the + * user's preference + */ +void knrooms(void) +{ + char listviewpref[SIZ]; + + output_headers(1, 1, 2, 0, 0, 0); + + /** Determine whether the user is trying to change views */ + if (bstr("view") != NULL) { + if (strlen(bstr("view")) > 0) { + set_preference("roomlistview", bstr("view"), 1); + } + } + + get_preference("roomlistview", listviewpref, sizeof listviewpref); + + if ( (strcasecmp(listviewpref, "folders")) + && (strcasecmp(listviewpref, "table")) ) { + strcpy(listviewpref, "rooms"); + } + + /** title bar */ + wprintf("
    \n" + "\n"); + + /** offer the ability to switch views */ + wprintf("
    " + "" + ); + if (!strcasecmp(listviewpref, "rooms")) { + wprintf(_("Room list")); + } + if (!strcasecmp(listviewpref, "folders")) { + wprintf(_("Folder list")); + } + if (!strcasecmp(listviewpref, "table")) { + wprintf(_("Room list")); + } + wprintf("
    \n" + "
    "); + offer_start_page(); + wprintf("
    \n"); + wprintf("
    \n" + "
    \n" + "
    \n"); + + /** Display the room list in the user's preferred format */ + list_all_rooms_by_floor(listviewpref); + wDumpContent(1); +} + + + +/** + * \brief Set the message expire policy for this room and/or floor + */ +void set_room_policy(void) { + char buf[SIZ]; + + if (strlen(bstr("ok_button")) == 0) { + strcpy(WC->ImportantMessage, + _("Cancelled. Changes were not saved.")); + display_editroom(); + return; + } + + serv_printf("SPEX room|%d|%d", atoi(bstr("roompolicy")), atoi(bstr("roomvalue"))); + serv_getln(buf, sizeof buf); + strcpy(WC->ImportantMessage, &buf[4]); + + if (WC->axlevel >= 6) { + strcat(WC->ImportantMessage, "
    \n"); + serv_printf("SPEX floor|%d|%d", atoi(bstr("floorpolicy")), atoi(bstr("floorvalue"))); + serv_getln(buf, sizeof buf); + strcat(WC->ImportantMessage, &buf[4]); + } + + display_editroom(); +} + + +/*@}*/ diff --git a/webcit/rss.c b/webcit/rss.c new file mode 100644 index 000000000..6a962559a --- /dev/null +++ b/webcit/rss.c @@ -0,0 +1,349 @@ +/* + * $Id$ + */ +/** + * \defgroup RssRooms Generate some RSS for our rooms. + * \ingroup WebcitHttpServerRSS + */ +/*@{*/ +#include "webcit.h" +#include "webserver.h" + + +time_t if_modified_since; /**< the last modified stamp */ + +/** + * \brief view rss Config menu + * \param reply_to the original author + * \param subject the subject of the feed + */ +void display_rss_control(char *reply_to, char *subject) +{ + wprintf("

    \n"); + wprintf("[%s] \n", _("Reply")); + wprintf("[%s]\n", _("Email")); + wprintf("

    \n"); +} + + +/** + * \brief print the feed to the subscriber + * \param roomname the room we sould print out as rss + * \param request_method the way the rss is requested???? + */ +void display_rss(char *roomname, char *request_method) +{ + int nummsgs; + int a, b; + int bq = 0; + time_t now = 0L; + struct tm now_tm; +#ifdef HAVE_ICONV + iconv_t ic = (iconv_t)(-1) ; + char *ibuf; /**< Buffer of characters to be converted */ + char *obuf; /**< Buffer for converted characters */ + size_t ibuflen; /**< Length of input buffer */ + size_t obuflen; /**< Length of output buffer */ + char *osav; /**< Saved pointer to output buffer */ +#endif + char buf[SIZ]; + char date[30]; + char from[256]; + char subj[256]; + char node[256]; + char hnod[256]; + char room[256]; + char rfca[256]; + char rcpt[256]; + char msgn[256]; + char content_type[256]; + char charset[256]; + + if (!WC->logged_in) { + authorization_required(_("Not logged in")); + return; + } + + if (gotoroom((char *)roomname)) { + lprintf(3, "RSS: Can't goto requested room\n"); + wprintf("HTTP/1.1 404 Not Found\r\n"); + wprintf("Content-Type: text/html\r\n"); + wprintf("\r\n"); + wprintf("Error retrieving RSS feed: couldn't find room\n"); + return; + } + + nummsgs = load_msg_ptrs("MSGS LAST|15", 0); + if (nummsgs == 0) { + lprintf(3, "RSS: No messages found\n"); + wprintf("HTTP/1.1 404 Not Found\r\n"); + wprintf("Content-Type: text/html\r\n"); + wprintf("\r\n"); + wprintf(_("Error retrieving RSS feed: couldn't find messages\n")); + return; + } + + /** Read time of last message immediately */ + serv_printf("MSG4 %ld", WC->msgarr[nummsgs - 1]); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + while (serv_getln(buf, sizeof buf), strcasecmp(buf, "000")) { + if (!strncasecmp(buf, "msgn=", 5)) { + strcpy(msgn, &buf[5]); + } + if (!strncasecmp(buf, "time=", 5)) { + now = atol(&buf[5]); + gmtime_r(&now, &now_tm); + strftime(date, sizeof date, "%a, %d %b %Y %H:%M:%S GMT", &now_tm); + } + } + } + + if (if_modified_since > 0 && if_modified_since > now) { + lprintf(3, "RSS: Feed not updated since the last time you looked\n"); + wprintf("HTTP/1.1 304 Not Modified\r\n"); + wprintf("Last-Modified: %s\r\n", date); + now = time(NULL); + gmtime_r(&now, &now_tm); + strftime(date, sizeof date, "%a, %d %b %Y %H:%M:%S GMT", &now_tm); + wprintf("Date: %s\r\n", date); +/* if (*msgn) wprintf("ETag: %s\r\n\r\n", msgn); */ + wDumpContent(0); + return; + } + + /* Do RSS header */ + lprintf(3, "RSS: Yum yum! This feed is tasty!\n"); + wprintf("HTTP/1.1 200 OK\r\n"); + wprintf("Last-Modified: %s\r\n", date); +/* if (*msgn) wprintf("ETag: %s\r\n\r\n", msgn); */ + wprintf("Content-Type: application/rss+xml\r\n"); + wprintf("$erver: %s\r\n", SERVER); + wprintf("Connection: close\r\n"); + wprintf("\r\n"); + if (!strcasecmp(request_method, "HEAD")) + return; + + wprintf("\n"); + wprintf("\n"); + wprintf(" \n"); + wprintf(" %s - %s\n", WC->wc_roomname, serv_info.serv_humannode); + wprintf(" %s://%s:%d/dotgoto?room=", (is_https ? "https" : "http"), WC->http_host, PORT_NUM); + escputs(roomname); + wprintf("\n"); + wprintf(" "); + /** Get room info for description */ + serv_puts("RINF"); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') { + while (1) { + serv_getln(buf, sizeof buf); + if (!strcmp(buf, "000")) + break; + wprintf("%s\n", buf); + } + } + wprintf("\n"); + if (now) { + wprintf(" %s\n", date); + } + wprintf(" %s\n", SERVER); + wprintf(" http://blogs.law.harvard.edu/tech/rss\n"); + wprintf(" 30\n"); + + /** Read all messages and output as RSS items */ + for (a = 0; a < nummsgs; ++a) { + /** Read message and output each as RSS item */ + serv_printf("MSG4 %ld", WC->msgarr[a]); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') continue; + + now = 0L; + strcpy(subj, ""); + strcpy(hnod, ""); + strcpy(node, ""); + strcpy(room, ""); + strcpy(rfca, ""); + strcpy(rcpt, ""); + strcpy(msgn, ""); + + while (serv_getln(buf, sizeof buf), strcasecmp(buf, "text")) { + if (!strcmp(buf, "000")) { + goto ENDITEM; /** screw it */ + } else if (!strncasecmp(buf, "from=", 5)) { + strcpy(from, &buf[5]); +#ifdef HAVE_ICONV + utf8ify_rfc822_string(from); +#endif + } else if (!strncasecmp(buf, "subj=", 5)) { + strcpy(subj, &buf[5]); +#ifdef HAVE_ICONV + utf8ify_rfc822_string(subj); +#endif + } else if (!strncasecmp(buf, "hnod=", 5)) { + strcpy(node, &buf[5]); + } else if (!strncasecmp(buf, "room=", 5)) { + strcpy(room, &buf[5]); + } else if (!strncasecmp(buf, "rfca=", 5)) { + strcpy(rfca, &buf[5]); + } else if (!strncasecmp(buf, "rcpt=", 5)) { + strcpy(rcpt, &buf[5]); + } else if (!strncasecmp(buf, "msgn=", 5)) { + strcpy(msgn, &buf[5]); + } else if (!strncasecmp(buf, "time=", 5)) { + now = atol(&buf[5]); + gmtime_r(&now, &now_tm); + strftime(date, sizeof date, "%a, %d %b %Y %H:%M:%S GMT", &now_tm); + } + } + wprintf(" \n"); + if (subj[0]) { + wprintf(" %s from", subj); + } else { + wprintf(" <title>From"); + } + wprintf(" %s", from); + wprintf(" in %s", room); + if (strcmp(hnod, serv_info.serv_humannode) && strlen(hnod) > 0) { + wprintf(" on %s", hnod); + } + wprintf("\n"); + if (now) { + wprintf(" %s\n", date); + } + wprintf(" %s\n", msgn); + /** Now the hard part, the message itself */ + strcpy(content_type, "text/plain"); + while (serv_getln(buf, sizeof buf), strlen(buf) > 0) { + if (!strcmp(buf, "000")) { + goto ENDBODY; + } + if (!strncasecmp(buf, "Content-type: ", 14)) { + safestrncpy(content_type, &buf[14], sizeof content_type); + for (b = 0; b < strlen(content_type); ++b) { + if (!strncasecmp(&content_type[b], "charset=", 8)) { + safestrncpy(charset, &content_type[b + 8], sizeof charset); + } + } + for (b = 0; b < strlen(content_type); ++b) { + if (content_type[b] == ';') { + content_type[b] = 0; + } + } + } + } + + /** Set up a character set conversion if we need to */ +#ifdef HAVE_ICONV + if (strcasecmp(charset, "us-ascii") && strcasecmp(charset, "utf-8") && strcasecmp(charset, "") ) { + ic = ctdl_iconv_open("UTF-8", charset); + if (ic == (iconv_t)(-1)) { + lprintf(5, "%s:%d iconv_open() failed: %s\n", + __FILE__, __LINE__, strerror(errno)); + goto ENDBODY; + } + } +#endif + + /** Messages in legacy Citadel variformat get handled thusly... */ + if (!strcasecmp(content_type, "text/x-citadel-variformat")) { + int intext = 0; + + wprintf(" "); + wprintf("\n"); + break; + } + if (intext == 1 && isspace(buf[0])) { + wprintf("
    "); + } + intext = 1; + if (bq == 0 && !strncmp(buf, " >", 2)) { + wprintf("
    "); + bq = 1; + } else if (bq == 1 && strncmp(buf, " >", 2)) { + wprintf("
    "); + bq = 0; + } + url(buf); + escputs(buf); + wprintf("\n"); + } + display_rss_control(from, subj); + wprintf("]]>
    \n"); + } + /** Boring old 80-column fixed format text gets handled this way... */ + else if (!strcasecmp(content_type, "text/plain")) { + wprintf(" 0) && (isspace(buf[strlen(buf) - 1]))) + buf[strlen(buf) - 1] = 0; + if ((bq == 0) && + ((!strncmp(buf, ">", 1)) || (!strncmp(buf, " >", 2)) || (!strncmp(buf, " :-)", 4)))) { + wprintf("
    "); + bq = 1; + } else if ((bq == 1) && + (strncmp(buf, ">", 1)) && (strncmp(buf, " >", 2)) && (strncmp(buf, " :-)", 4))) { + wprintf("
    "); + bq = 0; + } + wprintf(""); + url(buf); + escputs(buf); + wprintf("
    \n"); + } + display_rss_control(from, subj); + wprintf("]]>
    \n"); + } + /** HTML is fun, but we've got to strip it first */ + else if (!strcasecmp(content_type, "text/html")) { + wprintf(" \n"); + } + +ENDBODY: + wprintf("
    \n"); +ENDITEM: + now = 0L; + } + + /** Do RSS footer */ + wprintf("
    \n"); + wprintf("
    \n"); + wDumpContent(0); +} + + +/*@}*/ diff --git a/webcit/serv_func.c b/webcit/serv_func.c new file mode 100644 index 000000000..05574c266 --- /dev/null +++ b/webcit/serv_func.c @@ -0,0 +1,401 @@ +/* + * $Id$ + */ +/** + * \defgroup ServFuncs Handles various types of data transfer operations with the Citadel service. + * \ingroup CitadelCommunitacion + */ + +/*@{*/ +#include "webcit.h" +#include "webserver.h" + +struct serv_info serv_info; /**< our connection data to the server */ + +/** + * \brief get info about the server we've connected to + * \param browser_host the citadell we want to connect to + * \param user_agent which browser uses our client? + */ +void get_serv_info(char *browser_host, char *user_agent) +{ + char buf[SIZ]; + int a; + + /** Tell the server what kind of client is connecting */ + serv_printf("IDEN %d|%d|%d|%s|%s", + DEVELOPER_ID, + CLIENT_ID, + CLIENT_VERSION, + user_agent, + browser_host + ); + serv_getln(buf, sizeof buf); + + /** Tell the server what kind of richtext we prefer */ + serv_puts("MSGP text/html|text/plain"); + serv_getln(buf, sizeof buf); + +#ifdef WEBCIT_WITH_CALENDAR_SERVICE + /** + * Tell the server that when we save a calendar event, we + * want invitations to be generated by the Citadel server + * instead of by the client. + */ + serv_puts("ICAL sgi|1"); + serv_getln(buf, sizeof buf); +#endif + + /** Now ask the server to tell us a little bit about itself... */ + serv_puts("INFO"); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') + return; + + a = 0; + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + switch (a) { + case 0: + serv_info.serv_pid = atoi(buf); + WC->ctdl_pid = serv_info.serv_pid; + break; + case 1: + safestrncpy(serv_info.serv_nodename, buf, sizeof serv_info.serv_nodename); + break; + case 2: + safestrncpy(serv_info.serv_humannode, buf, sizeof serv_info.serv_humannode); + break; + case 3: + safestrncpy(serv_info.serv_fqdn, buf, sizeof serv_info.serv_fqdn); + break; + case 4: + safestrncpy(serv_info.serv_software, buf, sizeof serv_info.serv_software); + break; + case 5: + serv_info.serv_rev_level = atoi(buf); + break; + case 6: + safestrncpy(serv_info.serv_bbs_city, buf, sizeof serv_info.serv_bbs_city); + break; + case 7: + safestrncpy(serv_info.serv_sysadm, buf, sizeof serv_info.serv_sysadm); + break; + case 9: + safestrncpy(serv_info.serv_moreprompt, buf, sizeof serv_info.serv_moreprompt); + break; + case 14: + serv_info.serv_supports_ldap = atoi(buf); + break; + case 15: + serv_info.serv_newuser_disabled = atoi(buf); + break; + } + ++a; + } +} + + + +/** + * \brief Read Citadel variformat text and spit it out as HTML. + * \param align html align string + */ +void fmout(char *align) +{ + int intext = 0; + int bq = 0; + char buf[SIZ]; + + wprintf("
    \n", align); + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + + if ((intext == 1) && (isspace(buf[0]))) { + wprintf("
    "); + } + intext = 1; + + /** + * Quoted text should be displayed in italics and in a + * different colour. This code understands Citadel-style + * " >" quotes and will convert to
    tags. + */ + if ((bq == 0) && (!strncmp(buf, " >", 2))) { + wprintf("
    "); + bq = 1; + } else if ((bq == 1) && (strncmp(buf, " >", 2))) { + wprintf("
    "); + bq = 0; + } + if ((bq == 1) && (!strncmp(buf, " >", 2))) { + strcpy(buf, &buf[2]); + } + /** Activate embedded URL's */ + url(buf); + + escputs(buf); + wprintf("\n"); + } + if (bq == 1) { + wprintf(""); + } + wprintf("

    \n"); +} + + + + +/** + * \brief Read Citadel variformat text and spit it out as HTML in a form + * suitable for embedding in another message (forward/quote). + * (NO LINEBREAKS ALLOWED HERE!) + */ +void pullquote_fmout(void) { + int intext = 0; + int bq = 0; + char buf[SIZ]; + + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + + if ((intext == 1) && (isspace(buf[0]))) { + wprintf("
    "); + } + intext = 1; + + /** + * Quoted text should be displayed in italics and in a + * different colour. This code understands Citadel-style + * " >" quotes and will convert to
    tags. + */ + if ((bq == 0) && (!strncmp(buf, " >", 2))) { + wprintf("
    "); + bq = 1; + } else if ((bq == 1) && (strncmp(buf, " >", 2))) { + wprintf("
    "); + bq = 0; + } + if ((bq == 1) && (!strncmp(buf, " >", 2))) { + strcpy(buf, &buf[2]); + } + + msgescputs(buf); + } + if (bq == 1) { + wprintf(""); + } +} + + + + +/** + * \brief Transmit message text (in memory) to the server. + * + * \param ptr Pointer to the message being transmitted + */ +void text_to_server(char *ptr) +{ + char buf[256]; + int ch, a, pos; + + pos = 0; + buf[0] = 0; + + while (ptr[pos] != 0) { + ch = ptr[pos++]; + if (ch == 10) { + while ( (isspace(buf[strlen(buf) - 1])) + && (strlen(buf) > 1) ) + buf[strlen(buf) - 1] = 0; + serv_puts(buf); + buf[0] = 0; + if (ptr[pos] != 0) strcat(buf, " "); + } else { + a = strlen(buf); + buf[a + 1] = 0; + buf[a] = ch; + if ((ch == 32) && (strlen(buf) > 200)) { + buf[a] = 0; + serv_puts(buf); + buf[0] = 0; + } + if (strlen(buf) > 250) { + serv_puts(buf); + buf[0] = 0; + } + } + } + serv_puts(buf); +} + + +/** + * \brief Transmit message text (in memory) to the server, + * converting to Quoted-Printable encoding as we go. + * + * \param ptr Pointer to the message being transmitted + */ +void text_to_server_qp(char *ptr) +{ + char buf[256]; + int ch, pos; + int output_len = 0; + + pos = 0; + buf[0] = 0; + output_len = 0; + + while (ptr[pos] != 0) { + ch = ptr[pos++]; + + if (ch == 13) { + /* ignore carriage returns */ + } + else if (ch == 10) { + /* hard line break */ + if (output_len > 0) { + if (isspace(buf[output_len-1])) { + sprintf(&buf[output_len-1], "=%02X", buf[output_len-1]); + output_len += 2; + } + } + buf[output_len++] = 0; + serv_puts(buf); + output_len = 0; + } + else if (ch == 9) { + buf[output_len++] = ch; + } + else if ( (ch >= 32) && (ch <= 60) ) { + buf[output_len++] = ch; + } + else if ( (ch >= 62) && (ch <= 126) ) { + buf[output_len++] = ch; + } + else { + sprintf(&buf[output_len], "=%02X", ch); + output_len += 3; + } + + if (output_len > 72) { + /* soft line break */ + if (isspace(buf[output_len-1])) { + sprintf(&buf[output_len-1], "=%02X", buf[output_len-1]); + output_len += 2; + } + buf[output_len++] = '='; + buf[output_len++] = 0; + serv_puts(buf); + output_len = 0; + } + } + + /* end of data - transmit anything that's left */ + if (output_len > 0) { + if (isspace(buf[output_len-1])) { + sprintf(&buf[output_len-1], "=%02X", buf[output_len-1]); + output_len += 2; + } + buf[output_len++] = 0; + serv_puts(buf); + output_len = 0; + } +} + + + + +/** + * \brief translate server message output to text + * (used for editing room info files and such) + */ +void server_to_text() +{ + char buf[SIZ]; + + int count = 0; + + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + if ((buf[0] == 32) && (count > 0)) { + wprintf("\n"); + } + wprintf("%s", buf); + ++count; + } +} + + + +/** + * Read binary data from server into memory using a series of + * server READ commands. + * \param buffer the output buffer + * \param total_len the maximal length of buffer + */ +void read_server_binary(char *buffer, size_t total_len) { + char buf[SIZ]; + size_t bytes = 0; + size_t thisblock = 0; + + memset(buffer, 0, total_len); + while (bytes < total_len) { + thisblock = 4095; + if ((total_len - bytes) < thisblock) { + thisblock = total_len - bytes; + if (thisblock == 0) return; + } + serv_printf("READ %d|%d", (int)bytes, (int)thisblock); + serv_getln(buf, sizeof buf); + if (buf[0] == '6') { + thisblock = (size_t)atoi(&buf[4]); + if (!WC->connected) return; + serv_read(&buffer[bytes], thisblock); + bytes += thisblock; + } + else { + lprintf(3, "Error: %s\n", &buf[4]); + return; + } + } +} + + +/** + * \brief Read text from server, appending to a string buffer until the + * usual 000 terminator is found. Caller is responsible for freeing + * the returned pointer. + */ +char *read_server_text(void) { + char *text = NULL; + size_t bytes_allocated = 0; + size_t bytes_read = 0; + int linelen; + char buf[SIZ]; + + text = malloc(SIZ); + if (text == NULL) { + return(NULL); + } + text[0] = 0; + bytes_allocated = SIZ; + + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + linelen = strlen(buf); + buf[linelen] = '\n'; + buf[linelen+1] = 0; + ++linelen; + + if ((bytes_read + linelen) >= (bytes_allocated - 2)) { + bytes_allocated = 2 * bytes_allocated; + text = realloc(text, bytes_allocated); + } + + strcpy(&text[bytes_read], buf); + bytes_read += linelen; + } + + return(text); +} + + + +/*@}*/ diff --git a/webcit/setup.c b/webcit/setup.c new file mode 100644 index 000000000..f11a91767 --- /dev/null +++ b/webcit/setup.c @@ -0,0 +1,683 @@ +/* + * $Id$ + * + * WebCit setup utility + * + * (This is basically just an install wizard. It's not required.) + * + */ + +#include "config.h" +#include "webcit.h" +#include "webserver.h" + + +#ifdef HAVE_NEWT +#include +#endif + + +#define UI_TEXT 0 /* Default setup type -- text only */ +#define UI_DIALOG 2 /* Use the 'dialog' program */ +#define UI_SILENT 3 /* Silent running, for use in scripts */ +#define UI_NEWT 4 /* Use the "newt" window library */ + +int setup_type; +char setup_directory[SIZ]; +char init_entry[SIZ]; +int using_web_installer = 0; +char suggested_url[SIZ]; + +/* + * Set an entry in inittab to the desired state + */ +void set_init_entry(char *which_entry, char *new_state) { + char *inittab = NULL; + FILE *fp; + char buf[SIZ]; + char entry[SIZ]; + char levels[SIZ]; + char state[SIZ]; + char prog[SIZ]; + + inittab = strdup(""); + if (inittab == NULL) return; + + fp = fopen("/etc/inittab", "r"); + if (fp == NULL) return; + + while(fgets(buf, sizeof buf, fp) != NULL) { + + if (num_tokens(buf, ':') == 4) { + extract_token(entry, buf, 0, ':', sizeof entry); + extract_token(levels, buf, 1, ':', sizeof levels); + extract_token(state, buf, 2, ':', sizeof state); + extract_token(prog, buf, 3, ':', sizeof prog); /* includes 0x0a LF */ + + if (!strcmp(entry, which_entry)) { + strcpy(state, new_state); + sprintf(buf, "%s:%s:%s:%s", + entry, levels, state, prog); + } + } + + inittab = realloc(inittab, strlen(inittab) + strlen(buf) + 2); + if (inittab == NULL) { + fclose(fp); + return; + } + + strcat(inittab, buf); + } + fclose(fp); + fp = fopen("/etc/inittab", "w"); + if (fp != NULL) { + fwrite(inittab, strlen(inittab), 1, fp); + fclose(fp); + kill(1, SIGHUP); /* Tell init to re-read /etc/inittab */ + } + free(inittab); +} + + + + +/* + * Shut down the Citadel service if necessary, during setup. + */ +void shutdown_service(void) { + FILE *infp; + char buf[SIZ]; + char looking_for[SIZ]; + int have_entry = 0; + char entry[SIZ]; + char prog[SIZ]; + + strcpy(init_entry, ""); + + /* Determine the fully qualified path name of webserver */ + snprintf(looking_for, sizeof looking_for, "%s/webserver ", setup_directory); + + /* Pound through /etc/inittab line by line. Set have_entry to 1 if + * an entry is found which we believe starts webserver. + */ + infp = fopen("/etc/inittab", "r"); + if (infp == NULL) { + return; + } else { + while (fgets(buf, sizeof buf, infp) != NULL) { + buf[strlen(buf) - 1] = 0; + extract_token(entry, buf, 0, ':', sizeof entry); + extract_token(prog, buf, 3, ':', sizeof prog); + if (!strncasecmp(prog, looking_for, + strlen(looking_for))) { + ++have_entry; + strcpy(init_entry, entry); + } + } + fclose(infp); + } + + /* Bail out if there's nothing to do. */ + if (!have_entry) return; + + set_init_entry(init_entry, "off"); +} + + +/* + * Start the Citadel service. + */ +void start_the_service(void) { + if (strlen(init_entry) > 0) { + set_init_entry(init_entry, "respawn"); + } +} + + + +void cleanup(int exitcode) +{ +#ifdef HAVE_NEWT + newtCls(); + newtRefresh(); + newtFinished(); +#endif + exit(exitcode); +} + + + +void title(char *text) +{ + if (setup_type == UI_TEXT) { + printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<%s>\n", text); + } +} + + + +int yesno(char *question) +{ +#ifdef HAVE_NEWT + newtComponent form = NULL; + newtComponent yesbutton = NULL; + newtComponent nobutton = NULL; +#endif + int i = 0; + int answer = 0; + char buf[SIZ]; + + switch (setup_type) { + + case UI_TEXT: + do { + printf("%s\nYes/No --> ", question); + fgets(buf, sizeof buf, stdin); + answer = tolower(buf[0]); + if (answer == 'y') + answer = 1; + else if (answer == 'n') + answer = 0; + } while ((answer < 0) || (answer > 1)); + break; + + case UI_DIALOG: + sprintf(buf, "exec %s --yesno '%s' 10 72", + getenv("CTDL_DIALOG"), + question); + i = system(buf); + if (i == 0) { + answer = 1; + } + else { + answer = 0; + } + break; + +#ifdef HAVE_NEWT + case UI_NEWT: + newtCenteredWindow(76, 10, "Question"); + form = newtForm(NULL, NULL, 0); + for (i=0; i%s", + getenv("CTDL_DIALOG"), + prompt, + str, + dialog_result); + system(buf); + fp = fopen(dialog_result, "r"); + if (fp != NULL) { + fgets(str, sizeof buf, fp); + if (str[strlen(str)-1] == 10) { + str[strlen(str)-1] = 0; + } + fclose(fp); + unlink(dialog_result); + } + break; + +#ifdef HAVE_NEWT + case UI_NEWT: + + newtCenteredWindow(76, 10, "WebCit setup"); + form = newtForm(NULL, NULL, 0); + for (i=0; i 0) && (curr <= cmax)) { + newtScaleSet(scale, curr); + newtRefresh(); + } + if (curr == cmax) { + newtFormDestroy(form); + newtPopWindow(); + newtRefresh(); + } + break; +#endif + + } +} + + + + +/* + * check_inittab_entry() -- Make sure "webserver" is in /etc/inittab + * + */ +void check_inittab_entry(void) +{ + FILE *infp; + char buf[SIZ]; + char looking_for[SIZ]; + char question[SIZ]; + char entryname[5]; + char http_port[128]; +#ifdef HAVE_OPENSSL + char https_port[128]; +#endif + char hostname[128]; + char portname[128]; + struct utsname my_utsname; + + /* Determine the fully qualified path name of webserver */ + snprintf(looking_for, sizeof looking_for, "%s/webserver", setup_directory); + + /* If there's already an entry, then we have nothing left to do. */ + if (strlen(init_entry) > 0) { + return; + } + + /* Otherwise, prompt the user to create an entry. */ + snprintf(question, sizeof question, + "There is no '%s' entry in /etc/inittab.\n" + "Would you like to add one?", + looking_for); + if (yesno(question) == 0) + return; + + snprintf(question, sizeof question, + "On which port do you want WebCit to listen for HTTP " + "requests?\n\nYou can use the standard port (80) if you are " + "not running another\nweb server (such as Apache), otherwise " + "select another port."); + sprintf(http_port, "2000"); + set_value(question, http_port); + uname(&my_utsname); + sprintf(suggested_url, "http://%s:%s/", my_utsname.nodename, http_port); + +#ifdef HAVE_OPENSSL + snprintf(question, sizeof question, + "On which port do you want WebCit to listen for HTTPS " + "requests?\n\nYou can use the standard port (443) if you are " + "not running another\nweb server (such as Apache), otherwise " + "select another port."); + sprintf(https_port, "443"); + set_value(question, https_port); +#endif + + /* Find out where Citadel is. */ + if ( (using_web_installer) && (getenv("CITADEL") != NULL) ) { + strcpy(hostname, "uds"); + strcpy(portname, getenv("CITADEL")); + } + else { + snprintf(question, sizeof question, + "Is the Citadel service running on the same host as WebCit?"); + if (yesno(question)) { + sprintf(hostname, "uds"); + sprintf(portname, "/usr/local/citadel"); + set_value("In what directory is Citadel installed?", portname); + } + else { + sprintf(hostname, "127.0.0.1"); + sprintf(portname, "504"); + set_value("Enter the host name or IP address of your " + "Citadel server.", hostname); + set_value("Enter the port number on which Citadel is " + "running (usually 504)", portname); + } + } + + /* Generate unique entry names for /etc/inittab */ + snprintf(entryname, sizeof entryname, "c0"); + do { + ++entryname[1]; + if (entryname[1] > '9') { + entryname[1] = 0; + ++entryname[0]; + if (entryname[0] > 'z') { + display_error( + "Can't generate a unique entry name"); + return; + } + } + snprintf(buf, sizeof buf, + "grep %s: /etc/inittab >/dev/null 2>&1", entryname); + } while (system(buf) == 0); + + + /* Now write it out to /etc/inittab */ + infp = fopen("/etc/inittab", "a"); + if (infp == NULL) { + display_error(strerror(errno)); + } else { + fprintf(infp, "# Start the WebCit server...\n"); + fprintf(infp, "h%s:2345:respawn:%s -p%s %s %s\n", + entryname, looking_for, + http_port, hostname, portname); +#ifdef HAVE_OPENSSL + fprintf(infp, "s%s:2345:respawn:%s -p%s -s %s %s\n", + entryname, looking_for, + https_port, hostname, portname); +#endif + fclose(infp); + strcpy(init_entry, entryname); + } +} + + + + +/* + * Figure out what type of user interface we're going to use + */ +int discover_ui(void) +{ + + /* Use "dialog" if we have it */ + if (getenv("CTDL_DIALOG") != NULL) { + return UI_DIALOG; + } + +#ifdef HAVE_NEWT + newtInit(); + newtCls(); + newtDrawRootText(0, 0, "WebCit Setup"); + return UI_NEWT; +#endif + return UI_TEXT; +} + + + + + +int main(int argc, char *argv[]) +{ + int a; + char aaa[256]; + int info_only = 0; + strcpy(suggested_url, "http://:/"); + + /* set an invalid setup type */ + setup_type = (-1); + + /* Check to see if we're running the web installer */ + if (getenv("CITADEL_INSTALLER") != NULL) { + using_web_installer = 1; + } + + /* parse command line args */ + for (a = 0; a < argc; ++a) { + if (!strncmp(argv[a], "-u", 2)) { + strcpy(aaa, argv[a]); + strcpy(aaa, &aaa[2]); + setup_type = atoi(aaa); + } + if (!strcmp(argv[a], "-i")) { + info_only = 1; + } + if (!strcmp(argv[a], "-q")) { + setup_type = UI_SILENT; + } + } + + + /* If a setup type was not specified, try to determine automatically + * the best one to use out of all available types. + */ + if (setup_type < 0) { + setup_type = discover_ui(); + } + if (info_only == 1) { + important_message("WebCit Setup", "Welcome to WebCit setup"); + cleanup(0); + } + + /* If we're on something BSDish then we don't have inittab */ + if (access("/etc/inittab", F_OK)) { + important_message("Not running SysV style init", + "WebCit Setup can only run on systems that use /etc/inittab.\n" + "Please manually configure your startup scripts to run WebCit\n" + "when the system is booted.\n"); + cleanup(0); + } + + /* Get started in a valid setup directory. */ + strcpy(setup_directory, PREFIX); + if ( (using_web_installer) && (getenv("WEBCIT") != NULL) ) { + strcpy(setup_directory, getenv("WEBCIT")); + } + else { + set_value("In what directory is WebCit installed?", + setup_directory); + } + if (chdir(setup_directory) != 0) { + important_message("WebCit Setup", + "The directory you specified does not exist."); + cleanup(errno); + } + + /* See if we need to shut down the WebCit service. */ + for (a=0; a<=3; ++a) { + progress("Shutting down the WebCit service...", a, 3); + if (a == 0) shutdown_service(); + sleep(1); + } + + /* Now begin. */ + switch (setup_type) { + + case UI_TEXT: + printf("\n\n\n" + " *** WebCit setup program ***\n\n"); + break; + + } + + check_inittab_entry(); /* Check /etc/inittab */ + + /* See if we can start the WebCit service. */ + if (strlen(init_entry) > 0) { + for (a=0; a<=3; ++a) { + progress("Starting the WebCit service...", a, 3); + if (a == 0) start_the_service(); + sleep(1); + } + sprintf(aaa, + "Setup is finished. You may now log in.\n" + "Point your web browser at %s\n", suggested_url); + important_message("Setup finished", aaa); + } + else { + important_message("Setup finished", + "Setup is finished. You may now start the server."); + } + + cleanup(0); + return 0; +} diff --git a/webcit/setup_wizard.c b/webcit/setup_wizard.c new file mode 100644 index 000000000..bc2b2277a --- /dev/null +++ b/webcit/setup_wizard.c @@ -0,0 +1,56 @@ +/* + * $Id$ + * + * First-time setup wizard + */ + +#include "webcit.h" + + +/* + */ +void do_setup_wizard(void) +{ + char *step; + FILE *fp; + + step = bstr("step"); + + if (!strcasecmp(step, "Finish")) { + fp = fopen(wizard_filename, "w"); + if (fp != NULL) { + fprintf(fp, "%d\n", serv_info.serv_rev_level); + fclose(fp); + } + do_welcome(); + return; + } + + output_headers(1, 1, 2, 0, 0, 0); + + wprintf("
    \n"); + wprintf("
    "); + wprintf("\""); + wprintf(" First time setup"); + wprintf(""); + wprintf("
    \n"); + wprintf("
    \n" + "
    \n"); + + wprintf("
    " + "
    \n" + ); + + wprintf("
    " + "This is where the setup wizard will be placed.
    \n" + "For now, just click Finish.

    \n" + ); + + wprintf("\n"); + wprintf("\n"); + + wprintf("
    \n"); + wDumpContent(1); +} + + diff --git a/webcit/siteconfig.c b/webcit/siteconfig.c new file mode 100644 index 000000000..17a7c3cd4 --- /dev/null +++ b/webcit/siteconfig.c @@ -0,0 +1,650 @@ +/* + * $Id$ + */ +/** + * \defgroup AdminConfig Administrative screen for site-wide configuration + * \ingroup CitadelConfig + */ +/*@{*/ + +#include "webcit.h" + +/** + * \brief display all configuration items + */ +void display_siteconfig(void) +{ + char buf[SIZ]; + int i, j; + + char general[SIZ]; + char access[SIZ]; + char network[SIZ]; + char tuning[SIZ]; + char directory[SIZ]; + char purger[SIZ]; + char idxjnl[SIZ]; + + /** expire policy settings */ + int sitepolicy = 0; + int sitevalue = 0; + int mboxpolicy = 0; + int mboxvalue = 0; + + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
    \n" + "
    " + ""); + wprintf(_("Site configuration")); + wprintf("" + "
    \n" + "
    \n
    \n" + ); + + serv_printf("CONF get"); + serv_getln(buf, sizeof buf); + if (buf[0] != '1') { + wprintf("
    "); + wprintf(""); + wprintf(_("Error")); + wprintf("\n"); + wprintf("

    \n"); + wprintf("%s
    \n", &buf[4]); + wDumpContent(1); + return; + } + + wprintf("
    " + "
    "); + + char *tabnames[] = { + _("General"), + _("Access"), + _("Network"), + _("Tuning"), + _("Directory"), + _("Auto-purger"), + _("Indexing/Journaling") + }; + + sprintf(general, "

    %s

    ", + _("General site configuration items") + ); + + sprintf(access, "

    %s

    ", + _("Access controls and site policy settings") + ); + + sprintf(network, "

    %s

    %s

    ", + _("Network services"), + _("Changes made on this screen will not take effect " + "until you restart the Citadel server.") + ); + + sprintf(tuning, "

    %s

    ", + _("Advanced server fine-tuning controls") + ); + + sprintf(directory, "

    %s

    %s

    ", + _("Configure the LDAP connector for Citadel"), + _("Changes made on this screen will not take effect " + "until you restart the Citadel server.") + ); + + sprintf(purger, "

    %s

    %s

    ", + _("Configure automatic expiry of old messages"), + _("These settings may be overridden on a per-floor or per-room basis.") + ); + + sprintf(idxjnl, "

    %s

    %s

    ", + _("Indexing and Journaling"), + _("Warning: these facilities are resource intensive.") + ); + + + wprintf("\n"); + + i = 0; + while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + switch (i++) { + case 0: + sprintf(&general[strlen(general)], "\n"); + break; + case 1: + sprintf(&general[strlen(general)], "\n"); + break; + case 2: + sprintf(&general[strlen(general)], "\n"); + break; + case 3: + sprintf(&general[strlen(general)], "\n"); + break; + case 4: + sprintf(&access[strlen(access)], "\n"); + break; + case 5: + sprintf(&tuning[strlen(tuning)], "\n"); + break; + case 6: + sprintf(&access[strlen(access)], "\n"); + break; + case 7: + sprintf(&access[strlen(access)], "\n"); + break; + case 8: + sprintf(&access[strlen(access)], "\n"); + break; + case 9: + sprintf(&access[strlen(access)], "\n"); + break; + case 10: + sprintf(&general[strlen(general)], "\n"); + break; + case 11: + sprintf(&access[strlen(access)], "\n"); + break; + case 12: + sprintf(&general[strlen(general)], "\n"); + break; + case 13: + sprintf(&general[strlen(general)], "\n"); + break; + case 14: + sprintf(&tuning[strlen(tuning)], "\n"); + break; + case 16: + sprintf(&tuning[strlen(tuning)], "\n"); + break; + case 17: + sprintf(&tuning[strlen(tuning)], "\n"); + break; + case 18: + sprintf(&access[strlen(access)], "\n"); + break; + case 19: + sprintf(&access[strlen(access)], "\n"); + break; + case 20: + sprintf(&tuning[strlen(tuning)], "\n"); + break; + case 21: + sprintf(&tuning[strlen(tuning)], "\n"); + break; + case 22: + sprintf(&tuning[strlen(tuning)], "\n"); + break; + case 23: + sprintf(&network[strlen(network)], "\n"); + break; + case 24: + sprintf(&network[strlen(network)], "\n"); + break; + case 25: /* note: reverse bool */ + sprintf(&network[strlen(network)], "\n"); + break; + case 26: + sprintf(&access[strlen(access)], "\n"); + break; + case 27: + sprintf(&network[strlen(network)], "\n"); + break; + case 28: + sprintf(&network[strlen(network)], "\n"); + break; + case 29: + sprintf(&access[strlen(access)], "\n"); + break; + case 31: + sprintf(&purger[strlen(purger)], "\n"); + break; + case 32: + sprintf(&directory[strlen(directory)], "\n"); + break; + case 33: + sprintf(&directory[strlen(directory)], "\n"); + break; + case 34: + sprintf(&directory[strlen(directory)], "\n"); + break; + case 35: + sprintf(&directory[strlen(directory)], "\n"); + break; + case 36: + sprintf(&directory[strlen(directory)], "\n"); + break; + case 37: + sprintf(&network[strlen(network)], "\n"); + break; + case 38: + sprintf(&network[strlen(network)], "\n"); + break; + case 39: + sprintf(&network[strlen(network)], "\n"); + break; + case 40: + sprintf(&network[strlen(network)], "\n"); + break; + case 41: + sprintf(&network[strlen(network)], "\n"); + break; + case 42: + sprintf(&idxjnl[strlen(idxjnl)], "\n"); + break; + case 43: + sprintf(&tuning[strlen(tuning)], "\n"); + break; + case 44: + sprintf(&network[strlen(network)], "\n"); + break; + case 45: + sprintf(&network[strlen(network)], "\n"); + break; + case 46: + sprintf(&idxjnl[strlen(idxjnl)], "\n"); + break; + case 47: + sprintf(&idxjnl[strlen(idxjnl)], "\n"); + break; + case 48: + sprintf(&idxjnl[strlen(idxjnl)], "\n"); + break; + } + } + + serv_puts("GPEX site"); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + sitepolicy = extract_int(&buf[4], 0); + sitevalue = extract_int(&buf[4], 1); + } + + serv_puts("GPEX mailboxes"); + serv_getln(buf, sizeof buf); + if (buf[0] == '2') { + mboxpolicy = extract_int(&buf[4], 0); + mboxvalue = extract_int(&buf[4], 1); + } + + + sprintf(&purger[strlen(purger)], "\n"); + + sprintf(&purger[strlen(purger)], "\n"); + + sprintf(&purger[strlen(purger)], "\n"); + + sprintf(&purger[strlen(purger)], "\n"); + + sprintf(&purger[strlen(purger)], "\n"); + + + sprintf(&general[strlen(general)], "
    "); + sprintf(&general[strlen(general)], _("Node name")); + sprintf(&general[strlen(general)], ""); + sprintf(&general[strlen(general)], "", buf); + sprintf(&general[strlen(general)], "
    "); + sprintf(&general[strlen(general)], _("Fully qualified domain name")); + sprintf(&general[strlen(general)], ""); + sprintf(&general[strlen(general)], "", buf); + sprintf(&general[strlen(general)], "
    "); + sprintf(&general[strlen(general)], _("Human-readable node name")); + sprintf(&general[strlen(general)], ""); + sprintf(&general[strlen(general)], "", buf); + sprintf(&general[strlen(general)], "
    "); + sprintf(&general[strlen(general)], _("Telephone number")); + sprintf(&general[strlen(general)], ""); + sprintf(&general[strlen(general)], "", buf); + sprintf(&general[strlen(general)], "
    "); + sprintf(&access[strlen(access)], _("Automatically grant room-aide status to users who create private rooms")); + sprintf(&access[strlen(access)], ""); + sprintf(&access[strlen(access)], "", + ((atoi(buf) != 0) ? "checked" : "")); + sprintf(&access[strlen(access)], "
    "); + sprintf(&tuning[strlen(tuning)], _("Server connection idle timeout (in seconds)")); + sprintf(&tuning[strlen(tuning)], ""); + sprintf(&tuning[strlen(tuning)], "", buf); + sprintf(&tuning[strlen(tuning)], "
    "); + sprintf(&access[strlen(access)], _("Initial access level for new users")); + sprintf(&access[strlen(access)], ""); + sprintf(&access[strlen(access)], ""); + sprintf(&access[strlen(access)], "
    "); + sprintf(&access[strlen(access)], _("Require registration for new users")); + sprintf(&access[strlen(access)], ""); + sprintf(&access[strlen(access)], "", + ((atoi(buf) != 0) ? "checked" : "")); + sprintf(&access[strlen(access)], "
    "); + sprintf(&access[strlen(access)], _("Quarantine messages from problem users")); + sprintf(&access[strlen(access)], ""); + sprintf(&access[strlen(access)], "", + ((atoi(buf) != 0) ? "checked" : "")); + sprintf(&access[strlen(access)], "
    "); + sprintf(&access[strlen(access)], _("Name of quarantine room")); + sprintf(&access[strlen(access)], ""); + sprintf(&access[strlen(access)], "", buf); + sprintf(&access[strlen(access)], "
    "); + sprintf(&general[strlen(general)], _("Paginator prompt (for text mode clients)")); + sprintf(&general[strlen(general)], ""); + sprintf(&general[strlen(general)], "", buf); + sprintf(&general[strlen(general)], "
    "); + sprintf(&access[strlen(access)], _("Restrict access to Internet mail")); + sprintf(&access[strlen(access)], ""); + sprintf(&access[strlen(access)], "", + ((atoi(buf) != 0) ? "checked" : "")); + sprintf(&access[strlen(access)], "
    "); + sprintf(&general[strlen(general)], _("Geographic location of this system")); + sprintf(&general[strlen(general)], ""); + sprintf(&general[strlen(general)], "", buf); + sprintf(&general[strlen(general)], "
    "); + sprintf(&general[strlen(general)], _("Name of system administrator")); + sprintf(&general[strlen(general)], ""); + sprintf(&general[strlen(general)], "", buf); + sprintf(&general[strlen(general)], "
    "); + sprintf(&tuning[strlen(tuning)], _("Maximum concurrent sessions (0 = no limit)")); + sprintf(&tuning[strlen(tuning)], ""); + sprintf(&tuning[strlen(tuning)], "", buf); + sprintf(&tuning[strlen(tuning)], "
    "); + sprintf(&tuning[strlen(tuning)], _("Default user purge time (days)")); + sprintf(&tuning[strlen(tuning)], ""); + sprintf(&tuning[strlen(tuning)], "", buf); + sprintf(&tuning[strlen(tuning)], "
    "); + sprintf(&tuning[strlen(tuning)], _("Default room purge time (days)")); + sprintf(&tuning[strlen(tuning)], ""); + sprintf(&tuning[strlen(tuning)], "", buf); + sprintf(&tuning[strlen(tuning)], "
    "); + sprintf(&access[strlen(access)], _("Name of room to log pages")); + sprintf(&access[strlen(access)], ""); + sprintf(&access[strlen(access)], "", buf); + sprintf(&access[strlen(access)], "
    "); + sprintf(&access[strlen(access)], _("Access level required to create rooms")); + sprintf(&access[strlen(access)], ""); + sprintf(&access[strlen(access)], ""); + sprintf(&access[strlen(access)], "
    "); + sprintf(&tuning[strlen(tuning)], _("Maximum message length")); + sprintf(&tuning[strlen(tuning)], ""); + sprintf(&tuning[strlen(tuning)], "", buf); + sprintf(&tuning[strlen(tuning)], "
    "); + sprintf(&tuning[strlen(tuning)], _("Minimum number of worker threads")); + sprintf(&tuning[strlen(tuning)], ""); + sprintf(&tuning[strlen(tuning)], "", buf); + sprintf(&tuning[strlen(tuning)], "
    "); + sprintf(&tuning[strlen(tuning)], _("Maximum number of worker threads")); + sprintf(&tuning[strlen(tuning)], ""); + sprintf(&tuning[strlen(tuning)], "", buf); + sprintf(&tuning[strlen(tuning)], "
    "); + sprintf(&network[strlen(network)], _("POP3 listener port (-1 to disable)")); + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], "", buf); + sprintf(&network[strlen(network)], "
    "); + sprintf(&network[strlen(network)], _("SMTP MTA port (-1 to disable)")); + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], "", buf); + sprintf(&network[strlen(network)], "
    "); + sprintf(&network[strlen(network)], _("Correct forged From: lines during authenticated SMTP")); + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], "", + ((atoi(buf) == 0) ? "CHECKED" : "")); + sprintf(&network[strlen(network)], "
    "); + sprintf(&access[strlen(access)], _("Allow aides to zap (forget) rooms")); + sprintf(&access[strlen(access)], ""); + sprintf(&access[strlen(access)], "", + ((atoi(buf) != 0) ? "CHECKED" : "")); + sprintf(&access[strlen(access)], "
    "); + sprintf(&network[strlen(network)], _("IMAP listener port (-1 to disable)")); + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], "", buf); + sprintf(&network[strlen(network)], "
    "); + sprintf(&network[strlen(network)], _("Network run frequency (in seconds)")); + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], "", buf); + sprintf(&network[strlen(network)], "
    "); + sprintf(&access[strlen(access)], _("Disable self-service user account creation")); + sprintf(&access[strlen(access)], ""); + sprintf(&access[strlen(access)], "", + ((atoi(buf) != 0) ? "CHECKED" : "")); + sprintf(&access[strlen(access)], "
    "); + sprintf(&purger[strlen(purger)], _("Hour to run database auto-purge")); + sprintf(&purger[strlen(purger)], ""); + sprintf(&purger[strlen(purger)], ""); + sprintf(&purger[strlen(purger)], "
    "); + sprintf(&directory[strlen(directory)], _("Host name of LDAP server (blank to disable)")); + sprintf(&directory[strlen(directory)], ""); + sprintf(&directory[strlen(directory)], "", buf); + sprintf(&directory[strlen(directory)], "
    "); + sprintf(&directory[strlen(directory)], _("Port number of LDAP server (blank to disable)")); + sprintf(&directory[strlen(directory)], ""); + sprintf(&directory[strlen(directory)], "", atoi(buf)); + sprintf(&directory[strlen(directory)], "
    "); + sprintf(&directory[strlen(directory)], _("Base DN")); + sprintf(&directory[strlen(directory)], ""); + sprintf(&directory[strlen(directory)], "", buf); + sprintf(&directory[strlen(directory)], "
    "); + sprintf(&directory[strlen(directory)], _("Bind DN")); + sprintf(&directory[strlen(directory)], ""); + sprintf(&directory[strlen(directory)], "", buf); + sprintf(&directory[strlen(directory)], "
    "); + sprintf(&directory[strlen(directory)], _("Password for bind DN")); + sprintf(&directory[strlen(directory)], ""); + sprintf(&directory[strlen(directory)], "", + buf); + sprintf(&directory[strlen(directory)], "
    "); + sprintf(&network[strlen(network)], _("Server IP address (0.0.0.0 for 'any')")); + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], "", buf); + sprintf(&network[strlen(network)], "
    "); + sprintf(&network[strlen(network)], _("SMTP MSA port (-1 to disable)")); + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], "", buf); + sprintf(&network[strlen(network)], "
    "); + sprintf(&network[strlen(network)], _("IMAP over SSL port (-1 to disable)")); + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], "", buf); + sprintf(&network[strlen(network)], "
    "); + sprintf(&network[strlen(network)], _("POP3 over SSL port (-1 to disable)")); + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], "", buf); + sprintf(&network[strlen(network)], "
    "); + sprintf(&network[strlen(network)], _("SMTP over SSL port (-1 to disable)")); + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], "", buf); + sprintf(&network[strlen(network)], "
    "); + sprintf(&idxjnl[strlen(idxjnl)], _("Enable full text index")); + sprintf(&idxjnl[strlen(idxjnl)], ""); + sprintf(&idxjnl[strlen(idxjnl)], "", + ((atoi(buf) != 0) ? "CHECKED" : "")); + sprintf(&idxjnl[strlen(idxjnl)], "
    "); + sprintf(&tuning[strlen(tuning)], _("Automatically delete committed database logs")); + sprintf(&tuning[strlen(tuning)], ""); + sprintf(&tuning[strlen(tuning)], "", + ((atoi(buf) != 0) ? "CHECKED" : "")); + sprintf(&tuning[strlen(tuning)], "
    "); + sprintf(&network[strlen(network)], _("Instantly expunge deleted messages in IMAP")); + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], "", + ((atoi(buf) != 0) ? "CHECKED" : "")); + sprintf(&network[strlen(network)], "
    "); + sprintf(&network[strlen(network)], _("Allow unauthenticated SMTP clients to spoof this site's domains")); + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], "", + ((atoi(buf) != 0) ? "CHECKED" : "")); + sprintf(&network[strlen(network)], "
    "); + sprintf(&idxjnl[strlen(idxjnl)], _("Perform journaling of email messages")); + sprintf(&idxjnl[strlen(idxjnl)], ""); + sprintf(&idxjnl[strlen(idxjnl)], "", + ((atoi(buf) != 0) ? "CHECKED" : "")); + sprintf(&idxjnl[strlen(idxjnl)], "
    "); + sprintf(&idxjnl[strlen(idxjnl)], _("Perform journaling of non-email messages")); + sprintf(&idxjnl[strlen(idxjnl)], ""); + sprintf(&idxjnl[strlen(idxjnl)], "", + ((atoi(buf) != 0) ? "CHECKED" : "")); + sprintf(&idxjnl[strlen(idxjnl)], "
    "); + sprintf(&idxjnl[strlen(idxjnl)], _("Email destination of journalized messages")); + sprintf(&idxjnl[strlen(idxjnl)], ""); + sprintf(&idxjnl[strlen(idxjnl)], "", buf); + sprintf(&idxjnl[strlen(idxjnl)], "

    "); + sprintf(&purger[strlen(purger)], _("Default message expire policy for public rooms")); + sprintf(&purger[strlen(purger)], ""); + sprintf(&purger[strlen(purger)], "", + ((sitepolicy == 1) ? "CHECKED" : "") ); + sprintf(&purger[strlen(purger)], _("Never automatically expire messages")); + sprintf(&purger[strlen(purger)], "
    \n"); + sprintf(&purger[strlen(purger)], "", + ((sitepolicy == 2) ? "CHECKED" : "") ); + sprintf(&purger[strlen(purger)], _("Expire by message count")); + sprintf(&purger[strlen(purger)], "
    \n"); + sprintf(&purger[strlen(purger)], "", + ((sitepolicy == 3) ? "CHECKED" : "") ); + sprintf(&purger[strlen(purger)], _("Expire by message age")); + sprintf(&purger[strlen(purger)], "
    "); + sprintf(&purger[strlen(purger)], _("Number of messages or days: ")); + sprintf(&purger[strlen(purger)], "", sitevalue); + sprintf(&purger[strlen(purger)], "

    "); + sprintf(&purger[strlen(purger)], _("Default message expire policy for private mailboxes")); + sprintf(&purger[strlen(purger)], ""); + sprintf(&purger[strlen(purger)], "", + ((mboxpolicy == 0) ? "CHECKED" : "") ); + sprintf(&purger[strlen(purger)], _("Same policy as public rooms")); + sprintf(&purger[strlen(purger)], "
    \n"); + sprintf(&purger[strlen(purger)], "", + ((mboxpolicy == 1) ? "CHECKED" : "") ); + sprintf(&purger[strlen(purger)], _("Never automatically expire messages")); + sprintf(&purger[strlen(purger)], "
    \n"); + sprintf(&purger[strlen(purger)], "", + ((mboxpolicy == 2) ? "CHECKED" : "") ); + sprintf(&purger[strlen(purger)], _("Expire by message count")); + sprintf(&purger[strlen(purger)], "
    \n"); + sprintf(&purger[strlen(purger)], "", + ((mboxpolicy == 3) ? "CHECKED" : "") ); + sprintf(&purger[strlen(purger)], _("Expire by message age")); + sprintf(&purger[strlen(purger)], "
    "); + sprintf(&purger[strlen(purger)], _("Number of messages or days: ")); + sprintf(&purger[strlen(purger)], "", mboxvalue); + sprintf(&purger[strlen(purger)], "

    "); + sprintf(&access[strlen(access)], "
    "); + sprintf(&network[strlen(network)], ""); + sprintf(&tuning[strlen(tuning)], ""); + sprintf(&directory[strlen(directory)], ""); + sprintf(&purger[strlen(purger)], ""); + sprintf(&idxjnl[strlen(idxjnl)], ""); + + tabbed_dialog(7, tabnames); + + begin_tab(0, 7); wprintf("%s", general); end_tab(0, 7); + begin_tab(1, 7); wprintf("%s", access); end_tab(1, 7); + begin_tab(2, 7); wprintf("%s", network); end_tab(2, 7); + begin_tab(3, 7); wprintf("%s", tuning); end_tab(3, 7); + begin_tab(4, 7); wprintf("%s", directory); end_tab(4, 7); + begin_tab(5, 7); wprintf("%s", purger); end_tab(5, 7); + begin_tab(6, 7); wprintf("%s", idxjnl); end_tab(6, 7); + + wprintf("

    "); + wprintf("", _("Save changes")); + wprintf(" "); + wprintf("\n", _("Cancel")); + wprintf("
    \n"); + wprintf("
    \n"); + wDumpContent(1); +} + +/** + * parse siteconfig changes + */ +void siteconfig(void) +{ + char buf[256]; + + if (strlen(bstr("ok_button")) == 0) { + display_aide_menu(); + return; + } + serv_printf("CONF set"); + serv_getln(buf, sizeof buf); + if (buf[0] != '4') { + safestrncpy(WC->ImportantMessage, &buf[4], sizeof WC->ImportantMessage); + display_aide_menu(); + return; + } + serv_printf("%s", bstr("c_nodename")); + serv_printf("%s", bstr("c_fqdn")); + serv_printf("%s", bstr("c_humannode")); + serv_printf("%s", bstr("c_phonenum")); + serv_printf("%s", ((!strcasecmp(bstr("c_creataide"), "yes") ? "1" : "0"))); + serv_printf("%s", bstr("c_sleeping")); + serv_printf("%s", bstr("c_initax")); + serv_printf("%s", ((!strcasecmp(bstr("c_regiscall"), "yes") ? "1" : "0"))); + serv_printf("%s", ((!strcasecmp(bstr("c_twitdetect"), "yes") ? "1" : "0"))); + serv_printf("%s", bstr("c_twitroom")); + serv_printf("%s", bstr("c_moreprompt")); + serv_printf("%s", ((!strcasecmp(bstr("c_restrict"), "yes") ? "1" : "0"))); + serv_printf("%s", bstr("c_bbs_city")); + serv_printf("%s", bstr("c_sysadm")); + serv_printf("%s", bstr("c_maxsessions")); + serv_printf(""); /* placeholder - this field is not in use */ + serv_printf("%s", bstr("c_userpurge")); + serv_printf("%s", bstr("c_roompurge")); + serv_printf("%s", bstr("c_logpages")); + serv_printf("%s", bstr("c_createax")); + serv_printf("%s", bstr("c_maxmsglen")); + serv_printf("%s", bstr("c_min_workers")); + serv_printf("%s", bstr("c_max_workers")); + serv_printf("%s", bstr("c_pop3_port")); + serv_printf("%s", bstr("c_smtp_port")); + serv_printf("%s", ((!strcasecmp(bstr("c_rfc822_strict_from"), "yes") ? "0" : "1"))); /* note: reverse bool */ + serv_printf("%s", ((!strcasecmp(bstr("c_aide_zap"), "yes") ? "1" : "0"))); + serv_printf("%s", bstr("c_imap_port")); + serv_printf("%s", bstr("c_net_freq")); + serv_printf("%s", ((!strcasecmp(bstr("c_disable_newu"), "yes") ? "1" : "0"))); + serv_printf("1"); /* placeholder - this field is not in use */ + serv_printf("%s", bstr("c_purge_hour")); + serv_printf("%s", bstr("c_ldap_host")); + serv_printf("%s", bstr("c_ldap_port")); + serv_printf("%s", bstr("c_ldap_base_dn")); + serv_printf("%s", bstr("c_ldap_bind_dn")); + serv_printf("%s", bstr("c_ldap_bind_pw")); + serv_printf("%s", bstr("c_ip_addr")); + serv_printf("%s", bstr("c_msa_port")); + serv_printf("%s", bstr("c_imaps_port")); + serv_printf("%s", bstr("c_pop3s_port")); + serv_printf("%s", bstr("c_smtps_port")); + serv_printf("%s", ((!strcasecmp(bstr("c_enable_fulltext"), "yes") ? "1" : "0"))); + serv_printf("%s", ((!strcasecmp(bstr("c_auto_cull"), "yes") ? "1" : "0"))); + serv_printf("%s", ((!strcasecmp(bstr("c_instant_expunge"), "yes") ? "1" : "0"))); + serv_printf("%s", ((!strcasecmp(bstr("c_allow_spoofing"), "yes") ? "1" : "0"))); + serv_printf("%s", ((!strcasecmp(bstr("c_journal_email"), "yes") ? "1" : "0"))); + serv_printf("%s", ((!strcasecmp(bstr("c_journal_pubmsgs"), "yes") ? "1" : "0"))); + serv_printf("%s", bstr("c_journal_dest")); + serv_printf("000"); + + serv_printf("SPEX site|%d|%d", atoi(bstr("sitepolicy")), atoi(bstr("sitevalue"))); + serv_getln(buf, sizeof buf); + serv_printf("SPEX mailboxes|%d|%d", atoi(bstr("mboxpolicy")), atoi(bstr("mboxvalue"))); + serv_getln(buf, sizeof buf); + + safestrncpy(WC->ImportantMessage, _("Your system configuration has been updated."), + sizeof WC->ImportantMessage); + display_aide_menu(); +} + + +/*@}*/ diff --git a/webcit/snprintf.c b/webcit/snprintf.c new file mode 100644 index 000000000..66e9701e2 --- /dev/null +++ b/webcit/snprintf.c @@ -0,0 +1,99 @@ +/* + * $Id$ + */ +/** + * \defgroup SnprintfReplacement modified from Sten Gunterberg's BUGTRAQ post of 22 Jul 1997 + * --nathan bryant + * \ingroup tools + */ +/*@{*/ +/** + * \brief Replacements for snprintf() and vsnprintf() + * + * Use it only if you have the "spare" cycles needed to effectively + * do every snprintf operation twice! Why is that? Because everything + * is first vfprintf()'d to /dev/null to determine the number of bytes. + * Perhaps a bit slow for demanding applications on slow machines, + * no problem for a fast machine with some spare cycles. + * + * You don't have a /dev/null? Every Linux contains one for free! + * + * Because the format string is never even looked at, all current and + * possible future printf-conversions should be handled just fine. + * + * Written July 1997 by Sten Gunterberg (gunterberg@ergon.ch) + */ + +#include "webcit.h" +#include "webserver.h" + +/** + * \brief is it needed???? + * \param fmt the formatstring? + * \param argp how many params? + */ +static int needed(const char *fmt, va_list argp) +{ + static FILE *sink = NULL; + + /** + * ok, there's a small race here that could result in the sink being + * opened more than once if we're threaded, but I'd rather ignore it than + * spend cycles synchronizing :-) */ + + if (sink == NULL) { + if ((sink = fopen("/dev/null", "w")) == NULL) { + perror("/dev/null"); + exit(1); + } + } + return vfprintf(sink, fmt, argp); +} + +/** + * \brief vsnprintf wrapper + * \param buf the output charbuffer + * \param max maximal size of the buffer + * \param fmt the formatstring (see man printf) + * \param argp the variable argument list + */ +int vsnprintf(char *buf, size_t max, const char *fmt, va_list argp) +{ + char *p; + int size; + + if ((p = malloc(needed(fmt, argp) + 1)) == NULL) { + lprintf(1, "vsnprintf: malloc failed, aborting\n"); + abort(); + } + if ((size = vsprintf(p, fmt, argp)) >= max) + size = -1; + + strncpy(buf, p, max); + buf[max - 1] = 0; + free(p); + return size; +} + +/** + * \brief snprintf wrapper + * \param buf the output charbuffer + * \param max maximal size of the buffer + * \param fmt the formatstring (see man printf) + * \param ... the variable argument list + */ +int snprintf(char *buf, size_t max, const char *fmt,...) +{ + va_list argp; + int bytes; + + va_start(argp, fmt); + bytes = vsnprintf(buf, max, fmt, argp); + va_end(argp); + + return bytes; +} + + + +/*@}*/ diff --git a/webcit/static/BubbleTooltips.js b/webcit/static/BubbleTooltips.js new file mode 100644 index 000000000..74a174d1d --- /dev/null +++ b/webcit/static/BubbleTooltips.js @@ -0,0 +1,126 @@ +/* + * JavaScript code to create "bubble tooltips" + * + * Copyright (C) 2006 Alessandro Fulciniti [http://web-graphics.com] + * Copyright (C) 2006 Art Cancro [http://www.citadel.org] + * + * The original version of this module was released into the public + * domain. This version is distributed as part of the Citadel system + * under the terms of the GNU General Public License v2. + * + */ + +function btt_enableTooltips(id) +{ + var links, i, h; + if (!document.getElementById || !document.getElementsByTagName) { + return; + } + btt_AddCss(); + h = document.createElement("span"); + h.id = "btc"; + h.setAttribute("id", "btc"); + h.style.position = "absolute"; + document.getElementsByTagName("body")[0].appendChild(h); + if (id == null) { + links = document.getElementsByTagName("a"); + } + else { + links = document.getElementById(id).getElementsByTagName("a"); + } + for (i = 0; i < links.length; i++) { + btt_Prepare(links[i]); + } +} + +function btt_Prepare(el) +{ + var tooltip, b, s, l, ih; + ih = el.getAttribute("btt_tooltext"); + if (!ih) { + return; + } + el.removeAttribute("btt_tooltext"); + el.removeAttribute("title"); + tooltip = btt_CreateEl("span", "tooltip"); + s = btt_CreateEl("span", "top"); + s.appendChild(document.createTextNode("")); + s.innerHTML = ih; + tooltip.appendChild(s); + b = btt_CreateEl("b", "bottom"); + tooltip.appendChild(b); + btt_setOpacity(tooltip); + el.tooltip = tooltip; + el.onmouseover = btt_showTooltip; + el.onmouseout = btt_hideTooltip; + el.onmousemove = btt_Locate; +} + +function btt_showTooltip(e) +{ + document.getElementById("btc").appendChild(this.tooltip); + btt_Locate(e); +} + +function btt_hideTooltip(e) +{ + var d = document.getElementById("btc"); + if (d.childNodes.length > 0) { + d.removeChild(d.firstChild); + } +} + +function btt_setOpacity(el) +{ + el.style.filter = "alpha(opacity:95)"; + el.style.KHTMLOpacity = "0.95"; + el.style.MozOpacity = "0.95"; + el.style.opacity = "0.95"; +} + +function btt_CreateEl(t, c) +{ + var x = document.createElement(t); + x.className = c; + x.style.display = "block"; + return (x); +} + +function btt_AddCss() +{ + var l = btt_CreateEl("link"); + l.setAttribute("type", "text/css"); + l.setAttribute("rel", "stylesheet"); + l.setAttribute("href", "static/bt.css"); + l.setAttribute("media", "screen"); + document.getElementsByTagName("head")[0].appendChild(l); +} + +function btt_Locate(e) +{ + var posx = 0, posy = 0; + if (e == null) { + e = window.event; + } + if (e.pageX || e.pageY) { + posx = e.pageX; + posy = e.pageY; + } + + else if (e.clientX || e.clientY) { + if (document.documentElement.scrollTop) { + posx = + e.clientX + + document.documentElement.scrollLeft; + posy = + e.clientY + document.documentElement.scrollTop; + } + + else { + posx = e.clientX + document.body.scrollLeft; + posy = e.clientY + document.body.scrollTop; + } + } + document.getElementById("btc").style.top = (posy + 10) + "px"; + document.getElementById("btc").style.left = (posx - 260) + "px"; +} diff --git a/webcit/static/activeuser_24x.gif b/webcit/static/activeuser_24x.gif new file mode 100644 index 0000000000000000000000000000000000000000..6ec913fc0c3bfed5a72a7818f95e240e456b012e GIT binary patch literal 1209 zcmZ?wbhEHblwgox_|Cv!Y;1h`Kw4#q!=62R0{yL9T3Y5#_5Jsu_TlXfsR=eKR<5wM zwS4=aw4yXIEiG;BlE@PWnm)bRbmq*NxwG2-ee6m~jO=Og2n_U@IWukh_H8*C4p**R zad)%2bGfB3KdGjsX7A>>rAwFIznr&i^R&Z<4_6ci&73*&!{f@I?`KS!*clP(5F71& z;mq=sq~K|jYnIOs@$_`fObw}=;-LUC`)H2%etD}l03WmN{@we3jTd;nLj<`>ZzQW z)0)p6EnGA^B_YA<#>U+-uB|Gsu=Uno#POTEw1xzV1Uo((mTsY$L*R#rF8mR1*g)zzftWO&@U+ zaeb9PFhFiynOR*`Sd#BCe?~+}LCD>^cNshE+I))uLBp4vT`ei zC%HKo96H;|&uo7^K|U%)=s@@S)J{Xw&Y1a~%hY${FRjg3D$^RAe0PRdD>R zr&08vCy9@Jh0Vc(Ax@&U#u{5*ymsZBDq72{8Te=k(;a7(cLkiYl-qh`>-YjBf)BFI z=3}2Sr=zf{;T7|NN{(=*IZXv}N0xpP^H{_s?BHtQG2gGYN?uLZ&-=mWWqb@rAN*#T zw&BwON54i*F4hOqay5d+4%YWrsAlins_>HZsfovbey;zqax4$EZeQMe>C&Y~=a!v0bLPeklS3!Y z?L2+@;{N@6_wGG$(%{^V6}xxuKDl+-!9#|-cdR_IW$CtU+q!mt@7neC@PVK#sM{JNz_Y8O6QF?Y(`xpS8+vnpJCXU?2C z%VtkrJagjo>C+cY>zz7v>Xa!{CQqI`Y0{*56YC~UoH%u2?}P~x`uqE*_ILlU5b>Dy zzo)0?Pq|2UcenG@|E^R2cXf5SO!@CH<$q^q=l2rfZzaMV9UW6zGuqnP-WQ6rw6we{ z6lrSiY-(z1Y;0_3XlSo1Z>j@=`YJ9)a=hC3Olc$c`kxw*KwsCwi&IXS7i zXBL>~+1uOO+1XjyIoaCUT3cINSy}m+7@Aw!m|I#K8yg!L8*6E*-@SX6VaNi-pDe5* z3Kt2HF2?mb;48A$5j%tV~2bA0N&f1bGq-3{=YogYcuE{eK4$3%6C@W3iQMPHY z;Z$NjBFS5z)xb3Q1g{qJL4nYW36I%@S)2tvL@Yekz|Ue7l%VC@#-|%_aLUmA+kW_N(nxYWPlN)&;;i6vf!IG~FHYgvO$nK(X<--DIW^SSQ3qBGK4p-J1ByLo= zd3yW%dzSO#&IDX|7S0}BIq^W`nH_~o{7fcYVZ3rGoGqsFA;X0;mBl?ix^uo*eogCI z&%4#gJk96iByNqm5L>4tsnTa>cRV~WVacLSg>az<7wqOnO}}@wKx(O@U}}JlYj^u? zvvn5bOxmmk0<)erZ2t1-xO8@}mBIt(rOv(k?_b-)K52q*MP7+mob;ZgW7C5elTA5y zR=t|j`=MQSJa6)bq%XY(z>Nz=rRv0HD)jie_NJ(Om8Yr0-| R@nmvr$a^%X1jDrUc_8t7+ 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 literal 0 HcmV?d00001 diff --git a/webcit/static/beginbox.html b/webcit/static/beginbox.html new file mode 100644 index 000000000..0cb7c646b --- /dev/null +++ b/webcit/static/beginbox.html @@ -0,0 +1,6 @@ + +'; +}; + +ContextMenu.prototype.addItem = function(icon, title, command, value, disabled) { + if (title.charAt(0) == '$') + title = tinyMCE.getLang(title.substring(1)); + + var onMouseDown = ''; + var html = ''; + + if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0) + onMouseDown = 'contextMenu.execCommand(\'' + command + '\', \'' + value + '\');return false;'; + else + onMouseDown = this.settings['commandhandler'] + '(\'' + command + '\', \'' + value + '\');return false;'; + + if (icon == "") + icon = this.settings['spacer_image']; + + if (!disabled) + html += ''; + else + html += ''; + + html += ''; + html += ''; + html += ''; + + // Add to main + this.html += html; +}; + +ContextMenu.prototype.show = function(x, y) { + if (this.html == "") + return; + + var html = ''; + + html += '
    + + +';};ContextMenu.prototype.addItem=function(icon,title,command,value,disabled){if(title.charAt(0)=='$')title=tinyMCE.getLang(title.substring(1));var onMouseDown='';var html='';if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0)onMouseDown='contextMenu.execCommand(\''+command+'\', \''+value+'\');return false;';else onMouseDown=this.settings['commandhandler']+'(\''+command+'\', \''+value+'\');return false;';if(icon=="")icon=this.settings['spacer_image'];if(!disabled)html+='';else html+='';html+='';html+='';html+='';this.html+=html;};ContextMenu.prototype.show=function(x,y){if(this.html=="")return;var html='';html+='
    + diff --git a/webcit/static/beginbox_nt.html b/webcit/static/beginbox_nt.html new file mode 100644 index 000000000..adb84e34b --- /dev/null +++ b/webcit/static/beginbox_nt.html @@ -0,0 +1,5 @@ + +
    + +
    + diff --git a/webcit/static/bgcolor.gif b/webcit/static/bgcolor.gif new file mode 100644 index 0000000000000000000000000000000000000000..55fcf1ba65532afcb65eb8f958258aa2230fb89c GIT binary patch literal 148 zcmZ?wbhEHblw^=#Sj5Kg|33o*Ljw>1sRIWN{09RdTk$6gBLf2)gAS0*08-1q9GS7} z&Od`wo~v_}SPEkUqL0@&8x$-`6uLc=&t+rkEmm>WHCM013K%fGHU22d!jiZwMDovs tQ;l6WyxkmEEKAT1P0?Mxj@3bL_W1^ms@Sm2*WZ1&bX|Y@eGdzRH2_EwIXD0S literal 0 HcmV?d00001 diff --git a/webcit/static/blackdot.gif b/webcit/static/blackdot.gif new file mode 100644 index 0000000000000000000000000000000000000000..f79319f818d144f6cb1241bf81f8bb642bc4f4ed GIT binary patch literal 807 wcmZ?wbhEHbWMp7uXlED&qaiS&LqPE-3()`n8FWCQ0Ll{#94risEG!Jx02WLH%>V!Z literal 0 HcmV?d00001 diff --git a/webcit/static/blank.gif b/webcit/static/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bcc753a12e9854923af4b9b5b9a4b76f1bc53a6 GIT binary patch literal 42 ocmZ?wbhEHbWMp7uXkY+=|Ns9h{$ybUF?B!$NXCJQ(S^Yp0J?7nHvj+t literal 0 HcmV?d00001 diff --git a/webcit/static/body-background.gif b/webcit/static/body-background.gif new file mode 100644 index 0000000000000000000000000000000000000000..e69942eb8233ab1b0ded940bea98ec51b2d78c04 GIT binary patch literal 93 zcmZ?wbh9u|WMg1uc+AD{=+UFcj~_pI^5p5$r_Y`}d;a|Six)3mzI^%W)vMR9U;oDd hIt)Mn(#yaiRItG45`z*0Q<>fjN1pbE%y1S4YXATsHKYIl literal 0 HcmV?d00001 diff --git a/webcit/static/bold.gif b/webcit/static/bold.gif new file mode 100644 index 0000000000000000000000000000000000000000..bdb3259c3d686e7d66d33667243a6ac3909b01e5 GIT binary patch literal 81 zcmZ?wbhEHblw^=#XkcUjg8%>jEB<5wG8q|kKzxu41CvHi|H{*E`4`XG62-CUT$r?f g;{%nVhiUT;O!s=aYSV`9ZP$CB|2p@*hLOP<0LaQ7kN^Mx literal 0 HcmV?d00001 diff --git a/webcit/static/bt.css b/webcit/static/bt.css new file mode 100644 index 000000000..1759de071 --- /dev/null +++ b/webcit/static/bt.css @@ -0,0 +1,18 @@ +.tooltip { + width: 300px; + color: #000; + font:lighter 11px/1.3 sans-serif; + text-decoration:none; + text-align:left; +} + +.tooltip span.top { + padding: 30px 8px 0; + background: url(bt.gif) no-repeat top +} + +.tooltip b.bottom { + padding:3px 8px 15px; + color: #548912; + background: url(bt.gif) no-repeat bottom +} diff --git a/webcit/static/bt.gif b/webcit/static/bt.gif new file mode 100644 index 0000000000000000000000000000000000000000..6670c482f08a9b2c1aebc717711dd738cad90043 GIT binary patch literal 2131 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 O(Z?W%EHXj?0RTIYzw!bA literal 0 HcmV?d00001 diff --git a/webcit/static/calarea_48x.gif b/webcit/static/calarea_48x.gif new file mode 100644 index 0000000000000000000000000000000000000000..fbb8fcc2fa591f667cb62cb854fdfb1cc99887a8 GIT binary patch literal 911 zcmZ?wbhEHbG+;1bc*el+@87?_fB*jY@#FjV@6SK|fB*jd+qZAuym|BQL+#6#FP}br z`r~!=wHN>I-Me@9?%mtBZ@;`-y8Zh93l}b&J9qBv*|Qrje4o1h!m?${mMmGaXwjm1 z^X9eB-!pUO%<0por_H-Fb?Ve9Q>ILuII+LKzpt;aySuxqtE;oKv%S5&t*x!Oxw)yS zsjjZBy)m$+rlzW@sW$Lu)6V05QtY$k|n9epbH@28Nd%>b5%jT_gGLY@kcjRQ8&B`#F zYnu)KHm4oC_Uzlf(`mQ0NtdCM2D81BGSh5%CVOke^A|5WUA=zu!lf(Mto1t`oHW@k zsIyH> zRVTW_*4)||@p0YRRonIN?~iybCAHgJ|G}Y-zfycP#%~_%ZWmSW^Vwc_Yfq7J_BHJt z0*NOVXzKS}n0X=n;$(MkJ=+&svaT$Y4BpyZxjA?H)O7p0v(>uq?yX_n={NU>`Ns#& zZO6ae6*K*Ge*5C$Z9cPqe0q9b@%z3yi{E88&aHf(rdL~>cYNN~X!o~QfB$-)dbjxf z-ME@xx1QddRhqxeKJwo`))iNa#c~oJG;*k|c+kWZl_0OE|3~3ri%3|;!&Zq+3uY?{ vU14BkQfSk7)S)shLaC~4N&s`4&bE$)mNSlMJnk{MmhrgP;#r1=0)sUG*jj1g literal 0 HcmV?d00001 diff --git a/webcit/static/centre.gif b/webcit/static/centre.gif new file mode 100644 index 0000000000000000000000000000000000000000..f98c86a7848ad61de8e8406446bc98d43c0718f1 GIT binary patch literal 76 zcmZ?wbhEHblw^=#XkcUjg8%>jEB<5wG8q|kKzxu41Cw%3|H{*E`4`XGBGs_@+P3z+ am0})DNuf#VQ`=Tw+4srk`nPBX25SH&PZ_5G literal 0 HcmV?d00001 diff --git a/webcit/static/chatframeset.html b/webcit/static/chatframeset.html new file mode 100644 index 000000000..935d79ec0 --- /dev/null +++ b/webcit/static/chatframeset.html @@ -0,0 +1,27 @@ + + +Real-time chat: <?ROOMNAME> + + + + + + + + + + + + + + + + + +<div align="center"> +This function requires a browser that can support frames. +</div> + + + + diff --git a/webcit/static/chatrooms_16x.gif b/webcit/static/chatrooms_16x.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c95338add2c72d7572ce544de8e13759699388f GIT binary patch literal 231 zcmZ?wbhEHb6krfwIKsg2|NsA=fBwI|z_eq>j!U~aSFKu=vF3m3n!jm4wE9ol>c6S0 z|Lk7QpSDu`lv%*=5;UJB3trmmmh_6D&py zKJ%|RwJ0XIaNVDANK3JYW0J{HLAmMYizf1~epl~L;>a&)p5R_sp@UU)!?Ct^--=O)`@yB<{VD9m6^n&s1T_N(3h2G4?^ zkjS>kT&H|p-TcDBq?ELbtQzNht@48Yx{|Vrs%c$f8nfyeR``k)_vHk)ZwT{RJ*#K! z9Fd8s>6zJ^*NDyBKBu^pp}ews|E#5l`_&9}buM2v+Gi+!;J}VM38(W9^z`UIdHU?R ze$Ing2WB3B|Ka0%?N?h~=P!NFE+nUwf>9qTOQej6-2(oxUIekgd_k!5p}xf66Ii1)9N mUVEHrL+*j&E)^|=6Ubpch=U{)z#J1)YRP2ajDP$&%|uUy=lX_XtA-eudlDEsj0H5VX&uR zXsrLPreUU@UH^C#mylPCjEt3zSBr~_ii(PWfPjgEQiFX^fO}7FZfDLpViV9QH)~ujnEIWSyU@Y(&spbM0Zii8UdseMq0&MfzI|P?2T}WWX zp4(LgE`X;o{}QcwH7hMnjt7tsVL&p?qe+)u*6UM`02(qI9Qb=P=g!fC_abs9qd{`Xks~0?|n7Ul&F_U|>Y0~@qQS$5G&%eL_{{RvZ1OPj}id8BA literal 0 HcmV?d00001 diff --git a/webcit/static/citadel-logo.gif b/webcit/static/citadel-logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..58611e8430fcd070018a054db98d7a585e5511aa GIT binary patch literal 2245 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 Ts7k8~9y*=2y7jG>2?zi?ZTM?b literal 0 HcmV?d00001 diff --git a/webcit/static/citadelchat_16x.gif b/webcit/static/citadelchat_16x.gif new file mode 100644 index 0000000000000000000000000000000000000000..02fd9d370567c737c7683a0f550f0eb7035be5db GIT binary patch literal 556 zcmZ?wbhEHb6krfwc*el+|Ns8~{}28Dzv=(~wg3Nb`Tu{#|NqPX|6lO`|Fr-AXZ`=* z`Tq}4r1$@y_Wys{zJI^{{ridU-;ezN-TMDm%l}`k|9>|B|K9ljbHl&)+5g_>{CS`I z?|uHiciDg6Wqo*A{_x?+505LqJ_-8vB{&-rf#5d-m+pOJfBB~>|`$N-Yt2>#!WxO zUh(#wI~q>G`q2hqT3Y7jdU|HI?tY7#BTPI4`zKDG+7jvIq1n}>+41AI`-TMz9T=R0=bcYVjmKH?TJW(qv&!J}M++5qVDVAa& zYGt}u8<>_#y6F_1T5ZDSW=3G@$~nzEP}<(Mf1;oI@bLWlzzZ)qjue4S^F%z6Jp=*R z0{8{60bl_53Gf3z53mZb0-yz$2bckv1&{$q0X_i80mJ~W0fYcOV787j?fkq(qxooDpc-}Y>)LpgO0}+~E~)P0Ffo*~_-)BPfyGx@u_m#pKAgP7rxHUF$i?uSi?bv#UXe~)v7gF1a9AW(7K zJ1Agv=UV5MTlgi{`?(o%*6OGBn4z<(Y#~0lykt^9c;2_B2^Da(Cz`(b`r+QRC<9JT z3H;-`atIk@L9?IzA(LlsHm^0Z?9aCHGCARBV5B=c4rSj-2>Ck3v-7=JS%F8Q{sIe$ BcLo3e literal 0 HcmV?d00001 diff --git a/webcit/static/citadelchat_32x.gif b/webcit/static/citadelchat_32x.gif new file mode 100644 index 0000000000000000000000000000000000000000..0212d8754fe533afd3f1fd271f3a283dde5d2e2e GIT binary patch literal 1205 zcmb`G=~Gh&6vd-}U~yX4X{SR0*%zk+MhFpGWl4D9B`oQ~vIG#Ojx13rC>pfWCd4WM zA)r!Js1da=!2qEONLUh}HCO~eWRs+pgt1^Kr0^6B$!+)_dOrN-oVj=ImoqnvMhzgR zI1(HQ?+65dw*WZ6GQbkRI{-bvBESN`B)}+u2H-isFu)MN2*6{2-vATzZ`9RTeB zG5{$+1HgTNCV)BsF~IHB)qeqQ0#pK2!CD0v%WxbALj@R0!5}oPm73PfEP=IBFdMwc zgcs`dD!pE9!Y`ZfV$*V=Y5B5gxyZCsG(SIYT;v%Sc*eyaj0;@jLcZ}IGru>?a}2t3 zhWVWLx?F?qj6rwSpyRyP@Tw@-^;pPQR^4xU(jD|lq&0m^k%}n#BrX*8S^^0oyqMD{xGZxk1dNrzF zCw*d~b7G=nY;0JsLiJOTdKLZkWcKUHQ`*rC?P&Vo;NaXC>CG5fH%b~97?^!Qo_#^; z>+4f0l~aFEU-kR`*-!56?NvP?O)6>K-QB9b0EI#!m&-dlJ7qFiTU%RmbMw=7Qh&R@ zvV|m-N|i0X_4V~_O&M*{V_i+m#>R8CwY9DHBWr3ZYig<8F^LV^MuK)S-=Q$isZf@@B)2DM!`sbXa=A59g z+3d{B%oAw`P8{=1O-;@ChM2Oh*p!sG#KeS@q>%XdcoyqR48!6M2gb$(Vi-9N^T4nG zCX*I}`7oKJ$jC@6%KNKGKL&#l9YJI=T$l`3Cc`<3zL&{xia?1`s52eiLr1-7G%A81 zDB>PY^9-kXp@{&my{u2ZnAPjA`LmEYje48C!EM?>Eo{L+Z!z&S~)BXd3U`f+aHtSKg zrf4F5SNJyjivk2^Nwgd zzZM5sAB>hQ2XElj*?gL&dh&3?Mk^nmXalx&MB?|MJ-t@mEP2_&-W?E?Z#!}*w5J=9 z%RjbgNbTNeYj0OE_G8bs-Yp?6!d>@lKXW=m2zt~s^Tc6qrb)!z?#+E6zj`F-#y)B0 zb7oyq)s1n%Sc44PVKaahy=={Sqn6yX4d6;$^q)kmjkjo&SDX+2a)+~oNGrU0_O%oi6-t zQ;buwW136tE8dpsp)mKRN()+W$G+^x4zYVCMo=SHRdsn7=n#GA4FXS*Y)o-`hBc`*<(t|NkRLwwnI`HNn@{_v1aEx6fOx zt*!t6zt&V6bp43wx}^!**2et*zxC}+t6jV1{{R2%%$YNrHf;hLl^ko{T4VD6|9>YZ zr@tRtzC4UtJS*_$%c4VD{q}9kX=teY_pSH)^XwHXra!sp5D?(~?zXkPEzq5-ckSBs z_g(e>{~va(ah=d+e(KcT=H`?eH*S0fIcDbn|2>tJmHs|fHKk7bHy9l_Ph9_7>z^=j(&Q;qr%j(RbJpxRbLY)puy9^5tAM*mppFbXyNphth`Ru5@ND%+ z5lO+#!Oq8l&PxOYB}F3Dr>gO@i|_|?9=v+(`a#ZMei3$lwTb*Xk-~P*RA0P& z_4?H_;Yc0+zF>A^M^#_hU%&tS{r5+;>5N5y_eD+_vsoS!5*98z+%BN(Hs!(*Homlu z3KvDihn*e$@{Aoao|~3GIA3Sm;iE-6KR>^)*t>sX%Yw!1Tv{17&h6dZ#`WNExA=eNQ&Ug(@%2btTza}!`t9TG z=NM6li!U1up5h*VVa_BU$P1*^I}%7SC2Z?z8#!;&H!&m=Fhp FH2{%FsR951 literal 0 HcmV?d00001 diff --git a/webcit/static/controls.js b/webcit/static/controls.js new file mode 100644 index 000000000..43cdb3eaa --- /dev/null +++ b/webcit/static/controls.js @@ -0,0 +1,699 @@ +// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// (c) 2005 Ivan Krstic (http://blogs.law.harvard.edu/ivan) +// (c) 2005 Jon Tirsen (http://www.tirsen.com) +// Contributors: +// Richard Livsey +// Rahul Bhargava +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// Autocompleter.Base handles all the autocompletion functionality +// that's independent of the data source for autocompletion. This +// includes drawing the autocompletion menu, observing keyboard +// and mouse events, and similar. +// +// Specific autocompleters need to provide, at the very least, +// a getUpdatedChoices function that will be invoked every time +// the text inside the monitored textbox changes. This method +// should get the text for which to provide autocompletion by +// invoking this.getToken(), NOT by directly accessing +// this.element.value. This is to allow incremental tokenized +// autocompletion. Specific auto-completion logic (AJAX, etc) +// belongs in getUpdatedChoices. +// +// Tokenized incremental autocompletion is enabled automatically +// when an autocompleter is instantiated with the 'tokens' option +// in the options parameter, e.g.: +// new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' }); +// will incrementally autocomplete with a comma as the token. +// Additionally, ',' in the above example can be replaced with +// a token array, e.g. { tokens: [',', '\n'] } which +// enables autocompletion on multiple tokens. This is most +// useful when one of the tokens is \n (a newline), as it +// allows smart autocompletion after linebreaks. + +var Autocompleter = {} +Autocompleter.Base = function() {}; +Autocompleter.Base.prototype = { + baseInitialize: function(element, update, options) { + this.element = $(element); + this.update = $(update); + this.hasFocus = false; + this.changed = false; + this.active = false; + this.index = 0; + this.entryCount = 0; + + if (this.setOptions) + this.setOptions(options); + else + this.options = options || {}; + + this.options.paramName = this.options.paramName || this.element.name; + this.options.tokens = this.options.tokens || []; + this.options.frequency = this.options.frequency || 0.4; + this.options.minChars = this.options.minChars || 1; + this.options.onShow = this.options.onShow || + function(element, update){ + if(!update.style.position || update.style.position=='absolute') { + update.style.position = 'absolute'; + Position.clone(element, update, {setHeight: false, offsetTop: element.offsetHeight}); + } + new Effect.Appear(update,{duration:0.15}); + }; + this.options.onHide = this.options.onHide || + function(element, update){ new Effect.Fade(update,{duration:0.15}) }; + + if (typeof(this.options.tokens) == 'string') + this.options.tokens = new Array(this.options.tokens); + + this.observer = null; + + this.element.setAttribute('autocomplete','off'); + + Element.hide(this.update); + + Event.observe(this.element, "blur", this.onBlur.bindAsEventListener(this)); + Event.observe(this.element, "keypress", this.onKeyPress.bindAsEventListener(this)); + }, + + show: function() { + if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update); + if(!this.iefix && (navigator.appVersion.indexOf('MSIE')>0) && (Element.getStyle(this.update, 'position')=='absolute')) { + new Insertion.After(this.update, + ''); + this.iefix = $(this.update.id+'_iefix'); + } + if(this.iefix) { + Position.clone(this.update, this.iefix); + this.iefix.style.zIndex = 1; + this.update.style.zIndex = 2; + Element.show(this.iefix); + } + }, + + hide: function() { + if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update); + if(this.iefix) Element.hide(this.iefix); + }, + + startIndicator: function() { + if(this.options.indicator) Element.show(this.options.indicator); + }, + + stopIndicator: function() { + if(this.options.indicator) Element.hide(this.options.indicator); + }, + + onKeyPress: function(event) { + if(this.active) + switch(event.keyCode) { + case Event.KEY_TAB: + case Event.KEY_RETURN: + this.selectEntry(); + Event.stop(event); + case Event.KEY_ESC: + this.hide(); + this.active = false; + Event.stop(event); + return; + case Event.KEY_LEFT: + case Event.KEY_RIGHT: + return; + case Event.KEY_UP: + this.markPrevious(); + this.render(); + if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event); + return; + case Event.KEY_DOWN: + this.markNext(); + this.render(); + if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event); + return; + } + else + if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN) + return; + + this.changed = true; + this.hasFocus = true; + + if(this.observer) clearTimeout(this.observer); + this.observer = + setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000); + }, + + onHover: function(event) { + var element = Event.findElement(event, 'LI'); + if(this.index != element.autocompleteIndex) + { + this.index = element.autocompleteIndex; + this.render(); + } + Event.stop(event); + }, + + onClick: function(event) { + var element = Event.findElement(event, 'LI'); + this.index = element.autocompleteIndex; + this.selectEntry(); + this.hide(); + }, + + onBlur: function(event) { + // needed to make click events working + setTimeout(this.hide.bind(this), 250); + this.hasFocus = false; + this.active = false; + }, + + render: function() { + if(this.entryCount > 0) { + for (var i = 0; i < this.entryCount; i++) + this.index==i ? + Element.addClassName(this.getEntry(i),"selected") : + Element.removeClassName(this.getEntry(i),"selected"); + + if(this.hasFocus) { + this.show(); + this.active = true; + } + } else this.hide(); + }, + + markPrevious: function() { + if(this.index > 0) this.index-- + else this.index = this.entryCcount-1; + }, + + markNext: function() { + if(this.index < this.entryCount-1) this.index++ + else this.index = 0; + }, + + getEntry: function(index) { + return this.update.firstChild.childNodes[index]; + }, + + getCurrentEntry: function() { + return this.getEntry(this.index); + }, + + selectEntry: function() { + this.active = false; + this.updateElement(this.getCurrentEntry()); + }, + + updateElement: function(selectedElement) { + if (this.options.updateElement) { + this.options.updateElement(selectedElement); + return; + } + + var value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal'); + var lastTokenPos = this.findLastToken(); + if (lastTokenPos != -1) { + var newValue = this.element.value.substr(0, lastTokenPos + 1); + var whitespace = this.element.value.substr(lastTokenPos + 1).match(/^\s+/); + if (whitespace) + newValue += whitespace[0]; + this.element.value = newValue + value; + } else { + this.element.value = value; + } + this.element.focus(); + }, + + updateChoices: function(choices) { + if(!this.changed && this.hasFocus) { + this.update.innerHTML = choices; + Element.cleanWhitespace(this.update); + Element.cleanWhitespace(this.update.firstChild); + + if(this.update.firstChild && this.update.firstChild.childNodes) { + this.entryCount = + this.update.firstChild.childNodes.length; + for (var i = 0; i < this.entryCount; i++) { + var entry = this.getEntry(i); + entry.autocompleteIndex = i; + this.addObservers(entry); + } + } else { + this.entryCount = 0; + } + + this.stopIndicator(); + + this.index = 0; + this.render(); + } + }, + + addObservers: function(element) { + Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this)); + Event.observe(element, "click", this.onClick.bindAsEventListener(this)); + }, + + onObserverEvent: function() { + this.changed = false; + if(this.getToken().length>=this.options.minChars) { + this.startIndicator(); + this.getUpdatedChoices(); + } else { + this.active = false; + this.hide(); + } + }, + + getToken: function() { + var tokenPos = this.findLastToken(); + if (tokenPos != -1) + var ret = this.element.value.substr(tokenPos + 1).replace(/^\s+/,'').replace(/\s+$/,''); + else + var ret = this.element.value; + + return /\n/.test(ret) ? '' : ret; + }, + + findLastToken: function() { + var lastTokenPos = -1; + + for (var i=0; i lastTokenPos) + lastTokenPos = thisTokenPos; + } + return lastTokenPos; + } +} + +Ajax.Autocompleter = Class.create(); +Object.extend(Object.extend(Ajax.Autocompleter.prototype, Autocompleter.Base.prototype), { + initialize: function(element, update, url, options) { + this.baseInitialize(element, update, options); + this.options.asynchronous = true; + this.options.onComplete = this.onComplete.bind(this); + this.options.defaultParams = this.options.parameters || null; + this.url = url; + }, + + getUpdatedChoices: function() { + entry = encodeURIComponent(this.options.paramName) + '=' + + encodeURIComponent(this.getToken()); + + this.options.parameters = this.options.callback ? + this.options.callback(this.element, entry) : entry; + + if(this.options.defaultParams) + this.options.parameters += '&' + this.options.defaultParams; + + new Ajax.Request(this.url, this.options); + }, + + onComplete: function(request) { + this.updateChoices(request.responseText); + } + +}); + +// The local array autocompleter. Used when you'd prefer to +// inject an array of autocompletion options into the page, rather +// than sending out Ajax queries, which can be quite slow sometimes. +// +// The constructor takes four parameters. The first two are, as usual, +// the id of the monitored textbox, and id of the autocompletion menu. +// The third is the array you want to autocomplete from, and the fourth +// is the options block. +// +// Extra local autocompletion options: +// - choices - How many autocompletion choices to offer +// +// - partialSearch - If false, the autocompleter will match entered +// text only at the beginning of strings in the +// autocomplete array. Defaults to true, which will +// match text at the beginning of any *word* in the +// strings in the autocomplete array. If you want to +// search anywhere in the string, additionally set +// the option fullSearch to true (default: off). +// +// - fullSsearch - Search anywhere in autocomplete array strings. +// +// - partialChars - How many characters to enter before triggering +// a partial match (unlike minChars, which defines +// how many characters are required to do any match +// at all). Defaults to 2. +// +// - ignoreCase - Whether to ignore case when autocompleting. +// Defaults to true. +// +// It's possible to pass in a custom function as the 'selector' +// option, if you prefer to write your own autocompletion logic. +// In that case, the other options above will not apply unless +// you support them. + +Autocompleter.Local = Class.create(); +Autocompleter.Local.prototype = Object.extend(new Autocompleter.Base(), { + initialize: function(element, update, array, options) { + this.baseInitialize(element, update, options); + this.options.array = array; + }, + + getUpdatedChoices: function() { + this.updateChoices(this.options.selector(this)); + }, + + setOptions: function(options) { + this.options = Object.extend({ + choices: 10, + partialSearch: true, + partialChars: 2, + ignoreCase: true, + fullSearch: false, + selector: function(instance) { + var ret = []; // Beginning matches + var partial = []; // Inside matches + var entry = instance.getToken(); + var count = 0; + + for (var i = 0; i < instance.options.array.length && + ret.length < instance.options.choices ; i++) { + + var elem = instance.options.array[i]; + var foundPos = instance.options.ignoreCase ? + elem.toLowerCase().indexOf(entry.toLowerCase()) : + elem.indexOf(entry); + + while (foundPos != -1) { + if (foundPos == 0 && elem.length != entry.length) { + ret.push("
  • " + elem.substr(0, entry.length) + "" + + elem.substr(entry.length) + "
  • "); + break; + } else if (entry.length >= instance.options.partialChars && + instance.options.partialSearch && foundPos != -1) { + if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) { + partial.push("
  • " + elem.substr(0, foundPos) + "" + + elem.substr(foundPos, entry.length) + "" + elem.substr( + foundPos + entry.length) + "
  • "); + break; + } + } + + foundPos = instance.options.ignoreCase ? + elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) : + elem.indexOf(entry, foundPos + 1); + + } + } + if (partial.length) + ret = ret.concat(partial.slice(0, instance.options.choices - ret.length)) + return "
      " + ret.join('') + "
    "; + } + }, options || {}); + } +}); + +// AJAX in-place editor +// +// The constructor takes three parameters. The first is the element +// that should support in-place editing. The second is the url to submit +// the changed value to. The server should respond with the updated +// value (the server might have post-processed it or validation might +// have prevented it from changing). The third is a hash of options. +// +// Supported options are (all are optional and have sensible defaults): +// - okText - The text of the submit button that submits the changed value +// to the server (default: "ok") +// - cancelText - The text of the link that cancels editing (default: "cancel") +// - savingText - The text being displayed as the AJAX engine communicates +// with the server (default: "Saving...") +// - formId - The id given to the
    element +// (default: the id of the element to edit plus '-inplaceeditor') + +Ajax.InPlaceEditor = Class.create(); +Ajax.InPlaceEditor.defaultHighlightColor = "#FFFF99"; +Ajax.InPlaceEditor.prototype = { + initialize: function(element, url, options) { + this.url = url; + this.element = $(element); + + this.options = Object.extend({ + okText: "ok", + cancelText: "cancel", + savingText: "Saving...", + clickToEditText: "Click to edit", + okText: "ok", + rows: 1, + onComplete: function(transport, element) { + new Effect.Highlight(element, {startcolor: this.options.highlightcolor}); + }, + onFailure: function(transport) { + alert("Error communicating with the server: " + transport.responseText.stripTags()); + }, + callback: function(form) { + return Form.serialize(form); + }, + loadingText: 'Loading...', + savingClassName: 'inplaceeditor-saving', + formClassName: 'inplaceeditor-form', + highlightcolor: Ajax.InPlaceEditor.defaultHighlightColor, + highlightendcolor: "#FFFFFF", + externalControl: null, + ajaxOptions: {} + }, options || {}); + + if(!this.options.formId && this.element.id) { + this.options.formId = this.element.id + "-inplaceeditor"; + if ($(this.options.formId)) { + // there's already a form with that name, don't specify an id + this.options.formId = null; + } + } + + if (this.options.externalControl) { + this.options.externalControl = $(this.options.externalControl); + } + + this.originalBackground = Element.getStyle(this.element, 'background-color'); + if (!this.originalBackground) { + this.originalBackground = "transparent"; + } + + this.element.title = this.options.clickToEditText; + + this.onclickListener = this.enterEditMode.bindAsEventListener(this); + this.mouseoverListener = this.enterHover.bindAsEventListener(this); + this.mouseoutListener = this.leaveHover.bindAsEventListener(this); + Event.observe(this.element, 'click', this.onclickListener); + Event.observe(this.element, 'mouseover', this.mouseoverListener); + Event.observe(this.element, 'mouseout', this.mouseoutListener); + if (this.options.externalControl) { + Event.observe(this.options.externalControl, 'click', this.onclickListener); + Event.observe(this.options.externalControl, 'mouseover', this.mouseoverListener); + Event.observe(this.options.externalControl, 'mouseout', this.mouseoutListener); + } + }, + enterEditMode: function() { + if (this.saving) return; + if (this.editing) return; + this.editing = true; + this.onEnterEditMode(); + if (this.options.externalControl) { + Element.hide(this.options.externalControl); + } + Element.hide(this.element); + this.form = this.getForm(); + this.element.parentNode.insertBefore(this.form, this.element); + }, + getForm: function() { + form = document.createElement("form"); + form.id = this.options.formId; + Element.addClassName(form, this.options.formClassName) + form.onsubmit = this.onSubmit.bind(this); + + this.createEditField(form); + + if (this.options.textarea) { + var br = document.createElement("br"); + form.appendChild(br); + } + + okButton = document.createElement("input"); + okButton.type = "submit"; + okButton.value = this.options.okText; + form.appendChild(okButton); + + cancelLink = document.createElement("a"); + cancelLink.href = "#"; + cancelLink.appendChild(document.createTextNode(this.options.cancelText)); + cancelLink.onclick = this.onclickCancel.bind(this); + form.appendChild(cancelLink); + return form; + }, + createEditField: function(form) { + if (this.options.rows == 1) { + this.options.textarea = false; + var textField = document.createElement("input"); + textField.type = "text"; + textField.name = "value"; + textField.value = this.getText(); + textField.style.backgroundColor = this.options.highlightcolor; + var size = this.options.size || this.options.cols || 0; + if (size != 0) + textField.size = size; + form.appendChild(textField); + this.editField = textField; + } else { + this.options.textarea = true; + var textArea = document.createElement("textarea"); + textArea.name = "value"; + textArea.value = this.getText(); + textArea.rows = this.options.rows; + textArea.cols = this.options.cols || 40; + form.appendChild(textArea); + this.editField = textArea; + } + }, + getText: function() { + if (this.options.loadTextURL) { + this.loadExternalText(); + return this.options.loadingText; + } else { + return this.element.innerHTML; + } + }, + loadExternalText: function() { + new Ajax.Request( + this.options.loadTextURL, + { + asynchronous: true, + onComplete: this.onLoadedExternalText.bind(this) + } + ); + }, + onLoadedExternalText: function(transport) { + this.form.value.value = transport.responseText.stripTags(); + }, + onclickCancel: function() { + this.onComplete(); + this.leaveEditMode(); + return false; + }, + onFailure: function(transport) { + this.options.onFailure(transport); + if (this.oldInnerHTML) { + this.element.innerHTML = this.oldInnerHTML; + this.oldInnerHTML = null; + } + return false; + }, + onSubmit: function() { + this.saving = true; + new Ajax.Updater( + { + success: this.element, + // don't update on failure (this could be an option) + failure: null + }, + this.url, + Object.extend({ + parameters: this.options.callback(this.form, this.editField.value), + onComplete: this.onComplete.bind(this), + onFailure: this.onFailure.bind(this) + }, this.options.ajaxOptions) + ); + this.onLoading(); + return false; + }, + onLoading: function() { + this.saving = true; + this.removeForm(); + this.leaveHover(); + this.showSaving(); + }, + showSaving: function() { + this.oldInnerHTML = this.element.innerHTML; + this.element.innerHTML = this.options.savingText; + Element.addClassName(this.element, this.options.savingClassName); + this.element.style.backgroundColor = this.originalBackground; + Element.show(this.element); + }, + removeForm: function() { + if(this.form) { + Element.remove(this.form); + this.form = null; + } + }, + enterHover: function() { + if (this.saving) return; + this.element.style.backgroundColor = this.options.highlightcolor; + if (this.effect) { + this.effect.cancel(); + } + Element.addClassName(this.element, this.options.hoverClassName) + }, + leaveHover: function() { + if (this.options.backgroundColor) { + this.element.style.backgroundColor = this.oldBackground; + } + Element.removeClassName(this.element, this.options.hoverClassName) + if (this.saving) return; + this.effect = new Effect.Highlight(this.element, { + startcolor: this.options.highlightcolor, + endcolor: this.options.highlightendcolor, + restorecolor: this.originalBackground + }); + }, + leaveEditMode: function() { + Element.removeClassName(this.element, this.options.savingClassName); + this.removeForm(); + this.leaveHover(); + this.element.style.backgroundColor = this.originalBackground; + Element.show(this.element); + if (this.options.externalControl) { + Element.show(this.options.externalControl); + } + this.editing = false; + this.saving = false; + this.oldInnerHTML = null; + this.onLeaveEditMode(); + }, + onComplete: function(transport) { + this.leaveEditMode(); + this.options.onComplete.bind(this)(transport, this.element); + }, + onEnterEditMode: function() {}, + onLeaveEditMode: function() {}, + dispose: function() { + if (this.oldInnerHTML) { + this.element.innerHTML = this.oldInnerHTML; + } + this.leaveEditMode(); + Event.stopObserving(this.element, 'click', this.onclickListener); + Event.stopObserving(this.element, 'mouseover', this.mouseoverListener); + Event.stopObserving(this.element, 'mouseout', this.mouseoutListener); + if (this.options.externalControl) { + Event.stopObserving(this.options.externalControl, 'click', this.onclickListener); + Event.stopObserving(this.options.externalControl, 'mouseover', this.mouseoverListener); + Event.stopObserving(this.options.externalControl, 'mouseout', this.mouseoutListener); + } + } +}; \ No newline at end of file diff --git a/webcit/static/copy.gif b/webcit/static/copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..faebb18c4748bef16377ef00d0e577676c5dce1a GIT binary patch literal 118 zcmZ?wbhEHblw^=#n8?iV|Nnmm5NH506o0ZXGB7YR=zs)3@(fJwbNW}Fe#^gj&X!pX zn`Id*8Y1srXAOe6=537GaN~3d3*XYUCl;$1yKx#G Ro3m!y=HBnzeBIm()&NSnEENC% literal 0 HcmV?d00001 diff --git a/webcit/static/cut.gif b/webcit/static/cut.gif new file mode 100644 index 0000000000000000000000000000000000000000..ca60a1aa3a0a1bec0a2a313a0014a4dfa863ac58 GIT binary patch literal 100 zcmZ?wbhEHblw^=#n8?h)z|a812M!$g|Np<@PZmZ724)5wpa=s+EfzAR+Pck(B3d=Sy42aML`~MFx;7d700E~`4x$K% zAXEh^Cqd+V(0Tx@tA}=1Na|Wo&1TnKkeT#!(JVyg#pYa8_WqXr5&Jyv^L^gu?!9@x zxLivrr(hrqv=2e?c>MVI_~_{9@bK{9;9&pH{k^@t-QC@tot;=L_VU%MXf(RMz7dH; zmX{;paCqs#($eD60x&-TwmUH}cy9GC)oPKU!`cQ|a|Vt3eWcKev!HU@yO0ye8{Y}9HQwV2Hoi+R*MVm6PU zOeT}rXfhemLKzG?gC5Z7^}{;-Fxt91z_3nxN2}3j)aX$ILqqBzwR&)9aBy%4#K6FS z5~Wfq`xQz>|9>S{DCD3Na*%y;xx5dM_se9mK2W^?8gT~H+bfkydnFQyR4S2*C1SC- zr>95KBLY(-5{c0x?iO{4MBV=qbphSoU0p(9mrx)Sc6N3O&=&If0=_^X;CJ$QJT8w5 z@VQ*hty>%phz?E%r@f=2t*yPiz3p3|l?}AATUjhNi^XKNFd0Bg3!P40HlS6 zfJB>)P!SpxK@cj~K~O0Oh0^?Wb3;QTnM|&(uCA)8s;sQ6sHi9}FDH>mWo2bVBC)iz zw4|hjKp<>yZ$tk-xP!!`bm%Emh&~Pd6Hsy-a^RX5HBI*wo1+CcCN#Fh0=~@$;sJ@sE zUC~0Rmm;|(%4g07A#vJ2g(qZO*XFDwztHE^U!x3Yvq!e@jWvqN=ig^Qck9RDXl{+A z@T+=%T@yJ{mXe--^9K#UQ^8fPwJq!2 zGzx(}N&fg9)%4YK4>!Y4+B0R4JSi=^4r-)6)_?Zo`m#JPUAxCfNG%k@xc-z=Up~n1 z`QxnRyTQ#D%obu8E`}drVddL~gk)pU8vFU*g6*vP7k+)B)FN&M$&=Re{zk)J z#)(uCw&rA(MwakFvt6(Gl=RD+G~BAa^F6{kOpEF^;o_h4b@-__hATuX4TdiK0|Qd~ A>Hq)$ literal 0 HcmV?d00001 diff --git a/webcit/static/down_pointer.gif b/webcit/static/down_pointer.gif new file mode 100644 index 0000000000000000000000000000000000000000..49a3ef5004ac6e516834721cf4a4c48f7fb01e99 GIT binary patch literal 165 zcmZ?wbhEHb~B>4A147gVfHcFp~!5RPq>_e&m literal 0 HcmV?d00001 diff --git a/webcit/static/dragdrop.js b/webcit/static/dragdrop.js new file mode 100644 index 000000000..55461c1b9 --- /dev/null +++ b/webcit/static/dragdrop.js @@ -0,0 +1,545 @@ +// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// +// Element.Class part Copyright (c) 2005 by Rick Olson +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +/*--------------------------------------------------------------------------*/ + +var Droppables = { + drops: false, + + remove: function(element) { + for(var i = 0; i < this.drops.length; i++) + if(this.drops[i].element == element) + this.drops.splice(i,1); + }, + + add: function(element) { + element = $(element); + var options = Object.extend({ + greedy: true, + hoverclass: null + }, arguments[1] || {}); + + // cache containers + if(options.containment) { + options._containers = new Array(); + var containment = options.containment; + if((typeof containment == 'object') && + (containment.constructor == Array)) { + for(var i=0; i0) window.scrollBy(0,0); + + Event.stop(event); + } + } +} + +/*--------------------------------------------------------------------------*/ + +var SortableObserver = Class.create(); +SortableObserver.prototype = { + initialize: function(element, observer) { + this.element = $(element); + this.observer = observer; + this.lastValue = Sortable.serialize(this.element); + }, + onStart: function() { + this.lastValue = Sortable.serialize(this.element); + }, + onEnd: function() { + Sortable.unmark(); + if(this.lastValue != Sortable.serialize(this.element)) + this.observer(this.element) + } +} + +var Sortable = { + sortables: new Array(), + options: function(element){ + element = $(element); + for(var i=0;i0 ? elements.flatten() : null); + }, + + onHover: function(element, dropon, overlap) { + if(overlap>0.5) { + Sortable.mark(dropon, 'before'); + if(dropon.previousSibling != element) { + var oldParentNode = element.parentNode; + element.style.visibility = "hidden"; // fix gecko rendering + dropon.parentNode.insertBefore(element, dropon); + if(dropon.parentNode!=oldParentNode) + Sortable.options(oldParentNode).onChange(element); + Sortable.options(dropon.parentNode).onChange(element); + } + } else { + Sortable.mark(dropon, 'after'); + var nextElement = dropon.nextSibling || null; + if(nextElement != element) { + var oldParentNode = element.parentNode; + element.style.visibility = "hidden"; // fix gecko rendering + dropon.parentNode.insertBefore(element, nextElement); + if(dropon.parentNode!=oldParentNode) + Sortable.options(oldParentNode).onChange(element); + Sortable.options(dropon.parentNode).onChange(element); + } + } + }, + + onEmptyHover: function(element, dropon) { + if(element.parentNode!=dropon) { + dropon.appendChild(element); + } + }, + + unmark: function() { + if(Sortable._marker) Element.hide(Sortable._marker); + }, + + mark: function(dropon, position) { + // mark on ghosting only + var sortable = Sortable.options(dropon.parentNode); + if(sortable && !sortable.ghosting) return; + + if(!Sortable._marker) { + Sortable._marker = $('dropmarker') || document.createElement('DIV'); + Element.hide(Sortable._marker); + Element.Class.add(Sortable._marker, 'dropmarker'); + Sortable._marker.style.position = 'absolute'; + document.getElementsByTagName("body").item(0).appendChild(Sortable._marker); + } + var offsets = Position.cumulativeOffset(dropon); + Sortable._marker.style.top = offsets[1] + 'px'; + if(position=='after') Sortable._marker.style.top = (offsets[1]+dropon.clientHeight) + 'px'; + Sortable._marker.style.left = offsets[0] + 'px'; + Element.show(Sortable._marker); + }, + + serialize: function(element) { + element = $(element); + var sortableOptions = this.options(element); + var options = Object.extend({ + tag: sortableOptions.tag, + only: sortableOptions.only, + name: element.id + }, arguments[1] || {}); + + var items = $(element).childNodes; + var queryComponents = new Array(); + + for(var i=0; itimestamp)) + timestamp = this.effects[i].finishOn; + return timestamp; + }, + add: function(effect) { + var timestamp = new Date().getTime(); + + switch(effect.options.queue) { + case 'front': + // move unstarted effects after this effect + for(var i = 0; i < this.effects.length; i++) + if(this.effects[i].state == 'idle') { + this.effects[i].startOn += effect.finishOn; + this.effects[i].finishOn += effect.finishOn; + } + break; + case 'end': + // start effect after last queued effect has finished + timestamp = this.findLast() || timestamp; + break; + } + + effect.startOn += timestamp; + effect.finishOn += timestamp; + + this.effects.push(effect); + + if(!this.interval) + this.interval = setInterval(this.loop.bind(this), 40); + }, + remove: function(effect) { + for(var i = 0; i < this.effects.length; i++) + if(this.effects[i]==effect) this.effects.splice(i,1); + if(this.effects.length == 0) { + clearInterval(this.interval); + this.interval = null; + } + }, + loop: function() { + var timePos = new Date().getTime(); + for(var i = 0; i < this.effects.length; i++) { + this.effects[i].loop(timePos); + } + } +} + +Effect.Base = function() {}; +Effect.Base.prototype = { + setOptions: function(options) { + this.options = Object.extend({ + transition: Effect.Transitions.sinoidal, + duration: 1.0, // seconds + fps: 25.0, // max. 25fps due to Effect.Queue implementation + sync: false, // true for combining + from: 0.0, + to: 1.0, + delay: 0.0, + queue: 'parallel' + }, options || {}); + }, + start: function(options) { + this.setOptions(options || {}); + this.currentFrame = 0; + this.state = 'idle'; + this.startOn = this.options.delay*1000; + this.finishOn = this.startOn + (this.options.duration*1000); + if(this.options.beforeStart) this.options.beforeStart(this); + if(!this.options.sync) Effect.Queue.add(this); + }, + loop: function(timePos) { + if(timePos >= this.startOn) { + if(timePos >= this.finishOn) { + this.render(1.0); + this.cancel(); + if(this.finish) this.finish(); + if(this.options.afterFinish) this.options.afterFinish(this); + return; + } + var pos = (timePos - this.startOn) / (this.finishOn - this.startOn); + var frame = Math.round(pos * this.options.fps * this.options.duration); + if(frame > this.currentFrame) { + this.render(pos); + this.currentFrame = frame; + } + } + }, + render: function(pos) { + if(this.state == 'idle') { + this.state = 'running'; + if(this.setup) this.setup(); + } + if(this.options.transition) pos = this.options.transition(pos); + pos *= (this.options.to-this.options.from); + pos += this.options.from; + if(this.options.beforeUpdate) this.options.beforeUpdate(this); + if(this.update) this.update(pos); + if(this.options.afterUpdate) this.options.afterUpdate(this); + }, + cancel: function() { + if(!this.options.sync) Effect.Queue.remove(this); + this.state = 'finished'; + } +} + +Effect.Parallel = Class.create(); +Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), { + initialize: function(effects) { + this.effects = effects || []; + this.start(arguments[1]); + }, + update: function(position) { + for (var i = 0; i < this.effects.length; i++) + this.effects[i].render(position); + }, + finish: function(position) { + for (var i = 0; i < this.effects.length; i++) { + this.effects[i].cancel(); + if(this.effects[i].finish) this.effects[i].finish(position); + } + } +}); + +// Internet Explorer caveat: works only on elements that have +// a 'layout', meaning having a given width or height. +// There is no way to safely set this automatically. +Effect.Opacity = Class.create(); +Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), { + initialize: function(element) { + this.element = $(element); + var options = Object.extend({ + from: 0.0, + to: 1.0 + }, arguments[1] || {}); + this.start(options); + }, + update: function(position) { + this.setOpacity(position); + }, + setOpacity: function(opacity) { + if(opacity<0.0001) opacity = 0; // fix errors with things like 6.152242992829571e-8 + if(opacity==1.0) { + this.element.style.opacity = '0.999999'; + this.element.style.filter = null; + } else { + this.element.style.opacity = opacity; + this.element.style.filter = "alpha(opacity:"+opacity*100+")"; + } + } +}); + +Effect.MoveBy = Class.create(); +Object.extend(Object.extend(Effect.MoveBy.prototype, Effect.Base.prototype), { + initialize: function(element, toTop, toLeft) { + this.element = $(element); + this.toTop = toTop; + this.toLeft = toLeft; + this.start(arguments[3]); + }, + setup: function() { + this.originalTop = parseFloat(Element.getStyle(this.element,'top') || '0'); + this.originalLeft = parseFloat(Element.getStyle(this.element,'left') || '0'); + Element.makePositioned(this.element); + }, + update: function(position) { + topd = this.toTop * position + this.originalTop; + leftd = this.toLeft * position + this.originalLeft; + this.setPosition(topd, leftd); + }, + setPosition: function(topd, leftd) { + this.element.style.top = topd + "px"; + this.element.style.left = leftd + "px"; + } +}); + +Effect.Scale = Class.create(); +Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), { + initialize: function(element, percent) { + this.element = $(element) + var options = Object.extend({ + scaleX: true, + scaleY: true, + scaleContent: true, + scaleFromCenter: false, + scaleMode: 'box', // 'box' or 'contents' or {} with provided values + scaleFrom: 100.0, + scaleTo: percent + }, arguments[2] || {}); + this.start(options); + }, + setup: function() { + this.originalTop = this.element.offsetTop; + this.originalLeft = this.element.offsetLeft; + if(Element.getStyle(this.element,'font-size')=="") this.sizeEm = 1.0; + if(Element.getStyle(this.element,'font-size') && Element.getStyle(this.element,'font-size').indexOf("em")>0) + this.sizeEm = parseFloat(Element.getStyle(this.element,'font-size')); + this.factor = (this.options.scaleTo/100.0) - (this.options.scaleFrom/100.0); + if(this.options.scaleMode=='box') { + this.originalHeight = this.element.clientHeight; + this.originalWidth = this.element.clientWidth; + } else + if(this.options.scaleMode=='contents') { + this.originalHeight = this.element.scrollHeight; + this.originalWidth = this.element.scrollWidth; + } else { + this.originalHeight = this.options.scaleMode.originalHeight; + this.originalWidth = this.options.scaleMode.originalWidth; + } + }, + update: function(position) { + var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position); + if(this.options.scaleContent && this.sizeEm) + this.element.style.fontSize = this.sizeEm*currentScale + "em"; + this.setDimensions( + this.originalWidth * currentScale, + this.originalHeight * currentScale); + }, + setDimensions: function(width, height) { + if(this.options.scaleX) this.element.style.width = width + 'px'; + if(this.options.scaleY) this.element.style.height = height + 'px'; + if(this.options.scaleFromCenter) { + var topd = (height - this.originalHeight)/2; + var leftd = (width - this.originalWidth)/2; + if(Element.getStyle(this.element,'position')=='absolute') { + if(this.options.scaleY) this.element.style.top = this.originalTop-topd + "px"; + if(this.options.scaleX) this.element.style.left = this.originalLeft-leftd + "px"; + } else { + if(this.options.scaleY) this.element.style.top = -topd + "px"; + if(this.options.scaleX) this.element.style.left = -leftd + "px"; + } + } + } +}); + +Effect.Highlight = Class.create(); +Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), { + initialize: function(element) { + this.element = $(element); + var options = Object.extend({ + startcolor: "#ffff99" + }, arguments[1] || {}); + this.start(options); + }, + setup: function() { + // try to parse current background color as default for endcolor + // browser stores this as: "rgb(255, 255, 255)", convert to "#ffffff" format + if(!this.options.endcolor) { + var endcolor = "#ffffff"; + var current = Element.getStyle(this.element, 'background-color'); + if(current && current.slice(0,4) == "rgb(") { + endcolor = "#"; + var cols = current.slice(4,current.length-1).split(','); + var i=0; do { endcolor += parseInt(cols[i]).toColorPart() } while (++i<3); + } + this.options.endcolor = endcolor; + } + // init color calculations + this.colors_base = [ + parseInt(this.options.startcolor.slice(1,3),16), + parseInt(this.options.startcolor.slice(3,5),16), + parseInt(this.options.startcolor.slice(5),16) ]; + this.colors_delta = [ + parseInt(this.options.endcolor.slice(1,3),16)-this.colors_base[0], + parseInt(this.options.endcolor.slice(3,5),16)-this.colors_base[1], + parseInt(this.options.endcolor.slice(5),16)-this.colors_base[2]]; + }, + update: function(position) { + var colors = [ + Math.round(this.colors_base[0]+(this.colors_delta[0]*position)), + Math.round(this.colors_base[1]+(this.colors_delta[1]*position)), + Math.round(this.colors_base[2]+(this.colors_delta[2]*position)) ]; + this.element.style.backgroundColor = "#" + + colors[0].toColorPart() + colors[1].toColorPart() + colors[2].toColorPart(); + }, + finish: function() { + this.element.style.backgroundColor = this.options.restorecolor; + } +}); + +Effect.ScrollTo = Class.create(); +Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), { + initialize: function(element) { + this.element = $(element); + this.start(arguments[1] || {}); + }, + setup: function() { + Position.prepare(); + var offsets = Position.cumulativeOffset(this.element); + var max = window.innerHeight ? + window.height - window.innerHeight : + document.body.scrollHeight - + (document.documentElement.clientHeight ? + document.documentElement.clientHeight : document.body.clientHeight); + this.scrollStart = Position.deltaY; + this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart; + }, + update: function(position) { + Position.prepare(); + window.scrollTo(Position.deltaX, + this.scrollStart + (position*this.delta)); + } +}); + +/* ------------- combination effects ------------- */ + +Effect.Fade = function(element) { + var options = Object.extend({ + from: 1.0, + to: 0.0, + afterFinish: function(effect) + { Element.hide(effect.element); + effect.setOpacity(1); } + }, arguments[1] || {}); + return new Effect.Opacity(element,options); +} + +Effect.Appear = function(element) { + var options = Object.extend({ + from: 0.0, + to: 1.0, + beforeStart: function(effect) + { effect.setOpacity(0); + Element.show(effect.element); }, + afterUpdate: function(effect) + { Element.show(effect.element); } + }, arguments[1] || {}); + return new Effect.Opacity(element,options); +} + +Effect.Puff = function(element) { + return new Effect.Parallel( + [ new Effect.Scale(element, 200, { sync: true, scaleFromCenter: true }), + new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0 } ) ], + Object.extend({ duration: 1.0, + beforeUpdate: function(effect) + { effect.effects[0].element.style.position = 'absolute'; }, + afterFinish: function(effect) + { Element.hide(effect.effects[0].element); } + }, arguments[1] || {}) + ); +} + +Effect.BlindUp = function(element) { + element = $(element); + Element.makeClipping(element); + return new Effect.Scale(element, 0, + Object.extend({ scaleContent: false, + scaleX: false, + afterFinish: function(effect) + { + Element.hide(effect.element); + Element.undoClipping(effect.element); + } + }, arguments[1] || {}) + ); +} + +Effect.BlindDown = function(element) { + element = $(element); + element.style.height = '0px'; + Element.makeClipping(element); + Element.show(element); + return new Effect.Scale(element, 100, + Object.extend({ scaleContent: false, + scaleX: false, + scaleMode: 'contents', + scaleFrom: 0, + afterFinish: function(effect) { + Element.undoClipping(effect.element); + } + }, arguments[1] || {}) + ); +} + +Effect.SwitchOff = function(element) { + return new Effect.Appear(element, + { duration: 0.4, + transition: Effect.Transitions.flicker, + afterFinish: function(effect) + { effect.element.style.overflow = 'hidden'; + new Effect.Scale(effect.element, 1, + { duration: 0.3, scaleFromCenter: true, + scaleX: false, scaleContent: false, + afterUpdate: function(effect) { + if(effect.element.style.position=="") + effect.element.style.position = 'relative'; }, + afterFinish: function(effect) { Element.hide(effect.element); } + } ) + } + } ); +} + +Effect.DropOut = function(element) { + return new Effect.Parallel( + [ new Effect.MoveBy(element, 100, 0, { sync: true }), + new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0 } ) ], + Object.extend( + { duration: 0.5, + afterFinish: function(effect) + { Element.hide(effect.effects[0].element); } + }, arguments[1] || {})); +} + +Effect.Shake = function(element) { + return new Effect.MoveBy(element, 0, 20, + { duration: 0.05, afterFinish: function(effect) { + new Effect.MoveBy(effect.element, 0, -40, + { duration: 0.1, afterFinish: function(effect) { + new Effect.MoveBy(effect.element, 0, 40, + { duration: 0.1, afterFinish: function(effect) { + new Effect.MoveBy(effect.element, 0, -40, + { duration: 0.1, afterFinish: function(effect) { + new Effect.MoveBy(effect.element, 0, 40, + { duration: 0.1, afterFinish: function(effect) { + new Effect.MoveBy(effect.element, 0, -20, + { duration: 0.05, afterFinish: function(effect) { + }}) }}) }}) }}) }}) }}); +} + +Effect.SlideDown = function(element) { + element = $(element); + element.style.height = '0px'; + Element.makeClipping(element); + Element.cleanWhitespace(element); + Element.makePositioned(element.firstChild); + Element.show(element); + return new Effect.Scale(element, 100, + Object.extend({ scaleContent: false, + scaleX: false, + scaleMode: 'contents', + scaleFrom: 0, + afterUpdate: function(effect) + { effect.element.firstChild.style.bottom = + (effect.originalHeight - effect.element.clientHeight) + 'px'; }, + afterFinish: function(effect) + { Element.undoClipping(effect.element); } + }, arguments[1] || {}) + ); +} + +Effect.SlideUp = function(element) { + element = $(element); + Element.makeClipping(element); + Element.cleanWhitespace(element); + Element.makePositioned(element.firstChild); + Element.show(element); + return new Effect.Scale(element, 0, + Object.extend({ scaleContent: false, + scaleX: false, + afterUpdate: function(effect) + { effect.element.firstChild.style.bottom = + (effect.originalHeight - effect.element.clientHeight) + 'px'; }, + afterFinish: function(effect) + { + Element.hide(effect.element); + Element.undoClipping(effect.element); + } + }, arguments[1] || {}) + ); +} + +Effect.Squish = function(element) { + return new Effect.Scale(element, 0, + { afterFinish: function(effect) { Element.hide(effect.element); } }); +} + +Effect.Grow = function(element) { + element = $(element); + var options = arguments[1] || {}; + + var originalWidth = element.clientWidth; + var originalHeight = element.clientHeight; + element.style.overflow = 'hidden'; + Element.show(element); + + var direction = options.direction || 'center'; + var moveTransition = options.moveTransition || Effect.Transitions.sinoidal; + var scaleTransition = options.scaleTransition || Effect.Transitions.sinoidal; + var opacityTransition = options.opacityTransition || Effect.Transitions.full; + + var initialMoveX, initialMoveY; + var moveX, moveY; + + switch (direction) { + case 'top-left': + initialMoveX = initialMoveY = moveX = moveY = 0; + break; + case 'top-right': + initialMoveX = originalWidth; + initialMoveY = moveY = 0; + moveX = -originalWidth; + break; + case 'bottom-left': + initialMoveX = moveX = 0; + initialMoveY = originalHeight; + moveY = -originalHeight; + break; + case 'bottom-right': + initialMoveX = originalWidth; + initialMoveY = originalHeight; + moveX = -originalWidth; + moveY = -originalHeight; + break; + case 'center': + initialMoveX = originalWidth / 2; + initialMoveY = originalHeight / 2; + moveX = -originalWidth / 2; + moveY = -originalHeight / 2; + break; + } + + return new Effect.MoveBy(element, initialMoveY, initialMoveX, { + duration: 0.01, + beforeUpdate: function(effect) { $(element).style.height = '0px'; }, + afterFinish: function(effect) { + new Effect.Parallel( + [ new Effect.Opacity(element, { sync: true, to: 1.0, from: 0.0, transition: opacityTransition }), + new Effect.MoveBy(element, moveY, moveX, { sync: true, transition: moveTransition }), + new Effect.Scale(element, 100, { + scaleMode: { originalHeight: originalHeight, originalWidth: originalWidth }, + sync: true, scaleFrom: 0, scaleTo: 100, transition: scaleTransition })], + options); } + }); +} + +Effect.Shrink = function(element) { + element = $(element); + var options = arguments[1] || {}; + + var originalWidth = element.clientWidth; + var originalHeight = element.clientHeight; + element.style.overflow = 'hidden'; + Element.show(element); + + var direction = options.direction || 'center'; + var moveTransition = options.moveTransition || Effect.Transitions.sinoidal; + var scaleTransition = options.scaleTransition || Effect.Transitions.sinoidal; + var opacityTransition = options.opacityTransition || Effect.Transitions.none; + + var moveX, moveY; + + switch (direction) { + case 'top-left': + moveX = moveY = 0; + break; + case 'top-right': + moveX = originalWidth; + moveY = 0; + break; + case 'bottom-left': + moveX = 0; + moveY = originalHeight; + break; + case 'bottom-right': + moveX = originalWidth; + moveY = originalHeight; + break; + case 'center': + moveX = originalWidth / 2; + moveY = originalHeight / 2; + break; + } + + return new Effect.Parallel( + [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: opacityTransition }), + new Effect.Scale(element, 0, { sync: true, transition: moveTransition }), + new Effect.MoveBy(element, moveY, moveX, { sync: true, transition: scaleTransition }) ], + options); +} + +Effect.Pulsate = function(element) { + element = $(element); + var options = arguments[1] || {}; + var transition = options.transition || Effect.Transitions.sinoidal; + var reverser = function(pos){ return transition(1-Effect.Transitions.pulse(pos)) }; + reverser.bind(transition); + return new Effect.Opacity(element, + Object.extend(Object.extend({ duration: 3.0, + afterFinish: function(effect) { Element.show(effect.element); } + }, options), {transition: reverser})); +} + +Effect.Fold = function(element) { + element = $(element); + element.style.overflow = 'hidden'; + return new Effect.Scale(element, 5, Object.extend({ + scaleContent: false, + scaleTo: 100, + scaleX: false, + afterFinish: function(effect) { + new Effect.Scale(element, 1, { + scaleContent: false, + scaleTo: 0, + scaleY: false, + afterFinish: function(effect) { Element.hide(effect.element) } }); + }}, arguments[1] || {})); +} + +// old: new Effect.ContentZoom(element, percent) +// new: Element.setContentZoom(element, percent) + +Element.setContentZoom = function(element, percent) { + element = $(element); + element.style.fontSize = (percent/100) + "em"; + if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0); +} diff --git a/webcit/static/empty.html b/webcit/static/empty.html new file mode 100644 index 000000000..5dfd3253a --- /dev/null +++ b/webcit/static/empty.html @@ -0,0 +1,7 @@ + + + Empty Page + + + + diff --git a/webcit/static/endbox.html b/webcit/static/endbox.html new file mode 100644 index 000000000..bbf33b139 --- /dev/null +++ b/webcit/static/endbox.html @@ -0,0 +1,3 @@ +
    +
    +
    diff --git a/webcit/static/enternewnote_24x.gif b/webcit/static/enternewnote_24x.gif new file mode 100644 index 0000000000000000000000000000000000000000..a8fbda5aa18e4b5074b09af2aa4b3451533799f7 GIT binary patch literal 1242 zcma*m`&ZI;90u@jW^I}-R_^3EYiCy8FQkDNG!qqXDMHR0YK9J*M4A&Pl2H>3Dm2X` z&0AKAmsScGUDV>BGKs__r<pbUuo*$lH-%&A<0jMl{$R7Ft zLBQR|FEI*UY>t7i4*IqsER_ee%bGqL(U{no;=74fet(uva&Vs=i@O-jYHns3zQaw7U zQK?koX>fDOG(JAwI|-gD`NI>M!3l#>sqA?S#>U3FAA#FSL;pif`xy8`)-O~T?kE%; zij~U>&?^7bDmVQ$YPcl-IC1}e-_W0pvenLEL$hq9LAKgFvfMbb+Ay+uMQV5@W(*7r z==&JjTlA*;2EB-}AY?ohG6wH-)DIeXcMT$u=z{o(P$(Sf;Z}?F0)fETmC)PU+tw?& zC>Vd)My%?YYP~*irsoN0j0P7Yu5<}NJqFZ;-@RH2cybO_&gqu zd*NzLO-;+W3mLm zSy|cfGS;*F%?DYXKe6~~@+Rsr&XH2?8$yaU=PNp$uFlz5Qc}X9QuFB?8jY4m=gg2c z78e&Yiw=;BIY()@$3z&Zh;#VoVoCv(Sjf44AX$3AKIO<+fWc5Gl%)KMq`Zp6Jo7zM zcrYP>%t_9n6=o%6XJ->g1q4!I7Lgd6&7fppvoiOS)3Lc}anYIdo`{eK!9hvsIX@C& zQ`0lE2q~o0xcIbON>a$aEP5|F#5po5Iyz!cI3^-2EG#rM6pcm~AmJe)A-jY31O){J1_q)~sCc9g z>T@wCz|7y@-`C8~4~aw~5Qtr72!xN1kGHq?&Ye3Ea921S?&am>>FMd=;ol3<>4r>VCe;Z87iuE&A?Sh~_I$9!fu|U?g zko4*o7wyVUur-#|dF9Lw{K%sO=E?PZN`Cd|(B{MB_)Qz6>|m&0ftmz#Ve+tftsb4>|j0pmvL*>x7MYROtF80^=Q#Z*zblP1+- z$o2<`CTi>chaV(d?|T6)zWDkrN}J}ct23f}_cAq-Q5`e+ zqr-e{;&Go-uGk0BcqFsn>3kirMriFx*h9R8relU|BM+wy+xp|+j?bHlrrdC7DCj>C C>R`VB literal 0 HcmV?d00001 diff --git a/webcit/static/error.gif b/webcit/static/error.gif new file mode 100644 index 0000000000000000000000000000000000000000..57d398c3d97951db28470849e4f88d42f135d7fa GIT binary patch literal 1332 zcmX9-4QQ2R6h8OsUb@^1ZNud)F`N=L_ineSjI7{ZlDRDwh4O~QeyCPSB5l-cLeR;e zpb?~kQMkO;HRLpD(2NPAz7fKdi7at&U@$Cd2wEyH-~t6vG?M= zdT&vCoSD6_SN0aML72shcolCEIb^eXQLpMP;)-H6FXq*}ML-}6c3?z~y<>JPj@7X_ zkU~#10V-fnS8gfH%4|>#y>Sp0VHLJW0cm`GLCgwtOauDh3qipG&Cm_-zyko{c!8xN7RimtK?P@3w_MOW0*~7J!;Wz!a-22j0l0SKbGMV}(Y7WeeAE<5Wh|m04!~LnH zGlyHgT$o5?V#8g1J#U^nlDoMrK6Hf;;<^*3W;XC4%4T;w+Pko?pK61V;{}<1J)I49 zBxh##ebJd|i@#qPo=)tX%#I|(`O}G>OV|{EoL*XJ@2(2-XqsF-2%L9qb$!R^%sLuR z-;wSpRnQCP_GXrEpr>MsBdL|x)%xwv{q~+!&s}JK<` z`fs}HY+I=!|Lb(R>*I%4ULM;;>Em18XxKiMqrn$fI+yqMjP3b-HZywY)XX}*d{4`> zgLrdo`ttR%z7NyXJsC`GEPWK5{O`)sTWP!)=4iQTAed_CKGHY6`MwJQnqJIJHRK0^ z#bd7>ZB2pQuGG$Wh?Khz25VyZUxND^z`Qj7X}D$6rXoESdvG{x&8-Xrs=4o{ZK&Xb zj|V4l%>R8p@Y{}sjkI>p{-8Z5@2>Xl51#*i7`q?-Iv?ylTiy-#P6oTP-Br}pUd(@x zYK!xenT@5nAQK~PO!HSrsZNBA>DKGJA9JZ>dDmCBkh^o>)$dyHS4FEnTZ&&Cyfs$& Sd1ux9n#mKRe^gh}L;nM9(1m;e literal 0 HcmV?d00001 diff --git a/webcit/static/favicon.ico b/webcit/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..856d5a7117e71a71f2693de5f73eb8467206dea5 GIT binary patch literal 1150 zcmcJNUrbVA7{(8iiP7drqnj>j>w+#?Dj*6W2uTX2XjW6p($&g|8I*|2Ss2TU{y67K zG<9CoOtajqoBplT3$yH|+^UPFri-SPqqc@q@ag+LJIvbbu5DO-}k=fd~lqA z+!6^#em8TaLXO+OaokoSk|LSqJPGWIUCVJ)|LamH6dEF|qK*IROPG!%ogR6YTTwR+ z)KE zxIg{wPuAzi+WFp(@{#eC@5SDQ&a6vTqNPO7yo!lMILXX?bHL&f5C{QX-v~by!if(7 zRwK=9!FHvVu1Dz1Z_gMJykcSA-I)NMjr-8p)C8;5%5v7699;0WVbJmfvReU|p#Xg1q4{ztFG?xRwnJ zdV$~q_V3$^jK+J&>KS8vR`(mEU+O`AK_QOa0AlQm5FY&==BoTD5<#AmhpLIMsF|IIN~3}HKpAvL zoG{qyky31jIy)blloa$%`f$j8n(y64&yw)-;@I`jxz3{2zXY?*4wZfd`&aS}hJ%x{!OgIP9(9w~(4Kxm=F;_;@5FB+!~CL}DW5k;rplkMe*P i^P8$MDXJxMU?4&Tj#Km!MH81+Fu6%|3;xug2iz~bsn~J= literal 0 HcmV?d00001 diff --git a/webcit/static/folder_closed.gif b/webcit/static/folder_closed.gif new file mode 100644 index 0000000000000000000000000000000000000000..f7726488f3d4916bfd4215b1ece2fae3d2a5809b GIT binary patch literal 385 zcmZ?wbhEHb6krfwxXJ(m|3P5p|L+t3f9d=Gy7m9F#{Unh|6j?Una(&XgK16{%e)-6 z1$i8c3%QpT^R6fpSY0W+u10J_oy6uw=`D>iTbpFJx5)2kRoK<8w5L;LZq)@q29Q H$Y2cs0r`-? literal 0 HcmV?d00001 diff --git a/webcit/static/folder_open.gif b/webcit/static/folder_open.gif new file mode 100644 index 0000000000000000000000000000000000000000..27c8bfc003125632eab328d077e9f33796694cf7 GIT binary patch literal 366 zcmZ?wbhEHb6krfwxXJ(m|3P5R|Nl#W|D5*yL+AhRQ$9SY`v1A-|K~a9_Qd>u-SYo= z%k>=&j}8X>e_S)WTJq!q#sBwfZtc%GHcRr@EUDvjWHxq6F07M0w@7Jjwbc1VYWrtu z{=c5{XtVRZP0r8v1^>NT@P3!`(qi8K$D{vWZ~6cG``52u@7}$8@#4j!N008@xwEsg zv#_u*H8mCJ4zP2L7`wVMm$0xz zI8HhAR4;xCOOj2So#rgf)Q2y2-4z#I>N3;D_Zfq7Lt>zl2y0|BlM0J~u85o + + +<?SERV_HUMANNODE> + + + + + + + + + + diff --git a/webcit/static/hr.gif b/webcit/static/hr.gif new file mode 100644 index 0000000000000000000000000000000000000000..c98da9d00c7ab9c298d7d582f4162440dd3991f6 GIT binary patch literal 77 zcmZ?wbhEHblw^=#n8?I1bLLEAW8?q-|1&T!DE?$&WME)o&;ha;K=KSsa#Q+Oo_@=} gc+Qqv-J9=e{NQinbC~w*+8$Vz;NKe0S1Qu4Gj(d|NmzI@}Ud{OrZFag^_`QgFy!* z1u}zyrBL9c=jy!{ug~tD@1jwsP{@(NFu_G}hvS;6hY$FE2nfp>E?{!@F@OAnWmCgL zg&4`g6DsF+etbHqoiWteASRWWc|G$9#&ZnJRkJ;rAB53L1;s<+3^YR3=WEJVjoR!5RP?FhWEC literal 0 HcmV?d00001 diff --git a/webcit/static/image.gif b/webcit/static/image.gif new file mode 100644 index 0000000000000000000000000000000000000000..8cbba167cc657142948cae1399abec619c4cf7cc GIT binary patch literal 203 zcmZ?wbhEHblw^=#*v!T7|Ns9v=f0%PWSDbKlwl@=YBIwd3#|ta9vB-N&zw0ED9eBf z6o0ZXGB9v4=zxSlW-zc+1f29-z1QOP+1>038hug%b27S^mTIv$P1-cGa^GQvH^)7b z%^dS0Dt<<7c(}k}#@3$0vY#WkWy+cv95;xH@a^Z$IIb+i)2_S1giT^w+uROaBL%nD svy9pe-W(QVNU<&~Y;F)`VDahc?(^voshC_TH*NZinX_g~3Nly&0Peg+9<3>gnm}=;-L@=jZ0; z=H=z(Cc-rKO~#q@tptp`oFmprD_h zpPrtcot>SUnwpuJnV6WEmzS58mX?*3m6Vi}larH@l9G{;k&uv(j*gCvjg5?qjERYf zh=_=XhlhrShJ}TNgoK2Gf`Wm8fqs5|e0+R+dwY6%dU$wvcXxMoc6N1jb#iiYaBy&M zZ*OjHZfk36X=!O_XlQ3=XJ%$*Wo2b#WMpGwV`5@rU|?WhUteBcUR+#USy@?CRaH|{ zQ&CY-N=iyeNl8RRL_)0000000000A^8La6aahxEC2ui z02lxm000O7fP8|3goTEOgC|FAczSwwX+$T8gc(e6VMsMCFg#XqbW9qQA!cJT5CW>I z1RF_pY9WUiW>XXa1q%xg3<(7T11NB7qlHda5CsX#%m&T|0v>Wrg)3zr2MP$=+}#KR zHgzb3PDl>S=+Ej5WJQEtFbeYX^9Kjr1wdhhVIU0+^8Pi@MUWtZ5^o4~(cqw=!-o$d zMr1Id4IwTbB50hzQG&;hAT6*_XySrNlNM5{T$usI8bVcQeAuw3rkxHrJJj5BQv{DK zgoGGjL87Qpqa%_gU4bPCp%Y$kz(_$gMGYcEaI8SVHO7uJBnla!l0yaz7+&tw%=5*C ziy1mgx;QO_p^FqBHfG4#xo6Id8$YgaLG*!379>5Mu(@-`O%xwWx@e&!s7RPBP?QuY gvP8-jF*_&^GGPRaDKcoh^bjGswd>cgUk3sJI}?U(tN;K2 literal 0 HcmV?d00001 diff --git a/webcit/static/indent.gif b/webcit/static/indent.gif new file mode 100644 index 0000000000000000000000000000000000000000..2abb6b281ccbb052ea0cdfbe7d4098a5f9cf6674 GIT binary patch literal 96 zcmZ?wbhEHblw^=#n8?Hc1`YrJ{|7P@f3h$#FfcLbfCNGE3`~Yo`d6NQ%fC1z;TA{H tRh#?zEFQ;g8#5+E6>ob`D7U0#*E2@M7YYXI`)Ab|h? literal 0 HcmV?d00001 diff --git a/webcit/static/instant_messenger.html b/webcit/static/instant_messenger.html new file mode 100644 index 000000000..1db2b4a2e --- /dev/null +++ b/webcit/static/instant_messenger.html @@ -0,0 +1,209 @@ + + + Citadel Instant Messenger + + + + + +
    +

    +
      
    +

    +
    + +
    + + + + + + diff --git a/webcit/static/italic.gif b/webcit/static/italic.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b1485b4371c65e512d6811d622af8270def2a33 GIT binary patch literal 84 zcmZ?wbhEHblw^=#n8?Hc1Pu)h|Ns97G8BKZFfuSOG3bCqLGlbts#E$`o_@=}c+Qq6 iuA+Tv?0PKHFB+8?xKzuRtzMe>(&zfO-sj$o4Auakk{Pf7 literal 0 HcmV?d00001 diff --git a/webcit/static/justifyfull.gif b/webcit/static/justifyfull.gif new file mode 100644 index 0000000000000000000000000000000000000000..b12528b9f4e0666f3ab5642d80f0f34b2d0c3544 GIT binary patch literal 76 zcmZ?wbhEHblw^=#XkcUjg8%>jEB<5wG8q|kKzxu41Cw%3|H{*E`4`XGBGs_@+O>D{ aOGP=lM1IZ`-nCNb^v+K{*UMrV7_0#`iW%jEB<5wG8q|kKzxu41Cw%3|H{*E`4`XGBGs_@+O>Cg bTMxQ3Jqk%$KD|i$%DzuN*T2OuFjxZsOtTwu literal 0 HcmV?d00001 diff --git a/webcit/static/line.gif b/webcit/static/line.gif new file mode 100644 index 0000000000000000000000000000000000000000..1bb437a5f4b8dd245be935e02cbe30a36a88c797 GIT binary patch literal 114 zcmZ?wbhEHb6lM@%*v!CCU0wa3;Xm;}@h1x-0|O(24g(N?%wS-VH#nimxYy!!&i4Ni b?0xe*=1uQh_o`~!JC5V`ee%s@85yhr^L{|V literal 0 HcmV?d00001 diff --git a/webcit/static/list.gif b/webcit/static/list.gif new file mode 100644 index 0000000000000000000000000000000000000000..b3018d9f2aa504d1fdc1fdf52d56be68675c3162 GIT binary patch literal 88 zcmZ?wbhEHblw^=#n8?Jyz|a81|Ns97l8QfB7#SFt7<7Pa29P`hljfBEm8akGFP^hS ou0i+EffoKI{^e8ETxMmS=)1{z+%0O|nim&7o%{YTkb%J(01IdyB>(^b literal 0 HcmV?d00001 diff --git a/webcit/static/login.html b/webcit/static/login.html new file mode 100644 index 000000000..6ec9261b3 --- /dev/null +++ b/webcit/static/login.html @@ -0,0 +1,39 @@ + +
    + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + +
    + + +

    + +
    +
    + diff --git a/webcit/static/logoff_32x.gif b/webcit/static/logoff_32x.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c4203719af25ba8d74f0430e23f1073a4f0e464 GIT binary patch literal 1265 zcmZ?wbhEHbRA5kG_|Cxa|Ht8fpL+j&sQvrC_Sc)5|91|3x_AET-BTa$p8N2);?#pb zCm;NJ_ptQs!}9-ExBfr9l(RFy;T6 z{QryN|1XIAKR5LMbg!ce+c&LB%3k+BYwiDxH9++5|3v%r)qgWq|4U!>JAKuk|NS;; zD}Sf0_>s2aXX=U{sms5gm|mQ^{72gI?S=X=TZaKP{UVo4n*x@{-Rf zi$5kU`jE2dUDD!@dncD9Eqs%_@NMG4_sI)hZJJV>yx{f!7LET+si z?8osl@5Ro1{J&Z%disO^RpS4vB>q>5{jU`LUm+4T_3rcu5pk2R{w^1dnsO&*@|B1Q zSHmY>`&=Rx-GBB|iC9?wm9YNHVSSfEdoG0b0@20D?h{enCqlZ^ge7)Fim` zR7A(2i1velZO6l!cZN3YY^!$)ZrmAEzum84PhF*daP?ZB+Fc&y8v{xg?@yB3l_=+3 zvdpbyjeqgHoeA>(g>zhsR&0xxcP(7uQm|}Ytb%j?Qs?|7&UuTSfGBt2vM5F8tQk=m zxn3DPo@t%-=`-AtTWwRO*d|X%iwJU!F1LzpcZn)>jwmvZY;X$8wFs{<53flG@GuLl zG7YJ63`#c(E;A0QGzluR^NkO3v+;6uws8;jb+NN@32?EuHgoWHvbFZHHn6p|b+oZ` zwlX!hakRI#w6e0Yw6wG}H!`)bHa9mnHMg`eGcq$Xvotj}HZ}obV-wT6ckeO`WuW+z zg;j*%0D}(56QDf7!114L9Uns1Ms1Pvn&P3o$R%dI#Jg1s5*m;9 zD>#SUI4U5{EvV$QBIe{IRqhzo$etOVo0pvx)K8w2;rM9T`8nLa-*%K9d+xh{%a`e6 zs#ovDSsv_OGaRPATBllEQ#<477frtzthJr8-rE=iBQp26iN4@wV2EdXBxUj70b`5& z>Mb{9j8dLOCG2Bj`B1v>11qnLP0oUZ$05?Q`qtdo`RVEceKwvN%bRCzc249IOITv$ ztR&FE$g4B+N42H#)ax7KW2 zJ6xPP_1D!b@{qLpqLSnpedS=6M(2cy&K+){5dwN9A&wkMDK8ox`+D7JJlVniP{~;+ zr-gB$ug`&x99nxrI+wKSYiq^z$cqUUK5|ee!(%)`TM$7PN?Ey;#W2%EDj`0Jb6jc>n+a literal 0 HcmV?d00001 diff --git a/webcit/static/markngo_24x.gif b/webcit/static/markngo_24x.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc7afebf3c0b4a453b26b8f5e251f4b7ba8d1e07 GIT binary patch literal 1211 zcmcK3`7@h&00!{4MTncm)iZT8u`3~RyosyvQsTNmVI3f|^8bww*jtJYP#ww<^ ztrcacCZA}@)4xMyYts0uzYQD=Kv7dQ-rm~U0`Hf=U-SA+Ie0s(Uz-K1(|a2wyX)WV zXl44vQLr$yxVQ*jYQDVad$(9HH#axCZ)RqF@;(@DnExYZVq)U;)9mr_aWJ478ykB$ zDIFRbdO9r8KCA&<(*FMbzP>)tAsXxx?zRbmIuW$Q&)+Kp%`rVaJ)k)j+~)TGobpO7 z({v|;8^NM(0O}A?mww@!l?oJC_f)3uUbX}I7PR3?=G!xS2ghEUvLDuwH1Po+}n z6fX*uMx%IBDP)eP1C>mskPmo!dj}G+BofKX%gcv&hU7^g5{Xm~Hv)m+;o*VD<4HIy z4u`{HvHJsq{x_$04UI6+3gmInaPSGp1VE3`7<^C5P=$$=r8y4yzNX6BCAghJLf$P-czI=6c=fn(Ai7K4WdpQA8pl+gu7{wu74I5tz1diU+O z?5bm}52L>lyfZW96WACZgZNO5|C_oUS)Xb|Ey%by?r8hu73Q#}-JSD+5DlB5^{UR( zZc{bRztB|#miM5!B={%ZO#}N5(_2*Sz*JLOtw$K7@oE*1YU@sJOHK-W8lD)Bc0i5> z^)A{q8*>iyrfl*Uo1#^?Mu>V*&U4(u&yW?UgNb|O*ZY)qKi0-jb~ow4D9!QkujOYr zImy+|%vI*t(NYsz-qqBw8>Xj1wwH&kv^#-jg>Dv#>7eM68P*By$_Eyn#pJpMn(!HJ Q%2;9NT4N#+V-5NK2VyY#djJ3c literal 0 HcmV?d00001 diff --git a/webcit/static/menubar.html b/webcit/static/menubar.html new file mode 100644 index 000000000..35416fe41 --- /dev/null +++ b/webcit/static/menubar.html @@ -0,0 +1,92 @@ + + + +
    +

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + Goto next room + +
    + + Skip this room + +
    + + Ungoto +
    + + Read new messages + +
    + + Read all messages + +
    + + Enter a message + +
    + + + Who is online? + + +
    + + Page another user + +
    + + Advanced options + +
    + + Log off
    +
    + +

    + + +POWERED BY
    +CITADEL
    + +
    + diff --git a/webcit/static/minus.gif b/webcit/static/minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..50f623b8cc8d2a4533061f3784a299d659fa4131 GIT binary patch literal 142 zcmZ?wbhEHb6lM@%*vtR|)z#H4EiL~U{u2Wff3h$#FfcRdfOLY)U|_K>IHAeB*Wz`~ z_Wx4_I#QN%x~vjv5?`}w=0bzlLJsqU!|YF(L}Y(nb<*JA)d1tHX$}EtC0a|P)Q@Yc IF)>&J0Ei?<4gdfE literal 0 HcmV?d00001 diff --git a/webcit/static/minus_last.gif b/webcit/static/minus_last.gif new file mode 100644 index 0000000000000000000000000000000000000000..c316c834a75e295e7e7a0517e344ebbe7190ddb8 GIT binary patch literal 138 zcmZ?wbhEHb6lM@%*vtR|)z#H4EiL~U{u2Wff3h$#FfcRdfOLY)U|=yXIN`Z^>%&)P z)89Q1<4E=_Vp_Pai_@% literal 0 HcmV?d00001 diff --git a/webcit/static/minus_last_no_root.gif b/webcit/static/minus_last_no_root.gif new file mode 100644 index 0000000000000000000000000000000000000000..cd528616f80d425caa8e317faadf124d4b9853a5 GIT binary patch literal 135 zcmZ?wbhEHb6lM@%*vtR|)z#H4EiL~U{u2Wff3h$#FfcRdfOLY)U|=yRIN`Z^uf^-L z)_hDFZL=KaXeeelcCjt3UKh!I$DHv!v&~GSTkgxcStA!NIdM40YW{^63QP>v0A}(- A>Hq)$ literal 0 HcmV?d00001 diff --git a/webcit/static/minus_no_root.gif b/webcit/static/minus_no_root.gif new file mode 100644 index 0000000000000000000000000000000000000000..0cd1ab62717ae1abc08156a6beea99539f612ad7 GIT binary patch literal 140 zcmZ?wbhEHb6lM@%*vtR|)z#H4EiL~U{u2Wff3h$#FfcRdfOLY)U|_K@F0zM_*kR`V}-voKf#0D5~y AlK=n! literal 0 HcmV?d00001 diff --git a/webcit/static/monthview2_24x.gif b/webcit/static/monthview2_24x.gif new file mode 100644 index 0000000000000000000000000000000000000000..209be94584bf172e8ae0a1ce492fb50932e3fffc GIT binary patch literal 1239 zcmZ?wbhEHblwgox_|Cv!Y;2q|>)MliiTWzPZEF*^ZQB;;Z*z4McX<7(-X({&U;lq{ z8AEn;zhhwXGojG&nruj}AFMM~jH-7nK-@!ez`-48|`#irt>&ICJ->k0Vdy{Iaa~4eT+!`l)=FAy8-#BYCqv=yBmMvSh z@9>GJsHn2GSx!z)^Jf+Pf8G1{LFDE&Eo)*F&zwmE+7*?Yzin+?OH0eTP1`zK0{>r^ z`uw!~;u?mWtni85na}nz1bJDVIWsdTC@9uZckRmN^pckUpLc#Q72US`Kut}}zkBXh zR#u00SIkT^F3I;=w=AKiBK+K1fwgPb0^RxI5Wkm~S8;Li(REH=pDzvy^q4b$(Ue}l zwNn-TeVKdpWM)fa=GrAOAB)9~9zD8u@80%C|GgV>s>&jRif7z7zwFT-uC#e~{=cZM z>09#u48y)14NF(7UOYErNx#yS^$aBiUJ(szVj|t{oX_)ea(c3lv%4+!&?45kQ^R&` zh+D9D*`X8X)@C z|DSj5-I{%WkMP2|MT`42?%uu2FbXIO0mYvztRf6k7<53!fbs+b$A5-!fy#?b9tZhc z)`{d?T*U0y%Ca$F(UnDKgtTOLR7_Af*vzgIvf;&npau@f$wHc98iy|)=A16{FTqmr zAjgVoYP@}twrh?4HEgZJD z&i2X4e`$$0Uw5|MEum||a%lzDMp^cz7x(Q`+2xoYGpb22F?@N*D$Ai}!O6$wq8=Wr zp%cW!QlqnhLB4njgPSnls?uf&<%|Xnk$@SDi 0); + } + this.addEditEventListener = function(event) { + this.editeventlisteners[this.editeventlisteners.length] = event; + } + this.gotEditEventListeners = function() { + return (this.editeventlisteners.length > 0); + } + this.addMoveEventListener = function(event) { + this.moveeventlisteners[this.moveeventlisteners.length] = event; + } + this.gotMoveEventListeners = function() { + return (this.moveeventlisteners.length > 0); + } + this.addChild = function(childNode) { + var possiblePrevNode = this.childs[this.childs.length - 1] + if (possiblePrevNode) { + possiblePrevNode.nextSibling = childNode; + childNode.prevSibling = possiblePrevNode; + // alert(childNode.prevSibling); + } + + this.childs[this.childs.length] = childNode; + childNode.setParent(this); + + if (sortNodes) { + function sortByOrder(a,b) { + var order1 = a.getOrderNumber(); + var order2 = b.getOrderNumber(); + if (order1 == -1 || order2 == -1) { + return a.getName().toLowerCase() > b.getName().toLowerCase() ? 1 : -1; + } + else { + if (order1 == order2) { + // If they got the same order number, then we'll sort by their title. + return a.getName().toLowerCase() > b.getName().toLowerCase() ? 1 : -1; + } + else { + return order1 - order2; + } + } + } + this.childs.sort(sortByOrder); + } + } + this.removeChild = function(childNode) { + var found = false; + for (var i=0;i 0); + } + this.getChildCount = function() { + return this.childs.length; + } + this.getFirstChild = function() { + if (this.hasChilds()) { + return this.childs[0]; + } + return null; + } + this.gotHandler = function() { + return this.handler != null; + } + this.setHandler = function(handler) { + this.handler = handler; + } + this.getHandler = function() { + return this.handler; + } + this.setParent = function(parent) { + this.parent = parent; + } + this.getParent = function() { + return this.parent; + } + this.getLineString = function() { + return this.linestring; + } + this.setLineString = function(string) { + this.linestring = string; + } + this.isEditable = function() { + return this.editable; + } + this.setEditable = function(editable) { + this.editable = editable; + } + +} +function getTreeNode(nodeID) { + return findNodeWithID(rootNode,nodeID); +} +function findNodeWithID(node,nodeID) { + if (node.getID() == nodeID) { + return node; + } + else { + if (node.hasChilds()) { + for(var i=0;i'; + str += ''; + if (rootNode.hasIcon()) { + str += ''; + } + str += ' ' + rootNode.getName() + ''; + str += ''; + + if (rootNode.hasChilds()) { + for(i=0;i'; + str += ''; + for(var y=0;y'; + } + else if (linestring.charAt(y) == 'B') { + str += ''; + } + } + if (treeNode.hasChilds()) { + // If this is the first child of the rootNode, and showRootNode is false, we want to display a different icon. + if (!showRootNode && (treeNode.getParent() == rootNode) && (treeNode.getParent().getFirstChild() == treeNode)) { + if (!lastNode) { + str += ''; + } + else { + str += ''; + } + } + else { + if (!lastNode) { + str += ''; + } + else { + str += ''; + } + } + } + else { + // If this is the first child of the rootNode, and showRootNode is false, we want to display a different icon. + if (!showRootNode && (treeNode.getParent() == rootNode) && (treeNode.getParent().getFirstChild() == treeNode)) { + if (!lastNode) { + str += ''; + } + else { + str += ''; + } + } + else { + if (!lastNode) { + str += ''; + } + else { + str += ''; + } + } + } + iconStartImage = treeNode.getIcon(); + if (state != 'closed') { + if (treeNode.hasChilds()) { + iconStartImage = treeNode.getOpenIcon(); + } + } + + str += ''; + str += ' '; + str += treeNode.getName(); + str += ''; + str += ''; + str += ''; + + if (treeNode.hasChilds()) { + if (state == 'open') { + str += '
    '; + fireOpenEvent(treeNode); + // alert('openevent: ' + treeNode.getName()); + } + else { + str += '
    '; + } + var subgroupstr = ''; + var newChar = ''; + + if (!lastNode) { + newChar = 'I'; + } + else { + newChar = 'B'; + } + for(var z=0;z'; + str += '
    '; + } + return str; +} +/* +function mouseMove() { + if (dragging) { + alert('bob'); + } +} +function mouseUp() { + if (dragging) { + alert('dropped on something!'); + } +} +*/ +function startDrag(nodeID) { + if (!dragable) { + return; + } + draggedNodeID = nodeID; + + var srcObj = window.event.srcElement; + while(srcObj.tagName != 'DIV') { + srcObj = srcObj.parentElement; + } + floatDragElement = document.createElement('DIV'); + + floatDragElement.innerHTML = srcObj.innerHTML; + floatDragElement.childNodes[0].removeChild(floatDragElement.childNodes[0].childNodes[0]); + + document.body.appendChild(floatDragElement); + floatDragElement.style.zIndex = 100; + floatDragElement.style.position = 'absolute'; + floatDragElement.style.filter='progid:DXImageTransform.Microsoft.Alpha(1,opacity=60);'; +} +function findSpanChild(element) { + if (element.tagName == 'SPAN') { + return element; + } + else { + if (element.childNodes) { + for(var i=0;i!'); + return; + } + } + findSpanChild(colouredElement).className = 'treetitleselectedfocused'; +} +function dragLeave() { + if (!dragable) { + return; + } +} +function endDrag(nodeID) { + if (!dragable) { + return; + } + if (lastDraggedOnNodeID != null) { + fireMoveEvent(getTreeNode(lastDraggedOnNodeID),draggedNodeID,lastDraggedOnNodeID); + } +} +function dragProceed() { + if (!dragable) { + return; + } + var dragged = getTreeNode(draggedNodeID); + var newparent = getTreeNode(lastDraggedOnNodeID); + + var oldparent = dragged.getParent(); + + oldparent.removeChild(dragged); + newparent.addChild(dragged); + + refreshNode(oldparent); + refreshNode(newparent); + + _dragClean() +} +function dragCancel() { + if (!dragable) { + return; + } + _dragClean() +} +/** +* Don't call this yourself. +*/ +function _dragClean() { + if (!dragable) { + return; + } + if (colouredElement) { + findSpanChild(colouredElement).className = 'treetitle'; + } + + floatDragElement.parentElement.removeChild(floatDragElement); + floatDragElement = null; + colouredElement = null; + draggedNodeID = null; + lastDraggedOnNodeID = null; +} +function dragMove() { + if (!dragable) { + return; + } + floatDragElement.style.top = window.event.clientY; + floatDragElement.style.left = window.event.clientX; +} +function editEnded() { + if (treeNodeEdited != null) { + // treeNodeEdited.getID(); + var editTitle = document.getElementById('title' + treeNodeEdited.getID()); + var input = editTitle.childNodes[0]; + + var newValue = input.value; + + if (newValue == treeNodeEdited.getName()) { + editTitle.innerHTML = newValue; + treeNodeEdited = null; + return; + } + + fireEditEvent(treeNodeEdited,newValue); + + if (!editaborted) { + treeNodeEdited.setName(newValue); + editTitle.innerHTML = newValue; + } + + treeNodeEdited = null; + } +} +function selectNode(nodeID) { + var treeNode = getTreeNode(nodeID); + + if (selectedNode != null) { + if (selectedNode == nodeID) { + if (treeNode.isEditable()) { + if (treeNodeEdited == treeNode) { + return; + } + treeNodeEdited = treeNode; + var editTitle = document.getElementById('title' + treeNode.getID()); + editTitle.className = 'editednode'; + + + editTitle.innerHTML = ''; + var input = editTitle.childNodes[0]; + input.value = treeNode.getName(); + input.focus(); + input.select(); + input.onblur = editEnded; + } + return; + } + if (treeNodeEdited != null) { + editEnded(); + } + var oldNodeTitle = document.getElementById('title' + selectedNode); + oldNodeTitle.className = 'treetitle'; + } + selectedNode = nodeID; + var nodetitle = document.getElementById('title' + selectedNode); + nodetitle.className = 'treetitleselectedfocused'; + + if (treeNode.gotHandler()) { + eval(treeNode.getHandler() + '(getTreeNode(' + nodeID + '));'); + } + else { + standardClick(treeNode); + } +} +function refreshNode(treeNode) { + var submenu = document.getElementById('node' + treeNode.getID() + 'sub'); + var str = ''; + for(var i=0;i'; + } + else { + actionimage.outerHTML = ''; + } + } + } + submenu.innerHTML = str; +} +function handleNode(nodeID) { + var treeNode = getTreeNode(nodeID); + if (!treeNode.hasChilds()) { // No reason to handle a node without childs. + return; + } + + var submenu = document.getElementById('node' + nodeID + 'sub'); + + var iconimageholder = document.getElementById('iconimage' + nodeID); + var actionimage = document.getElementById('handler' + nodeID); + + // This will be used if showRootNode is set to false. + var firstChildOfRoot = false; + if (actionimage.src.indexOf('_no_root') != -1) { + firstChildOfRoot = true; + } + + if (submenu.style.display == 'none') { + writeStates(nodeID,'open'); + fireOpenEvent(treeNode); + submenu.style.display = 'block'; + + iconimageholder.src = treeNode.getOpenIcon(); + + if (actionimage.src.indexOf('last') == -1) { + actionimage.src = href + 'static/' + ((firstChildOfRoot) ? 'minus_no_root' : (showLines ? 'minus' : 'minus_nolines')) + '.gif'; + } + else { + actionimage.src = href + 'static/' + ((firstChildOfRoot) ? 'minus_last_no_root' : (showLines ? 'minus_last' : 'minus_nolines')) + '.gif'; + } + } + else { + writeStates(nodeID,'closed'); + submenu.style.display = 'none'; + + iconimageholder.src = treeNode.getIcon(); + + if (actionimage.src.indexOf('last') == -1) { + actionimage.src = href + 'static/' + ((firstChildOfRoot) ? 'plus_no_root' : (showLines ? 'plus' : 'plus_nolines')) + '.gif'; + } + else { + actionimage.src = href + 'static/' + ((firstChildOfRoot) ? 'plus_last_no_root' : (showLines ? 'plus_last' : 'plus_nolines')) + '.gif'; + } + } +} +function fireOpenEvent(treeNode) { + if (treeNode.gotOpenEventListeners()) { + for(var i=0;i 2) ? argv[2] : null; + var path = (argc > 3) ? argv[3] : null; + var domain = (argc > 4) ? argv[4] : null; + var secure = (argc > 5) ? argv[5] : false; + document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); +} +function expandNode() { + var state = getState(selectedNode); + if (state == 'open') { + var currentTreeNode = getTreeNode(selectedNode); + if (currentTreeNode.hasChilds()) { + selectNode(currentTreeNode.childs[0].getID()); + } + } + else { + handleNode(selectedNode); + } +} +function subtractNode() { + var state = getState(selectedNode); + if (state == 'closed') { + var currentTreeNode = getTreeNode(selectedNode); + var parent = currentTreeNode.getParent(); + if (parent != null && parent != rootNode) { + selectNode(parent.getID()); + } + } + else { + handleNode(selectedNode); + } +} +function selectPrevNode() { + var currentTreeNode = getTreeNode(selectedNode); + if (currentTreeNode.prevSibling != null) { + + var state = getState(currentTreeNode.prevSibling.getID()); + + if (state == 'open' && currentTreeNode.prevSibling.hasChilds()) { + // We have to find the last open child of the previoussiblings childs. + var current = currentTreeNode.prevSibling.childs[currentTreeNode.prevSibling.childs.length - 1]; + var currentstate = 'open'; + while (current.hasChilds() && (getState(current.getID()) == 'open')) { + current = current.childs[current.childs.length - 1]; + } + selectNode(current.getID()); + } + else { + selectNode(currentTreeNode.prevSibling.getID()); + } + } + else { + if (currentTreeNode.getParent() != null && currentTreeNode.getParent() != rootNode) { + selectNode(currentTreeNode.getParent().getID()); + } + } +} +function selectNextNode() { + var currentTreeNode = getTreeNode(selectedNode); + + var state = getState(selectedNode); + if (state == 'open' && currentTreeNode.hasChilds()) { + selectNode(currentTreeNode.childs[0].getID()); + } + else { + if (currentTreeNode.nextSibling != null) { + selectNode(currentTreeNode.nextSibling.getID()); + } + else { + // Continue up the tree until we either hit null, or a parent which have a child. + var parent = currentTreeNode; + while ((parent = parent.getParent()) != rootNode) { + if (parent.nextSibling != null) { + selectNode(parent.nextSibling.getID()); + break; + } + } + /* + if (currentTreeNode.getParent().nextSibling != null) { + selectNode(currentTreeNode.getParent().nextSibling.getID()); + } + */ + } + } +} +function keyDown(event) { + if (window.event) { + event = window.event; + } + if (event.keyCode == 38) { // Up + selectPrevNode(); + return false; + } + else if (event.keyCode == 40) { // Down + selectNextNode(); + return false; + } + else if (event.keyCode == 37) { // left + subtractNode(); + return false; + } + else if (event.keyCode == 39) { // right + expandNode(); + return false; + } +} +document.onkeydown = keyDown; diff --git a/webcit/static/newmess2_24x.gif b/webcit/static/newmess2_24x.gif new file mode 100644 index 0000000000000000000000000000000000000000..fcfeb994814c433e017feedd90ca6ef1d80d8899 GIT binary patch literal 1221 zcmbu8>syj{0EXXEH(OR#)?Dq{W|q~esVHYF$?^cA9So6NS~G2zT^)4HQ!9Zyq?kp5 z&gDYOU^+|jFb`NL;gF;-QSpF+AjVr}rP~y=-|}zh{_x!2o^N+RkUs`{!WnXg{(~R@ z!1TX!Z)axB(*T|ZrnkWG1{kKm=p@ijTE`}>Ba=Y)%4#%E4Z=VRTZUoF_=}eVFi=kb z%WHg}X|8vC?wJuhH3FsKy>e_`IcC-9Un%w0CpxP_H!s(NzegA3qgL7If@~D@XyJ|# zt8@gkX@Su|RSm)ITJU^uTs}12HvC>Pw9r0e8P%QX8h|B(7I{D1tXU9itPeGF9ew83 zzL|!8pc$k$^Z|uhCs*sGYPhL)roMOKFZFC~k5%-1uC*H$tIQ8orlzNGOP9X#sij;A znxE*Zy580)#_JRl)pApn+gs!mLZR?RMHjn5$*LUY2p$)gH#3C&1@~Gm-RUmi-%q>!gnjG5&-}L3 zl1?6vmt9!N<#Ka*cXGI8IX6p-^0^?z<$a0^BcIQ>##bPlSjP&&Mcosk767w{pERI~HIx*1IEqXr`-dJo5E4NmhmwNH`^n+xgR~%0D2a#+3GfRDBoc$X zX$1F3f`{M!17UkSu>1VI{fNH4zPtAlNO(`&ZUP>U#Nlv0crOfouMZBp2=0S$7z_rB zMWE4WJPP51LLku?6dH>}VUQ>^5{2^i_V)7fLLd;Ho}M4Z-Q9iHu3cKK7WxQW=4|bp zpqJ3j#gD}%AbSAyFLMg){Iwz8e(iBXN3KeewWc=B}!Hct`F=vrz)ihGBw=$d)rPX?AX5PVEy@-^PkSBIovV?hm+|lJ$;BR9I*8~Y1G2sGXP?pmp3?GKxom#)K zFo61tRh`GazJX`#1KY=-SnC=xmix6?spG7Ht4*z@^3u}%6kkL*>N!q~S&=+%|40#QOWm8AE2LtFA2RJ6efg4tFv=ein{|I)AZ;0; Tn@?ePWNbGT#jJF4gz*0Zm|Jvj literal 0 HcmV?d00001 diff --git a/webcit/static/newmess3_24x.gif b/webcit/static/newmess3_24x.gif new file mode 100644 index 0000000000000000000000000000000000000000..3c6ac92ab8e54dfedab85260c4268f31a88104e0 GIT binary patch literal 1192 zcmcK3{ZrC+0KoCD%PqX?%BD5VTo~AcWt!R*p*GMKoGfjB!A-GAsb58;I6wnj|c%=UJYb_lQ_$}fF!2^z9 z;4Z(Z{+0&*^}?c>4lb8lU0HdhO59kUSzOUrR#sNc zW|o$gGFcTY7OSMBB!ewp%(gnm5}V><-<{oVIJ={upr9--Zz_EUGe7aig7ArC%hbGz z%$&ULq?q9(o7hV?qA%S56iRe9H#&Zi8R3^H*!&%7q3YAPIQ^^5=fq^-=qa+fENF)XYc=`GH5eS46 zICmc(g3lKOg15J~mzNhFk3WXT<8U}nPfrgI4|jKWH#av|S63Go7iVW@r!Nj4baZsY zVzC$pw1b0#y}kX+%nbB@a`@Z)Yiq~=9odX*J^`Tsq_o&(9wJb(P*$gC)K2Rbwxw17 zp3=i7F~K`MnHt_U-gaA7zKdOG?oC--E;`2SK&2V;V9k&@-$zEmL4znqKW4^n*xm7U zx1BHoF|>6Qf`+0|t*E2d*w+aZ(F-U17HML#$hx>&w3SHu_zk_*7Au;vL`OJWn2ayB zyt#|*7+L*SFtujvHOs-MWlgO(n2zCpn9BDt%+qjr(LvY;PAZTC3QXBf^wpTNAuxhf3o zQgztL5zZ00y3P7f>f8tyr>C{=-t%pm+R<;-m{whGxuq8U3>T@b#T*ObqW2uDh#*0} F{{he|D_Z~n literal 0 HcmV?d00001 diff --git a/webcit/static/newstartpage.html b/webcit/static/newstartpage.html new file mode 100644 index 000000000..680eb4fcf --- /dev/null +++ b/webcit/static/newstartpage.html @@ -0,0 +1,22 @@ + + + + + +
    + New start page + +
    + +
    +Your start page has been changed. +

    + +(Note: this does not change your browser's home page. +It changes the page you begin on when you log on to ). +

    + +Back... +
    + \ No newline at end of file diff --git a/webcit/static/nextdate_32x.gif b/webcit/static/nextdate_32x.gif new file mode 100644 index 0000000000000000000000000000000000000000..6288cafcd3daba9c94da240e2c1ead81784df41e GIT binary patch literal 1312 zcmd7ReN)m00KoB|rDf@DJ+Q8JuA!~Y%AG5Z7 zf6vlwHrtYux;RB$aM0!){25#Gj7>dfFMcthc8=fhJZW=1r*!}6nSFM}_J?v}Owlpw zdHz&x`R$*Pk&)ryVUu-z^f7s0VBpDMw)FvNs4ugpr{{5RMtj%2nx2J@jt)y_x2Sue zx_jQ-{$thMc|q5!R!ip(U2}r2IitCwvh$V6Wa78~b=zdox0-o(UY1#2>WyZD!N4)Q zTJ**`qm|V*tJCSOnPzXc7&KblRpZQ6$(oGMoHBxb+Oq?hZiJEE?tE;Oeq6DE(=qUu%S0}uufdm3UWo2cZFrlKNg3ssk zc)YT*GA@_P;c(b&HjBk7EiEl6DPb@ebUOVS1I{dl7Zy@!G#axAUQkewpPx^mP;zr~ z$z*cQMM4%SB_ksvD-)ldp8nl`(y*zisYD_%m53n_2t)#gNH|CQHZeIl8IQ*&;}dW= zTnZkIONzx}u}Roi3VdI05?07R?eKHJAW z_Vej8n8WAp;)jqCzm$m<73+AdBS#+hE*@4N-ScV1`v3$p+jJ;{S&7O#7K z6ui6FODtzI9(4z@-8hwJBm`_@ZrrQ5e~7w!6}5vBe*9q===EmsM$q}}G_O61K6qqf z-ex7I9FlJ5gLYXX4`u}?*?Ar=BBaOaTnXt^5RG_4l#3eIWsR5VjgT9;n+yNyI?2n z-e3A2MX`(p%Ysk_wEvO3l&ahy3fTOqx>oW$}L=0 ? true : false); +} + +var oldonload=window.onload; +if(typeof(NiftyLoad)!='function') NiftyLoad=function(){}; +if(typeof(oldonload)=='function') + window.onload=function(){oldonload();AddCss();NiftyLoad()}; +else window.onload=function(){AddCss();NiftyLoad()}; + +function AddCss(){ +niftyCss=true; +var l=CreateEl("link"); +l.setAttribute("type","text/css"); +l.setAttribute("rel","stylesheet"); +l.setAttribute("href","static/niftyCorners.css"); +l.setAttribute("media","screen"); +document.getElementsByTagName("head")[0].appendChild(l); +} + +function Nifty(selector,options){ +if(niftyOk==false) return; +if(niftyCss==false) AddCss(); +var i,v=selector.split(","),h=0; +if(options==null) options=""; +if(options.find("fixed-height")) + h=getElementsBySelector(v[0])[0].offsetHeight; +for(i=0;i0;i--) + d.appendChild(CreateStrip(i,side,color,border,btype)); +el.style.paddingBottom=0; +el.appendChild(d); +} + +function CreateStrip(index,side,color,border,btype){ +var x=CreateEl("b"); +x.className=btype+index; +x.style.backgroundColor=color; +x.style.borderColor=border; +if(side=="left"){ + x.style.borderRightWidth="0"; + x.style.marginRight="0"; + } +else if(side=="right"){ + x.style.borderLeftWidth="0"; + x.style.marginLeft="0"; + } +return(x); +} + +function CreateEl(x){ +return(document.createElement(x)); +} + +function FixIE(el){ +if(el.currentStyle!=null && el.currentStyle.hasLayout!=null && el.currentStyle.hasLayout==false) + el.style.display="inline-block"; +} + +function SameHeight(selector,maxh){ +var i,v=selector.split(","),t,j,els=[],gap; +for(i=0;imaxh) maxh=els[i].offsetHeight; + els[i].style.height="auto"; + } +for(i=0;i0){ + t=CreateEl("b");t.className="niftyfill";t.style.height=gap+"px"; + nc=els[i].lastChild; + if(nc.className=="niftycorners") + els[i].insertBefore(t,nc); + else els[i].appendChild(t); + } + } +} + +function getElementsBySelector(selector){ +var i,j,selid="",selclass="",tag=selector,tag2="",v2,k,f,a,s=[],objlist=[],c; +if(selector.find("#")){ //id selector like "tag#id" + if(selector.find(" ")){ //descendant selector like "tag#id tag" + s=selector.split(" "); + var fs=s[0].split("#"); + if(fs.length==1) return(objlist); + f=document.getElementById(fs[1]); + if(f){ + v=f.getElementsByTagName(s[1]); + for(i=0;i + + Error + + + +
    +

    Sorry!

    +
    +This site requires both Cookies and JavaScript to be enabled in your browser.
    +Please enable these features and log in again. We are sorry for the inconvenience. +
    + + + diff --git a/webcit/static/numbered_list.gif b/webcit/static/numbered_list.gif new file mode 100644 index 0000000000000000000000000000000000000000..d1a4dbcad69be87aad112c16ec6b70d5d3b9af77 GIT binary patch literal 90 zcmZ?wbhEHblw^=#n8?Hc1`YrJ{|7P@f3h$#FfcLbfCNGE3{2Wn`d6NQ%fEPz!3EJZ njC;OUY0eaz=98v2>v+>jgMFI>_p7{iP3b)MkDtemi@_QIFrXYm literal 0 HcmV?d00001 diff --git a/webcit/static/outdent.gif b/webcit/static/outdent.gif new file mode 100644 index 0000000000000000000000000000000000000000..fa3c1b6aad8e4a6209277e391c7bcb733dc4fd96 GIT binary patch literal 96 zcmZ?wbhEHblw^=#n8?Jyz|a81|Ns97l8QfB7#SFt7<7Pa29P`hli`&9m8akGFAhn( wB~f(M=Dt3I$8pPsiV0E0+ZGh|&25o-!aZ$OyLZ)9?prNK7JWRS!N6b*0P?6HaR2}S literal 0 HcmV?d00001 diff --git a/webcit/static/page.gif b/webcit/static/page.gif new file mode 100644 index 0000000000000000000000000000000000000000..27f96989aeeb5934ee2d7dd6089f6179faf1b503 GIT binary patch literal 144 zcmZ?wbhEHbYSI%H7|MFOxHF@r<=OX-*h{t*&oqU--j<>4j(vh4&OTww;4fku7oSG zPaFvm>#Da}KdCJiG#HHW&$%h-ZF#JLl=S8Twy>y7n3gMgmD-$~(v<$LBO|wy#TGJ) z`U^^hg=NALPS5MK=6trWuv}EY87kxmO1Xm~@ltuUgx5Gx`Efikt1qKuL^6lG7U}5J zy1_^dOLcEKldS5=p|8ri?&aE!g+mKu*GzLe*Gy)}=g+?HQ`YpWs(ROW0u8rQ&h3)( zMH>E~YDR^eZdHq9V?>T(1&;m1r26%WFPp;(oK~S!jo;NM(_mzdC`73^8Yo)zqsW2$OzGWjpvkS`Y1A`e3EI=JttbpxH z*e!?tRS>Mg*e@7Y!Gw+9gheeZX<@^N4GYk;2-4r6+yTv=Z34++Q15}(1Ud@!6c`Uc zv4g96i*_HkDb!K0dx(@3%~miW8Y#+PG64dj6>Sc-fPdfe-~Pn~yv#I`AaaR-qh&{( zARJ|c3(52HkvN~an(%=U*T4(+CoONt=-N|d0XJ!R#ScBdKQKtF=KkUSTk`0{L?BaI$IdlJ@lZvI-BH{)^O z{Ii(Lw|p5MvOId#_1KxJ_WSh(#mDJ4^*axfoliK@L$tien5bfVdhk?imd5GPrD%Rm zrc$(iEGV_|bK;CB&fx}o;Yy?Yu6>1fIMXk}O%>sO@m>HUDkC#%)4|=_ulI#lc4jU~ H62X4}Y!a7Q literal 0 HcmV?d00001 diff --git a/webcit/static/palette.htm b/webcit/static/palette.htm new file mode 100644 index 000000000..4572f8117 --- /dev/null +++ b/webcit/static/palette.htm @@ -0,0 +1,124 @@ + + + Text Color + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + diff --git a/webcit/static/paste.gif b/webcit/static/paste.gif new file mode 100644 index 0000000000000000000000000000000000000000..9bcc76ac2072414f8b6c5323250769d322aeff2a GIT binary patch literal 152 zcmZ?wbhEHblw^=#Sj5f%1`YrJ|8D>Rh64u<{Qu7Y(6um%7?gFkTq literal 0 HcmV?d00001 diff --git a/webcit/static/plus.gif b/webcit/static/plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..c84dce2e246eff2eaa5894516340e8e30eab8033 GIT binary patch literal 145 zcmZ?wbhEHb6lM@%*vtR|)z#H4EiL~U{u2Wff3h$#FfcRdfOLY)U|_K;IHAeB*Wz`~ z_Wx4_I#QN%x~vjv5?|4fm6jp3{Ova;8~=y{2iLgm*cf9lvwg>@Ot%X{8NZf9t-k&y LW!YI51_o;YkQht( literal 0 HcmV?d00001 diff --git a/webcit/static/plus_last.gif b/webcit/static/plus_last.gif new file mode 100644 index 0000000000000000000000000000000000000000..701c16c778bfac4f3b97400a1730f97cce0ee0a1 GIT binary patch literal 143 zcmZ?wbhEHb6lM@%*vtR|)z#H4EiL~U{u2Wff3h$#FfcRdfOLY)U|_K+IN`Z^>%&)P z)89Q1<4E=_Vp_Pa8z<;b+9I+lYWea6q;$6#qv>pZ3Y60fyU>zg?k FtO4XBM*#o; literal 0 HcmV?d00001 diff --git a/webcit/static/plus_no_root.gif b/webcit/static/plus_no_root.gif new file mode 100644 index 0000000000000000000000000000000000000000..22a4a90612451feee7532c6d1e7bb83a2c9f6a90 GIT binary patch literal 143 zcmZ?wbhEHb6lM@%*vtR|)z#H4EiL~U{u2Wff3h$#FfcRdfOLY)U|_K+IN`Z^uf^-L zsRHpFSxkxZS{AUX7qF#Nuae}xW6t=V*=DNR^vR`0BEK};s5{u literal 0 HcmV?d00001 diff --git a/webcit/static/plus_nolines.gif b/webcit/static/plus_nolines.gif new file mode 100644 index 0000000000000000000000000000000000000000..a7dc6be3df6a1c73a299130d6fc327979b43dc26 GIT binary patch literal 137 zcmZ?wbhEHb6lM@%*vtR|)z#H4EiL~U{u2Wff3h$#FfcRdfOLY)U|=yTIN`Z^uf^-L zsRHpFSxkxZS{AUX7qF#Nuae}xW6qeq^yMrQp3~pE7B*;4FuIayHUGkjlB!My25SKL Cm_-=? literal 0 HcmV?d00001 diff --git a/webcit/static/prevdate_32x.gif b/webcit/static/prevdate_32x.gif new file mode 100644 index 0000000000000000000000000000000000000000..c8c98b5e62fcde23a3dad1e88b8b4aa71a242f80 GIT binary patch literal 1333 zcmc(e`%}^f0Kl=V@WisBtXVe;=dANu<>+klJWRqDC=Ch4CJ1KwO-n;X67vB9Q^7|9 znTm)&2naq%t*NQAJJT?&tYvB76Wc5^(`*}T{T2J%=MVV&@(Bz^`J9Y(1G$0LKp>mV zW?lPrb=hcLk*+NdTUR93l^W|xt@XoA>j#nbeZKWQ%es_pUCOa8<^KJaxwde1)x!8_ zVVF#&4|9z7GZ{&93 zze`^|t8IU7Gd%t4(W6Jh!^6!ZYpRFq%AvLALqPq5)&BneCj$w+y}cv%^$Gq3HB#%2Te z_8V`)LMOBv*ngrcUw!ork}s2pHntyl?|F4{XA1Q zm#v#qDwSD{v&_a>g+d`$HZ-dU49$#OF3;4=(ACp)^-OxhluRbeXqZlKm`+no(QZvi z>g2VxwGyf9iqb5RNK%#N6vcm}Uu-R-DiB*3u*3BiU3 zVZ(#N!q8!uKr}iCgANP{2?-4eM4?bfB+}pCAAvyl`T6!P_@KZ(ylWH*;1vEc6ZZ`+_bevF4rglh47_9*HJ=VHIgHRk z89U;fT26@ziJA-w`?;QcPoiqGyZH<_jIK5Z#1HQ~&K&6&g((Gvz%F?@((ce^;!cdo zYdb97VV`H@WA{|r+9`vevbtbB6v=n?ie#&fZ8-mM8=U_&%+RkHuez7GT#;JDDS3JF z!VDXg>EQAUkYxSr`P=lMaDVn^u-$c-F^R-YOj+A8U#D-=BKtqOqM%~2iXw^&fDb1c1wVlLy1mKDSh7u zc^5Ce=yR!K9~_jAIa3qi_3moRF~Iq@;A^WNl@2(5pi6Vo%K}NB*ZYE}eJe0OW751Yvm^gkhy-Oc zuUNg|$d;C-`rH@S8eV?*x#QZelNawy4NzIlTB&zpRCf2K z|Gk#!xlx_X(@pC#uH1Zh^YQ!J z7pgm^uPm#ma<(!5-==$dcT-wgT6)8R{l_nU?Y5cNp7ZhgNJdhJgc$KUr8s7{VBIKu!R~2?P7| zhOnmQmew$}j?S*`4&lE3KK@CQJFF*9Rxof92$4|g;L%W+>}8@QukWs^+hM^L=rT!$ z$%a!;&d;(#QAArz$jXjU)=-*FE_gSqs5t|lv7?)sd61KA2fMSct+#kj7q^6wpdgo; zkB*M3tB%?I4oN9bdu3A}wYGL%DGt5>Q-=?dMvjj-nV6K>mIy?=kUd-@pe)A4!e9*m D>I%V| literal 0 HcmV?d00001 diff --git a/webcit/static/privatemess_32x.gif b/webcit/static/privatemess_32x.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b9d6d45f5e9bec61c28ae0328703be79015bc8a GIT binary patch literal 1272 zcmVGJ*R@c8NP z_UG{Y=I;37?fm5J_vGsG;_CF<>;2m4{NCyK+Uot<>HFI1{NU#9*XaG&=K0s=_|fJ4 z*W~p6{nBC&((&YO4Jc?fT$|{NAAY-kkX0hST8i{@#V%-QEA%jL6{p#ozz` z*^l_zm&D%w#NPeG-Tmy_hQi$Y%-ZVo*OtNC`sLVrx!3&S*LuCy_36=><psBiYDZuO{e^r&x)y7Hj5&-ABmjJfdkrfZA1@1V5IsI$O|x9+X6 zw!yJ?{-R#PuX>5K>xi`KiL~j5wCVGpWBZ*~pRB#6tFf7^!?mkwgRbI)uHu2K-}{tD z@|IG9soSKgWT2y{j-j`HqtSe$(}APRoSdBdia4d5aqx;id!EXonQ(WU$#I2iOle|Pnph`PWO!mM=wW8OiM^TNk=_EMomIRNmD>GPCzz8K|Vo2IZ-_? zK|ee>KuJVBH#k5^I6Xr-JU~4=I668yJ32WzIXO5uI5#*rG&VUfHa#^pH8eCdG&D6c zGcz(WGAS!9A^8La6aXmzEC2ui03ZM$000R808VfHj{LPDS80f5)?I@ zJlWCWhB7!&BTSi+M$s=`J#@Y@6r#zpbm^+qQE^0FUMW(rfB|&N8>$O2A7JD0!`VAu zvXGIp(m_~M3Xmahxig9yxIO`1%7Nv9RJ&Ax;s_cBj0B~q7*a#V;>J|If5d#a>=mg* zF=KhENSE|2$egGfghOr>PZc6-_&!#UMuCmBWr;Gq6#BGI9UCaUP7j5dmBKma@CQmgj> literal 0 HcmV?d00001 diff --git a/webcit/static/privatemess_48x.gif b/webcit/static/privatemess_48x.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c54b39f6702a65a4af06d03eb10c4aba02535ae GIT binary patch literal 1588 zcmV-42Fv+JNk%w1VK4wN0QUd@AR!`usM`N{6nJ+|@$vE1#CtnGL}iAqvdQK-N?)0o zW^G6=k)E#M(sEgHk&?mt)7j$JY8uhKnVFfHSyf5xgg26meL`O=VS0lBnb$Eo6|EOnJVQb9H%;)d<|9cvdzxar>>an)GvZjxR znXk>=@^*H1dU|?tkhW4(KmXa2@YsVrLPb z_~(QFe;~BX>Hmo_KSfRd<&k7@fY{#Uvb)7oKr{T#pu<8Dl9IYu*kZuc-_a0=J)?tTt~gZ$N#v4-QC>)000000000000000 z0000000000A^8La6ae@DEC2ui05AYB000R80PzVNNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz3kW{meAVZ2ANwTC!QU#j@S;?}c%a<@?x@?wGm&}_uW$L0yu-TZLK!Y;j zInXDnph#o77)DfJGXm5sB%Qhvl{x}V@inv4#7Tw|RDqtr5&)W=tXrc&tD|R1Se7R? z^zjob)ha(2Vl+u{Hf4tgYGvsGvM8**X#>pgp+V!FB?U5sJ?Mb;FJNeEd}(3;7HKUg z+rorNq^-0zNu|~)q3rk1pUZ2gIe5fK=$;)1{t#DvNF$eg91P_rAlZi63`1fCOs?>o707mptSWAnP zaYh(j5W~tH)bxUxCk}wZf+SR+^+|X*rl3kYC5$pkJA-gxlP+AqQ$shBNB{*7vP5$n zG;%ca$_%2Q6$Fmq#gNJfhFIWE3vkp>Lnx^r0!In3NRmSmM(Ba#8qMS)O_e6}WDAym zK!d>r$v9(*4uB-%#wdy)qR1#dD1xLANmOwG2GATAO`Ot*U__lo;eq8h25{rdr_Ov} zPM7ic;D!%gh*JhgpjcA^2pnMl^Tn*#gw)3_ML82*6W&M>52(PJat#826bnc!#u%f) zvdlK?EGNxyQB)qskyFD6z-Ak&Ddu#GfB`?CAi%ifmTT@Y&A3t&JK`x(!W-Jg3o0O~ z98rk50z|OMDfr&g%nL + * + * THIS FILE IS AUTOMATICALLY GENERATED. When sending patches, please diff + * against the source tree, available from the Prototype darcs repository. + * + * Prototype is freely distributable under the terms of an MIT-style license. + * + * For details, see the Prototype web site: http://prototype.conio.net/ + * +/*--------------------------------------------------------------------------*/ + +var Prototype = { + Version: '1.4.0_pre4', + + emptyFunction: function() {}, + K: function(x) {return x} +} + +var Class = { + create: function() { + return function() { + this.initialize.apply(this, arguments); + } + } +} + +var Abstract = new Object(); + +Object.extend = function(destination, source) { + for (property in source) { + destination[property] = source[property]; + } + return destination; +} + +Function.prototype.bind = function(object) { + var __method = this; + return function() { + return __method.apply(object, arguments); + } +} + +Function.prototype.bindAsEventListener = function(object) { + var __method = this; + return function(event) { + return __method.call(object, event || window.event); + } +} + +Number.prototype.toColorPart = function() { + var digits = this.toString(16); + if (this < 16) return '0' + digits; + return digits; +} + +var Try = { + these: function() { + var returnValue; + + for (var i = 0; i < arguments.length; i++) { + var lambda = arguments[i]; + try { + returnValue = lambda(); + break; + } catch (e) {} + } + + return returnValue; + } +} + +/*--------------------------------------------------------------------------*/ + +var PeriodicalExecuter = Class.create(); +PeriodicalExecuter.prototype = { + initialize: function(callback, frequency) { + this.callback = callback; + this.frequency = frequency; + this.currentlyExecuting = false; + + this.registerCallback(); + }, + + registerCallback: function() { + setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); + }, + + onTimerEvent: function() { + if (!this.currentlyExecuting) { + try { + this.currentlyExecuting = true; + this.callback(); + } finally { + this.currentlyExecuting = false; + } + } + } +} + +/*--------------------------------------------------------------------------*/ + +function $() { + var elements = new Array(); + + for (var i = 0; i < arguments.length; i++) { + var element = arguments[i]; + if (typeof element == 'string') + element = document.getElementById(element); + + if (arguments.length == 1) + return element; + + elements.push(element); + } + + return elements; +} + +if (!Array.prototype.push) { + Array.prototype.push = function() { + var startLength = this.length; + for (var i = 0; i < arguments.length; i++) + this[startLength + i] = arguments[i]; + return this.length; + } +} + +if (!Function.prototype.apply) { + // Based on code from http://www.youngpup.net/ + Function.prototype.apply = function(object, parameters) { + var parameterStrings = new Array(); + if (!object) object = window; + if (!parameters) parameters = new Array(); + + for (var i = 0; i < parameters.length; i++) + parameterStrings[i] = 'parameters[' + i + ']'; + + object.__apply__ = this; + var result = eval('object.__apply__(' + + parameterStrings.join(', ') + ')'); + object.__apply__ = null; + + return result; + } +} + +Object.extend(String.prototype, { + stripTags: function() { + return this.replace(/<\/?[^>]+>/gi, ''); + }, + + escapeHTML: function() { + var div = document.createElement('div'); + var text = document.createTextNode(this); + div.appendChild(text); + return div.innerHTML; + }, + + unescapeHTML: function() { + var div = document.createElement('div'); + div.innerHTML = this.stripTags(); + return div.childNodes[0].nodeValue; + }, + + parseQuery: function() { + var str = this; + if (str.substring(0,1) == '?') { + str = this.substring(1); + } + var result = {}; + var pairs = str.split('&'); + for (var i = 0; i < pairs.length; i++) { + var pair = pairs[i].split('='); + result[pair[0]] = pair[1]; + } + return result; + } +}); + + +var _break = new Object(); +var _continue = new Object(); + +var Enumerable = { + each: function(iterator) { + var index = 0; + try { + this._each(function(value) { + try { + iterator(value, index++); + } catch (e) { + if (e != _continue) throw e; + } + }); + } catch (e) { + if (e != _break) throw e; + } + }, + + all: function(iterator) { + var result = true; + this.each(function(value, index) { + if (!(result &= (iterator || Prototype.K)(value, index))) + throw _break; + }); + return result; + }, + + any: function(iterator) { + var result = true; + this.each(function(value, index) { + if (result &= (iterator || Prototype.K)(value, index)) + throw _break; + }); + return result; + }, + + collect: function(iterator) { + var results = []; + this.each(function(value, index) { + results.push(iterator(value, index)); + }); + return results; + }, + + detect: function (iterator) { + var result; + this.each(function(value, index) { + if (iterator(value, index)) { + result = value; + throw _break; + } + }); + return result; + }, + + findAll: function(iterator) { + var results = []; + this.each(function(value, index) { + if (iterator(value, index)) + results.push(value); + }); + return results; + }, + + grep: function(pattern, iterator) { + var results = []; + this.each(function(value, index) { + var stringValue = value.toString(); + if (stringValue.match(pattern)) + results.push((iterator || Prototype.K)(value, index)); + }) + return results; + }, + + include: function(object) { + var found = false; + this.each(function(value) { + if (value == object) { + found = true; + throw _break; + } + }); + return found; + }, + + inject: function(memo, iterator) { + this.each(function(value, index) { + memo = iterator(memo, value, index); + }); + return memo; + }, + + invoke: function(method) { + var args = $A(arguments).slice(1); + return this.collect(function(value) { + return value[method].apply(value, args); + }); + }, + + max: function(iterator) { + var result; + this.each(function(value, index) { + value = (iterator || Prototype.K)(value, index); + if (value >= (result || value)) + result = value; + }); + return result; + }, + + min: function(iterator) { + var result; + this.each(function(value, index) { + value = (iterator || Prototype.K)(value, index); + if (value <= (result || value)) + result = value; + }); + return result; + }, + + partition: function(iterator) { + var trues = [], falses = []; + this.each(function(value, index) { + ((iterator || Prototype.K)(value, index) ? + trues : falses).push(value); + }); + return [trues, falses]; + }, + + pluck: function(property) { + var results = []; + this.each(function(value, index) { + results.push(value[property]); + }); + return results; + }, + + reject: function(iterator) { + var results = []; + this.each(function(value, index) { + if (!iterator(value, index)) + results.push(value); + }); + return results; + }, + + sortBy: function(iterator) { + return this.collect(function(value, index) { + return {value: value, criteria: iterator(value, index)}; + }).sort(function(left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + }).pluck('value'); + }, + + toArray: function() { + return this.collect(Prototype.K); + }, + + zip: function() { + var iterator = Prototype.K, args = $A(arguments); + if (typeof args.last() == 'function') + iterator = args.pop(); + + var collections = [this].concat(args).map($A); + return this.map(function(value, index) { + iterator(value = collections.pluck(index)); + return value; + }); + } +} + +Object.extend(Enumerable, { + map: Enumerable.collect, + find: Enumerable.detect, + select: Enumerable.findAll, + member: Enumerable.include, + entries: Enumerable.toArray +}); + +$A = Array.from = function(iterable) { + var results = []; + for (var i = 0; i < iterable.length; i++) + results.push(iterable[i]); + return results; +} + +Object.extend(Array.prototype, { + _each: function(iterator) { + for (var i = 0; i < this.length; i++) + iterator(this[i]); + }, + + first: function() { + return this[0]; + }, + + last: function() { + return this[this.length - 1]; + } +}); + +Object.extend(Array.prototype, Enumerable); + + +var Ajax = { + getTransport: function() { + return Try.these( + function() {return new ActiveXObject('Msxml2.XMLHTTP')}, + function() {return new ActiveXObject('Microsoft.XMLHTTP')}, + function() {return new XMLHttpRequest()} + ) || false; + } +} + +Ajax.Base = function() {}; +Ajax.Base.prototype = { + setOptions: function(options) { + this.options = { + method: 'post', + asynchronous: true, + parameters: '' + } + Object.extend(this.options, options || {}); + }, + + responseIsSuccess: function() { + return this.transport.status == undefined + || this.transport.status == 0 + || (this.transport.status >= 200 && this.transport.status < 300); + }, + + responseIsFailure: function() { + return !this.responseIsSuccess(); + } +} + +Ajax.Request = Class.create(); +Ajax.Request.Events = + ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; + +Ajax.Request.prototype = Object.extend(new Ajax.Base(), { + initialize: function(url, options) { + this.transport = Ajax.getTransport(); + this.setOptions(options); + this.request(url); + }, + + request: function(url) { + var parameters = this.options.parameters || ''; + if (parameters.length > 0) parameters += '&_='; + + try { + if (this.options.method == 'get') + url += '?' + parameters; + + this.transport.open(this.options.method, url, + this.options.asynchronous); + + if (this.options.asynchronous) { + this.transport.onreadystatechange = this.onStateChange.bind(this); + setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10); + } + + this.setRequestHeaders(); + + var body = this.options.postBody ? this.options.postBody : parameters; + this.transport.send(this.options.method == 'post' ? body : null); + + } catch (e) { + } + }, + + setRequestHeaders: function() { + var requestHeaders = + ['X-Requested-With', 'XMLHttpRequest', + 'X-Prototype-Version', Prototype.Version]; + + if (this.options.method == 'post') { + requestHeaders.push('Content-type', + 'application/x-www-form-urlencoded'); + + /* Force "Connection: close" for Mozilla browsers to work around + * a bug where XMLHttpReqeuest sends an incorrect Content-length + * header. See Mozilla Bugzilla #246651. + */ + if (this.transport.overrideMimeType) + requestHeaders.push('Connection', 'close'); + } + + if (this.options.requestHeaders) + requestHeaders.push.apply(requestHeaders, this.options.requestHeaders); + + for (var i = 0; i < requestHeaders.length; i += 2) + this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]); + }, + + onStateChange: function() { + var readyState = this.transport.readyState; + if (readyState != 1) + this.respondToReadyState(this.transport.readyState); + }, + + respondToReadyState: function(readyState) { + var event = Ajax.Request.Events[readyState]; + + if (event == 'Complete') + (this.options['on' + this.transport.status] + || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')] + || Prototype.emptyFunction)(this.transport); + + (this.options['on' + event] || Prototype.emptyFunction)(this.transport); + + /* Avoid memory leak in MSIE: clean up the oncomplete event handler */ + if (event == 'Complete') + this.transport.onreadystatechange = Prototype.emptyFunction; + } +}); + +Ajax.Updater = Class.create(); +Ajax.Updater.ScriptFragment = '(?:)((\n|.)*?)(?:<\/script>)'; + +Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), { + initialize: function(container, url, options) { + this.containers = { + success: container.success ? $(container.success) : $(container), + failure: container.failure ? $(container.failure) : + (container.success ? null : $(container)) + } + + this.transport = Ajax.getTransport(); + this.setOptions(options); + + var onComplete = this.options.onComplete || Prototype.emptyFunction; + this.options.onComplete = (function() { + this.updateContent(); + onComplete(this.transport); + }).bind(this); + + this.request(url); + }, + + updateContent: function() { + var receiver = this.responseIsSuccess() ? + this.containers.success : this.containers.failure; + + var match = new RegExp(Ajax.Updater.ScriptFragment, 'img'); + var response = this.transport.responseText.replace(match, ''); + var scripts = this.transport.responseText.match(match); + + if (receiver) { + if (this.options.insertion) { + new this.options.insertion(receiver, response); + } else { + receiver.innerHTML = response; + } + } + + if (this.responseIsSuccess()) { + if (this.onComplete) + setTimeout((function() {this.onComplete( + this.transport)}).bind(this), 10); + } + + if (this.options.evalScripts && scripts) { + match = new RegExp(Ajax.Updater.ScriptFragment, 'im'); + setTimeout((function() { + for (var i = 0; i < scripts.length; i++) + eval(scripts[i].match(match)[1]); + }).bind(this), 10); + } + } +}); + +Ajax.PeriodicalUpdater = Class.create(); +Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), { + initialize: function(container, url, options) { + this.setOptions(options); + this.onComplete = this.options.onComplete; + + this.frequency = (this.options.frequency || 2); + this.decay = 1; + + this.updater = {}; + this.container = container; + this.url = url; + + this.start(); + }, + + start: function() { + this.options.onComplete = this.updateComplete.bind(this); + this.onTimerEvent(); + }, + + stop: function() { + this.updater.onComplete = undefined; + clearTimeout(this.timer); + (this.onComplete || Ajax.emptyFunction).apply(this, arguments); + }, + + updateComplete: function(request) { + if (this.options.decay) { + this.decay = (request.responseText == this.lastText ? + this.decay * this.options.decay : 1); + + this.lastText = request.responseText; + } + this.timer = setTimeout(this.onTimerEvent.bind(this), + this.decay * this.frequency * 1000); + }, + + onTimerEvent: function() { + this.updater = new Ajax.Updater(this.container, this.url, this.options); + } +}); + +document.getElementsByClassName = function(className) { + var children = document.getElementsByTagName('*') || document.all; + var elements = new Array(); + + for (var i = 0; i < children.length; i++) { + var child = children[i]; + var classNames = child.className.split(' '); + for (var j = 0; j < classNames.length; j++) { + if (classNames[j] == className) { + elements.push(child); + break; + } + } + } + + return elements; +} + +/*--------------------------------------------------------------------------*/ + +if (!window.Element) { + var Element = new Object(); +} + +Object.extend(Element, { + toggle: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + element.style.display = + (element.style.display == 'none' ? '' : 'none'); + } + }, + + hide: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + element.style.display = 'none'; + } + }, + + show: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + element.style.display = ''; + } + }, + + remove: function(element) { + element = $(element); + element.parentNode.removeChild(element); + }, + + getHeight: function(element) { + element = $(element); + return element.offsetHeight; + }, + + hasClassName: function(element, className) { + element = $(element); + if (!element) + return; + var a = element.className.split(' '); + for (var i = 0; i < a.length; i++) { + if (a[i] == className) + return true; + } + return false; + }, + + addClassName: function(element, className) { + element = $(element); + Element.removeClassName(element, className); + element.className += ' ' + className; + }, + + removeClassName: function(element, className) { + element = $(element); + if (!element) + return; + var newClassName = ''; + var a = element.className.split(' '); + for (var i = 0; i < a.length; i++) { + if (a[i] != className) { + if (i > 0) + newClassName += ' '; + newClassName += a[i]; + } + } + element.className = newClassName; + }, + + // removes whitespace-only text node children + cleanWhitespace: function(element) { + var element = $(element); + for (var i = 0; i < element.childNodes.length; i++) { + var node = element.childNodes[i]; + if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) + Element.remove(node); + } + } +}); + +var Toggle = new Object(); +Toggle.display = Element.toggle; + +/*--------------------------------------------------------------------------*/ + +Abstract.Insertion = function(adjacency) { + this.adjacency = adjacency; +} + +Abstract.Insertion.prototype = { + initialize: function(element, content) { + this.element = $(element); + this.content = content; + + if (this.adjacency && this.element.insertAdjacentHTML) { + this.element.insertAdjacentHTML(this.adjacency, this.content); + } else { + this.range = this.element.ownerDocument.createRange(); + if (this.initializeRange) this.initializeRange(); + this.fragment = this.range.createContextualFragment(this.content); + this.insertContent(); + } + } +} + +var Insertion = new Object(); + +Insertion.Before = Class.create(); +Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), { + initializeRange: function() { + this.range.setStartBefore(this.element); + }, + + insertContent: function() { + this.element.parentNode.insertBefore(this.fragment, this.element); + } +}); + +Insertion.Top = Class.create(); +Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), { + initializeRange: function() { + this.range.selectNodeContents(this.element); + this.range.collapse(true); + }, + + insertContent: function() { + this.element.insertBefore(this.fragment, this.element.firstChild); + } +}); + +Insertion.Bottom = Class.create(); +Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), { + initializeRange: function() { + this.range.selectNodeContents(this.element); + this.range.collapse(this.element); + }, + + insertContent: function() { + this.element.appendChild(this.fragment); + } +}); + +Insertion.After = Class.create(); +Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), { + initializeRange: function() { + this.range.setStartAfter(this.element); + }, + + insertContent: function() { + this.element.parentNode.insertBefore(this.fragment, + this.element.nextSibling); + } +}); + +var Field = { + clear: function() { + for (var i = 0; i < arguments.length; i++) + $(arguments[i]).value = ''; + }, + + focus: function(element) { + $(element).focus(); + }, + + present: function() { + for (var i = 0; i < arguments.length; i++) + if ($(arguments[i]).value == '') return false; + return true; + }, + + select: function(element) { + $(element).select(); + }, + + activate: function(element) { + $(element).focus(); + $(element).select(); + } +} + +/*--------------------------------------------------------------------------*/ + +var Form = { + serialize: function(form) { + var elements = Form.getElements($(form)); + var queryComponents = new Array(); + + for (var i = 0; i < elements.length; i++) { + var queryComponent = Form.Element.serialize(elements[i]); + if (queryComponent) + queryComponents.push(queryComponent); + } + + return queryComponents.join('&'); + }, + + getElements: function(form) { + var form = $(form); + var elements = new Array(); + + for (tagName in Form.Element.Serializers) { + var tagElements = form.getElementsByTagName(tagName); + for (var j = 0; j < tagElements.length; j++) + elements.push(tagElements[j]); + } + return elements; + }, + + getInputs: function(form, typeName, name) { + var form = $(form); + var inputs = form.getElementsByTagName('input'); + + if (!typeName && !name) + return inputs; + + var matchingInputs = new Array(); + for (var i = 0; i < inputs.length; i++) { + var input = inputs[i]; + if ((typeName && input.type != typeName) || + (name && input.name != name)) + continue; + matchingInputs.push(input); + } + + return matchingInputs; + }, + + disable: function(form) { + var elements = Form.getElements(form); + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + element.blur(); + element.disabled = 'true'; + } + }, + + enable: function(form) { + var elements = Form.getElements(form); + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + element.disabled = ''; + } + }, + + focusFirstElement: function(form) { + var form = $(form); + var elements = Form.getElements(form); + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + if (element.type != 'hidden' && !element.disabled) { + Field.activate(element); + break; + } + } + }, + + reset: function(form) { + $(form).reset(); + } +} + +Form.Element = { + serialize: function(element) { + var element = $(element); + var method = element.tagName.toLowerCase(); + var parameter = Form.Element.Serializers[method](element); + + if (parameter) + return encodeURIComponent(parameter[0]) + '=' + + encodeURIComponent(parameter[1]); + }, + + getValue: function(element) { + var element = $(element); + var method = element.tagName.toLowerCase(); + var parameter = Form.Element.Serializers[method](element); + + if (parameter) + return parameter[1]; + } +} + +Form.Element.Serializers = { + input: function(element) { + switch (element.type.toLowerCase()) { + case 'submit': + case 'hidden': + case 'password': + case 'text': + return Form.Element.Serializers.textarea(element); + case 'checkbox': + case 'radio': + return Form.Element.Serializers.inputSelector(element); + } + return false; + }, + + inputSelector: function(element) { + if (element.checked) + return [element.name, element.value]; + }, + + textarea: function(element) { + return [element.name, element.value]; + }, + + select: function(element) { + var value = ''; + if (element.type == 'select-one') { + var index = element.selectedIndex; + if (index >= 0) + value = element.options[index].value || element.options[index].text; + } else { + value = new Array(); + for (var i = 0; i < element.length; i++) { + var opt = element.options[i]; + if (opt.selected) + value.push(opt.value || opt.text); + } + } + return [element.name, value]; + } +} + +/*--------------------------------------------------------------------------*/ + +var $F = Form.Element.getValue; + +/*--------------------------------------------------------------------------*/ + +Abstract.TimedObserver = function() {} +Abstract.TimedObserver.prototype = { + initialize: function(element, frequency, callback) { + this.frequency = frequency; + this.element = $(element); + this.callback = callback; + + this.lastValue = this.getValue(); + this.registerCallback(); + }, + + registerCallback: function() { + setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); + }, + + onTimerEvent: function() { + var value = this.getValue(); + if (this.lastValue != value) { + this.callback(this.element, value); + this.lastValue = value; + } + } +} + +Form.Element.Observer = Class.create(); +Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { + getValue: function() { + return Form.Element.getValue(this.element); + } +}); + +Form.Observer = Class.create(); +Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { + getValue: function() { + return Form.serialize(this.element); + } +}); + +/*--------------------------------------------------------------------------*/ + +Abstract.EventObserver = function() {} +Abstract.EventObserver.prototype = { + initialize: function(element, callback) { + this.element = $(element); + this.callback = callback; + + this.lastValue = this.getValue(); + if (this.element.tagName.toLowerCase() == 'form') + this.registerFormCallbacks(); + else + this.registerCallback(this.element); + }, + + onElementEvent: function() { + var value = this.getValue(); + if (this.lastValue != value) { + this.callback(this.element, value); + this.lastValue = value; + } + }, + + registerFormCallbacks: function() { + var elements = Form.getElements(this.element); + for (var i = 0; i < elements.length; i++) + this.registerCallback(elements[i]); + }, + + registerCallback: function(element) { + if (element.type) { + switch (element.type.toLowerCase()) { + case 'checkbox': + case 'radio': + element.target = this; + element.prev_onclick = element.onclick || Prototype.emptyFunction; + element.onclick = function() { + this.prev_onclick(); + this.target.onElementEvent(); + } + break; + case 'password': + case 'text': + case 'textarea': + case 'select-one': + case 'select-multiple': + element.target = this; + element.prev_onchange = element.onchange || Prototype.emptyFunction; + element.onchange = function() { + this.prev_onchange(); + this.target.onElementEvent(); + } + break; + } + } + } +} + +Form.Element.EventObserver = Class.create(); +Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { + getValue: function() { + return Form.Element.getValue(this.element); + } +}); + +Form.EventObserver = Class.create(); +Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { + getValue: function() { + return Form.serialize(this.element); + } +}); + + +if (!window.Event) { + var Event = new Object(); +} + +Object.extend(Event, { + KEY_BACKSPACE: 8, + KEY_TAB: 9, + KEY_RETURN: 13, + KEY_ESC: 27, + KEY_LEFT: 37, + KEY_UP: 38, + KEY_RIGHT: 39, + KEY_DOWN: 40, + KEY_DELETE: 46, + + element: function(event) { + return event.target || event.srcElement; + }, + + isLeftClick: function(event) { + return (((event.which) && (event.which == 1)) || + ((event.button) && (event.button == 1))); + }, + + pointerX: function(event) { + return event.pageX || (event.clientX + + (document.documentElement.scrollLeft || document.body.scrollLeft)); + }, + + pointerY: function(event) { + return event.pageY || (event.clientY + + (document.documentElement.scrollTop || document.body.scrollTop)); + }, + + stop: function(event) { + if (event.preventDefault) { + event.preventDefault(); + event.stopPropagation(); + } else { + event.returnValue = false; + } + }, + + // find the first node with the given tagName, starting from the + // node the event was triggered on; traverses the DOM upwards + findElement: function(event, tagName) { + var element = Event.element(event); + while (element.parentNode && (!element.tagName || + (element.tagName.toUpperCase() != tagName.toUpperCase()))) + element = element.parentNode; + return element; + }, + + observers: false, + + _observeAndCache: function(element, name, observer, useCapture) { + if (!this.observers) this.observers = []; + if (element.addEventListener) { + this.observers.push([element, name, observer, useCapture]); + element.addEventListener(name, observer, useCapture); + } else if (element.attachEvent) { + this.observers.push([element, name, observer, useCapture]); + element.attachEvent('on' + name, observer); + } + }, + + unloadCache: function() { + if (!Event.observers) return; + for (var i = 0; i < Event.observers.length; i++) { + Event.stopObserving.apply(this, Event.observers[i]); + Event.observers[i][0] = null; + } + Event.observers = false; + }, + + observe: function(element, name, observer, useCapture) { + var element = $(element); + useCapture = useCapture || false; + + if (name == 'keypress' && + ((/Konqueror|Safari|KHTML/.test(navigator.userAgent)) + || element.attachEvent)) + name = 'keydown'; + + this._observeAndCache(element, name, observer, useCapture); + }, + + stopObserving: function(element, name, observer, useCapture) { + var element = $(element); + useCapture = useCapture || false; + + if (name == 'keypress' && + ((/Konqueror|Safari|KHTML/.test(navigator.userAgent)) + || element.detachEvent)) + name = 'keydown'; + + if (element.removeEventListener) { + element.removeEventListener(name, observer, useCapture); + } else if (element.detachEvent) { + element.detachEvent('on' + name, observer); + } + } +}); + +/* prevent memory leaks in IE */ +Event.observe(window, 'unload', Event.unloadCache, false); + +var Position = { + + // set to true if needed, warning: firefox performance problems + // NOT neeeded for page scrolling, only if draggable contained in + // scrollable elements + includeScrollOffsets: false, + + // must be called before calling withinIncludingScrolloffset, every time the + // page is scrolled + prepare: function() { + this.deltaX = window.pageXOffset + || document.documentElement.scrollLeft + || document.body.scrollLeft + || 0; + this.deltaY = window.pageYOffset + || document.documentElement.scrollTop + || document.body.scrollTop + || 0; + }, + + realOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.scrollTop || 0; + valueL += element.scrollLeft || 0; + element = element.parentNode; + } while (element); + return [valueL, valueT]; + }, + + cumulativeOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + element = element.offsetParent; + } while (element); + return [valueL, valueT]; + }, + + // caches x/y coordinate pair to use with overlap + within: function(element, x, y) { + if (this.includeScrollOffsets) + return this.withinIncludingScrolloffsets(element, x, y); + this.xcomp = x; + this.ycomp = y; + this.offset = this.cumulativeOffset(element); + + return (y >= this.offset[1] && + y < this.offset[1] + element.offsetHeight && + x >= this.offset[0] && + x < this.offset[0] + element.offsetWidth); + }, + + withinIncludingScrolloffsets: function(element, x, y) { + var offsetcache = this.realOffset(element); + + this.xcomp = x + offsetcache[0] - this.deltaX; + this.ycomp = y + offsetcache[1] - this.deltaY; + this.offset = this.cumulativeOffset(element); + + return (this.ycomp >= this.offset[1] && + this.ycomp < this.offset[1] + element.offsetHeight && + this.xcomp >= this.offset[0] && + this.xcomp < this.offset[0] + element.offsetWidth); + }, + + // within must be called directly before + overlap: function(mode, element) { + if (!mode) return 0; + if (mode == 'vertical') + return ((this.offset[1] + element.offsetHeight) - this.ycomp) / + element.offsetHeight; + if (mode == 'horizontal') + return ((this.offset[0] + element.offsetWidth) - this.xcomp) / + element.offsetWidth; + }, + + clone: function(source, target) { + source = $(source); + target = $(target); + target.style.position = 'absolute'; + var offsets = this.cumulativeOffset(source); + target.style.top = offsets[1] + 'px'; + target.style.left = offsets[0] + 'px'; + target.style.width = source.offsetWidth + 'px'; + target.style.height = source.offsetHeight + 'px'; + } +} diff --git a/webcit/static/readallmess3_24x.gif b/webcit/static/readallmess3_24x.gif new file mode 100644 index 0000000000000000000000000000000000000000..fb2479ac713cd3d7aec103c84af60a2d41408bcb GIT binary patch literal 1226 zcmbW0>sOKo0EgdGR_ZQhdY08{O6H{?5Jg_V6b(>NwA7T^L~E%@S(fdzsIw#rvWqE+ zqP0X6W2L4y3TNBXU)xXg1Jm>lNeEWq{DIjjQ8{h`~2LKQR z&3>@Vyq`1ALZ(^BI0G5pL56AQ})X=_!V{QQ=3cYUDa;1)^nt72BSi7UHRt5gF##MuX;s6W%FQp%L_^K zP*s!enY`fUy~m>aV~{M?D&1aJS68g)udHh;ln-iT97|d1d&#y|S#e2ix45Q7RMTx0 zCCX&7%hj5^o4p0HuF0#>4c9M0d8AI!{z7rBs^n0v_(8$7n-Cw=MMXtI zq3}Xc#d)FR{FQR(xQF$a$J{a4#S54I{RP&{iI_eL&H zQhI7Hhr_wersU-0jAVM=Iz}GYzo9Q<1Dnl$obDw)OzKYax^`%*C^M}1Kv-pZa8_1U zLyC7j(}%@kiIW2|G7hlP(kgfPN_P567`~j8ko4V2sVPiB{HCPjJ^68)jxx3+|Fnzo zBlAe&7RD~-*%)}r4r)p~l}$&Tj6xib+RTnbFrujmbTXYzkEF*$M$yyAoA;8C+o+*2 z;bGC?q2Upn5>DR?Ill^B9z5K&u6WFnDBAOr>Bv3Nod0gol%uppig z3Zij%JP!8>90-EJSTqg{#A2~H>?dQeffyXd9}^e|V*CRF0{s2`(P*@vpC1y5L?95O zqocr=&ckB2#1(i8z&{5*e*&@Vg>FMYhUYg;#`rO)K_s-SCeN*|NE6@KfN=>V}B>te{EdC=_ zXIhJ%Z~&7J`gk<@)!1RyIIY;ktaf`C;J&^2`w|MbG|$219jl6{jKILRPm<)uGed&q zvaKf>z1DUIw}gYzTw3bN&B%cUHL83S@(P@HWJ7Lgg)=lkv9`l(m#vFq|1PKq+K8{3}$I`{owFav`%0H?kn+yDRo literal 0 HcmV?d00001 diff --git a/webcit/static/right_just.gif b/webcit/static/right_just.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3204d97ef345d161b669a174eb0dcecba188505 GIT binary patch literal 76 zcmZ?wbhEHblw^=#XkcUjg8%>jEB<5wG8q|kKzxu41Cw%3|H{*E`4`XGBG<6_+P3>= aD}_CnlERagPsz)^y6= + + + + + + + + +
    + + + + + + + + + +
    + +
    + diff --git a/webcit/static/rte.css b/webcit/static/rte.css new file mode 100644 index 000000000..b56d74bab --- /dev/null +++ b/webcit/static/rte.css @@ -0,0 +1,36 @@ +.rteImage { + background: #D3D3D3; + border: 1px solid #D3D3D3; + cursor: pointer; + cursor: hand; +} + +.rteImageRaised { + background: #D3D3D3; + border: 1px outset; + cursor: pointer; + cursor: hand; +} + +.rteImageLowered { + background: #D3D3D3; + border: 1px inset; + cursor: pointer; + cursor: hand; +} + +.rteVertSep { + margin: 0 4px 0 4px; +} + +.rteBack { + background: #D3D3D3; + border: 1px outset; + letter-spacing: 0; + padding: 2px; +} + +.rteBack tbody tr td, .rteBack tr td { + background: #D3D3D3; + padding: 0; +} diff --git a/webcit/static/savecontact_16x.gif b/webcit/static/savecontact_16x.gif new file mode 100644 index 0000000000000000000000000000000000000000..df79ac22e5b5e154761c624d174e21d6ce0f83c8 GIT binary patch literal 625 zcmZ?wbhEHb6krfwc*el+|NsAgK=A+n-@kwV{r&sx+qZuoYJa_{dHbOJ@QweQ&;CDn z@ZkRa`_CQ8*|%@s&Ye5A@7S?%^X3hkHg4LqVb!Wt^=tpHSh1pZ_5Zrn|2MBns#yJh z>C&Z@tNvH7_*c2||I8)ZCoVm+XyKxTAhd7+5G({jAX)^X=P#H)fBu36^XJZ+SFqsk zoH=us&5JFZ|9$4nnX_ijUOYQy#*CR$rcRwaWopLs54lsHOq?)b*5t?u6DRidPw4IK z?djSOl$4N|9334U6%`d89u^W35*Qd59B3aBXm1x#Cc*qob{@Eh8f%At50uDk>r(a`*0C22z0HPZm}Y zh5`m1kS0)^FtDF%C}?VKQVvN;2~}z7QI1PYPfw2R?r921NRQH=6gsUbWug_EWO_=0 z*TRXbC;GE-7%xxJ)b!l8&C))djg2>?AYDD3@yHSTUF^J(>AvYoO3d3CY@O4Sg5?#` z(i9b$7#=VjWjO3G+Bt@SwrDW0tYe5s?Ij zgN-dl-sdVl2s}A4%h>cBPsb63CQ0>llZ+dOo+RC{DY}SIWNmJh>)vbK@uyoOaMYR=9`}Xa-bmgjlaAfa} z@72}S8@@omdz0-lj%--J!NbF2 z|M?d_t3vO`iSr^N)WE7A>6G7m~B^UCxrP4h|0gKGcTvy;-(=`KC=9nm2w6 z3JP*8y&g2>`=s69zkU0*aKQqgN1Th!wzTy4*WZi^a+)_SFm2XzUvF36woj3LFFrgj z^K!CUuy8?mSlH5~YbQ>eSY2FvVqfOAZQGvSD2#}RaQ6w$ocqqc^igJ-Z_|cv4moG6 zQjV_Oy49`re$2NO&3tt= z+xjOo8%CLNGca&R8BUxtNoG1jT(&8L%)(oS63oo05f#n&?S^6ps6v)7w+T}*^83!Atccv!6Ip!f8| z3q6M|Z<3fJEYsA|EF+kYY$(3a5@9H#VYlGG#l(Yxa=ND$1Sz_)G|BPH-3bVMdS;?= zXvm$43(N<(*yk?EQTWhwvPUvNC}oDFG2;|TpEv;rWkaDELON*@l36XC?b1$p6$#EI zY~4by6&M2&4xZ>(t=z$PwCidUQ-Q8Sr))Rl>acZ=O%k4)9RwIOgU)iDn5#XVk(nWU zYt&ILW;X##hCA~Z95xrQF(iJ~dNzrLt@A)J!yJo=jqC34=n83Hi#m8*SYm=|u$hgq zal_fDwFhoaQu#7nf2yv#VehOJJnGTgc9c0-IZt8Z^}BB7wA8mlV4<1N~rq|n2<)b)3PvK1doflw4rgNEj*B@v5KP6#mEYi|~K{Vk8}?dz#NZTt&5 z{{Lr4b8J*(xX~_O{qE!TyAd`wn2s??Em3gfvVQTLq5jPo!D~$mT&6y3SJ))X!C(yl D^n`)r literal 0 HcmV?d00001 diff --git a/webcit/static/savecontact_48x.gif b/webcit/static/savecontact_48x.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8caa0bdcace95f496fd560944b9d9ec28576646 GIT binary patch literal 1156 zcmV-~1bh2ONk%w1VK4wN0OkMyGcz+oQ_{`CXmxjYtI_}V=z0HU07^fLjUjEq8s|A)Q*;o{;)R?$#UQEzHLfPa5BI#Qvapr*LZ%HaE6qyITv?Nm}drJY*u z@9&I;RKUQ%;ni}H!~Z})KstN>kC2i6@ra$b*1X#PQEG>TgM>puJhrS_Ra#%4pq^Nr z|3!-bqN1Qbb@l%6eMx1ASXDytkC1zNdopqVJ5}L~j8ct;MxLLc z!otF}wY5SzI#rtga&1UCJz`r|Jekb@X{`Toac_RO|6`{A=J)@KzyDfWT1t=q)yZk= z-gL>|`ht5%GiLvtl~X%r^tG+6rKP2Gb92q)|4M}aqM)OhnVC_Q|35=XprN9@y~TTb zbC8mekBM1-e}GC-)~&U*RBehtRo&g)-2eap000000000000000A^8La6aabvEC2ui z05AYB000O7fO>+1goTEOh>41ehzbZ62LJ~a2nvjsml{%10G*u|7aEwOhdnx;sGT}J zq^)`yr>HJQMsybdI-;(Z3Y@Y+z(RDLQkJ`m2)CX@Fu_7FL;x2E$BP!JF3!L%ofg%K z2QW3-4*mc?Crrt0_gFE7Aze0!8ow+wyzKZDn{zLGeU)0K|;MY z7%9-MfRPQw9v0F-qzo8^z>0t=LqwNGLOoWD*#Ra@kuYF(j9I}-qk;}HQeChz0)i6= zBdjO`Amc!q3F$~&U~oc=nx|Y^Oi&^MfCwcMT5x%)2E_>m5?&l5@x}&$E*Y?>?NXtE z+qVt>Ds)kcB|{eiHh4sFr2s&L7-{LMz0wwLg)4&9W{45Ni>n+sJ_JsTrOS=B6>iL> zT=xSWq@*r9(89U2X)IbEC}{;C!Q|7h>n3na3P9}GTLi-+q$HK^-<^isR+~b1Apmfa z8(7Y~dGiiA>ewDWWsCJKy9WUd93^R;aB7Yn9=ixQv<*@{eKOp$Tk0+vNKm#k{I9vcr?C1gE zf;}`@V}EH_VB~EfP>|%3$04BQmUDFAWezz2*kKw`P8nO3S0cD20&{fvWta}8k;R-@ zw0K$-sT|kl99{tD$ps=Kc+YyzOEpT5zi4w&IJ(82{uMPX_W2!y(-0=)L>Yp<680BfVODj~xJ zx8|zqp!iiIESSVzFu(;9REq|#x-wf3tt5~TEhrjDKQkQsjPO=zWizw2mm`R?GthU literal 0 HcmV?d00001 diff --git a/webcit/static/scriptaculous.js b/webcit/static/scriptaculous.js new file mode 100644 index 000000000..ea1ad40ae --- /dev/null +++ b/webcit/static/scriptaculous.js @@ -0,0 +1,26 @@ +var Scriptaculous = { + Version: '1.5_pre4', + require: function(libraryName) { + // inserting via DOM fails in Safari 2.0, so brute force approach + document.write(''); + }, + load: function() { + if((typeof Prototype=='undefined') || + parseFloat(Prototype.Version.split(".")[0] + "." + + Prototype.Version.split(".")[1]) < 1.4) + throw("script.aculo.us requires the Prototype JavaScript framework >= 1.4.0"); + var scriptTags = document.getElementsByTagName("script"); + for(var i=0;i*mdyH*MOqe*OA&>(>3AAG2o7nw2Y8Ze5eK zWp(0~)k$~f<$a$Xuw_-`uW3FRYyM}f{+GV`@4|%((^mf8J-a!5<&S-{8XirKOkMu{ zSFcU#@*k@fhNLY0JZsjhlm)M5%$V`3RWE7&s~epG3uc7>YSR2!ullo2Y2w6*6DCY} z+-Ui;S~h0-{r>*`-E9d!s$_PxCH$Dte7vHR5qKg&edHz#dqN|@a3 z8!_R^mlCn|_V%{6whzT(EiEn2@+G?K%R1{T9_2}dwH>&YC3PiJx}n%ruODcu>uqOhZ*OmBXXjz1?`NTIX5(aOX=!e5 zZfBxvYHDg?Vq$D;Y-D6)2m(eH23kf2`aqzkr>Co{tF5iArKP2&rlzi@s-mKD_wHSW z5d#!|vapIUY-G>@`52TZ7&!hjB=<^rY*=uxX`_&ujOwC9XCdEr21!SbpXO{=a?_0I zxY#~dT1Ls?MS!w^X3$KdJdqa#UGm!TX9{)}9bw^iS>m+v&WVBrtL%%E3XPULJ2h3@ z*8Q;)Ct?D*Sb21IJYam($mRNq zx9oZgW8>?Pl^P2g)n0wP5-Xk`({P}P!{Wg~={S)aA>~Xv3{P>f)IRbMV)ob(P|o0C uAi(8t=EFgzvy~bGiR@cf%xUaAs*&6iXZrL}uj#rakNa%Cy-0Roum%AB#;tV# literal 0 HcmV?d00001 diff --git a/webcit/static/sort_none.gif b/webcit/static/sort_none.gif new file mode 100644 index 0000000000000000000000000000000000000000..68dce00f3180e29790bedd317f6a24772f12b942 GIT binary patch literal 133 zcmZ?wbhEHbt<8 literal 0 HcmV?d00001 diff --git a/webcit/static/spellcheck.gif b/webcit/static/spellcheck.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6c8d827e2861973dec54cca29a7f14b19b39fca GIT binary patch literal 107 zcmZ?wbhEHblw^=#n8?fk1}*==K=CIFBLf37gAPa#B+tNPGpB#$>9_og=Lkq76{7MERgEatF C^1 z4{ttxaP$7{OLuOZzkTh@jmsymUpjv6;;~C-4qQ63|NM#F$M&r|yld5=9V-s*Sbkvp zvJHnWSIpST00TN82FNZ3R{aOZdR5e!GPru29&kAu3b~{!pUSvWZY;+c-TqNRS7t&- UN|0or&I}*7V#BE(vjrHe0iy0+Qvd(} literal 0 HcmV?d00001 diff --git a/webcit/static/storenotes_16x.gif b/webcit/static/storenotes_16x.gif new file mode 100644 index 0000000000000000000000000000000000000000..66f08b5cf9aeadb908d11d558e23284ae65286cb GIT binary patch literal 599 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 C0T>Mc literal 0 HcmV?d00001 diff --git a/webcit/static/summscreen_32x.gif b/webcit/static/summscreen_32x.gif new file mode 100644 index 0000000000000000000000000000000000000000..b143fbf85de2b4d58777754a357b3fa0067a1577 GIT binary patch literal 1356 zcmZ?wbhEHbRA5kG_|Cu}Bc~8O_i0N@%e8CQf&*+0??|Xk535oU{}#u3eDgZvh=zcs zUDtNB{AXbJ|Np;XX!VlW!3$^2``_o0=4@nYVe{(ovUl&^^)6XZnV08RGWXGuiK*-V z&zw2)Ly+GYW8)nTY?o_Yoa5{2yZa6wKK%4%QAkMe(L0|5_2qk8-8^cy{de}V&z-kz z+qM@Em;U+C=V@tja#KfES@ZXg`)g`ys>@^2($cDZ+_N|T2QnsF@bBH)bK`8*t^faT zJb&Zk>6o10=#kc@uCD%PN29T^aq6nC>y}3B*|X=*=ViaPH8{!ht&kV)$c_B*o4t_TVFphBQ5OP`?a|ne(ybVCMMQ@s<#u+ z7iMvtPoF;h`tkHW2bSz0`~PVS-QC?^Zm&=1+n>4O-TnLbE6Wof-kkjAe(9Fgk)AHL zXU?2)b+m|$_6jPVF|jN<%)_oxL+<}%UysC^_S}e!^azW@-v0@lk&%%>K~86O>{z;V z>HqINrS&ad*)7>?zqXVmSQ{G`Zux)a(JxCYYkynQfa(=qUS5B9wf)-DcF2V#Hp*UA zRVCBa#M#+7sC4fCIM%6-BE5ytdEpLs@7`q?1*C_7;!hS<5r!EIIv}l}Ji);6pTUq* zS}_&^&Aoc9ECzEdCOXgM3${_1%x06nWMgtB#taxX*T< zoOdT;LdrT>w+fbs1gDvsTGhJLZL>Bff0&@e(vT5YqkMwJuv$)E@W7GAY<96WjcZIT z4ua=d-tj2aHXoYLDX-xvkhJnx!*wx@334Uv4e72K72mfVPzoyG^mz7x@v)U5`Iq{7+ep}5t2#J2IhB#Me3K9?@pU|qEpnE=SRVu@;$bJ@@kKtrq5%R zDKKD`Z8^Zu%x`)^eQx8ohvD}s`3xA3N!J{B=*Fqq;HZ!(p|nCVpW7^=jX}bLiBsiv zqoI5k`@Q7~?RS@cbQ6`4NIcltwRFYfHXgGTPr4@wRyI%6p0w>jc1T%9Vk0}>!V|*M zB{x&Mz1k$>i{kP=xKsokEo2u=^@~)Uno{O@M7FRZj8V*CilvKa>X(<#=ck4kwoG?O z2y9H(OIhf~7T3mbb#XxJg;chzl!r~}Dmw~Tc+*QH9k{exv|g>yULtUSE&W143%5!I z8zYy%7R`gLa#b}84>0d|w(2!ASIt6p@!UOJjTQY?sc$wO{kG)IrZZ-*-)v@PWnr)e E0A1D8v;Y7A literal 0 HcmV?d00001 diff --git a/webcit/static/summscreen_48x.gif b/webcit/static/summscreen_48x.gif new file mode 100644 index 0000000000000000000000000000000000000000..9f536b8b73bc3cc5949d8a861b7e0f94763ed19e GIT binary patch literal 1642 zcmdUu`#aNn0LQ5m zai-EKj!-7TJSn%8Td3GkOSjLdKjXZ9e*f@#-p})*GhOZMgNP6jQbQ0LjrNg@W@mcW zkBz01^j=7#DNNtwr=Kt=<;!bi8=D_rhRVvy{QUgxpF2Fg92y%)52*oixm+TV zfLJWW)w6>Jxu2>~rKil#&pRG11feJ2)lwM{Kd2F;$zeE*_>IZMq;e z>f?up*4Eaft%RzosBa7T(>>RoF`!!dO0`-IqK(3AaS|AEp*tU=I((SOq0y)Tg;UC^ z6n36s>L;D~t*xz`%ZjKfwLfh;m&^5VXH5=?oSj)euclBa!N1cPZVa)bJr{;MijISD zw2RA*pR=F}b#S?A&6+ij`e$C3#rt3EmdfR18Z9E!4XAT-#a?6=&$`NJ07k%HNi>!} z(A67x#=qP8_l`|CRbRo_owVSqgD?ztPXfTFIn&620e*}#vW3RXnbA>Do$zKaBzJ+l zJe;mL80;eNI2N+6#7TdU2?4G?(*|bmcL6lk$iM*G(QbHn82VpO)>vt|$)7zonTeCq#IO6qiVp!*7Q>Wi=!0<-OI%kK5{+lCw$( zPIr)Ll_s*yJ)xK0bQZ6^3`dPLA-j;9vh+9NDLo1l+0Zq)j<=K}LO(FyiKh*crd~<5 zoHkya@(k6BWG_(#miY*bWMvn*PTTeRV9Ei6)gK4bxfrcDJat0*L_#^RZM#Oa`2hTVMV#GeQexS>lL4QX{Nb5f;zRE?F`J4RS|)s z+=6j~POI+=$_$={eqEaRy%!5Zso8cq#VGVhTc*Y7MIjI0ST!cnIypC{v98h5PIF84 zd4MR3}O-5mM1-( zQ2HKDR6d4#H&o0{S}IK%do9S;d@3Zk|3J={5fk;w%;~#Bwj6?vgg91m<@A@t@`2CIacmcXA_LmtFrp<2Rn^Q z+w*3d?>;Wfb)s%VbJx%VG~zret+fP^kiQnE!kf0KhaHrVOE+!fFpeM@5PxmVXC+@Fj@f

    Mt|5W$(YtO53-7ozvA^ H2JQL}(nz#p literal 0 HcmV?d00001 diff --git a/webcit/static/t.gif b/webcit/static/t.gif new file mode 100644 index 0000000000000000000000000000000000000000..23efd275d435fb72070a9c003749dee41d31d07e GIT binary patch literal 855 zcmZ?wbhEHb6lM@%_|CvkU0wa3;r}QY4S|sv0*XIb7#SEC8FUzc0F);fI7}FrIb<{h z7!Edb2y6Ld6f8X4&LQnI=S6_h(QbC$ES?P)mE79ooy9~XFDZL=sQHJ5%rsD7um%8h CxDR0f literal 0 HcmV?d00001 diff --git a/webcit/static/t_no_root.gif b/webcit/static/t_no_root.gif new file mode 100644 index 0000000000000000000000000000000000000000..3da5e91bbc686c250033200245f74945c78243e8 GIT binary patch literal 852 zcmZ?wbhEHb6lM@%_|CvkU0wa3;r}QY4S|sv0*XIb7#SEC8FUzc0F);fI1Cw>Ib=LG zEI8QAA*>a1V#C72?E=bjECLOSj&@0?DlJ)IsC2xK-@YkFqv*+@Nove2EDY8FmlzPg literal 0 HcmV?d00001 diff --git a/webcit/static/taskday2_24x.gif b/webcit/static/taskday2_24x.gif new file mode 100644 index 0000000000000000000000000000000000000000..995b171803f95e0f4dc98ca65eb3750a83336b30 GIT binary patch literal 769 zcmV+c1OEI+Nk%w1VHf}y0OkMy|NsB|{QUa*`uF$u_V)Jh@bK^N@BZ+8{O^4G?R@#{ zd*9|z$z~=~e64kL zbx?Y(QF*CQc&bczu)AU>P<5hDbf9x@OHOf|tz9TgZIw!Ckf2y8No9vfV}+7bD@I>` zMO$};Pb^tiLU&3nKU8f&RBJ&~X+l$IKvHNyQfNR?W@$z)OiDaSNl8dZNIOYeI!IVt zK`%N(PD4UDLP0q~K{!D{IZiw=MmjM&J3BTzKsP%)0000000000A^8La6aahxEC2ui z02lxm000O7fP8|3goTEKG;VB*jE# zHhT+RpC24q85vm|xVgBr8CrVTgs+CgKck)Id=v{3u9GQCRd_@B94;|8~U7J>o zf&&;{q);%+M$Zc!c=PJTOD91HGZX;O#j$6O;lqdx?=j*dFn|JN5c1grAOL~Om@{h@ zuz<^hG<C`4Y{4`nwuNDTZ0=L8ygxL>g((4>gsB0YKm(+tE#FhD=YJ>+8e6< z^DEnHEBrFb+KWpol8V}sirdSJe4>gb<`xu37WU`mC8efk$ERdxq(@QF}$uGKC<4ehHeZDAxe&%3JQU(p)oPx{u&83%xclC zVd`En?($}FR-Q4f!E!O$F5JDlpM5#^-~0dOLHVUyPY>Pwf8h3?J-7bvz4ia(_2mPSL=^IU3cv1-XmwX9KJE@*zXlbUR^kvGyB-@)rTL> zI{JI|(cg;>zgl$Y)yaKXbN0VFu`hGR-d9U^T%5A&)zn?D4)4sEu0NScWq4BwIOA}+C5v>ByC=mv~fk^6^WJ+O%m?r%vsj zws`KesKyCP{#S_9_s*Tt8`j?5-qzMu)jqwsxw)~iF}-C)TJws!y1ECMLM`=y#Wn2} z6%~1v?d9d=xs~lX<*k`z?fIp(nI%mrCG7> z-afuwKK|~W-tHbA?jBxlZf?#lu8xilKwxigZ)+9?3>FMg~YG`Pvs;a7}s3k;VSN>DAhKT<-n9i1`TGO9WE}MT3ty>j0_iEHZn*~5K%pOnBl_ewj`;u zEDt=H8|{PVbB5!sYKDNgQs}3g;xbE%u?mPw$P@3m5#{@PL^5083Gx8 z2Oe@vH!C>c!gw?wn3I(|XnEvZH$Qpjs0Az!L!ww`2WKg~xc66)jZehDWNKbv*6Ed; z%O`2ut2!RyemEt2hvm~_O|3jPHYcxV+`B+cPVP{3e1fmtpT2i2rawE1wa#$}eQ-Z9 z|2^|x2VaM-`Cc1ies&5w+)$sO=6t5`l#GtbiU&25SH^Tfxo% literal 0 HcmV?d00001 diff --git a/webcit/static/taskmanag_32x.gif b/webcit/static/taskmanag_32x.gif new file mode 100644 index 0000000000000000000000000000000000000000..c6065a49602ed92f8c3590421bebd3c20c43af94 GIT binary patch literal 1267 zcmZ?wbhEHbRA5kG_|Cu}EiK)@{bgNc!1Xivo?c!D?)?Asv@)Y@bx2gpSN_`p6kZO z#=DQ-SiASa%$YOG%gawa{GV9V9ub?g=j`L9M_>E<+7?yRojG%6(vlr@-LrOF{pnzD z(K==M$^BW2XUA^8_8$mde*UknuDe%bc z&;BRGx}>G0?b(#N@7%+)H=jlYIThEmzkL1v-o1P0kK}YunSb>D{{@F$yEr>+I`{GW z%c|T=k7avr&t0(C-NiO3-lci!syFw`7OvU#_T$&$;_6)&Ue8;x?ZlObhp)W$35pB} z@qGUL#nT%lrG-BGZ+`D?4fgR3xO?|5!ziG82q^w!VHII$X3zoI49XJ>9RC^EIb}RH zEI8QAA*>a1V#2}>Ug_I*K-gM6%i#9|toBFkH(v)>3j za9|eWxWmR8l99-$wPs@*mzKqgJ7W4Vj2A`qRc1Wk*2w#~z(H_A!=rA4V?UHQwfTe` zrG#4y9N4FIrrxKaQB literal 0 HcmV?d00001 diff --git a/webcit/static/taskmanag_48x.gif b/webcit/static/taskmanag_48x.gif new file mode 100644 index 0000000000000000000000000000000000000000..883b280452dc33f883ca9de42ec7b33113e85fac GIT binary patch literal 1512 zcmeH`?Kjg40LOnZY;I~Ej}9@K=<%#5+I4OjF*}i`dGUGiIp-S`9O!f41O~tWUje|` z*_q!47UmrbJBs@}lcv&+tzYax zV0-^!SN~M&-%xEYXqYSL8=g8vO&OSm{$O0~(L>|2-8^?ALP3V7GJ!= z4v(g!UWkf3eu8=?bZz0v+F~X>`Eu)z-0wyVgrbPoj>r8PXKTT2u3*KC1ssVxb^lJwdAgXjod=GjjtW}Ro@SjE@ynP2`Ca)Nnz_3Acy57}`?lS#e$so-O7?}@V^HZZQ*YZnumW0l z=F7kE`Axi6l+#XDx!ap8hgh(U_L0&=)zE~skjzZLOI&S@bGHWJ$%8$1ffk5BQ;T;v zqiJR3LG3+R-_4vcyq~!R3X=dQ<%GQ;`^ayxO80ZOw0oSN%(3+i<*TWvOy%+QVfLQ8 z$9?w3`GyfFQJ6<8Q`~KWWMQYJm-)*)=aO2qap5oty&dVQEM7O8g~sa9M^S$+!SbA1 z_Mk2yv%D0$+_LG8uGyH4UZ)^?q09Q~Q;3E*l#5zXre84m-u?Q!3&PU%otCr3$SlNz z%muQ|7A)%(4niVX=#S>;jS(As4rOe#iI`^ESto#I2x3RkVdo?aN}ge{&p=^W|6*_k z*6rot%&#|)jU0aGs*wl>gU*a}HBC33fAFdc+j=V(2(nAX6u>?9g#=`5I<(g4NFqz{ zI2#ULt3Zjz)qB*32cjHoLS>|(5{bBz zLCAPeG^z?ntO|*xcZ$$RdS`9Rmk;8H4U9^Kxzer~SG|9em|2D3VXEu2fjf59^ ztlq|pXCDnGHk(M{Jc$Wx;^vv!CxdsQ=N=E>I@XaKxw&Ua@9RHSShzPbI(9Pnc!rwigyOn$yjx74fk)bf%RkiqKja=)MRbPV{ G7_0$nHz;`k literal 0 HcmV?d00001 diff --git a/webcit/static/trailing.html b/webcit/static/trailing.html new file mode 100644 index 000000000..59d965291 --- /dev/null +++ b/webcit/static/trailing.html @@ -0,0 +1,3 @@ + + + diff --git a/webcit/static/underline.gif b/webcit/static/underline.gif new file mode 100644 index 0000000000000000000000000000000000000000..db8fb4ffd393c57a6e0b9c4d14a280864812b7fc GIT binary patch literal 93 zcmZ?wbhEHblw^=#n8?Hc1Pu)h|Ns97G8BKZFfuSOG3bCqLGlbtdQ9{{vZyKUo+V7?>DzfNTbkJOh)~l>U{c-|{b> rv*lLzXC@gIP8pd;uE{GF_#a>4_q|f`;|9h{^z+epkn~)zX literal 0 HcmV?d00001 diff --git a/webcit/static/ungoto2_24x.gif b/webcit/static/ungoto2_24x.gif new file mode 100644 index 0000000000000000000000000000000000000000..dae0abbff138d4c2b7344f4470c69bbb682e5b45 GIT binary patch literal 681 zcmZ?wbhEHblwgoxc*el+|Ns9#fBt;`{^R@i?_a)r`S+pr&%2ucmp5I$eEHs`+*{`h zZk{VRdGh4{oh|=2RlHr8@qAJKn?+gwX9xbD<-cmxs{b>6x2{QgGB;z{vSt6Ly8WNx zdS_PVk|j$r*8KlJ$#K!5MgRM4(pLOTUH&~`{+pNWb_-^N$IW>@Wy+Mf)588&OHG(C z;eU;E%#26>s-^n-`=h7b|6d{UuR`Q+xybJ_kzZvZKg&eFmx_Kb5pHj9e_t&Au0Z%r zzVNF&q35|m_4W0EZO5Nv3)R-vKFktot_vtBDLI!Sb}>ode3C#>QPIgnk&0s9fYQbO zC5sNli}q&vHe^O@kCDjC%-kL=wmC|CPXvE^qMKd%^tiaV!YGe|D38kdu?Ud-pB_4xspxg;j*1oIwX94~i28_Wup#P0cN> zZS5VMUEMvsT?G>+PMSQawLsQ8sz6b8?!5VP3#R!bisviKW-&8lGcjdbnq|o@YAJ}7 zmMhSa&0}CF*k533khi5pBtk$`bjrEoP3r!FlG?(&>^E=n6|gYgpT1Qql3z;G(BS1O z1M`9;M~(x><^5C?bYK5`tLhxh^RV0^M01gI+rgTbw^R)h9&#VBRzIe4({QoUp|T<_ z9goi+`ndIcD=xf9Z0Yix?EXL{U;&H!achY)9xoM-NXm#5Okk;~Wapcu>G0sk2gfH} z;s$|F4s;$D=94rFcyME-^Hi<57Lyk6HYG1TBWYnD*CCqi#IhnP`uUBWU02go-3! ' + + (typeof obj[property] == "string" ? + '"' + obj[property] + '"' : + obj[property])); + } + + return ("'" + obj + "' #" + typeof obj + + ": {" + info.join(", ") + "}"); +} + +Test.Unit.Logger = Class.create(); +Test.Unit.Logger.prototype = { + initialize: function(log) { + this.log = $(log); + if (this.log) { + this._createLogTable(); + } + }, + start: function(testName) { + if (!this.log) return; + this.testName = testName; + this.lastLogLine = document.createElement('tr'); + this.statusCell = document.createElement('td'); + this.nameCell = document.createElement('td'); + this.nameCell.appendChild(document.createTextNode(testName)); + this.messageCell = document.createElement('td'); + this.lastLogLine.appendChild(this.statusCell); + this.lastLogLine.appendChild(this.nameCell); + this.lastLogLine.appendChild(this.messageCell); + this.loglines.appendChild(this.lastLogLine); + }, + finish: function(status, summary) { + if (!this.log) return; + this.lastLogLine.className = status; + this.statusCell.innerHTML = status; + this.messageCell.innerHTML = this._toHTML(summary); + }, + message: function(message) { + if (!this.log) return; + this.messageCell.innerHTML = this._toHTML(message); + }, + summary: function(summary) { + if (!this.log) return; + this.logsummary.innerHTML = this._toHTML(summary); + }, + _createLogTable: function() { + this.log.innerHTML = + '

    ' + + '' + + '' + + '' + + '
    StatusTestMessage
    '; + this.logsummary = $('logsummary') + this.loglines = $('loglines'); + }, + _toHTML: function(txt) { + return txt.escapeHTML().replace(/\n/g,"
    "); + } +} + +Test.Unit.Runner = Class.create(); +Test.Unit.Runner.prototype = { + initialize: function(testcases) { + this.options = Object.extend({ + testLog: 'testlog' + }, arguments[1] || {}); + this.options.resultsURL = this.parseResultsURLQueryParameter(); + if (this.options.testLog) { + this.options.testLog = $(this.options.testLog) || null; + } + if(this.options.tests) { + this.tests = []; + for(var i = 0; i < this.options.tests.length; i++) { + if(/^test/.test(this.options.tests[i])) { + this.tests.push(new Test.Unit.Testcase(this.options.tests[i], testcases[this.options.tests[i]], testcases["setup"], testcases["teardown"])); + } + } + } else { + if (this.options.test) { + this.tests = [new Test.Unit.Testcase(this.options.test, testcases[this.options.test], testcases["setup"], testcases["teardown"])]; + } else { + this.tests = []; + for(var testcase in testcases) { + if(/^test/.test(testcase)) { + this.tests.push(new Test.Unit.Testcase(testcase, testcases[testcase], testcases["setup"], testcases["teardown"])); + } + } + } + } + this.currentTest = 0; + this.logger = new Test.Unit.Logger(this.options.testLog); + setTimeout(this.runTests.bind(this), 1000); + }, + parseResultsURLQueryParameter: function() { + return window.location.search.parseQuery()["resultsURL"]; + }, + // Returns: + // "ERROR" if there was an error, + // "FAILURE" if there was a failure, or + // "SUCCESS" if there was neither + getResult: function() { + var hasFailure = false; + for(var i=0;i 0) { + return "ERROR"; + } + if (this.tests[i].failures > 0) { + hasFailure = true; + } + } + if (hasFailure) { + return "FAILURE"; + } else { + return "SUCCESS"; + } + }, + postResults: function() { + if (this.options.resultsURL) { + new Ajax.Request(this.options.resultsURL, + { method: 'get', parameters: 'result=' + this.getResult(), asynchronous: false }); + } + }, + runTests: function() { + var test = this.tests[this.currentTest]; + if (!test) { + // finished! + this.postResults(); + this.logger.summary(this.summary()); + return; + } + if(!test.isWaiting) { + this.logger.start(test.name); + } + test.run(); + if(test.isWaiting) { + this.logger.message("Waiting for " + test.timeToWait + "ms"); + setTimeout(this.runTests.bind(this), test.timeToWait || 1000); + } else { + this.logger.finish(test.status(), test.summary()); + this.currentTest++; + // tail recursive, hopefully the browser will skip the stackframe + this.runTests(); + } + }, + summary: function() { + var assertions = 0; + var failures = 0; + var errors = 0; + var messages = []; + for(var i=0;i 0) return 'failed'; + if (this.errors > 0) return 'error'; + return 'passed'; + }, + assert: function(expression) { + var message = arguments[1] || 'assert: got "' + Test.Unit.inspect(expression) + '"'; + try { expression ? this.pass() : + this.fail(message); } + catch(e) { this.error(e); } + }, + assertEqual: function(expected, actual) { + var message = arguments[2] || "assertEqual"; + try { (expected == actual) ? this.pass() : + this.fail(message + ': expected "' + Test.Unit.inspect(expected) + + '", actual "' + Test.Unit.inspect(actual) + '"'); } + catch(e) { this.error(e); } + }, + assertNotEqual: function(expected, actual) { + var message = arguments[2] || "assertNotEqual"; + try { (expected != actual) ? this.pass() : + this.fail(message + ': got "' + Test.Unit.inspect(actual) + '"'); } + catch(e) { this.error(e); } + }, + assertNull: function(obj) { + var message = arguments[1] || 'assertNull' + try { (obj==null) ? this.pass() : + this.fail(message + ': got "' + Test.Unit.inspect(obj) + '"'); } + catch(e) { this.error(e); } + }, + assertHidden: function(element) { + var message = arguments[1] || 'assertHidden'; + this.assertEqual("none", element.style.display, message); + }, + assertNotNull: function(object) { + var message = arguments[1] || 'assertNotNull'; + this.assert(object != null, message); + }, + assertInstanceOf: function(expected, actual) { + var message = arguments[2] || 'assertInstanceOf'; + try { + (actual instanceof expected) ? this.pass() : + this.fail(message + ": object was not an instance of the expected type"); } + catch(e) { this.error(e); } + }, + assertNotInstanceOf: function(expected, actual) { + var message = arguments[2] || 'assertNotInstanceOf'; + try { + !(actual instanceof expected) ? this.pass() : + this.fail(message + ": object was an instance of the not expected type"); } + catch(e) { this.error(e); } + }, + _isVisible: function(element) { + element = $(element); + if(!element.parentNode) return true; + this.assertNotNull(element); + if(element.style && Element.getStyle(element, 'display') == 'none') + return false; + + return this._isVisible(element.parentNode); + }, + assertNotVisible: function(element) { + this.assert(!this._isVisible(element), Test.Unit.inspect(element) + " was not hidden and didn't have a hidden parent either. " + ("" || arguments[1])); + }, + assertVisible: function(element) { + this.assert(this._isVisible(element), Test.Unit.inspect(element) + " was not visible. " + ("" || arguments[1])); + } +} + +Test.Unit.Testcase = Class.create(); +Object.extend(Object.extend(Test.Unit.Testcase.prototype, Test.Unit.Assertions.prototype), { + initialize: function(name, test, setup, teardown) { + Test.Unit.Assertions.prototype.initialize.bind(this)(); + this.name = name; + this.test = test || function() {}; + this.setup = setup || function() {}; + this.teardown = teardown || function() {}; + this.isWaiting = false; + this.timeToWait = 1000; + }, + wait: function(time, nextPart) { + this.isWaiting = true; + this.test = nextPart; + this.timeToWait = time; + }, + run: function() { + try { + try { + if (!this.isWaiting) this.setup.bind(this)(); + this.isWaiting = false; + this.test.bind(this)(); + } finally { + if(!this.isWaiting) { + this.teardown.bind(this)(); + } + } + } + catch(e) { this.error(e); } + } +}); \ No newline at end of file diff --git a/webcit/static/up_pointer.gif b/webcit/static/up_pointer.gif new file mode 100644 index 0000000000000000000000000000000000000000..83e5e61ba7a0d80e31c5dda37b14a065215ee9fb GIT binary patch literal 165 zcmZ?wbhEHb>s%xk6RWLAtOltt@02`&x#9$2ooHayU literal 0 HcmV?d00001 diff --git a/webcit/static/usermanag_32x.gif b/webcit/static/usermanag_32x.gif new file mode 100644 index 0000000000000000000000000000000000000000..9fa9dd459bbeb8ab4d9f1dd9c31e9ce990e8a084 GIT binary patch literal 1493 zcmchW`9ISQ0D!-nxfO|#yrOdTN-IY!Ub7*asm+U6DaYDJMqzthMZ+BLjEJd8UO7j+ z)f_K5+8kk4j_^`$lGhb0N5{waefuZg=O1`J&kxU8tdo_spDv&aYy*Iqnc0X3G&RBP z>&h+nl%ZkKb?jLrr>K7T8S%XP#javRXJ;q4of+h2OJMX+%RnZRIo$Wh?t1KQsB#3| zue0$w(%O7?r){V!_{-9iU*>Rs;8Ae>?$%l9|_80Dv^aLn40cxi$* zNi#tsPl6i{iwbUIJZY`9S9h){eq5{}5v>T$>XdzJ_vs1?|g{ma=91p&XWVY7glz>JuxEQ`Ib@8FHiCy5uFxc8yk!wS|6Kv zLjz+Cd&*tP%F4DjhO*gyXfzs()R`TBY-!^dct!{3pF*Kf@^4Z+T&)&@;9{}(UA-Il z^=(m}=hjle1rOYmH?+Fsidf90)9LqxV6?j}fq=hr%b9x38|-=nf}k6Fq+b}quZUis zj^ShwKnlR+QXDbXWN+lnC*QV0_IdnjOSpVvdy(m#@@j?xzghx*U1nXsl{L_v5Klsh zc=$_cgOmMXNF;J@__q*WTVKvXQkZ*z-+0Ncxc+PE%1DpW6uluo%0RQk+lja?iv!_g@eJ1zSHd znYiyu@gqI7h0$m*S`Xa3i$)^*+G#N{G3W7iAXQ~1P($)Qa!eean@u0|f`V+^Y1^~z z|3S2?d&=pnCd^M(E%^ZAN>}eYQy^6?I^s&#^BbG%1Er7Rw$~dgGaMK-yQ@L!ZtTgN z9Jec%FkTl36B84_|ApQcn6w%&4w(E9{&)hA1A#_)?e360OauTB-l~zO^9&ytC0WlU z6*?x^s|JlX$e=X!4}K(&Xj#7H=|=mXhjS440wcg7S363k6cX|_Lf?VYk5JVSq2Qoid!bB_*WQ*Kqeh`hFbZu`Cnvve z7TQ-SusMuxdULI8+%*MAItCG_s#}UKw*e!_UJC#u=iG!vVLfDbt;k-KF4 zYj+am5wB*al3BWZn0!d>Mv^qsH>^|LOT|ClJcN;nmpU9ZE3eT=@E4k}Q9Y>&?dI`N zS+7<-(E*%MnA52nN+)3ou1AR-u>G}ig6tY+dBz^2RO1i%^o(ehN%GUe`8-cANN+OW zJLde5X_=r8{Jn^XH>9>f71bClZmI!ukem7l;0eWM`>XyDmuFc@x(Ye0F*(!Ul^_5j z3^rIH4eQ`5@C?oc4?uDo7Fbth+t><%!;o5uIIluYk$3#|csT1%aY2znu7@|Dh)L6L(42-clt>*aQULXH6XU?j zY!Oa+Lv&N&L?s@II$-|UWe|mcJas%|p|-MW{1?v+g;u@?6PPyb%*skh{J(Uo>3*=t hcC^>E5AX41^Cfty_K{JiJ+G=hy|&q|qM?8@{{k7Yq5l8? literal 0 HcmV?d00001 diff --git a/webcit/static/usermanag_48x.gif b/webcit/static/usermanag_48x.gif new file mode 100644 index 0000000000000000000000000000000000000000..0876d61ad2f7b5af2e06896048b208a8c8b1e32f GIT binary patch literal 2008 zcmV;}2PgPPNk%w1VK4wN0QUd@Gcz;aQ~;KaQQ_OCMU3+D<#$dg23&s{i_TAzN2G{_uS}Iy3U?vaq+m ze0+T1(0Z?{hR(lhx}8P;a}s%UP5+ER%*@QLuCATL|Kjfd_UM{sW@cPkSX`9mN=izZ znVGGXNkTX=f_p>$`|$r}0LWt?RC=@VeDj z>)v$Az=4H;W9HR?a&TN*Sxea9?pjhhhJ<>_z=t(CJ?`FwN=ZapnEP5%O8D=*cxpdW zQ9t+Qt<6vX#HUM&T04li|8iqA?(XjSbQ@-w|Muy6(XvlnLNB(PME`mrU19EB~~E)x~S}@3sGK4cOA3 zMT_?6+kTjlSbMPl`1Rob@3qCmzSGXNQ9dxuu1{^K|MlmTHab9NTRKESJxY}SKRr12 z;)37LYWL`k^x=7#nVC^hQU9J^kG%i-?0o3kflNp{`t#0=gkz42a{A^8La6afDKEC2ui05AYB000R80RIUbNU)&6g9sBUEJy+y3jh$2skmm4 zLu7jTndeUduYpXH8nN_R3T_1R6giE_ zWcOIRHR%3p|E| zk)1*u%yWl1rI-Og5*r|M!4EL3R1PNf}+oRDg=#0e!70|F>}Y6%Jm#gt&j1U?KZ z>L_SDQ$|SwA(Ox^khUr(1Q`VX0m2ZO4go?C8R)=Iy^6|C)DX%jm&mXN-P>kyOdpU-e)%%6`yKengF`(A8N=j03;?5Sfyx@E_q=)^ zxHurW?!zQ=Ip&3TKE>zBkRd%8yl;`u?;!|JeDTLm&&=|L+dc*}O_bjR?-4wK3M#e; zUj;7Qs{z0x^glw#^0SA}L)iG#fBq;DAVoe*r#<)?PkuQ_U=DBqKK+@De+v9x1op8H zRLDSk#N&tL4si&4;3E(CbKw5QpaeqX;)LiUg#a(Ot)fV-4IStJ4nTN05spv^9z29J z&=&v!qGDqOnMWkGU4DF9GH9@NN2z;$s9f5@T|=!mN2 zDB%Eng&;~EuNII;cV0GNEFQ(Bl4O0G?8VVL433xbT;$xeTjgTyEm qk^*kD5tU ' + + (typeof obj[property] == "string" ? + '"' + obj[property] + '"' : + obj[property])); + } + + return ("'" + obj + "' #" + typeof obj + + ": {" + info.join(", ") + "}"); +} + +// borrowed from http://www.schuerig.de/michael/javascript/stdext.js +// Copyright (c) 2005, Michael Schuerig, michael@schuerig.de + +Array.flatten = function(array, excludeUndefined) { + if (excludeUndefined === undefined) { + excludeUndefined = false; + } + var result = []; + var len = array.length; + for (var i = 0; i < len; i++) { + var el = array[i]; + if (el instanceof Array) { + var flat = el.flatten(excludeUndefined); + result = result.concat(flat); + } else if (!excludeUndefined || el != undefined) { + result.push(el); + } + } + return result; +}; + +if (!Array.prototype.flatten) { + Array.prototype.flatten = function(excludeUndefined) { + return Array.flatten(this, excludeUndefined); + } +} + +/*--------------------------------------------------------------------------*/ + +var Builder = { + node: function(elementName) { + var element = document.createElement('div'); + element.innerHTML = + "<" + elementName + ">"; + + // attributes (or text) + if(arguments[1]) + if(this._isStringOrNumber(arguments[1]) || + (arguments[1] instanceof Array)) { + this._children(element.firstChild, arguments[1]); + } else { + var attrs = this._attributes(arguments[1]); + if(attrs.length) + element.innerHTML = "<" +elementName + " " + + attrs + ">"; + } + + // text, or array of children + if(arguments[2]) + this._children(element.firstChild, arguments[2]); + + return element.firstChild; + }, + _text: function(text) { + return document.createTextNode(text); + }, + _attributes: function(attributes) { + var attrs = []; + for(attribute in attributes) + attrs.push((attribute=='className' ? 'class' : attribute) + + '="' + attributes[attribute].toString().escapeHTML() + '"'); + return attrs.join(" "); + }, + _children: function(element, children) { + if(typeof children=='object') { // array can hold nodes and text + children = children.flatten(); + for(var i = 0; i 0 ? ' ' : '') + arguments[i]; + } + }, + + // returns true if all given classes exist in said element + has: function(element) { + element = $(element); + if(!element || !element.className) return false; + var regEx; + for(var i = 1; i < arguments.length; i++) { + if((typeof arguments[i] == 'object') && + (arguments[i].constructor == Array)) { + for(var j = 0; j < arguments[i].length; j++) { + regEx = new RegExp("(^|\\s)" + arguments[i][j] + "(\\s|$)"); + if(!regEx.test(element.className)) return false; + } + } else { + regEx = new RegExp("(^|\\s)" + arguments[i] + "(\\s|$)"); + if(!regEx.test(element.className)) return false; + } + } + return true; + }, + + // expects arrays of strings and/or strings as optional paramters + // Element.Class.has_any(element, ['classA','classB','classC'], 'classD') + has_any: function(element) { + element = $(element); + if(!element || !element.className) return false; + var regEx; + for(var i = 1; i < arguments.length; i++) { + if((typeof arguments[i] == 'object') && + (arguments[i].constructor == Array)) { + for(var j = 0; j < arguments[i].length; j++) { + regEx = new RegExp("(^|\\s)" + arguments[i][j] + "(\\s|$)"); + if(regEx.test(element.className)) return true; + } + } else { + regEx = new RegExp("(^|\\s)" + arguments[i] + "(\\s|$)"); + if(regEx.test(element.className)) return true; + } + } + return false; + }, + + childrenWith: function(element, className) { + var children = $(element).getElementsByTagName('*'); + var elements = new Array(); + + for (var i = 0; i < children.length; i++) { + if (Element.Class.has(children[i], className)) { + elements.push(children[i]); + break; + } + } + + return elements; + } +} + +/*--------------------------------------------------------------------------*/ + +String.prototype.parseQuery = function() { + var str = this; + if(str.substring(0,1) == '?') { + str = this.substring(1); + } + var result = {}; + var pairs = str.split('&'); + for(var i = 0; i < pairs.length; i++) { + var pair = pairs[i].split('='); + result[pair[0]] = pair[1]; + } + return result; +} \ No newline at end of file diff --git a/webcit/static/viewcontacts_16x.gif b/webcit/static/viewcontacts_16x.gif new file mode 100644 index 0000000000000000000000000000000000000000..880adbb5941852997ed72f7873498548ab5b74e5 GIT binary patch literal 1035 zcmZ?wbhEHb6krfw_|Cxa@87?lKYxDy{Q1-8&mTVAd+_P&yZ5*MzgzeC?Wfo8PCt2l z>-)>K|DQG9eERPHXDzJ1dV{-1mB=9;}H zH|*WFW5c1dB?i7t1qwgUAc1QgmuRb%=TJ0 zFL~cgueEcddgiQIF)Oxx_S$7L;+IT`-Za5u(xeIN`rJz=FY=rEzqhxydg8+F?(X{T zNp5|=N;;-jwe~bLG&r@rs;;hXt@Es`tgI`ybE>*lQc}`Y;#gEvlvUDPknLHTZ0C?V zKOrF@Bf%y%Ha08TCNeTIA|k>wsw^x#A~Y<_DzY*#Bsd@-z~A5BCm<-w-#jS5E;zu* z$1lLk!`j{>z|GCg#m&Ld&C}J@)!Eg<-r3#W(b3t_(%Ih3(cZ$!&cWW!+}YO9+RDtr z!otMD&dNgF)YR0(#Kg$d%*52(*x1;_#MsEl$k5Qxz`#IXUte8aT~$?8R8&+%m`hkl zKtOvpFi{(Y{OuP6A9S$5T zCyMBlbDUgrc!{f!Ntlbo#4XF1)L(dyfZ0|JK`8W}b3 z2?PZ_IWj}R^i#%z4@!+pERxRziWa3_SfFL`=D>`Dhh3Rj{6AQA`(`=$Lqr zy@knpUcg7^j6==LCcik8m>#*cD<_3*QrL3PvCmHAS3%=rHNL4+IXI`@xTx+hUtTdK nXO4%fzdS>2gTaeNcAn$jI=jAbs!X2HexD=!hC`o$0)sUGbkj+H literal 0 HcmV?d00001 diff --git a/webcit/static/viewcontacts_24x.gif b/webcit/static/viewcontacts_24x.gif new file mode 100644 index 0000000000000000000000000000000000000000..d04eff96ce56f74cb3bec06c0b4b0019f4781391 GIT binary patch literal 1269 zcmd6mk2li^0KmUuvYIQ7tIG-rHa}{VM#q>oQDbWv+j1VlbJumeO7F?le{r9`;PXE3eL}$ygdce?uorj_0B|^5 zDZ5xq$3`)qpE>Pa*QZRNNdgI}96{HxTs)95E6e16yC?#`axc2S({`O8^# zmWP-3zw<@d^oIA#c}3;5ZKE12=-DRuy-PLrnXNSuA`ncbg!FV?9*`!DKF(lpYs#DC z32}bBvgo$D_>_#RL}KhuH;tPgrrh1!svk|}-sC=ewV)W0o(d;PBoh62epc(|XHR-w zh*17iKQsP%ZiFW4OSs;Wd&zfE&q4*CxX$K}wnXqA$hY3!777~`GJ13*T0S)|tweuZ z%^%T>vNC^+zi|2J(WBkNDqQ#>&6KgRIw>&Va3(cZqex+~SZuz?$LpJpNBtNu2n0d> z{5*xfHStpRv*3;3;gi_&iK(fnOViYj-j0Xb6$&}Hw)`wZJf4<}exb~H@PL1>l}wC1 z+1^nc9^zZTYbm7TO*-bRHr2=1zgp6xGnhmjVn;_u0WT&!J*_McMJP9=r+})bG6Dgq zntU;>pZME&Ei=JCiYlx6?Zm*K?BfcPmV9Joh8Y-u(CJn07E8LjyZ!wT=L*MrpO0O+ zN|(r=efoz=FDWRkYwy?TNO#^uMMar(S=rgyggEl(<14I+dPZ4QNj_#|W~sG*BuTI- zm5PNm#Bxcuu$leLWa<=>J-mNtlhl7&69)!^m8J1RLwyy}amF?DAH&LXSZ~wf;^*vl zD`JzAF=Yjj2BRUaVnv}d84MFfqY?PO;=Ex2u>-~cuP=gMo&c=206x_21KHXcncNB^ zDmi5PL$!Tj>xrUz^o<%93{zk^CoZ;*Mz2p6?Q(SA=PTaEmD}@oSwn+hC}i=T2#3CM zD|=6ChvS`uXrlZ5TZ~9)d)WHm{V2Ed-*O;+=2^25HiVG4iAL2rmkn0A3XbZfI;Vm2^?*9+u~r} z2&WsUuUun%27soV3@Efe2M=K$QFGbQ)9T#=@c8DKK}dYvVMYlm=faaCbWSMCDJcwD z6m1(hr+~B5agF=8Ee*1{^iHJwHq81@2=pqAoLG6zW5dETiPp;@xdNQ+cQD+h$TBCJ fgTXe{hKr7F4m7FS+;)HBQc$y1t9zK48F1o1ltw5D literal 0 HcmV?d00001 diff --git a/webcit/static/viewcontacts_32x.gif b/webcit/static/viewcontacts_32x.gif new file mode 100644 index 0000000000000000000000000000000000000000..c6dee063e1f93418073c1bf174dbd499e64558c9 GIT binary patch literal 1548 zcmV+n2J`txNk%w1VITk?0QUd@9UL6c!)ld|P*RNATvt7(#m#q-o=Ree{_uU**Vn?L zNjx|$(a3^%azc-*!f|$buaii;!@9lI(4?!UP+o6PfXU|O-bqI~!)#SdkWoBk(k)p7ZjA7NvZccr~MMF8?;>Z8*j6+s)!`I-Cd`Q)? zP;-QkrM11q#l_duzie76Sx`9g<#*`Xg{O=}{_&n)cZQ<8#mU|KQc_Z_q+euWPxkTD zHatbM#ot?!W{ud9)qtE`QMPUzW#fq6t`W@c$zHr?XZji0T?x^kbITZDv!oV&*V z|Nptx?YqCVn8E+@}vRYwf)W>Yz&~Ym(D`8P4|MarP+vz+% zLe%H)oP|cc*#A_A)b{G0d2>v+$jD)k)jK*jVVd%fkB^ywLN_uWo03w%pi0W9Ol741 z%gVWwt+uqs*L!<=c5+q9zHU`hJ&L8dpug8`adY6}x%}#ZV^}%cwo=vH%~^-d+~Viq z({oZ%N^fXCy|Qb#(BoWdf^K|~&*AWXc}`Z1+|R90_~(7e!*b5q+`HKB-r~z>eTR3H zs=C(JTWWNQfl8dMyGBGmlY2UIVl=9)nZ~?i|N7eH<>YIo|N85S@ZfrxnP#rPz*=Bd z$I-;>-HOZI=XrvOBO)JJU0`#2fU3U2fV2L((c@8r%+A4dm7=!l^Z%KdW@dVcwz8O` zm{q>MzD`R&t*og+Iy$bgqW|=d|Mil#xVrb~i({VlN+l$27%-ri4C zTh_^QyRT~D*e6%#if)|lB~eG$J5~AysyH_ z+01go$jisNZeLtOIyp31Rzq4+LN`4}V3p>Kg;;}oN88VSR8c?P)_d&Th0d!@%+I|3 z?S|gt=H1=hA^8La6afDKEC2ui03ZM$000R80RIUb`0vA)YA#&t8Nq^}!-o+6u}Da< z;)jSB2P&(`F=57xGdNy&_pVvOh94hBtB9kMj5IdzQDo95CBZ`!@iiHTAdQPvtKh+_ zwhZ2vM!t6KdT=NjL~se0$w1I^PsfBCf^nKNCytUeDjp`>1BfaDEATqXp#h|wiE<`P zbVU`GV8RPBKvA`dBW*%AY@@NTK-fa85*>O4vAbtaGB!oVCG0^5(uD=6^6+EftefX< z7X0a=afqPR5sC!7`sPBMph%wrwW=~jNCa2rNRi61h0?W5YyJgM5t5>!2KHP)@DVAJ z4{^3?6PlpTkt1_xN?ap1L)oECQI-(@BL*YL18{r%>BP~N|Gc|*Yb~Q zbVw5!V6sd@j|O!V6UGN;93hAgf@o1l9ucUKP7D;rpdAmR%pivz8Vus$Ad{S+4Mjxw z5lA3IY@mcHG;l$KDu!HRfl9*$ zc48c(0zA_UQsp2!pa2IFB6N8NGL0a_OA;$cV5S5>fDz0n4lwZ#mD615LM}+?VCS7W zNK?-q;FPk$DS%3Vju>rT1P>p4wBVr&UCx51oha;a2orzYVgMKg6krM}BP{l23oS^o zsGTYFgJ&0eB+$qn$Tc9&G6VqWP?tdPcw+0Qv!vlDq^TaVM<-SQVg(kdSOI{iwA!KU zqWyq^fi%xN6KMjz;$Z~`!(akPGEMMu(LnGBBkrP)(6UV#B1~ItDwyaajS(^gfPo7R z!BfEv6)fuPFl9{p#U6O1!p#-4h)_l%ZO}rmT~IVU$sjJ!!j3yHr222b0~c&?B5bhc z&<7v~aR9^^1i-;PPOOSC!Ce|WOaN^x4AG4)R1$zY?sP)HB?7bDav9qMEptRJG}Fv7 yD0qQ|6`1(kG6V56HgrZTAQFlP!|0=N%Ocdkj7JLlsE? literal 0 HcmV?d00001 diff --git a/webcit/static/viewcontacts_48x.gif b/webcit/static/viewcontacts_48x.gif new file mode 100644 index 0000000000000000000000000000000000000000..b6495a9e321ff0b9cf3ea8fde2b811c5775c3b1f GIT binary patch literal 2182 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 ILIMH+J8(2ci2wiq literal 0 HcmV?d00001 diff --git a/webcit/static/viewnotes_24x.gif b/webcit/static/viewnotes_24x.gif new file mode 100644 index 0000000000000000000000000000000000000000..cba60b0c09f9e4c006031226982090b926ca84e1 GIT binary patch literal 1205 zcmZ?wbhEHblwgox_|Cu}DJj{r`D$@O6r#`UHTwXXv^UnGiT1!vGVdv zZ+ZFo|NetpW*_~X*1Tf(t&cZe{Ow-0!@XpS^jnal%}nA7?CDqM)EqR8(~6@b=(@?Aj@- zC(he&_2jB=9&M?PCVaz=HZq5r|0Z{HGTi1g06XU*YEQQ2%W!S z`^lTvm!5pH;mZFtJ9h5B`ou9P!_>xM-<8* zW6g$cNss$^!r1W)49=3!@DW4=Bf*L@1;zUgRp>qGpj(aioQf*K~q`gy$s3 z4k>9?xtE^>pQwl%B=4$dEP8xunqKNLm!QiJTSUd0qGmi$?7Fx(Q0{9^gmYk*c2>v| zNg>51WsMN8CmIQgsk|&=d=U!DSDF~q^I15Xf)x%PlPX>i(IB)$Z@N%Ti^omvr!IVQ zeA#DiI9KrV=`_4)IeBTp>4kcA4-z*EdMb_Qb!^7!G!1pUgNw)yAN)3IxQ<@ za;bsQd12sW5yKg?CjCr!*es~rDrURWAi1ZSOHxdr^GJz67Pm%I+(cz3rX^;%KMI;z zT};wFd7CGEXXN6MVmiW*VN>YF;2rbvD3|Gur*}B`N?t5vHmDFh-l5DC(9CF(5mkXV2D`s4p$gCQ`% 0) { + for (i=0; i= 0) { + extracted_string = extracted_string.substring(j+1); + } + } + } + + j = extracted_string.indexOf(delimiter); + if (j >= 0) { + extracted_string = extracted_string.substring(0, j); + } + + return extracted_string; +} + + + +// This code handles the popups for important-messages. +function hide_imsg_popup() { + if (browserType == "gecko" ) + document.poppedLayer = eval('document.getElementById(\'important_message\')'); + else if (browserType == "ie") + document.poppedLayer = eval('document.all[\'important_message\']'); + else + document.poppedLayer = eval('document.layers[\'`important_message\']'); + + document.poppedLayer.style.visibility = "hidden"; +} + + +// This function activates the ajax-powered recipient autocompleters on the message entry screen. +function activate_entmsg_autocompleters() { + new Ajax.Autocompleter('cc_id', 'cc_name_choices', 'cc_autocomplete', {} ); + new Ajax.Autocompleter('bcc_id', 'bcc_name_choices', 'bcc_autocomplete', {} ); + new Ajax.Autocompleter('recp_id', 'recp_name_choices', 'recp_autocomplete', {} ); +} + + + +// Toggle the icon bar between menu/roomlist... +var which_div_expanded = null; +var num_drop_targets = 0; +var drop_targets_elements = new Array(); +var drop_targets_roomnames = new Array(); + +function switch_to_room_list() { + $('iconbar').innerHTML = $('iconbar').innerHTML.substr(0, $('iconbar').innerHTML.indexOf('switch')); + new Ajax.Updater('iconbar', 'iconbar_ajax_rooms', { method: 'get' } ); +} + +function expand_floor(floor_div) { + if (which_div_expanded != null) { + if ($(which_div_expanded) != null) { + $(which_div_expanded).style.display = 'none' ; + } + } + + // clicking on the already-expanded floor causes the whole list to collapse + if (which_div_expanded == floor_div) { + which_div_expanded = null; + + // notify the server that no floors are expanded + new Ajax.Request( + 'set_floordiv_expanded/-1', { + method: 'post' + } + ); + return true; + } + + // expand the requested floor + $(floor_div).style.display = 'block'; + which_div_expanded = floor_div; + + // notify the server of which floor is expanded + new Ajax.Request( + 'set_floordiv_expanded/'+floor_div, { + method: 'post' + } + ); +} + +function switch_to_menu_buttons() { + which_div_expanded = null; + num_drop_targets = 0; + new Ajax.Updater('iconbar', 'iconbar_ajax_menu', { method: 'get' } ); +} + + +// Static variables for mailbox view... +// +var CtdlNumMsgsSelected = 0; +var CtdlMsgsSelected = new Array(); + +// This gets called when you single click on a message in the mailbox view. +// We know that the element id of the table row will be the letter 'm' plus the message number. +// +function CtdlSingleClickMsg(evt, msgnum) { + + // Clear the preview pane until we load the new message + $('preview_pane').innerHTML = ''; + + // De-select any messages that were already selected, *unless* the Ctrl key + // is being pressed, in which case the user wants multi select. + if (!evt.ctrlKey) { + if (CtdlNumMsgsSelected > 0) { + for (i=0; i 0) ) { + for (i=0; i 0) { + new Ajax.Request( + 'ajax_servcmd', { + method: 'post', + parameters: 'g_cmd=DELE ' + CtdlMsgsSelected[i], + onComplete: CtdlClearDeletedMsg(CtdlMsgsSelected[i]) + } + ); + } + else { + new Ajax.Request( + 'ajax_servcmd', { + method: 'post', + parameters: 'g_cmd=MOVE ' + CtdlMsgsSelected[i] + '|_TRASH_|0', + onComplete: CtdlClearDeletedMsg(CtdlMsgsSelected[i]) + } + ); + } + } + CtdlNumMsgsSelected = 0; + + // Clear the preview pane too. + $('preview_pane').innerHTML = ''; +} + + +// Move selected messages. +function CtdlMoveSelectedMessages(evt, target_roomname) { + + if (CtdlNumMsgsSelected < 1) { + // Nothing to delete, so exit silently. + return false; + } + for (i=0; i
    "; + for (i=0; i'; + } + drag_o_text = drag_o_text + "
    "; + + mm_div = document.createElement("DIV"); + mm_div.style.position='absolute'; + mm_div.style.top = y + 'px'; + mm_div.style.left = x + 'px'; + mm_div.style.pixelHeight = '300'; + mm_div.style.pixelWidth = '300'; + mm_div.innerHTML = drag_o_text; + document.body.appendChild(mm_div); + } + else { + mm_div.style.top = y + 'px'; + mm_div.style.left = x + 'px'; + } + + return false; // prevent the default mouse action from happening? +} + +function CtdlMoveMsgMouseUp(evt) { + document.onmouseup = null; + document.onmousemove = null; + if (document.layers) { + document.releaseEvents(Event.MOUSEUP | Event.MOUSEMOVE); + } + + if (mm_div) { + document.body.removeChild(mm_div); + mm_div = null; + } + + if (num_drop_targets < 1) { // nowhere to drop + return true; + } + + // Did we release the mouse button while hovering over a drop target? + // NOTE: this only works cross-browser because the iconbar div is always + // positioned at 0,0. Browsers differ in whether the 'offset' + // functions return pos relative to the document or parent. + + for (i=0; i= l) && (x <= r) && (y >= t) && (y <= b) ) { + // Yes, we dropped it on a hotspot. + CtdlMoveSelectedMessages(evt, drop_targets_roomnames[i]); + return true; + } + } + + return true; +} + + +function ctdl_ts_getInnerText(el) { + if (typeof el == "string") return el; + if (typeof el == "undefined") { return el }; + if (el.innerText) return el.innerText; //Not needed but it is faster + var str = ""; + + var cs = el.childNodes; + var l = cs.length; + for (var i = 0; i < l; i++) { + switch (cs[i].nodeType) { + case 1: //ELEMENT_NODE + str += ts_getInnerText(cs[i]); + break; + case 3: //TEXT_NODE + str += cs[i].nodeValue; + break; + } + } + return str; +} + + + +// This function handles the creation of new notes in the "Notes" view. +// +function add_new_note() { + + new_eid = Math.random() + ''; + new_eid = new_eid.substr(3); + + $('new_notes_here').innerHTML = $('new_notes_here').innerHTML + + '' + + '' + Date() + '
    ' + ; + + new Ajax.InPlaceEditor('note' + new_eid, + 'updatenote?eid=' + new_eid , {rows:5,cols:72}); +} diff --git a/webcit/static/webcit-tinymce.css b/webcit/static/webcit-tinymce.css new file mode 100644 index 000000000..f64b77e0c --- /dev/null +++ b/webcit/static/webcit-tinymce.css @@ -0,0 +1,6 @@ + + +body { + font-size: 10pt; + font-family: sans-serif; +} diff --git a/webcit/static/webcit.css b/webcit/static/webcit.css new file mode 100644 index 000000000..1fc63da2b --- /dev/null +++ b/webcit/static/webcit.css @@ -0,0 +1,574 @@ + diff --git a/webcit/static/week_view.gif b/webcit/static/week_view.gif new file mode 100644 index 0000000000000000000000000000000000000000..4621306330b428edc6eaf48ffe50d909436ca472 GIT binary patch literal 315 zcmV-B0mS}CNk%w1VIBY&0K^;sp0fXwrt@!u(ER@Yx60j(u++=f;-bCT)ZFCU;pK9m z&zHB?dZo~Vs?w~)+riP`V!Y z|Ns900000000000A^8LW000~SEC2ui03HAs000HJASaGwX`X1RmRRe)a14{!U=LcZ z@4Pl_n+S#`vGtBT;AS|IIiD?>WlF7DuT-W81Ic*5;IKFY(Q+_}%!Hz5uiNnVJ7LBk zGC=%B&(Hh!2z3TygkuJE4{>gbif|8g1busdl6(Yp4i}o6oSmK*4s{0?0Rp6^rKhT? zsRwln7XSdUv$C|ewzdm(1)sj31$7OLa*V|p4Rs8al+Ak#bqa;kUkY^<*xB0K+}U+d N;4drVa1V#C72?E=bPb38UKI@&E^oOMUTK!L#;0K?i0RR910 literal 0 HcmV?d00001 diff --git a/webcit/static/xml_button.gif b/webcit/static/xml_button.gif new file mode 100644 index 0000000000000000000000000000000000000000..ecb09575418861d80c63d143660290732b84678e GIT binary patch literal 429 zcmZ?wbhEHbRAJy_xXQqAHG<{il>-lBS^j_f@V`j(!Sbf>FCRROWBHQ8`u60;56P^* zzP!Ibujv2k;_nYGTqrVrzIWmO#~0^2GXH;e^=XUq|5lU#w+@~QWjUL!{QvF4=bIhHE>a}+pdsF%dZ5LD=| z#BIoD$fL)R)+MjaoZe*E(iZKfn$D=lZj>fa!mKi_xiu;<$&gLPH;q*xU1G(IRRQgO zEX>S3QX36fl}q%t&s^=V*~_0Uvgj}qhaSUrHfe2bE&ts{vGdtA*2!*S^4s2EsK(`Y r&xrl1FO#00(U<3bUyZoF{`+ZkFICdR^-y;+hp<-6iGqin3Jlf&%kitR literal 0 HcmV?d00001 diff --git a/webcit/static/year_view.gif b/webcit/static/year_view.gif new file mode 100644 index 0000000000000000000000000000000000000000..17272f9f5a77dc68b89ed435a8c61a9d5ce774c2 GIT binary patch literal 313 zcmZ?wbhEHblx2`$I3mID=ih%IC|Yp7cf*x6M{b|K{^-h`C)2lIU$pmT^QueRPu)Fu z@xh&kPpg(*c>MJFx4-|h=bU}<;zfS*g~`i4&)f8W;nJ0iaXn|woBuus=$=(ABzQ=MdDP34m z;?>F($=6+W`fZhLcwlSdM4xl1pO@6cZNJ`Quq!ft{7{j>8UVKjk8%J2 literal 0 HcmV?d00001 diff --git a/webcit/subst.c b/webcit/subst.c new file mode 100644 index 000000000..435930698 --- /dev/null +++ b/webcit/subst.c @@ -0,0 +1,258 @@ +/* + * $Id$ + */ +/** + * \defgroup Subst Variable substitution type stuff + * \ingroup CitadelConfig + */ + +/*@{*/ + +#include "webcit.h" + + +/** + * \brief Clear out the list of substitution variables local to this session + */ +void clear_local_substs(void) { + struct wcsubst *ptr; + + while (WC->vars != NULL) { + ptr = WC->vars->next; + + if ((WC->vars->wcs_type == WCS_STRING) + || (WC->vars->wcs_type == WCS_SERVCMD)) { + free(WC->vars->wcs_value); + } + + free(WC->vars); + WC->vars = ptr; + } + + WC->vars = NULL; +} + + +/* + * \brief Add a substitution variable (local to this session) + * \param keyname the replacementstring to substitute + * \param keytype the kind of the key + * \param format the format string ala printf + * \param ... the arguments to substitute in the formatstring + */ +void svprintf(char *keyname, int keytype, const char *format,...) +{ + va_list arg_ptr; + char wbuf[SIZ]; + struct wcsubst *ptr = NULL; + struct wcsubst *scan; + + /** + * First scan through to see if we're doing a replacement of + * an existing key + */ + for (scan=WC->vars; scan!=NULL; scan=scan->next) { + if (!strcasecmp(scan->wcs_key, keyname)) { + ptr = scan; + free(ptr->wcs_value); + } + } + + /** Otherwise allocate a new one */ + if (ptr == NULL) { + ptr = (struct wcsubst *) malloc(sizeof(struct wcsubst)); + ptr->next = WC->vars; + safestrncpy(ptr->wcs_key, keyname, sizeof ptr->wcs_key); + WC->vars = ptr; + } + + /** Format the string and save it */ + + va_start(arg_ptr, format); + vsnprintf(wbuf, sizeof wbuf, format, arg_ptr); + va_end(arg_ptr); + + ptr->wcs_type = keytype; + ptr->wcs_value = strdup(wbuf); +} + +/** + * \brief Add a substitution variable (local to this session) that does a callback + * \param keyname the keystring to substitute + * \param fcn_ptr the function callback to give the substitution string + */ +void svcallback(char *keyname, void (*fcn_ptr)() ) +{ + struct wcsubst *ptr; + + ptr = (struct wcsubst *) malloc(sizeof(struct wcsubst)); + ptr->next = WC->vars; + ptr->wcs_type = WCS_FUNCTION; + strcpy(ptr->wcs_key, keyname); + ptr->wcs_function = fcn_ptr; + WC->vars = ptr; +} + + + +/** + * \brief back end for print_value_of() ... does a server command + * \param servcmd server command to execute on the citadel server + */ +void pvo_do_cmd(char *servcmd) { + char buf[SIZ]; + + serv_puts(servcmd); + serv_getln(buf, sizeof buf); + + switch(buf[0]) { + case '2': + case '3': + case '5': + wprintf("%s\n", &buf[4]); + break; + case '1': + fmout("CENTER"); + break; + case '4': + wprintf("%s\n", &buf[4]); + serv_puts("000"); + break; + } +} + + + +/** + * \brief Print the value of a variable + * \param keyname get a key to print + */ +void print_value_of(char *keyname) { + struct wcsubst *ptr; + void *fcn(); + + if (keyname[0] == '=') { + do_template(&keyname[1]); + } + + if (!strcasecmp(keyname, "SERV_PID")) { + wprintf("%d", WC->ctdl_pid); + } + + else if (!strcasecmp(keyname, "SERV_NODENAME")) { + escputs(serv_info.serv_nodename); + } + + else if (!strcasecmp(keyname, "SERV_HUMANNODE")) { + escputs(serv_info.serv_humannode); + } + + else if (!strcasecmp(keyname, "SERV_FQDN")) { + escputs(serv_info.serv_fqdn); + } + + else if (!strcasecmp(keyname, "SERV_SOFTWARE")) { + escputs(serv_info.serv_software); + } + + else if (!strcasecmp(keyname, "SERV_REV_LEVEL")) { + wprintf("%d.%02d", + serv_info.serv_rev_level / 100, + serv_info.serv_rev_level % 100 + ); + } + + else if (!strcasecmp(keyname, "SERV_BBS_CITY")) { + escputs(serv_info.serv_bbs_city); + } + + else if (!strcasecmp(keyname, "CURRENT_USER")) { + escputs(WC->wc_fullname); + } + + else if (!strcasecmp(keyname, "CURRENT_ROOM")) { + escputs(WC->wc_roomname); + } + + /** Page-local variables */ + else for (ptr = WC->vars; ptr != NULL; ptr = ptr->next) { + if (!strcasecmp(ptr->wcs_key, keyname)) { + if (ptr->wcs_type == WCS_STRING) { + wprintf("%s", ptr->wcs_value); + } + else if (ptr->wcs_type == WCS_SERVCMD) { + pvo_do_cmd(ptr->wcs_value); + } + else if (ptr->wcs_type == WCS_FUNCTION) { + (*ptr->wcs_function) (); + } + } + } +} + + + +/** + * \brief Display a variable-substituted template + * \param templatename template file to load + */ +void do_template(void *templatename) { + char filename[PATH_MAX]; + FILE *fp; + char inbuf[1024]; + char outbuf[sizeof inbuf]; + char key[sizeof inbuf]; + int i, pos; + + strcpy(filename, "static/"); + strcat(filename, templatename); + if (WC->is_wap) + strcat(filename, ".wml"); + else + strcat(filename, ".html"); + + fp = fopen(filename, "r"); + if (fp == NULL) { + wprintf(_("ERROR: could not open template ")); + wprintf("'%s' - %s
    \n", + templatename, strerror(errno)); + return; + } + + strcpy(inbuf, ""); + + while (fgets(inbuf, sizeof inbuf, fp) != NULL) { + strcpy(outbuf, ""); + + while (strlen(inbuf) > 0) { + pos = (-1); + for (i=strlen(inbuf); i>=0; --i) { + if ((inbuf[i]=='<')&&(inbuf[i+1]=='?')) pos = i; + } + if (pos < 0) { + wprintf("%s", inbuf); + strcpy(inbuf, ""); + } + else { + strncpy(outbuf, inbuf, pos); + outbuf[pos] = 0; + wprintf("%s", outbuf); + strcpy(inbuf, &inbuf[pos]); + pos = 1; + for (i=strlen(inbuf); i>=0; --i) { + if (inbuf[i]=='>') pos = i; + } + strncpy(key, &inbuf[2], pos-2); + key[pos-2] = 0; + print_value_of(key); + strcpy(inbuf, &inbuf[pos+1]); + } + } + } + + fclose(fp); +} + + + +/*@}*/ diff --git a/webcit/summary.c b/webcit/summary.c new file mode 100644 index 000000000..3d9940389 --- /dev/null +++ b/webcit/summary.c @@ -0,0 +1,288 @@ +/* + * $Id$ + */ +/** + * \defgroup SymaryFuncs Displays the "Summary Page" + * \ingroup WebcitDisplayItems + */ +/*@{*/ +#include "webcit.h" + +/** + * \brief Display today's date in a friendly format + */ +void output_date(void) { + struct tm tm; + time_t now; + char buf[128]; + + time(&now); + localtime_r(&now, &tm); + + wc_strftime(buf, 32, "%A, %x", &tm); + wprintf("%s", buf); +} + + + + +/** + * \brief Dummy section + */ +void dummy_section(void) { + svprintf("BOXTITLE", WCS_STRING, "(dummy section)"); + do_template("beginbox"); + wprintf(_("(nothing)")); + do_template("endbox"); +} + + +/** + * \brief New messages section + */ +void new_messages_section(void) { + char buf[SIZ]; + char room[SIZ]; + int i; + int number_of_rooms_to_check; + char *rooms_to_check = "Mail|Lobby"; + + svprintf("BOXTITLE", WCS_STRING, _("Messages")); + do_template("beginbox"); + + number_of_rooms_to_check = num_tokens(rooms_to_check, '|'); + if (number_of_rooms_to_check == 0) return; + + wprintf("\n"); + for (i=0; i\n", + extract_int(&buf[4], 1), + extract_int(&buf[4], 2) + ); + } + } + wprintf("
    "); + escputs(room); + wprintf("%d/%d
    \n"); + do_template("endbox"); + +} + + +/** + * \brief Wholist section + */ +void wholist_section(void) { + char buf[SIZ]; + char user[SIZ]; + + svprintf("BOXTITLE", WCS_STRING, _("Who's online now")); + do_template("beginbox"); + serv_puts("RWHO"); + serv_getln(buf, sizeof buf); + if (buf[0] == '1') while(serv_getln(buf, sizeof buf), strcmp(buf, "000")) { + extract_token(user, buf, 1, '|', sizeof user); + escputs(user); + wprintf("
    \n"); + } + do_template("endbox"); +} + + +/** + * \brief Task list section + */ +void tasks_section(void) { +#ifdef WEBCIT_WITH_CALENDAR_SERVICE + int num_msgs = 0; + int i; +#endif + + svprintf("BOXTITLE", WCS_STRING, _("Tasks")); + do_template("beginbox"); +#ifdef WEBCIT_WITH_CALENDAR_SERVICE + gotoroom("_TASKS_"); + if (WC->wc_view != VIEW_TASKS) { + num_msgs = 0; + } + else { + num_msgs = load_msg_ptrs("MSGS ALL", 0); + } + + if (num_msgs < 1) { + wprintf(""); + wprintf(_("(None)")); + wprintf("
    \n"); + } + else { + for (i=0; imsgarr[i]); + } + } + + calendar_summary_view(); + +#else /* WEBCIT_WITH_CALENDAR_SERVICE */ + wprintf(""); + wprintf(_("(This server does not support task lists)")); + wprintf("\n"); +#endif /* WEBCIT_WITH_CALENDAR_SERVICE */ + do_template("endbox"); +} + + +/** + * \brief Calendar section + */ +void calendar_section(void) { +#ifdef WEBCIT_WITH_CALENDAR_SERVICE + int num_msgs = 0; + int i; +#endif + + svprintf("BOXTITLE", WCS_STRING, _("Today on your calendar")); + do_template("beginbox"); +#ifdef WEBCIT_WITH_CALENDAR_SERVICE + gotoroom("_CALENDAR_"); + if ( (WC->wc_view != VIEW_CALENDAR) && (WC->wc_view != VIEW_CALBRIEF) ) { + num_msgs = 0; + } + else { + num_msgs = load_msg_ptrs("MSGS ALL", 0); + } + + if (num_msgs < 1) { + wprintf(""); + wprintf(_("(Nothing)")); + wprintf("
    \n"); + } + else { + for (i=0; imsgarr[i]); + } + calendar_summary_view(); + } + +#else /* WEBCIT_WITH_CALENDAR_SERVICE */ + wprintf(""); + wprintf(_("(This server does not support calendars)")); + wprintf("\n"); +#endif /* WEBCIT_WITH_CALENDAR_SERVICE */ + do_template("endbox"); +} + +/** + * \brief Server info section (fluff, really) + */ +void server_info_section(void) { + char message[512]; + + svprintf("BOXTITLE", WCS_STRING, _("About this server")); + do_template("beginbox"); + + snprintf(message, sizeof message, + _("You are connected to %s, running %s with %s, and located in %s. Your system administrator is %s."), + serv_info.serv_humannode, + serv_info.serv_software, + SERVER, + serv_info.serv_bbs_city, + serv_info.serv_sysadm); + escputs(message); + do_template("endbox"); +} + +/** + * \brief summary of inner div???? + */ +void summary_inner_div(void) { + /** + * Now let's do three columns of crap. All portals and all groupware + * clients seem to want to do three columns, so we'll do three + * columns too. Conformity is not inherently a virtue, but there are + * a lot of really shallow people out there, and even though they're + * not people I consider worthwhile, I still want them to use WebCit. + */ + + wprintf("
    " + ""); + + /** + * Column One + */ + wprintf("
    "); + wholist_section(); + + /** + * Column Two + */ + wprintf(""); + server_info_section(); + wprintf("
    "); + tasks_section(); + + /** + * Column Three + */ + wprintf("
    "); + new_messages_section(); + wprintf("
    "); + calendar_section(); + + /** + * End of columns + */ + wprintf("
    "); +} + + +/** + * \brief Display this user's summary page + */ +void summary(void) { + char title[256]; + + output_headers(1, 1, 2, 0, 0, 0); + wprintf("
    \n"); + wprintf("" + "
    " + "" + ); + + snprintf(title, sizeof title, _("Summary page for %s"), WC->wc_fullname); + escputs(title); + wprintf("\n"); + wprintf(""); + output_date(); + wprintf("
    "); + offer_start_page(); + wprintf("
    \n"); + + /** + * You guessed it ... we're going to refresh using ajax. + * In the future we might consider updating individual sections of the summary + * instead of the whole thing. + */ + wprintf("
    \n
    \n"); + summary_inner_div(); + wprintf("
    \n"); + + wprintf( + " \n" + ); + + wDumpContent(1); +} + + +/*@}*/ diff --git a/webcit/sysmsgs.c b/webcit/sysmsgs.c new file mode 100644 index 000000000..7de399879 --- /dev/null +++ b/webcit/sysmsgs.c @@ -0,0 +1,106 @@ +/* + * $Id$ + */ +/** + * \defgroup ShowSysMsgs Editing of various text files on the Citadel server. + * \ingroup WebcitDisplayItems + */ +/*@{*/ +#include "webcit.h" + + +/** + * \brief display the form for editing something (room info, bio, etc) + * \param description the descriptive text for the box + * \param check_cmd command to check???? + * \param read_cmd read answer from citadel server??? + * \param save_cmd save comand to the citadel server?? + * \param with_room_banner should we bisplay a room banner? + */ +void display_edit(char *description, char *check_cmd, + char *read_cmd, char *save_cmd, int with_room_banner) +{ + char buf[SIZ]; + + serv_puts(check_cmd); + serv_getln(buf, sizeof buf); + + if (buf[0] != '2') { + safestrncpy(WC->ImportantMessage, &buf[4], sizeof WC->ImportantMessage); + display_main_menu(); + return; + } + if (with_room_banner) { + output_headers(1, 1, 1, 0, 0, 0); + } + else { + output_headers(1, 1, 0, 0, 0, 0); + } + + svprintf("BOXTITLE", WCS_STRING, _("Edit %s"), description); + do_template("beginbox"); + + wprintf("
    "); + wprintf(_("Enter %s below. Text is formatted to " + "the reader's screen width. To defeat the " + "formatting, indent a line at least one space."), description); + wprintf("
    "); + + wprintf("
    \n", save_cmd); + wprintf("

    \n"); + wprintf("", _("Save changes")); + wprintf(" "); + wprintf("
    \n", _("Cancel")); + + wprintf("
    \n"); + do_template("endbox"); + wDumpContent(1); +} + + +/** + * \brief save a screen which was displayed with display_edit() + * \param description the window title??? + * \param enter_cmd which command to enter at the citadel server??? + * \param regoto should we go to that room again after executing that command? + */ +void save_edit(char *description, char *enter_cmd, int regoto) +{ + char buf[SIZ]; + + if (strlen(bstr("save_button")) == 0) { + sprintf(WC->ImportantMessage, + _("Cancelled. %s was not saved."), + description); + display_main_menu(); + return; + } + serv_puts(enter_cmd); + serv_getln(buf, sizeof buf); + if (buf[0] != '4') { + safestrncpy(WC->ImportantMessage, &buf[4], sizeof WC->ImportantMessage); + display_main_menu(); + return; + } + text_to_server(bstr("msgtext")); + serv_puts("000"); + + if (regoto) { + smart_goto(WC->wc_roomname); + } else { + sprintf(WC->ImportantMessage, + _("%s has been saved."), + description); + display_main_menu(); + return; + } +} + + +/*@}*/ diff --git a/webcit/tabs.c b/webcit/tabs.c new file mode 100644 index 000000000..9c00bc99d --- /dev/null +++ b/webcit/tabs.c @@ -0,0 +1,90 @@ +/* + * $Id: $ + */ +/** + * \defgroup TabUtils Utility functions for creating tabbed dialogs + * \ingroup WebcitDisplayItems + */ +/*@{*/ +#include "webcit.h" + +/** + * \brief print tabbed dialog + * \param num_tabs how many tabs do we have? + * \param tabnames the headers of the tables + */ +void tabbed_dialog(int num_tabs, char *tabnames[]) { + int i; + + wprintf(" \n" + ); + + wprintf("" + "" + ); + + for (i=0; i" + "", + i, + ( (i==0) ? "ffffff" : "cccccc" ), + i, + i + ); + wprintf("%s", tabnames[i]); + wprintf(""); + + wprintf("\n"); + } + + wprintf("
      
    \n"); + wprintf("
    "); +} + +/** + * \brief print the tab-header + * \param tabnum number of the tab to print + * \param num_tabs total number oftabs to be printed + */ +void begin_tab(int tabnum, int num_tabs) { + wprintf("
    ", + tabnum, + ( (tabnum == 0) ? "block" : "none" ) + ); +} + +/** + * \brief print the tab-footer + * \param tabnum number of the tab to print + * \param num_tabs total number oftabs to be printed + */ +void end_tab(int tabnum, int num_tabs) { + wprintf("
    \n"); + wprintf("\n", tabnum, num_tabs); + + if (tabnum == num_tabs-1) { + wprintf("
    \n"); + wprintf("" + ); + //" Nifty(\"td#tabtd1\", \"small transparent top\");" + } +} + + +/*@}*/ diff --git a/webcit/tcp_sockets.c b/webcit/tcp_sockets.c new file mode 100644 index 000000000..2d5d985d8 --- /dev/null +++ b/webcit/tcp_sockets.c @@ -0,0 +1,237 @@ +/* + * $Id$ + */ +/** + * \defgroup TcpSockets TCP client socket module for WebCit + * \ingroup CitadelCommunitacion + */ +/*@{*/ + +/* + * Uncomment this to log all communications with the Citadel server +#define SERV_TRACE 1 + */ + +#include "webcit.h" +#include "webserver.h" + +/** + * \brief register the timeout + * \param signum signalhandler number + * \return signals + */ +RETSIGTYPE timeout(int signum) +{ + lprintf(1, "Connection timed out.\n"); + exit(3); +} + + +/** + * \brief Connect a unix domain socket + * \param sockpath where to open a unix domain socket + */ +int uds_connectsock(char *sockpath) +{ + struct sockaddr_un addr; + int s; + + memset(&addr, 0, sizeof(addr)); + addr.sun_family = AF_UNIX; + strncpy(addr.sun_path, sockpath, sizeof addr.sun_path); + + s = socket(AF_UNIX, SOCK_STREAM, 0); + if (s < 0) { + lprintf(1, "Can't create socket: %s\n", + strerror(errno)); + return(-1); + } + + if (connect(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) { + lprintf(1, "Can't connect: %s\n", + strerror(errno)); + close(s); + return(-1); + } + + return s; +} + + +/** + * \brief Connect a TCP/IP socket + * \param host the host to connect to + * \param service the service on the host to call + */ +int tcp_connectsock(char *host, char *service) +{ + struct hostent *phe; + struct servent *pse; + struct protoent *ppe; + struct sockaddr_in sin; + int s; + + memset(&sin, 0, sizeof(sin)); + sin.sin_family = AF_INET; + + pse = getservbyname(service, "tcp"); + if (pse) { + sin.sin_port = pse->s_port; + } else if ((sin.sin_port = htons((u_short) atoi(service))) == 0) { + lprintf(1, "Can't get %s service entry\n", service); + return (-1); + } + phe = gethostbyname(host); + if (phe) { + memcpy(&sin.sin_addr, phe->h_addr, phe->h_length); + } else if ((sin.sin_addr.s_addr = inet_addr(host)) == INADDR_NONE) { + lprintf(1, "Can't get %s host entry: %s\n", + host, strerror(errno)); + return (-1); + } + if ((ppe = getprotobyname("tcp")) == 0) { + lprintf(1, "Can't get TCP protocol entry: %s\n", + strerror(errno)); + return (-1); + } + + s = socket(PF_INET, SOCK_STREAM, ppe->p_proto); + if (s < 0) { + lprintf(1, "Can't create socket: %s\n", strerror(errno)); + return (-1); + } + signal(SIGALRM, timeout); + alarm(30); + + if (connect(s, (struct sockaddr *) &sin, sizeof(sin)) < 0) { + lprintf(1, "Can't connect to %s.%s: %s\n", + host, service, strerror(errno)); + close(s); + return (-1); + } + alarm(0); + signal(SIGALRM, SIG_IGN); + + return (s); +} + + + + +/** + * \brief Input binary data from socket + * \param buf the buffer to get the input to + * \param bytes the maximal number of bytes to read + */ +void serv_read(char *buf, int bytes) +{ + int len, rlen; + + len = 0; + while (len < bytes) { + rlen = read(WC->serv_sock, &buf[len], bytes - len); + if (rlen < 1) { + lprintf(1, "Server connection broken: %s\n", + strerror(errno)); + close(WC->serv_sock); + WC->serv_sock = (-1); + WC->connected = 0; + WC->logged_in = 0; + memset(buf, 0, bytes); + return; + } + len = len + rlen; + } +} + + +/** + * \brief input string from pipe + */ +void serv_getln(char *strbuf, int bufsize) +{ + int ch, len; + char buf[2]; + + len = 0; + strbuf[0] = 0; + do { + serv_read(&buf[0], 1); + ch = buf[0]; + if ((ch != 13) && (ch != 10)) { + strbuf[len++] = ch; + } + } while ((ch != 10) && (ch != 0) && (len < (bufsize-1))); + strbuf[len] = 0; +#ifdef SERV_TRACE + lprintf(9, "%3d>%s\n", WC->serv_sock, strbuf); +#endif +} + + + +/** + * \brief send binary to server + * \param buf the buffer to write to citadel server + * \param nbytes how many bytes to send to citadel server + */ +void serv_write(char *buf, int nbytes) +{ + int bytes_written = 0; + int retval; + while (bytes_written < nbytes) { + retval = write(WC->serv_sock, &buf[bytes_written], + nbytes - bytes_written); + if (retval < 1) { + lprintf(1, "Server connection broken: %s\n", + strerror(errno)); + close(WC->serv_sock); + WC->serv_sock = (-1); + WC->connected = 0; + WC->logged_in = 0; + return; + } + bytes_written = bytes_written + retval; + } +} + + +/** + * \brief send line to server + * \param string the line to send to the citadel server + */ +void serv_puts(char *string) +{ + char buf[SIZ]; + +#ifdef SERV_TRACE + lprintf(9, "%3d<%s\n", WC->serv_sock, string); +#endif + sprintf(buf, "%s\n", string); + serv_write(buf, strlen(buf)); +} + + +/** + * \brief convenience function to send stuff to the server + * \param format the formatstring + * \param ... the entities to insert into format + */ +void serv_printf(const char *format,...) +{ + va_list arg_ptr; + char buf[SIZ]; + + va_start(arg_ptr, format); + vsnprintf(buf, sizeof buf, format, arg_ptr); + va_end(arg_ptr); + + strcat(buf, "\n"); + serv_write(buf, strlen(buf)); +#ifdef SERV_TRACE + lprintf(9, "<%s", buf); +#endif +} + + +/*@}*/ diff --git a/webcit/tiny_mce/blank.htm b/webcit/tiny_mce/blank.htm new file mode 100644 index 000000000..5a4a5a57c --- /dev/null +++ b/webcit/tiny_mce/blank.htm @@ -0,0 +1,9 @@ + + + blank_page + + + + + + diff --git a/webcit/tiny_mce/langs/ar.js b/webcit/tiny_mce/langs/ar.js new file mode 100644 index 000000000..e2e36d202 --- /dev/null +++ b/webcit/tiny_mce/langs/ar.js @@ -0,0 +1,43 @@ +// arabic lang variables +// Toolbar Items and Context Menu + +tinyMCE.addToLang('',{ +dir : 'rtl', +bold_desc : 'غامق', +italic_desc : 'مائل', +underline_desc : 'تسطير', +striketrough_desc : 'يتوسطه خط', +justifyleft_desc : 'محاذاة إلى اليسار', +justifycenter_desc : 'توسيط', +justifyright_desc : 'محاذاة إلى اليمين', +justifyfull_desc : 'ضبط', +bullist_desc : 'تعداد نقطي', +numlist_desc : 'تعداد رقمي', +outdent_desc : 'إنقاص المسافة البادئة', +indent_desc : 'زيادة المسافة البادئة', +undo_desc : 'تراجع', +redo_desc : 'إعادة', +link_desc : 'إدراج/تحرير رابط', +unlink_desc : 'إزالة رابط', +image_desc : 'إدراج/تحرير صورة', +cleanup_desc : 'Cleanup messy code', +focus_alert : 'A editor instance must be focused before using this command.', +edit_confirm : 'Do you want to use the WYSIWYG mode for this textarea?', +insert_link_title : 'إدراج/تحرير رابط', +insert : 'إدراج', +update : 'إدراج', +cancel : 'ألغي', +insert_link_url : 'رابط URL', +insert_link_target : 'الهدف', +insert_link_target_same : 'نفس الإطار', +insert_link_target_blank : 'إطار جديد (_blank)', +insert_image_title : 'إدراج/تحرير صورة', +insert_image_src : 'صورة URL', +insert_image_alt : 'الوصف', +help_desc : 'المساعدة', +bold_img : 'bold.gif', +italic_img : 'italic.gif', +underline_img : "underline.gif", +clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' +}); diff --git a/webcit/tiny_mce/langs/ca.js b/webcit/tiny_mce/langs/ca.js new file mode 100644 index 000000000..3f956f64a --- /dev/null +++ b/webcit/tiny_mce/langs/ca.js @@ -0,0 +1,41 @@ +// CA lang variables by Marc Bria + +tinyMCE.addToLang('',{ +bold_desc : 'Negreta', +italic_desc : 'Cursiva', +underline_desc : 'Subratllat', +striketrough_desc : 'Tatxat', +justifyleft_desc : 'Alinear a l´esquerra', +justifycenter_desc : 'Alinear al centre', +justifyright_desc : 'Alinear a la dreta', +justifyfull_desc : 'Alinear justificat', +bullist_desc : 'Llista sense ordenar', +numlist_desc : 'Llista ordenada', +outdent_desc : 'Disminueix sangria', +indent_desc : 'Augmentar sangria', +undo_desc : 'Desfer', +redo_desc : 'Refer', +link_desc : 'Insertar enllaç', +unlink_desc : 'Treure enllaç', +image_desc : 'Insertar imatge', +cleanup_desc : 'Netejar codi', +focus_alert : 'L´àrea de l´editor ha de ser enfocada abans d´executar aquesta comanda.', +edit_confirm : 'Vols utilitzar el modus WYSIWYG per a aquesta àrea de text?', +insert_link_title : 'Insertar/editar enllaç', +insert : 'Insertar', +update : 'Insertar', +cancel : 'Cancel·lar', +insert_link_url : 'Adreça de l´enllaç', +insert_link_target : 'Destí', +insert_link_target_same : 'Obrir enllaç a la mateixa finestra', +insert_link_target_blank : 'Obrir enllaç en una finestra nova', +insert_image_title : 'Insertar/editar imatge', +insert_image_src : 'URL de l´imatge', +insert_image_alt : 'Descripció de la imatge', +help_desc : 'Ajut', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Copiar/Tallar/Enganxar no és possible amb Mozilla i Firefox.\nVols més informació sobre aquest problema de seguretat?', +popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' +}); diff --git a/webcit/tiny_mce/langs/cs.js b/webcit/tiny_mce/langs/cs.js new file mode 100644 index 000000000..55578f3bd --- /dev/null +++ b/webcit/tiny_mce/langs/cs.js @@ -0,0 +1,52 @@ +/** + * Czech lang variables + * encoding: utf-8 + * + * @author Michi + * @author Pavel Novák + * @author Josef Klimosz + * + * $Id: cs.js,v 1.6 2005/10/18 13:59:21 spocke Exp $ + */ + + +tinyMCE.addToLang('',{ +bold_desc : 'Tučně', +italic_desc : 'Kurzíva', +underline_desc : 'Podtržení', +striketrough_desc : 'PřeÅ¡krtnutí', +justifyleft_desc : 'Zarovnání vlevo', +justifycenter_desc : 'Zarovnání na střed', +justifyright_desc : 'Zarovnání vpravo', +justifyfull_desc : 'Zarovnání do bloku', +bullist_desc : 'Seznam s odrážkami', +numlist_desc : 'Číslovaný seznam', +outdent_desc : 'Snížit odsazení', +indent_desc : 'Zvýšit odsazení', +undo_desc : 'Zpět', +redo_desc : 'Znovu', +link_desc : 'Vložit odkaz', +unlink_desc : 'ZruÅ¡it odkaz', +image_desc : 'Vložit obrázek', +cleanup_desc : 'Vyčistit kód', +focus_alert : 'Před použitím tohoto příkazu musí být kurzor v okně editoru.', +edit_confirm : 'Chcete použít WYSIWYG editaci pro tento text?', +insert_link_title : 'Vložit/upravit odkaz', +insert : 'Vložit', +update : 'Změnit', +cancel : 'ZruÅ¡it', +insert_link_url : 'URL odkazu', +insert_link_target : 'Cíl', +insert_link_target_same : 'Otevřít odkaz ve stejném okně', +insert_link_target_blank : 'Otevřít odkaz v novém okně', +insert_image_title : 'Vložit/upravit obrázek', +insert_image_src : 'URL obrázku', +insert_image_alt : 'Popis obrázku', +help_desc : 'Nápověda', +bold_img : 'bold.gif', +italic_img : 'italic.gif', +underline_img : "underline.gif", +clipboard_msg : 'Funkce Kopírovat/vyjmout/vložit nejsou použitelné v Mozille a Firefoxu.\nChcete více informací o tomto problému?', +popup_blocked : 'Omlouváme se, ale blokovač vyskakovacích oken neumožnil otevřít okno, které zprostředkovává funkčnost aplikace. Musíte vypnout blokování vyskakovacích oken na tomto webu, abyste využili plné funkčnosti.' +}); + diff --git a/webcit/tiny_mce/langs/cy.js b/webcit/tiny_mce/langs/cy.js new file mode 100644 index 000000000..6ef0f6c0f --- /dev/null +++ b/webcit/tiny_mce/langs/cy.js @@ -0,0 +1,41 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +bold_desc : 'Bold (Ctrl+B)', +italic_desc : 'Italig (Ctrl+I)', +underline_desc : 'Tanlinellu (Ctrl+U)', +striketrough_desc : 'Llinell drwodd', +justifyleft_desc : 'Unioni i\'r chwith', +justifycenter_desc : 'Unioni i\'r canol', +justifyright_desc : 'Unioni i\'r dde', +justifyfull_desc : 'Unioni llawn', +bullist_desc : 'Rhestr heb drefn', +numlist_desc : 'Rhestr mewn trefn', +outdent_desc : 'Lleihau mewnoliad', +indent_desc : 'Cynyddu mewnoliad', +undo_desc : 'Dadwneud (Ctrl+Z)', +redo_desc : 'Ailwneud (Ctrl+Y)', +link_desc : 'Mewnosod/golygu dolen', +unlink_desc : 'Dadgysylltu', +image_desc : 'Mewnosod/golygu delwedd', +cleanup_desc : 'Tacluso côd', +focus_alert : 'Rhaid rhoi ffocws i\'r golygydd cyn defnyddio\'r gorchymyn hwn.', +edit_confirm : 'Wyt ti eisiau defnyddio\'r dull WYSIWYG ar gyfer yr ardal destun hon?', +insert_link_title : 'Mewnosod/golygu dolen', +insert : 'Mewnosod', +update : 'Diweddaru', +cancel : 'Diddymu', +insert_link_url : 'URL dolen', +insert_link_target : 'Targed', +insert_link_target_same : 'Agor dolen yn yr un ffenest', +insert_link_target_blank : 'Agor dolen mewn ffenest newydd', +insert_image_title : 'Mewnosod/golygu delwedd', +insert_image_src : 'URL delwedd', +insert_image_alt : 'Disgrifiad delwedd', +help_desc : 'Cymorth', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Dyw Copïo/Torri/Gludo ddim ar gael ym Mozilla na Firefox.\nHoffet ti ragor o wybodaeth ynghylch hyn?', +popup_blocked : 'Mae\'n ddrwg gennym, ond mae dy declyn atal ffenestri naid wedi analluogi ffenest sy\'n cynnig nodweddion i\'r rhaglen. Bydd rhaid i ti analluogi atal ffenestri naid ar gyfer y safle hon er mwyn cael y defnydd gorau o\'r rhaglen hwn.' +}); diff --git a/webcit/tiny_mce/langs/da.js b/webcit/tiny_mce/langs/da.js new file mode 100644 index 000000000..c81acc11d --- /dev/null +++ b/webcit/tiny_mce/langs/da.js @@ -0,0 +1,41 @@ +// DK lang variables contributed by Jan Moelgaard + +tinyMCE.addToLang('',{ +bold_desc : 'Fed', +italic_desc : 'Kursiv', +underline_desc : 'Understreg', +striketrough_desc : 'Gennemstreg', +justifyleft_desc : 'Venstrestil', +justifycenter_desc : 'Centrer', +justifyright_desc : 'Højrestil', +justifyfull_desc : 'Lige margin', +bullist_desc : 'Liste med bullets', +numlist_desc : 'Liste med tal', +outdent_desc : 'Ryk til venstre', +indent_desc : 'Ryk til højre', +undo_desc : 'Fortryd', +redo_desc : 'Gør igen', +link_desc : 'Indsæt link', +unlink_desc : 'Fjern link', +image_desc : 'Indsæt billede', +cleanup_desc : 'Ryd op i koden', +focus_alert : 'Der skal sættes fokus på sessionen, før man kan bruge denne kommando', +edit_confirm : 'Vil du bruge WYSIWYG mode til dette textområde?', +insert_link_title : 'Indsæt eller rediger link', +insert : 'Indsæt', +update : 'Opdater', +cancel : 'Fortryd', +insert_link_url : 'Linkadresse', +insert_link_target : 'Destination', +insert_link_target_same : 'Luk linket op i samme vindue', +insert_link_target_blank : 'Luk linket op i et nyt vindue', +insert_image_title : 'Indsæt / rediger billede', +insert_image_src : 'Billedets adresse', +insert_image_alt : 'Alternativ tekst', +help_desc : 'Hjælp', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Kopier/Klip/Indsæt virker ikke i Mozilla og Firefox.\nVil du vide mere om dette?', +popup_blocked : 'Beklager, men din browser blokerer for pop-up-vinduer. Skal du bruge denne editor fuldt ud, skal pop-up-vinduer være tilladt.' +}); diff --git a/webcit/tiny_mce/langs/de.js b/webcit/tiny_mce/langs/de.js new file mode 100644 index 000000000..62e5a9624 --- /dev/null +++ b/webcit/tiny_mce/langs/de.js @@ -0,0 +1,41 @@ +// DE lang variables + +tinyMCE.addToLang('',{ +bold_desc : 'Fett', +italic_desc : 'Kursiv', +underline_desc : 'Unterstrichen', +striketrough_desc : 'Durchgestrichen', +justifyleft_desc : 'Linksbündig', +justifycenter_desc : 'Zentriert', +justifyright_desc : 'Rechtsbündig', +justifyfull_desc : 'Blocksatz', +bullist_desc : 'Aufzählungszeichen', +numlist_desc : 'Nummerierung', +outdent_desc : 'Einzug verkleinern', +indent_desc : 'Einzug vergrößern', +undo_desc : 'Rückgängig', +redo_desc : 'Wiederholen', +link_desc : 'Link einfügen/bearbeiten', +unlink_desc : 'Link entfernen', +image_desc : 'Bild einfügen/bearbeiten', +cleanup_desc : 'Unsauberen Code aufräumen', +focus_alert : 'Klicken Sie bitte vor Benutzung dieses Befehls auf das Editorfenster.', +edit_confirm : 'Wollen Sie den WYSIWYG-Modus für dieses Textfeld benutzen?', +insert_link_title : 'Link einfügen/bearbeiten', +insert : 'Einfügen', +update : 'Aktualisieren', +cancel : 'Abbrechen', +insert_link_url : 'Link-URL', +insert_link_target : 'Ziel', +insert_link_target_same : 'Link in gleichen Fester öffnen', +insert_link_target_blank : 'Link in neuen Fenster öffnen', +insert_image_title : 'Bild einfügen/bearbeiten', +insert_image_src : 'Bild-URL', +insert_image_alt : 'Bild-Beschreibung', +help_desc : 'Hilfe', +bold_img : "bold_de_se.gif", +italic_img : "italic_de_se.gif", +underline_img : "underline.gif", +clipboard_msg : 'Kopieren/Ausschneiden/Einfügen ist in Mozilla und Firefox nicht verfügbar.\nWollen Sie mehr Informationen darüber erhalten?', +popup_blocked : 'Ihr Popup-Blocker hat verhindert, dass das Bearbeitungsfenster des Editors geöffnet werden konnte. Bitte deaktivieren Sie den Popup-Schutz für diese Seite.' +}); diff --git a/webcit/tiny_mce/langs/el.js b/webcit/tiny_mce/langs/el.js new file mode 100644 index 000000000..d41b6199c --- /dev/null +++ b/webcit/tiny_mce/langs/el.js @@ -0,0 +1,41 @@ +// Greek lang variables by Jacaranda Bill + +tinyMCE.addToLang('',{ +bold_desc : '¸íôïíç ãñáöÞ', +italic_desc : 'ÐëÜãéá ãñáöÞ', +underline_desc : 'ÕðïãñÜììéóç', +striketrough_desc : 'ÄéáêñéôÞ äéáãñáöÞ', +justifyleft_desc : 'Óôïß÷éóç áñéóôåñÜ', +justifycenter_desc : 'Óôïß÷éóç óôï êÝíôñï', +justifyright_desc : 'Óôïß÷éóç äåîéÜ', +justifyfull_desc : 'ÐëÞñçò óôïß÷éóç', +bullist_desc : 'Êïõêêßäåò', +numlist_desc : 'Áñßèìçóç', +outdent_desc : 'Ìåßùóç åóï÷Þò', +indent_desc : 'Áýîçóç åóï÷Þò', +undo_desc : 'Áíáßñåóç', +redo_desc : 'Áêýñùóç áíáßñåóçò', +link_desc : 'Äçìéïõñãßá/Äéüñèùóç õðåñ-óýíäåóçò', +unlink_desc : 'ÄéáãñáöÞ õðåñ-óýíäåóçò', +image_desc : 'ÅéóáãùãÞ/Äéüñèùóç åéêüíáò', +cleanup_desc : 'ÊáèÜñéóìá êþäéêá', +focus_alert : 'ÐñÝðåé íá õðÜñ÷åé åíåñãüò êÜðïéïò åðåîåñãáóôÞò êåéìÝíïõ ðñéí íá ÷ñçóéìïðïéÞóåôå áõôÞ ôçí åíôïëÞ.', +edit_confirm : 'ÈÝëåôå íá ÷ñçóéìïðïéÞóåôå ôçí êáôÜóôáóç WYSIWYG ãéá ôï óõãêåêñéìÝíï ðëáßóéï êåéìÝíïõ;', +insert_link_title : 'Äçìéïõñãßá/Äéüñèùóç õðåñ-óýíäåóçò', +insert : 'ÅéóáãùãÞ', +update : 'ÅéóáãùãÞ', +cancel : 'Áêýñùóç', +insert_link_url : 'Äéåýèõíóç', +insert_link_target : 'Óôü÷ïò', +insert_link_target_same : '¢íïéãìá ôçò äéåýèõíóçò óôï ßäéï ðáñÜèõñï', +insert_link_target_blank : '¢íïéãìá ôçò äéåýèõíóçò óå íÝï ðáñÜèõñï', +insert_image_title : 'ÅéóáãùãÞ/Äéüñèùóç åéêüíáò', +insert_image_src : 'Äéåýèõíóç', +insert_image_alt : 'ÐåñéãñáöÞ', +help_desc : 'ÂïÞèåéá', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' +}); diff --git a/webcit/tiny_mce/langs/en.js b/webcit/tiny_mce/langs/en.js new file mode 100644 index 000000000..c093eafa0 --- /dev/null +++ b/webcit/tiny_mce/langs/en.js @@ -0,0 +1,41 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +bold_desc : 'Bold (Ctrl+B)', +italic_desc : 'Italic (Ctrl+I)', +underline_desc : 'Underline (Ctrl+U)', +striketrough_desc : 'Strikethrough', +justifyleft_desc : 'Align left', +justifycenter_desc : 'Align center', +justifyright_desc : 'Align right', +justifyfull_desc : 'Align full', +bullist_desc : 'Unordered list', +numlist_desc : 'Ordered list', +outdent_desc : 'Outdent', +indent_desc : 'Indent', +undo_desc : 'Undo (Ctrl+Z)', +redo_desc : 'Redo (Ctrl+Y)', +link_desc : 'Insert/edit link', +unlink_desc : 'Unlink', +image_desc : 'Insert/edit image', +cleanup_desc : 'Cleanup messy code', +focus_alert : 'A editor instance must be focused before using this command.', +edit_confirm : 'Do you want to use the WYSIWYG mode for this textarea?', +insert_link_title : 'Insert/edit link', +insert : 'Insert', +update : 'Update', +cancel : 'Cancel', +insert_link_url : 'Link URL', +insert_link_target : 'Target', +insert_link_target_same : 'Open link in the same window', +insert_link_target_blank : 'Open link in a new window', +insert_image_title : 'Insert/edit image', +insert_image_src : 'Image URL', +insert_image_alt : 'Image description', +help_desc : 'Help', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' +}); diff --git a/webcit/tiny_mce/langs/es.js b/webcit/tiny_mce/langs/es.js new file mode 100644 index 000000000..f51c4432e --- /dev/null +++ b/webcit/tiny_mce/langs/es.js @@ -0,0 +1,50 @@ +/** + * ES lang variables + * + * Authors : Alvaro Velasco, + * Adolfo Sanz De Diego (asanzdiego) , + * Carlos C Soto (eclipxe) + * Last Updated : October 17, 2005 + * TinyMCE Version : 2.0RC3 + */ + + +tinyMCE.addToLang('',{ +bold_desc : 'Negrita (Ctrl+B)', +italic_desc : 'Cursiva (Ctrl+I)', +underline_desc : 'Subrayado (Ctrl+U)', +striketrough_desc : 'Tachado', +justifyleft_desc : 'Alinear a la izquierda', +justifycenter_desc : 'Alinear al centro', +justifyright_desc : 'Alinear a la derecha', +justifyfull_desc : 'Alinear justificado', +bullist_desc : 'Lista sin ordenar', +numlist_desc : 'Lista ordenada', +outdent_desc : 'Disminuir sangría', +indent_desc : 'Aumentar sangría', +undo_desc : 'Deshacer', +redo_desc : 'Rehacer', +link_desc : 'Insertar enlace', +unlink_desc : 'Quitar enlace', +image_desc : 'Insertar imagen', +cleanup_desc : 'Limpiar codigo', +focus_alert : 'Una instanacia del editor debe ser enfocada antes de usar este comando.', +edit_confirm : '¿Quieres usar el modo WYSIWYG (What You See Is What You Get - "lo que ves es lo que obtienes") para esta area de texto?', +insert_link_title : 'Insertar/editar enlace', +insert : 'Insertar', +update : 'Actualizar', +cancel : 'Cancelar', +insert_link_url : 'Dirección del enlace', +insert_link_target : 'Destino', +insert_link_target_same : 'Abrir enlace en la misma ventana', +insert_link_target_blank : 'Abrir enlace en una ventana nueva', +insert_image_title : 'Insertar/editar imagen', +insert_image_src : 'Dirección de la imagen', +insert_image_alt : 'Descripción de la imagen', +help_desc : 'Ayuda', +bold_img : "bold_es.gif", +italic_img : "italic_es.gif", +underline_img : "underline_es.gif", +clipboard_msg : 'No se pueden utilizar los comandos Copiar / Cortar / Pegar en Mozilla y en Firefox.\r\nUse el teclado Copiar (Ctrl+C) / Cortar (Ctrl+X) / Pegar (Ctrl+V)\r\n¿Quieres obtener más información?', +popup_blocked : 'Lo siento, pero tu bloqueador de popups ha desactivado una ventana que ha lanzado la aplicación. Debes desactivar tu bloqueador de popups para tener toda la funcionalad de la aplicación.' +}); diff --git a/webcit/tiny_mce/langs/fa.js b/webcit/tiny_mce/langs/fa.js new file mode 100644 index 000000000..46623ad73 --- /dev/null +++ b/webcit/tiny_mce/langs/fa.js @@ -0,0 +1,46 @@ +// IR lang variables +// Persian (Farsi) language pack (for IRAN) +// By: Morteza Zafari +// Lost@LostLord.com +// http://www.LostLord.com + +tinyMCE.addToLang('',{ +dir : 'rtl', +bold_desc : '????', +italic_desc : '????', +underline_desc : '??? ?? ???', +striketrough_desc : '?? ?????', +justifyleft_desc : '?? ???', +justifycenter_desc : '??? ???', +justifyright_desc : '???? ???', +justifyfull_desc : '????? ???', +bullist_desc : '????', +numlist_desc : '???? ????', +outdent_desc : '???? ?????', +indent_desc : '?????? ?????', +undo_desc : '????????', +redo_desc : '????????', +link_desc : '??? ? ?????? ????', +unlink_desc : '??? ????', +image_desc : '??? ? ?????? ???', +cleanup_desc : '??????? ??', +focus_alert : 'A editor instance must be focused before using this command.', +edit_confirm : 'Do you want to use the WYSIWYG mode for this textarea?', +insert_link_title : '??? ? ?????? ????', +insert : ' ????? ', +update : ' ????? ', +cancel : ' ?????? ', +insert_link_url : 'URL ????', +insert_link_target : '????', +insert_link_target_same : '???? ?? ?? ???? ???? ??? ??', +insert_link_target_blank : '???? ?? ?? ???? ???? ??? ??', +insert_image_title : '??? ? ?????? ???', +insert_image_src : 'URL ???', +insert_image_alt : '?????', +help_desc : '??????', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' +}); diff --git a/webcit/tiny_mce/langs/fi.js b/webcit/tiny_mce/langs/fi.js new file mode 100644 index 000000000..31c0f88ab --- /dev/null +++ b/webcit/tiny_mce/langs/fi.js @@ -0,0 +1,42 @@ +// FI lang variables by Urho Konttori from Absolutions +// Updated by Tuomo Aura, Ateco.fi + +tinyMCE.addToLang('',{ +bold_desc : 'Lihavoi (Ctrl+B)', +italic_desc : 'Kursivoi (Ctrl+I)', +underline_desc : 'Alleviivaa (Ctrl+U)', +striketrough_desc : 'Yliviivaa', +justifyleft_desc : 'Vasen tasaus', +justifycenter_desc : 'Keskitys', +justifyright_desc : 'Oikea tasaus', +justifyfull_desc : 'Pakotettu tasaus', +bullist_desc : 'Luettelo', +numlist_desc : 'Numeroitu lista', +outdent_desc : 'Poista sisennyt', +indent_desc : 'Sisennys', +undo_desc : 'Peruuta (Ctrl+Z)', +redo_desc : 'Tee uudelleen (Ctrl+Y)', +link_desc : 'Lisää linkki', +unlink_desc : 'Poista linkki', +image_desc : 'Lisää kuva', +cleanup_desc : 'Siisti koodi', +focus_alert : 'Teksinkäsittelyalue täytyy olla valittuna ennen tämän komennon suorittamista.', +edit_confirm : 'Haluatko käyttää WYSIWYG-tilaa tähän tekstialueeseen?', +insert_link_title : 'Lisää/muokkaa linkkiä', +insert : 'Lisää', +update : 'Päivitä', +cancel : 'Peruuta', +insert_link_url : 'Linkin URL', +insert_link_target : 'Kohde', +insert_link_target_same : 'Avaa linkki samassa ikkunassa', +insert_link_target_blank : 'Avaa linkki uudessa ikkunassa', +insert_image_title : 'Lisää/muokkaa kuvaa', +insert_image_src : 'Kuvan URL', +insert_image_alt : 'Kuvan selite', +help_desc : 'Apua', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Leikkaus/Kopiointi/Liitäminen ei onnistu Mozilla eikä Firefox -selaimilla tietoturvasta johtuen. \n Haluatko lisätietoa aiheesta?', +popup_blocked : 'Koneellasi oleva popup-ikkunoiden esto-ohjelma estää tarvittavan ikkunan avaamisen. Sinun pitää sallia popup-ikkunoiden näyttäminen tällä sivustolla ohjelman asetuksista.' +}); diff --git a/webcit/tiny_mce/langs/fr.js b/webcit/tiny_mce/langs/fr.js new file mode 100644 index 000000000..e292df126 --- /dev/null +++ b/webcit/tiny_mce/langs/fr.js @@ -0,0 +1,43 @@ +// FR lang variables by Pat Boens +// Modify by Laurent Dran +// Modifié par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('',{ +bold_desc : 'Gras', +italic_desc : 'Italique', +underline_desc : 'Souligné', +striketrough_desc : 'Barré', +justifyleft_desc : 'Aligner à gauche', +justifycenter_desc : 'Centrer', +justifyright_desc : 'Aligner à droite', +justifyfull_desc : 'Justifier', +bullist_desc : 'Liste à puces', +numlist_desc : 'Liste numérotée', +outdent_desc : 'Diminuer le retrait', +indent_desc : 'Augmenter le retrait', +undo_desc : 'Annuler', +redo_desc : 'Restaurer', +link_desc : 'Insérer/Modifier un lien', +unlink_desc : 'Supprimer le lien', +image_desc : 'Insérer/Modifier une image', +cleanup_desc : 'Nettoyer le code', +focus_alert : 'Une instance de l\éditeur doit avoir le focus avant d\'utiliser cette commande.', +edit_confirm : 'Voulez-vous utiliser le mode WYSIWYG pour cette zone d\'édition de texte ?', +insert_link_title : 'Gestionnaire d\'hyperlien', +insert : 'Insérer', +update : 'Appliquer', +cancel : 'Annuler', +insert_link_url : 'Lien URL', +insert_link_target : 'Cible', +insert_link_target_same : 'Ouvrir dans la même fenêtre', +insert_link_target_blank : 'Ouvrir dans une nouvelle fenêtre', +insert_image_title : 'Gestionnaire d\'image', +insert_image_src : 'URL de l\'image', +insert_image_alt : 'Équivalent textuel', +help_desc : 'Aide', +bold_img : "bold_fr.gif", +italic_img : "italic.gif", +underline_img : "underline_fr.gif", +clipboard_msg : 'Pour des raisons de sécurité, les fonctions « Copier », « Couper » et « Coller »\nne sont pas disponibles dans Mozilla et Firefox.\n\n\nVoulez-vous plus d\'information à ce sujet?\n', +popup_blocked : 'Désolé, mais votre bloqueur de pop-up empêche le fonctionnement normal de l\'application.\n\n\nPour utiliser cet outil, veuillez régler votre navigateur pour qu\'il accepte les pop-up de ce site.' +}); diff --git a/webcit/tiny_mce/langs/fr_ca.js b/webcit/tiny_mce/langs/fr_ca.js new file mode 100644 index 000000000..4fd6e908f --- /dev/null +++ b/webcit/tiny_mce/langs/fr_ca.js @@ -0,0 +1,40 @@ +// Canadian French lang variables by Virtuelcom + +tinyMCE.addToLang('',{ +bold_desc : 'Gras', +italic_desc : 'Italique', +underline_desc : 'Souligner', +striketrough_desc : 'Barrer', +justifyleft_desc : 'Aligner à gauche', +justifycenter_desc : 'Aligner au centre', +justifyright_desc : 'Aligner à droite', +justifyfull_desc : 'Justifier', +bullist_desc : 'Puces', +numlist_desc : 'Numérotation', +outdent_desc : 'Réduire le retrait', +indent_desc : 'Augmenter le retrait', +undo_desc : 'Annuler la dernière action', +redo_desc : 'Refaire la dernière action annulée', +link_desc : 'Insérer un hyperlien', +unlink_desc : 'Supprimer un hyperlien', +image_desc : 'Insérer une image', +cleanup_desc : 'Nettoyer le code', +focus_alert : 'Un éditeur doit être sélectionné pour utiliser cette fonction.', +edit_confirm : 'Désirez-vous utiliser l\'éditeur pour modifier cette zone?', +insert_link_title : 'Insérer / Modifier un hyperlien', +insert : 'Insérer', +update : 'Insérer', +cancel : 'Annuler', +insert_link_url : 'Adresse URL', +insert_link_target : 'Destination', +insert_link_target_same : 'Ouvrir dans la même fenêtre', +insert_link_target_blank : 'Ouvrir dans une nouvelle fenêtre', +insert_image_title : 'Insérer / Modifier une image', +insert_image_src : 'Adresse de l\'image', +insert_image_alt : 'Description de l\'image', +help_desc : 'Aide', +bold_img : "bold_fr.gif", +italic_img : "italic.gif", +underline_img : "underline_fr.gif", +clipboard_msg : 'Copier/Couper/Coller ne sont pas disponibles dans Mozilla et FireFox.\nDésirez-vous consulter de plus amples informations à ce sujet?' +}); diff --git a/webcit/tiny_mce/langs/he.js b/webcit/tiny_mce/langs/he.js new file mode 100644 index 000000000..44719a82d --- /dev/null +++ b/webcit/tiny_mce/langs/he.js @@ -0,0 +1,41 @@ +// HE lang variables by Liron Newman, http://eesh.net + +tinyMCE.addToLang('',{ +bold_desc : 'îåãâù (Ctrl+B)', +italic_desc : 'ðèåé (Ctrl+I)', +underline_desc : '÷å úçúé (Ctrl+U)', +striketrough_desc : '÷å çåöä', +justifyleft_desc : 'éùø ìùîàì', +justifycenter_desc : 'éùø ìîøëæ', +justifyright_desc : 'éùø ìéîéï', +justifyfull_desc : 'éùø ìùðé äöããéí', +bullist_desc : 'øùéîä çñøú ñãø', +numlist_desc : 'øùéîä îñåãøú', +outdent_desc : 'ä÷èï ëðéñä', +indent_desc : 'äâãì ëðéñä', +undo_desc : 'áèì (Ctrl+Z)', +redo_desc : 'áöò ùåá (Ctrl+Y)', +link_desc : 'äëðñ/òøåê ÷éùåø', +unlink_desc : 'áèì ÷éùåø', +image_desc : 'äëðñ/òøåê úîåðä', +cleanup_desc : 'ð÷ä ÷åã îáåìâï', +focus_alert : 'éù ìáçåø áùãä òøéëä ìôðé ùðéúï ìäùúîù áô÷åãä æå.', +edit_confirm : 'äàí áøöåðê ìäùúîù áîöá òøéëä òùéøä (WYSIWYG) òáåø ùãä è÷ñè æä?', +insert_link_title : 'äëðñ/òøåê ÷éùåø', +insert : 'äëðñ', +update : 'òãëï', +cancel : 'áèì', +insert_link_url : 'ëúåáú (URL) ä÷éùåø', +insert_link_target : 'éòã', +insert_link_target_same : 'ôúç àú ä÷éùåø áàåúå çìåï', +insert_link_target_blank : 'ôúç àú ä÷éùåø áçìåï çãù', +insert_image_title : 'äëðñ/òøåê úîåðä', +insert_image_src : 'ëúåáú (URL) äúîåðä', +insert_image_alt : 'úéàåø äúîåðä', +help_desc : 'òæøä', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'ôòåìåú äòú÷ä/âæéøä/äãá÷ä àéðï ðúîëåú úçú Mozilla å-Firefox.\näàí áøöåðê ì÷áì îéãò ðåñó àåãåú ðåùà æä?', +popup_blocked : 'ñìéçä, àê ùîðå ìá ëé çåñí äçìåðåú ä÷åôöéí ùìê çñí çìåï ùîäååä çì÷ îäééùåí. úöèøê ìáèì àú çñéîú äçìåðåú ä÷åôöéí áàúø æä ëãé ìðöì ëìé æä áîìåàå.' +}); diff --git a/webcit/tiny_mce/langs/hu.js b/webcit/tiny_mce/langs/hu.js new file mode 100644 index 000000000..aebcc3695 --- /dev/null +++ b/webcit/tiny_mce/langs/hu.js @@ -0,0 +1,41 @@ +// HU lang variables + +tinyMCE.addToLang('',{ +bold_desc : 'Félkövér', +italic_desc : 'Dölt', +underline_desc : 'Aláhúzott', +striketrough_desc : 'Áthúzott', +justifyleft_desc : 'Balra igazított', +justifycenter_desc : 'Középre igazított', +justifyright_desc : 'Jobbra igazított', +justifyfull_desc : 'Telejesen igazított', +bullist_desc : 'Rendezetlen lista', +numlist_desc : 'Rendezett lista', +outdent_desc : 'Kihúzás', +indent_desc : 'Behúzás', +undo_desc : 'visszavonás', +redo_desc : 'Ismét', +link_desc : 'Link hozzáadása/szerkesztése', +unlink_desc : 'Link megszüntetése', +image_desc : 'Kép beillesztése/szerkesztése', +cleanup_desc : 'Rendetlen kód tisztítása', +focus_alert : 'Egy szerkesztõablakra muszáj fókuszálni ennek a parancsnak a használata elõtt.', +edit_confirm : 'Szeretnéd használni ezt a WYSIWYG módot ehhez a szövegmezõhöz?', +insert_link_title : 'Link beillesztése/szerkesztése', +insert : 'Beillesztés', +update : 'Frissítés', +cancel : 'Mégse', +insert_link_url : 'Link URL', +insert_link_target : 'Cél', +insert_link_target_same : 'Link megnyitása ugyanabban az ablakban', +insert_link_target_blank : 'Link megnyitása új ablakban', +insert_image_title : 'Kép beillesztése/szerkesztése', +insert_image_src : 'Kép URL', +insert_image_alt : 'Kép leírása', +help_desc : 'Súgó', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'A Másolás/Kivágás/Beillesztés nem elérhetõ Mozillában and Firefox-ban.\nSzeretnél több információt errõl a problémáról?', +popup_blocked : 'Sajnálom, de észrevettem, hogy a popup-blokkolód letiltotta az ablakot, ami biztosítja ennek az alkalmazásnak a mûködését. Meg kell szüntetned a popup-blokkolást ennek a segédeszköznek a teljes használatához.' +}); diff --git a/webcit/tiny_mce/langs/is.js b/webcit/tiny_mce/langs/is.js new file mode 100644 index 000000000..9bb4f9f2f --- /dev/null +++ b/webcit/tiny_mce/langs/is.js @@ -0,0 +1,41 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('',{ +bold_desc : 'Feitletrun (Ctrl+B)', +italic_desc : 'Skáletrun (Ctrl+I)', +underline_desc : 'Undirstrikun (Ctrl+U)', +striketrough_desc : 'Strik í gegn', +justifyleft_desc : 'Vinstri jöfnun', +justifycenter_desc : 'Miðju jöfnun', +justifyright_desc : 'Hægri jöfnun', +justifyfull_desc : 'Samfelld jöfnun', +bullist_desc : 'Óraðaður listi', +numlist_desc : 'Raðaður listi', +outdent_desc : 'Útdráttur', +indent_desc : 'Inndráttur', +undo_desc : 'Afturkalla (Ctrl+Z)', +redo_desc : 'Endurkalla (Ctrl+Y)', +link_desc : 'Setja inn/breyta hlekk', +unlink_desc : 'Fjarlægja hlekk', +image_desc : 'Setja inn/breyta mynd', +cleanup_desc : 'Hreinsa ruslkóða', +focus_alert : 'Setja þarf bendil í ritsvæði áður en þessi skipun er notuð.', +edit_confirm : 'Viltu nota WYSIWYG á þessum reit?', +insert_link_title : 'Nýr/breyttur hlekkur', +insert : 'Setja inn', +update : 'Uppfæra', +cancel : 'Hætta við', +insert_link_url : 'Slóð hlekks', +insert_link_target : 'Gluggi', +insert_link_target_same : 'Opna tengil í sama glugga', +insert_link_target_blank : 'Opna tengil í nýjum glugga', +insert_image_title : 'Ný/breytt mynd', +insert_image_src : 'Slóð myndar', +insert_image_alt : 'Lýsing myndar', +help_desc : 'Hjálp', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Afrita/skeyta/líma er ekki leyft í vafranum.\nViltu fá frekari upplýsingar um hvernig á að stilla það?', +popup_blocked : 'Afsakið, gluggavörn vafrans hefur meinað glugga, sem umsjónarkerfið notar, leyfi til þess að opnast. Þú verður að leyfa þessum vef að opna sprettiglugga (popup) til að geta nýtt þennan möguleika.' +}); diff --git a/webcit/tiny_mce/langs/it.js b/webcit/tiny_mce/langs/it.js new file mode 100644 index 000000000..ecbc7a6b6 --- /dev/null +++ b/webcit/tiny_mce/langs/it.js @@ -0,0 +1,41 @@ +// Variabili lingua IT - fabrix.xm@lombardiacom.it + +tinyMCE.addToLang('',{ +bold_desc : 'Grassetto', +italic_desc : 'Corsivo', +underline_desc : 'Sottolineato', +striketrough_desc : 'Barrato', +justifyleft_desc : 'Allinea a sinistra', +justifycenter_desc : 'Allinea centrato', +justifyright_desc : 'Allinea a destra', +justifyfull_desc : 'Giustifica', +bullist_desc : 'Lista non ordinata', +numlist_desc : 'Lista ordinata', +outdent_desc : 'Rientra', +indent_desc : 'Indenta', +undo_desc : 'Annulla', +redo_desc : 'Ripeti', +link_desc : 'Inserisci link', +unlink_desc : 'Elimina link', +image_desc : 'Inserisci immagine', +cleanup_desc : 'Pulisci il codice', +focus_alert : 'Una istanza dell\' editor deve essere selezionata prima di usare questo comando.', +edit_confirm : 'Vuoi usare la modalit\u00E0 WYSIWYG per questa textarea?', +insert_link_title : 'Inserisci/modifica link', +insert : 'Inserisci', +update : 'Inserisci', +cancel : 'Cancella', +insert_link_url : 'Link URL', +insert_link_target : 'Target', +insert_link_target_same : 'Apri il link nella stessa finestra', +insert_link_target_blank : 'Apri il link in una nuova finestra', +insert_image_title : 'Inserisci/modifica immagine', +insert_image_src : 'URL immagine', +insert_image_alt : 'Descrizione dell\'immagine', +help_desc : 'Guida', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Copia, Taglia e Incolla non sono disponibili in Mozilla e Firefox.\nVuoi maggiori dettegli su questo problema?', +popup_blocked : 'Spiacenti, un sistema di blocco popup ha impedito l\'apertura di una finestra necessaria per il funzionamento dell\'editor. Disabilita il blocco popup per questo sito se vuoi utilizzare tutte le funzionalità.' +}); diff --git a/webcit/tiny_mce/langs/ja.js b/webcit/tiny_mce/langs/ja.js new file mode 100644 index 000000000..1300ee4fc --- /dev/null +++ b/webcit/tiny_mce/langs/ja.js @@ -0,0 +1,41 @@ +// JP lang variables + +tinyMCE.addToLang('',{ +bold_desc : '$BB@;z(B', +italic_desc : '$BC@~(B', +justifyleft_desc : '$B:85M$a(B', +justifycenter_desc : '$BCf1{9g$o$;(B', +justifyright_desc : '$B1&5M$a(B', +justifyfull_desc : '$B9TB7$((B', +bullist_desc : '$B2U>r=q(B', +numlist_desc : '$BHV9fIU$-2U>r=q(B', +outdent_desc : '$B;z>e$2(B', +indent_desc : '$B;z2<$2(B', +undo_desc : '$B$d$j$J$*$7(B', +redo_desc : '$B:Fe$N$I$3$+$rA*Br$9$kI,MW$,$"$j$^$9!#(B', +edit_confirm : 'WYSIWYG$B%b!<%I$G$3$N%F%-%9%H%(%j%"$rJT=8$7$^$9$+!)(B', +insert_link_title : '$B%j%s%/$NA^F~(B/$BJT=8(B', +insert : '$BA^F~(B', +update : '$BA^F~(B', +cancel : '$BC$7(B', +insert_link_url : '$B%j%s%/@h(BURL', +insert_link_target : '$B%?!<%2%C%H(B', +insert_link_target_same : '$BF1$8Ak$G%j%s%/$r3+$/(B', +insert_link_target_blank : '$B?7$7$$Ak$G%j%s%/$r3+$/(B', +insert_image_title : '$B2hA|$NA^F~(B/$BJT=8(B', +insert_image_src : '$B2hA|$N(BURL', +insert_image_alt : '$B2hA|$N@bL@(B', +help_desc : '$B%X%k%W(B', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' +}); diff --git a/webcit/tiny_mce/langs/ko.js b/webcit/tiny_mce/langs/ko.js new file mode 100644 index 000000000..3ac5b4d4b --- /dev/null +++ b/webcit/tiny_mce/langs/ko.js @@ -0,0 +1,40 @@ +// KO lang variables by Setzer Gabbiani + +tinyMCE.addToLang('',{ +bold_desc : 'ÁøÇÏ°Ô', +italic_desc : '±â¿ïÀÓ', +underline_desc : '¹ØÁÙ', +striketrough_desc : '°¡·ÎÁÙ', +justifyleft_desc : '¿ÞÂÊ Á¤·Ä', +justifycenter_desc : '°¡¿îµ¥ Á¤·Ä', +justifyright_desc : '¿À¸¥ÂÊ Á¤·Ä', +justifyfull_desc : '¾çÂÊ Á¤·Ä', +bullist_desc : '¸ñÂ÷ ¸Å±â±â', +numlist_desc : '¹øÈ£ ¸Å±â±â', +outdent_desc : '³»¾î¾²±â', +indent_desc : 'µé¿©¾²±â', +undo_desc : '½ÇÇàÃë¼Ò', +redo_desc : 'Àç½ÇÇà', +link_desc : '¸µÅ© ³Ö±â/°íÄ¡±â', +unlink_desc : '¸µÅ© ÇØÁ¦', +image_desc : '±×¸² ³Ö±â/°íÄ¡±â', +cleanup_desc : 'Äڵ带 ±ò²ûÇÏ°Ô', +focus_alert : 'ÀÌ ¸í·ÉÀ» ½ÇÇàÇϱâ Àü¿¡ ¹Ýµå½Ã ¿¡µðÅÍ ³»ÀÇ ¾îµò°¡¿¡ Ä¿¼­°¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù.', +edit_confirm : 'ÀÌ ÅؽºÆ® ¹Ú½º¿¡¼­ HTML ¿¡µðÅ͸¦ »ç¿ëÇÏ±æ ¿øÇϽʴϱî?', +insert_link_title : '¸µÅ© ³Ö±â/°íÄ¡±â', +insert : '»ðÀÔ', +update : '»ðÀÔ', +cancel : 'Ãë¼Ò', +insert_link_url : 'URL ¸µÅ©', +insert_link_target : 'Ÿ°Ù', +insert_link_target_same : '°°Àº â¿¡¼­ ¸µÅ© ¿­±â', +insert_link_target_blank : '»õ â¿¡¼­ ¸µÅ© ¿­±â', +insert_image_title : '±×¸² ³Ö±â/°íÄ¡±â', +insert_image_src : '±×¸² URL', +insert_image_alt : '±×¸² ¼³¸í', +help_desc : 'µµ¿ò¸»', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' +}); diff --git a/webcit/tiny_mce/langs/nb.js b/webcit/tiny_mce/langs/nb.js new file mode 100644 index 000000000..2e6968dc0 --- /dev/null +++ b/webcit/tiny_mce/langs/nb.js @@ -0,0 +1,41 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +bold_desc : 'Fet', +italic_desc : 'Kursiv', +underline_desc : 'Understreking', +striketrough_desc : 'Gjennomstreking', +justifyleft_desc : 'Venstrestill', +justifycenter_desc : 'Sentrer', +justifyright_desc : 'Høyrestill', +justifyfull_desc : 'Blokkjustering', +bullist_desc : 'Punktliste', +numlist_desc : 'Nummerliste', +outdent_desc : 'Reduser innrykk', +indent_desc : 'Øk innrykk', +undo_desc : 'Angre', +redo_desc : 'Gjør om', +link_desc : 'Opprett/endre lenke', +unlink_desc : 'Fjern lenke', +image_desc : 'Sett inn/endre bilde', +cleanup_desc : 'Rens grisete kode', +focus_alert : 'Editoren må være i fokus før du benytter denne kommando.', +edit_confirm : 'Vil du benytte WYSIWYG editoren for dette tekstfelt?', +insert_link_title : 'Opprett/endre lenke', +insert : 'Sett inn', +update : 'Oppdater', +cancel : 'Avbryt', +insert_link_url : 'Lenkens URL', +insert_link_target : 'Vindu', +insert_link_target_same : 'Åpne i samme vindu', +insert_link_target_blank : 'Åpne i nytt vindu', +insert_image_title : 'Opprett/endre bilde', +insert_image_src : 'Bildets URL', +insert_image_alt : 'Bildets beskrivelse', +help_desc : 'Hjelp', +bold_img : 'bold_de_se.gif', +italic_img : 'italic_de_se.gif', +underline_img : 'underline.gif', +clipboard_msg : 'Klipp ut/Kopier/Lim inn fungerer ikke i Mozilla og Firefox. Vil du vite mer om dette?', +popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' +}); diff --git a/webcit/tiny_mce/langs/nl.js b/webcit/tiny_mce/langs/nl.js new file mode 100644 index 000000000..7e292525a --- /dev/null +++ b/webcit/tiny_mce/langs/nl.js @@ -0,0 +1,42 @@ +// NL lang variables thanks to "Meint Post" +// Updates by (2.0) Mark van der Sanden + +tinyMCE.addToLang('',{ +bold_desc : 'Vet (Ctrl+B)', +italic_desc : 'Cursief (Ctrl+I)', +underline_desc : 'Onderstrepen (Ctrl+U)', +striketrough_desc : 'Doorhalen', +justifyleft_desc : 'Links uitlijnen', +justifycenter_desc : 'Centreren', +justifyright_desc : 'Rechts uitlijnen', +justifyfull_desc : 'Volledig uitlijnen', +bullist_desc : 'Opsommingstekens', +numlist_desc : 'Genummerde lijst', +outdent_desc : 'Inspringen verkleinen', +indent_desc : 'Inspringen vergroten', +undo_desc : 'Ongedaan maken (Ctrl+Z)', +redo_desc : 'Opnieuw (Ctrl+Y)', +link_desc : 'Hyperlink invoegen/bewerken', +unlink_desc : 'Hyperlink verwijderen', +image_desc : 'Afbeelding invoegen', +cleanup_desc : 'Code opschonen', +focus_alert : 'Klik op de tekst in de editor voor het uitvoeren van dit commando.', +edit_confirm : 'Wilt u de WYSIWYG modus voor deze textarea gebruiken?', +insert_link_title : 'Hyperlink invoegen/bewerken', +insert : 'OK', +update : 'Toepassen', +cancel : 'Annuleren', +insert_link_url : 'URL link', +insert_link_target : 'Bestemming', +insert_link_target_same : 'Open link in hetzelfde venster', +insert_link_target_blank : 'Open link in een nieuw venster', +insert_image_title : 'Afbeelding invoegen/bewerken', +insert_image_src : 'Afbeelding', +insert_image_alt : 'Beschrijving', +help_desc : 'Help', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Kopiëren/knippen/plakken is niet beschikbaar in Mozilla en Firefox.\nWilt u meer informatie over deze kwestie?', +popup_blocked : 'Uw browser heeft zojuist geweigerd een popup-venster te tonen. Waarschijnlijk gebruikt u een poup-blocker die voor deze editor te streng omgaat met popups. Om het venster toch te tonen, zult u uw popup-blocker zo in moeten stellen dat het popups van deze website toestaat.' +}); diff --git a/webcit/tiny_mce/langs/nn.js b/webcit/tiny_mce/langs/nn.js new file mode 100644 index 000000000..72a2d68ec --- /dev/null +++ b/webcit/tiny_mce/langs/nn.js @@ -0,0 +1,41 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +bold_desc : 'Feit', +italic_desc : 'Kursiv', +underline_desc : 'Understreking', +striketrough_desc : 'Gjennomstreking', +justifyleft_desc : 'Venstrestill', +justifycenter_desc : 'Sentrer', +justifyright_desc : 'Høgrestill', +justifyfull_desc : 'Blokkjustering', +bullist_desc : 'Punktliste', +numlist_desc : 'Nummerliste', +outdent_desc : 'Reduser innrykk', +indent_desc : 'Auk innrykk', +undo_desc : 'Angre', +redo_desc : 'Gjer om', +link_desc : 'Opprett/endre lenke', +unlink_desc : 'Fjern lenke', +image_desc : 'Sett inn/endre bilde', +cleanup_desc : 'Rens grisete kode', +focus_alert : 'Editoren må være i fokus før du benytter denne kommando.', +edit_confirm : 'Vil du benytte WYSIWYG editoren for dette tekstfelt?', +insert_link_title : 'Opprett/endre lenke', +insert : 'Sett inn', +update : 'Oppdater', +cancel : 'Avbryt', +insert_link_url : 'Lenkens URL', +insert_link_target : 'Vindu', +insert_link_target_same : 'Åpne i samme vindauge', +insert_link_target_blank : 'Åpne i nytt vindauge', +insert_image_title : 'Opprett/endre bilde', +insert_image_src : 'Bildets URL', +insert_image_alt : 'Bildets beskrivelse', +help_desc : 'Hjelp', +bold_img : 'bold_de_se.gif', +italic_img : 'italic_de_se.gif', +underline_img : 'underline.gif', +clipboard_msg : 'Klipp ut/Kopier/Lim inn fungerer ikkje i Mozilla og Firefox. Vil du vite meir om dette?', +popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' +}); diff --git a/webcit/tiny_mce/langs/pl.js b/webcit/tiny_mce/langs/pl.js new file mode 100644 index 000000000..3fc44c268 --- /dev/null +++ b/webcit/tiny_mce/langs/pl.js @@ -0,0 +1,44 @@ +// PL lang variables +// fixed by Wooya +// http://www.mfusion.prv.pl +// fixed by lemiel 26.10.2005 + +tinyMCE.addToLang('',{ +bold_desc : 'Pogrubienie (Ctrl+B)', +italic_desc : 'Pochylenie (Ctrl+I)', +underline_desc : 'Podkre¶lenie (Ctrl+U)', +striketrough_desc : 'Przekre¶lenie', +justifyleft_desc : 'Wyrównaj do lewej', +justifycenter_desc : 'Wyrównaj do ¶rodka', +justifyright_desc : 'Wyrównaj do prawej', +justifyfull_desc : 'Wyrównaj na ca³o¶ci', +bullist_desc : 'Lista nienumerowana', +numlist_desc : 'Lista numerowana', +outdent_desc : 'Zmniejsz wciêcie', +indent_desc : 'Zwiêksz wciêcie', +undo_desc : 'Cofnij (Ctrl+Z)', +redo_desc : 'Ponów (Ctrl+Y)', +link_desc : 'Wstaw/edytuj link', +unlink_desc : 'Usuñ link', +image_desc : 'Wstaw/edytuj obrazek', +cleanup_desc : 'Usuñ zbêdny kod', +focus_alert : 'Instancja edytora musi byæ aktywna przed u¿yciem tego polecenia.', +edit_confirm : 'Czy chcesz u¿yæ edytora WYSIWYG dla tego pola tekstowego?', +insert_link_title : 'Wstaw/edytuj link', +insert : 'Wstaw', +update : 'Aktualizuj', +cancel : 'Anuluj', +insert_link_url : 'URL linku', +insert_link_target : 'Cel', +insert_link_target_same : 'Otwórz link w tym samym oknie', +insert_link_target_blank : 'Otwórz link w nowym oknie', +insert_image_title : 'Wstaw/edytuj obrazek', +insert_image_src : 'URL obrazka', +insert_image_alt : 'Opis obrazka', +help_desc : 'Pomoc', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Kopiuj/Wytnij/Wklej nie jest dostêpne dla przegl±darek Mozilla i Firefox.\nCzy chcesz uzyskaæ o tym wiêcej informacji?', +popup_blocked : 'Niestety, ale odnotowano, ¿e Twoja przegl±darka ma w³±czon± blokadê okienek popup. Musisz wy³±czyæ opcjê blokowania okienek dla tej strony, aby TinyMCE móg³ pracowaæ z pe³n± funkcjonalno¶ci±.' +}); diff --git a/webcit/tiny_mce/langs/pt.js b/webcit/tiny_mce/langs/pt.js new file mode 100644 index 000000000..72dd319bf --- /dev/null +++ b/webcit/tiny_mce/langs/pt.js @@ -0,0 +1,42 @@ +// PT lang variables + +tinyMCE.addToLang('',{ +bold_desc : 'Negrito', +italic_desc : 'Itálico', +underline_desc : 'Sublinhar', +striketrough_desc : 'Riscado', +justifyleft_desc : 'Alinhar á esquerda', +justifycenter_desc : 'Alinhar ao centro', +justifyright_desc : 'Alinhar á direita', +justifyfull_desc : 'Justificado', +bullist_desc : 'Lista não ordenada', +numlist_desc : 'Lista ordenada', +outdent_desc : 'Retirar indentação', +indent_desc : 'Indentar', +undo_desc : 'Desfazer', +redo_desc : 'Refazer', +link_desc : 'Inserir Hiperligação', +unlink_desc : 'Remover hiperligação', +image_desc : 'Inserir Referência a imagem externa', +object_desc : 'Inserir Objecto Multimédia da Galeria', +cleanup_desc : 'Limpeza de código', +focus_alert : 'Uma instância do editor deverá estar seleccionada antes de utilizar este comando.', +edit_confirm : 'Deseja utilizar o modo visual de edição para ezta área de texto?', +insert_link_title : 'Inserir/editar hiperligação', +insert : 'Inserir', +update : 'Actualizar', +cancel : 'Cancelar', +insert_link_url : 'URL de hiperligação', +insert_link_target : 'Destino', +insert_link_target_same : 'Abrir endereço na mesma janela', +insert_link_target_blank : 'Abrir endereço numa nova janela', +insert_image_title : 'Inserir/editar imagem', +insert_image_src : 'Endereço da imagem', +insert_image_alt : 'Descrição alt.', +help_desc : 'Ajuda', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Copiar/Cortar/Colar não está disponível em Mozilla and Firefox.\nPretende obter mais informação acerca desta questão?', +popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' +}); diff --git a/webcit/tiny_mce/langs/pt_br.js b/webcit/tiny_mce/langs/pt_br.js new file mode 100644 index 000000000..e4f851ad9 --- /dev/null +++ b/webcit/tiny_mce/langs/pt_br.js @@ -0,0 +1,50 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : ???? + * Revision and modifications: + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('',{ +bold_desc : 'Negrito (Ctrl+B)', +italic_desc : 'Itálico (Ctrl+I)', +underline_desc : 'Sublinhar (Ctrl+U)', +striketrough_desc : 'Riscado', +justifyleft_desc : 'Alinhar à esquerda', +justifycenter_desc : 'Centralizado', +justifyright_desc : 'Alinhar à direita', +justifyfull_desc : 'Justificado', +bullist_desc : 'Lista não ordenada', +numlist_desc : 'Lista ordenada', +outdent_desc : 'Retirar indentação', +indent_desc : 'Indentar', +undo_desc : 'Desfazer (Ctrl+Z)', +redo_desc : 'Refazer (Ctrl+Y)', +link_desc : 'Inserir link', +unlink_desc : 'Remover link', +image_desc : 'Inserir Referência a imagem externa', +object_desc : 'Inserir Objeto Multimídia da Galeria', +cleanup_desc : 'Limpeza de código', +focus_alert : 'Uma instância do editor deverá estar selecionada antes de utilizar este comando.', +edit_confirm : 'Deseja utilizar o Modo Visual (WYSIWYG) de edição para esta área de texto?', +insert_link_title : 'Inserir/editar link', +insert : 'Inserir', +update : 'Atualizar', +cancel : 'Cancelar', +insert_link_url : 'URL do link', +insert_link_target : 'Destino', +insert_link_target_same : 'Abrir link na mesma janela', +insert_link_target_blank : 'Abrir link em uma nova janela', +insert_image_title : 'Inserir/editar imagem', +insert_image_src : 'Endereço (URL) da imagem', +insert_image_alt : 'Descrição da imagem', +help_desc : 'Ajuda', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Copiar/Cortar/Colar não está disponível no Mozilla e Firefox.\nPretende obter mais informação sobre esta questão?', +popup_blocked : 'Desculpe, mas sabemos que seu bloqueador de popup desativou uma que permite a funcionabilidade desta aplicação. Você precisa desativar seu bloqueador de popup neste site para que possa ser utilizado todos os recursos desta ferramenta.' +}); diff --git a/webcit/tiny_mce/langs/readme.txt b/webcit/tiny_mce/langs/readme.txt new file mode 100644 index 000000000..e23001b44 --- /dev/null +++ b/webcit/tiny_mce/langs/readme.txt @@ -0,0 +1,2 @@ +The language pack codes are based on ISO-639-2 +http://www.loc.gov/standards/iso639-2/englangn.html diff --git a/webcit/tiny_mce/langs/ru.js b/webcit/tiny_mce/langs/ru.js new file mode 100644 index 000000000..6ef3f1adb --- /dev/null +++ b/webcit/tiny_mce/langs/ru.js @@ -0,0 +1,43 @@ +// Russian windows-1251 translation by Vladimir Vitkovsky +// admin@transport.su +// www.webgui.uanet.biz + +tinyMCE.addToLang('',{ +bold_desc : 'Ïîëóæèðíûé', +italic_desc : 'Êóðñèâ', +underline_desc : 'Ïîä÷åðêíóòûé', +striketrough_desc : 'Ïåðå÷åðêíóòûé', +justifyleft_desc : 'Âûðàâíèâàíèå âëåâî', +justifycenter_desc : 'Âûðàâíèâàíèå ïî öåíòðó', +justifyright_desc : 'Âûðàâíèâàíèå âïðàâî', +justifyfull_desc : 'Ðàâíîìåðíîå çàïîëíåíèå', +bullist_desc : 'Ìàðêèðîâàííûé ñïèñîê', +numlist_desc : 'Íóìåðîâàííûé ñïèñîê', +outdent_desc : 'Óìåíüøèòü îòñòóï', +indent_desc : 'Óâåëè÷èòü îòñïóò', +undo_desc : 'Îòìåíèòü', +redo_desc : 'Âåðíóòü', +link_desc : 'Âñòàâèòü/èçìåíèòü ññûëêó', +unlink_desc : 'Óáðàòü ññûëêó', +image_desc : 'Âñòàâèòü/èçìåíèòü èçîáðàæåíèå', +cleanup_desc : 'Ïîä÷èñòèòü èçáûòî÷íûé êîä', +focus_alert : 'Äëÿ èñïîëüçîâàíèÿ äàííîé êîìàíäû Âû äîëæíû íàõîäèòñÿ â ïîëå ðåäàêòîðà.', +edit_confirm : 'Õîòèòå ëè Âû ðåäàêòèðîâàòü â âèçóàëüíîì (WYSIWYG) ðåæèìå?', +insert_link_title : 'Âñòàâèòü/èçìåíèòü ññûëêó', +insert : 'Âñòàâèòü', +update : 'Ïðèìåíèòü', +cancel : 'Îòìåíèòü', +insert_link_url : 'Àäðåñ ññûëêè', +insert_link_target : 'Îòêðûòü â...:', +insert_link_target_same : 'òîì æå îêíå', +insert_link_target_blank : 'íîâîì îêíå', +insert_image_title : 'Âñòàâèòü/èçìåíèòü èçîáðàæåíèå', +insert_image_src : 'Àäðåñ êàðòèíêè', +insert_image_alt : 'Îïèñàíèå êàðòèíêè', +help_desc : 'Ïîìîùü', +bold_img : "bold_ru.gif", +italic_img : "italic_ru.gif", +underline_img : "underline_ru.gif", +clipboard_msg : 'Êîïèðîâàòü/Âûðåçàòü/Âñòàâèòü íåäîñòóïíû äëÿ Mozilla è Firefox.\nÕîòèòå óçíàòü îá ýòîì ïîäðîáíåå?', +popup_blocked : 'Èçâèíèòå, íî â Âàøåì áðàóçåðå çàáëîêèðîâàíû âñïëûâàþùèå îêíà. Äëÿ òîãî, ÷òîáû èìåòü âîçìîæíîñòü âîñïîëüçîâàòüñÿ âñåìè âîçìîæíîñòÿìè ðåäàêòîðà, íåîáõîäèìî îòêëþ÷èòü áëîêèðîâêó âñïëûâàþùèõ îêîí äëÿ ýòîãî ñàéòà.' +}); diff --git a/webcit/tiny_mce/langs/ru_KOI8-R.js b/webcit/tiny_mce/langs/ru_KOI8-R.js new file mode 100644 index 000000000..74168648c --- /dev/null +++ b/webcit/tiny_mce/langs/ru_KOI8-R.js @@ -0,0 +1,43 @@ +// Russian KOI8-R translation by Vladimir Vitkovsky +// admin@transport.su +// www.webgui.uanet.biz + +tinyMCE.addToLang('',{ +bold_desc : 'ðÏÌÕÖÉÒÎÙÊ', +italic_desc : 'ëÕÒÓÉ×', +underline_desc : 'ðÏÄÞÅÒËÎÕÔÙÊ', +striketrough_desc : 'ðÅÒÅÞÅÒËÎÕÔÙÊ', +justifyleft_desc : '÷ÙÒÁ×ÎÉ×ÁÎÉÅ ×ÌÅ×Ï', +justifycenter_desc : '÷ÙÒÁ×ÎÉ×ÁÎÉÅ ÐÏ ÃÅÎÔÒÕ', +justifyright_desc : '÷ÙÒÁ×ÎÉ×ÁÎÉÅ ×ÐÒÁ×Ï', +justifyfull_desc : 'òÁ×ÎÏÍÅÒÎÏÅ ÚÁÐÏÌÎÅÎÉÅ', +bullist_desc : 'íÁÒËÉÒÏ×ÁÎÎÙÊ ÓÐÉÓÏË', +numlist_desc : 'îÕÍÅÒÏ×ÁÎÎÙÊ ÓÐÉÓÏË', +outdent_desc : 'õÍÅÎØÛÉÔØ ÏÔÓÔÕÐ', +indent_desc : 'õ×ÅÌÉÞÉÔØ ÏÔÓÐÕÔ', +undo_desc : 'ïÔÍÅÎÉÔØ', +redo_desc : '÷ÅÒÎÕÔØ', +link_desc : '÷ÓÔÁ×ÉÔØ/ÉÚÍÅÎÉÔØ ÓÓÙÌËÕ', +unlink_desc : 'õÂÒÁÔØ ÓÓÙÌËÕ', +image_desc : '÷ÓÔÁ×ÉÔØ/ÉÚÍÅÎÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ', +cleanup_desc : 'ðÏÄÞÉÓÔÉÔØ ÉÚÂÙÔÏÞÎÙÊ ËÏÄ', +focus_alert : 'äÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÄÁÎÎÏÊ ËÏÍÁÎÄÙ ÷Ù ÄÏÌÖÎÙ ÎÁÈÏÄÉÔÓÑ × ÐÏÌÅ ÒÅÄÁËÔÏÒÁ.', +edit_confirm : 'èÏÔÉÔÅ ÌÉ ÷Ù ÒÅÄÁËÔÉÒÏ×ÁÔØ × ×ÉÚÕÁÌØÎÏÍ (WYSIWYG) ÒÅÖÉÍÅ?', +insert_link_title : '÷ÓÔÁ×ÉÔØ/ÉÚÍÅÎÉÔØ ÓÓÙÌËÕ', +insert : '÷ÓÔÁ×ÉÔØ', +update : 'ðÒÉÍÅÎÉÔØ', +cancel : 'ïÔÍÅÎÉÔØ', +insert_link_url : 'áÄÒÅÓ ÓÓÙÌËÉ', +insert_link_target : 'ïÔËÒÙÔØ ×...:', +insert_link_target_same : 'ÔÏÍ ÖÅ ÏËÎÅ', +insert_link_target_blank : 'ÎÏ×ÏÍ ÏËÎÅ', +insert_image_title : '÷ÓÔÁ×ÉÔØ/ÉÚÍÅÎÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ', +insert_image_src : 'áÄÒÅÓ ËÁÒÔÉÎËÉ', +insert_image_alt : 'ïÐÉÓÁÎÉÅ ËÁÒÔÉÎËÉ', +help_desc : 'ðÏÍÏÝØ', +bold_img : "bold_ru.gif", +italic_img : "italic_ru.gif", +underline_img : "underline_ru.gif", +clipboard_msg : 'ëÏÐÉÒÏ×ÁÔØ/÷ÙÒÅÚÁÔØ/÷ÓÔÁ×ÉÔØ ÎÅÄÏÓÔÕÐÎÙ ÄÌÑ Mozilla É Firefox.\nèÏÔÉÔÅ ÕÚÎÁÔØ Ï ÜÔÏÍ ÐÏÄÒÏÂÎÅÅ?', +popup_blocked : 'éÚ×ÉÎÉÔÅ, ÎÏ × ÷ÁÛÅÍ ÂÒÁÕÚÅÒÅ ÚÁÂÌÏËÉÒÏ×ÁÎÙ ×ÓÐÌÙ×ÁÀÝÉÅ ÏËÎÁ. äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÉÍÅÔØ ×ÏÚÍÏÖÎÏÓÔØ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ ×ÓÅÍÉ ×ÏÚÍÏÖÎÏÓÔÑÍÉ ÒÅÄÁËÔÏÒÁ, ÎÅÏÂÈÏÄÉÍÏ ÏÔËÌÀÞÉÔØ ÂÌÏËÉÒÏ×ËÕ ×ÓÐÌÙ×ÁÀÝÉÈ ÏËÏÎ ÄÌÑ ÜÔÏÇÏ ÓÁÊÔÁ.' +}); diff --git a/webcit/tiny_mce/langs/ru_UTF-8.js b/webcit/tiny_mce/langs/ru_UTF-8.js new file mode 100644 index 000000000..18c3d94f7 --- /dev/null +++ b/webcit/tiny_mce/langs/ru_UTF-8.js @@ -0,0 +1,43 @@ +// Russian UTF-8 translation by Vladimir Vitkovsky +// admin@transport.su +// www.webgui.uanet.biz + +tinyMCE.addToLang('',{ +bold_desc : 'Полужирный', +italic_desc : 'Курсив', +underline_desc : 'Подчеркнутый', +striketrough_desc : 'Перечеркнутый', +justifyleft_desc : 'Выравнивание влево', +justifycenter_desc : 'Выравнивание по центру', +justifyright_desc : 'Выравнивание вправо', +justifyfull_desc : 'Равномерное заполнение', +bullist_desc : 'Маркированный список', +numlist_desc : 'Нумерованный список', +outdent_desc : 'Уменьшить отступ', +indent_desc : 'Увеличить отспут', +undo_desc : 'Отменить', +redo_desc : 'Вернуть', +link_desc : 'Вставить/изменить ссылку', +unlink_desc : 'Убрать ссылку', +image_desc : 'Вставить/изменить изображение', +cleanup_desc : 'Подчистить избыточный код', +focus_alert : 'Для использования данной команды Вы должны находится в поле редактора.', +edit_confirm : 'Хотите ли Вы редактировать в визуальном (WYSIWYG) режиме?', +insert_link_title : 'Вставить/изменить ссылку', +insert : 'Вставить', +update : 'Применить', +cancel : 'Отменить', +insert_link_url : 'Адрес ссылки', +insert_link_target : 'Открыть в...:', +insert_link_target_same : 'том же окне', +insert_link_target_blank : 'новом окне', +insert_image_title : 'Вставить/изменить изображение', +insert_image_src : 'Адрес картинки', +insert_image_alt : 'Описание картинки', +help_desc : 'Помощь', +bold_img : "bold_ru.gif", +italic_img : "italic_ru.gif", +underline_img : "underline_ru.gif", +clipboard_msg : 'Копировать/Вырезать/Вставить недоступны для Mozilla и Firefox.\nХотите узнать об этом подробнее?', +popup_blocked : 'Извините, но в Вашем браузере заблокированы всплывающие окна. Для того, чтобы иметь возможность воспользоваться всеми возможностями редактора, необходимо отключить блокировку всплывающих окон для этого сайта.' +}); diff --git a/webcit/tiny_mce/langs/sk.js b/webcit/tiny_mce/langs/sk.js new file mode 100644 index 000000000..cd0c61b40 --- /dev/null +++ b/webcit/tiny_mce/langs/sk.js @@ -0,0 +1,50 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:43 spocke Exp $ + */ + + +tinyMCE.addToLang('',{ +bold_desc : 'Tučné', +italic_desc : 'Kurzivá', +underline_desc : 'Podčiarknutie', +striketrough_desc : 'PreÅ¡krtnutie', +justifyleft_desc : 'Zarovnanie vľavo', +justifycenter_desc : 'Zarovnanie na stred', +justifyright_desc : 'Zarovnanie vpravo', +justifyfull_desc : 'Zarovnanie do bloku', +bullist_desc : 'Zoznam s odrážkami', +numlist_desc : 'Číslovaný zoznam', +outdent_desc : 'SnížiÅ¥ odsadenie', +indent_desc : 'ZvýšiÅ¥ odsadenie', +undo_desc : 'Zpäť', +redo_desc : 'Znovu', +link_desc : 'VložiÅ¥ odkaz', +unlink_desc : 'ZruÅ¡iÅ¥ odkaz', +image_desc : 'VložiÅ¥ obrázok', +cleanup_desc : 'VyčistiÅ¥ kód', +focus_alert : 'Pred použitím tohoto príkazu musí byÅ¥ kurzor v okne editora.', +edit_confirm : 'Chcete použiÅ¥ WYSIWYG editáciu pre tento text?', +insert_link_title : 'VložiÅ¥/upraviÅ¥ odkaz', +insert : 'VložiÅ¥', +update : 'ZmeniÅ¥', +cancel : 'ZruÅ¡iÅ¥', +insert_link_url : 'URL odkazu', +insert_link_target : 'Cieľ', +insert_link_target_same : 'OtvoriÅ¥ odkaz v rovnakom okne', +insert_link_target_blank : 'OtvoriÅ¥ odkaz v novom okne', +insert_image_title : 'VložiÅ¥/upraviÅ¥ obrázok', +insert_image_src : 'URL obrázku', +insert_image_alt : 'Popis obrázku', +help_desc : 'Nápoveda', +bold_img : 'bold.gif', +italic_img : 'italic.gif', +underline_img : "underline.gif", +clipboard_msg : 'Funkcia KopírovaÅ¥/vysrihnúť/vložiÅ¥ niesú použiteľné v Mozille a Firefoxe.\nChcete viac informácií o tomto probléme?', +popup_blocked : 'Ospravedlňujeme sa, ale blokovač vyskakovacích okien neumožnil otvoriÅ¥ okno, ktoré zprostredkovává funkčnosÅ¥ aplikáce. Musíte vypnuÅ¥ blokovanie vyskakovacích okien na tomto webe, abyste využili jeho plnú funkčnosÅ¥.' +}); + diff --git a/webcit/tiny_mce/langs/sv.js b/webcit/tiny_mce/langs/sv.js new file mode 100644 index 000000000..f07ffa858 --- /dev/null +++ b/webcit/tiny_mce/langs/sv.js @@ -0,0 +1,43 @@ +// SE lang variables + +tinyMCE.addToLang('',{ +bold_desc : 'Fet', +italic_desc : 'Kursiv', +underline_desc : 'Understruken', +striketrough_desc : 'Genomstruken', +justifyleft_desc : 'Vänsterjustera', +justifycenter_desc : 'Centrera', +justifyright_desc : 'Högerjustera', +justifyfull_desc : 'Kantjustera', +bullist_desc : 'Punktlista', +numlist_desc : 'Nummerlista', +outdent_desc : 'Utdrag', +indent_desc : 'Indrag', +undo_desc : 'Ångra', +redo_desc : 'Gör om', +link_desc : 'Skapa länk', +unlink_desc : 'Ta bort länk', +image_desc : 'Skapa/redigera bild', +cleanup_desc : 'Rensa skräpkod', +focus_alert : 'Flytta markören till en textyta innan du använder detta kommando.', +edit_confirm : 'Vill du använda WYSIWYG-editorn för detta textfält?', +insert_link_title : 'Skapa/redigera länk', +insert : 'Skapa', +update : 'Uppdatera', +cancel : 'Avbryt', +insert_link_url : 'Länkens URL', +insert_link_target : 'Fönster', +insert_link_target_same : 'Öppna länken i samma fönster', +insert_link_target_blank : 'Öppna länken i ett nytt fönster', +insert_link_delta_width : 20, +insert_link_delta_height : 10, +insert_image_title : 'Skapa/redigera bild', +insert_image_src : 'Bildens URL', +insert_image_alt : 'Bildens beskrivning', +bold_img : 'bold_de_se.gif', +italic_img : 'italic_de_se.gif', +underline_img : "underline.gif", +clipboard_msg : 'Klipput/Kopiera/Klistra fungerar inte Mozilla och Firefox. Vill du veta mer om detta?', +help_desc : "Hjälp", +popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' +}); diff --git a/webcit/tiny_mce/langs/th.js b/webcit/tiny_mce/langs/th.js new file mode 100644 index 000000000..7e1d15005 --- /dev/null +++ b/webcit/tiny_mce/langs/th.js @@ -0,0 +1,40 @@ +// TH lang variables Thai contributed by Innozent + +tinyMCE.addToLang('',{ +bold_desc : 'µÑÇ˹Ò', +italic_desc : 'µÑÇéàÍÕ§', +underline_desc : '¢Õ´àÊé¹ãµé', +striketrough_desc : '¢Õ´¤ÅèÍÁ', +justifyleft_desc : 'ªÔ´¢Íº«éÒÂ', +justifycenter_desc : '¡Ö觡ÅÒ§', +justifyright_desc : 'ªÔ´¢Íº¢ÇÒ', +justifyfull_desc : '¨Ñ´ªÔ´¢Íº', +bullist_desc : 'ÊÑ­ÅѡɳìáÊ´§ËÑÇ¢éÍÂèÍÂ', +numlist_desc : 'ÅӴѺàÅ¢', +outdent_desc : 'Å´¡ÒÃàÂ×éͧ', +indent_desc : 'à¾ÔèÁ¡ÒÃàÂ×éͧ', +undo_desc : 'àÅÔ¡·Ó', +redo_desc : '·ÓãËÁè', +link_desc : 'à¾ÔèÁÅÔ§¤ì', +unlink_desc : 'źÅÔ§¤ì', +image_desc : 'ãÊèÃÙ»', +cleanup_desc : '·Ó¤ÇÒÁÊÐÍÒ´¢éͤÇÒÁ', +focus_alert : 'µéͧàÅ×Í¡¡Åèͧ¢éͤÇÒÁ¡è͹·Õè¨Ðãªé¤ÓÊÑ觹Õé', +edit_confirm : '¤Ø³µéͧ¡Ò÷Õè¨Ðãªé WYSIWYG mode ÊÓËÃѺ¡Åèͧ¢éͤÇÒÁ¹ÕéËÃ×ÍäÁè?', +insert_link_title : 'à¾ÔèÁ/á¡éä¢ ÅÔ§¤ì', +insert : 'à¾ÔèÁ', +cancel : '¡àÅÔ¡', +insert_link_url : 'Link URL', +insert_link_target : 'à»Ô´ÅÔ§¤ìã¹', +insert_link_target_same : '˹éÒµèÒ§à´ÕÂǡѹ', +insert_link_target_blank : '˹éÒµèÒ§ãËÁè', +insert_image_title : 'à¾ÔèÁ/á¡éä¢ ÃÙ»', +insert_image_src : 'URL ¢Í§ÃÙ»', +insert_image_alt : '¤Ó͸ԺÒÂÃÙ»', +help_desc : 'ªèÇÂàËÅ×Í', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' +}); diff --git a/webcit/tiny_mce/langs/zh_cn.js b/webcit/tiny_mce/langs/zh_cn.js new file mode 100644 index 000000000..46cd4038f --- /dev/null +++ b/webcit/tiny_mce/langs/zh_cn.js @@ -0,0 +1,41 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('',{ +bold_desc : 'ºÚÌå (Ctrl+B)', +italic_desc : 'бÌå (Ctrl+I)', +underline_desc : 'Ï»®Ïß (Ctrl+U)', +striketrough_desc : 'ɾ³ýÏß', +justifyleft_desc : '×ó¶ÔÆë', +justifycenter_desc : '¾ÓÖжÔÆë', +justifyright_desc : 'ÓÒ¶ÔÆë', +justifyfull_desc : 'Á½¶Ë¶ÔÆë', +bullist_desc : 'ÎÞÐòÁбí', +numlist_desc : 'ÓÐÐòÁбí', +outdent_desc : '¼õÉÙËõ½ø', +indent_desc : 'Ôö¼ÓËõ½ø', +undo_desc : '³·Ïû (Ctrl+Z)', +redo_desc : 'ÖØ×ö (Ctrl+Y)', +link_desc : '²åÈë/±à¼­ Á´½Ó', +unlink_desc : 'ɾ³ýÁ´½Ó', +image_desc : '²åÈë/±à¼­ ͼÏñ', +cleanup_desc : 'ɾ³ýÈßÓà´úÂë', +focus_alert : 'ÇëÏÈÑ¡Ôñ±à¼­Çø', +edit_confirm : 'ÄúÏëÔڱ༭ÇøÓòÉÏʹÓÃËù¼û¼´ËùµÃ±à¼­Æ÷ô£¿', +insert_link_title : '²åÈë/±à¼­ Á´½Ó', +insert : '²åÈë', +update : '¸üÐÂ', +cancel : 'È¡Ïû', +insert_link_url : 'Á´½ÓµØÖ·', +insert_link_target : 'Á´½ÓÄ¿±ê', +insert_link_target_same : 'ÔÚͬһ´°¿ÚÖдò¿ªÁ´½Ó', +insert_link_target_blank : 'ÔÚд°¿ÚÖдò¿ªÁ´½Ó', +insert_image_title : '²åÈë/±à¼­ ͼÏñ', +insert_image_src : 'ͼÏñµØÖ·', +insert_image_alt : 'ͼÏñÃèÊö', +help_desc : '°ïÖú', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : '¼ôÇÐ/¸´ÖÆ/Õ³Ìù¹¦ÄÜÔÚ Mozilla ºÍ Firefox ä¯ÀÀÆ÷Öв»Ö§³Ö¡£ÄúÏ£Íû»ñµÃ¸ü¶àµÄÐÅÏ¢Âð£¿', +popup_blocked : '¶Ô²»Æð, ÄúµÄä¯ÀÀÆ÷½ûÖ¹Á˵¯³öʽ´°¿Ú¡£ÎªÁËÈÃÄúʹÓõ½×îÍêÉƵŦÄÜ£¬Çë¶Ô±¾ÍøÕ¾µÄµ¯³öʽ´°¿Ú½â³ý½ûÖ¹¡£' +}); diff --git a/webcit/tiny_mce/langs/zh_tw.js b/webcit/tiny_mce/langs/zh_tw.js new file mode 100644 index 000000000..9d4e6d0de --- /dev/null +++ b/webcit/tiny_mce/langs/zh_tw.js @@ -0,0 +1,42 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +bold_desc : '²ÊÅé¡]Ctrl+B¡^', +italic_desc : '±×Åé¡]Ctrl+I¡^', +underline_desc : '¥[©³½u¡]Ctrl+U¡^', +striketrough_desc : '§R°£½u', +justifyleft_desc : '¾a¥ª', +justifycenter_desc : '¸m¤¤', +justifyright_desc : '¾a¥k', +justifyfull_desc : '¾ã½g¹ï»ô', +bullist_desc : '¶µ¥Ø¤è¦¡±ø¦C', +numlist_desc : '½s¸¹¤è¦¡±ø¦C', +outdent_desc : 'ÂX¤jÁY±Æ', +indent_desc : '´î¤pÁY±Æ', +undo_desc : '´_­ì¡]Ctrl+Z¡^', +redo_desc : '­«½Æ¡]Ctrl+Y¡^', +link_desc : '´¡¤J©Î½s¿è³sµ²', +unlink_desc : '§R°£³sµ²', +image_desc : '´¡¤J©Î½s¿è¹ÏÀÉ', +cleanup_desc : '²M°£¤¾½X', +focus_alert : '¨Ï¥Î¦¹«ü¥O«e¶·¥ý«ü©w½s¿è¾¹', +edit_confirm : '­n©ó¦¹¤å¦r¿é¤J°Ï¤¤±Ä¥Î©Òµø§Y±o¼Ò¦¡¶Ü¡H', +insert_link_title : '´¡¤J©Î½s¿è³sµ²', +insert : '´¡¤J', +update : '§ó·s', +cancel : '¨ú®ø', +insert_link_url : '³sµ²ºô§}', +insert_link_target : '¹ï¶H', +insert_link_target_same : '©ó¦Pµøµ¡¤¤¶}±Ò³sµ²', +insert_link_target_blank : '¥H·sµøµ¡¤¤¶}±Ò³sµ²', +insert_image_title : '´¡¤J©Î½s¿è¹ÏÀÉ', +insert_image_src : '¹ÏÀɺô§}', +insert_image_alt : '¹ÏÀÉ»¡©ú', +help_desc : '¨ó§U', +bold_img : "bold_tw.gif", +italic_img : "italic_tw.gif", +underline_img : "underline_tw.gif", +clipboard_msg : '¦b Mozilla ©M Firefox ¤¤µLªk¨Ï¥Î½Æ»s©Î°Å¤U©Î¶K¤W¥\¯à¡C\n»Ý­n§ó¦hÃö©ó¦¹ªº°T®§¶Ü¡H', +popup_blocked : '³á¡I±z¦³³]¸m¸õ²{µøµ¡¹jµ´¾÷¨î¡A¤w±N¥\¯à¸õ²{µøµ¡µ¹¹jµ´¤F¡C\n½Ð½Õ¾ã¸õ²{µøµ¡¹jµ´¾÷¨îªº³]©w¡A¤~¯à¥¿±`¨Ï¥Î¦¹¥\¯à¡C' +}); \ No newline at end of file diff --git a/webcit/tiny_mce/langs/zh_tw_utf8.js b/webcit/tiny_mce/langs/zh_tw_utf8.js new file mode 100644 index 000000000..e39a16ce0 --- /dev/null +++ b/webcit/tiny_mce/langs/zh_tw_utf8.js @@ -0,0 +1,42 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +bold_desc : '粗體(Ctrl+B)', +italic_desc : '斜體(Ctrl+I)', +underline_desc : '加底線(Ctrl+U)', +striketrough_desc : '刪除線', +justifyleft_desc : '靠左', +justifycenter_desc : '置中', +justifyright_desc : '靠右', +justifyfull_desc : '整篇對齊', +bullist_desc : '項目方式條列', +numlist_desc : '編號方式條列', +outdent_desc : '擴大縮排', +indent_desc : '減小縮排', +undo_desc : '復原(Ctrl+Z)', +redo_desc : '重複(Ctrl+Y)', +link_desc : '插入或編輯連結', +unlink_desc : '刪除連結', +image_desc : '插入或編輯圖檔', +cleanup_desc : '清除冗碼', +focus_alert : '使用此指令前須先指定編輯器', +edit_confirm : '要於此文字輸入區中採用所視即得模式嗎?', +insert_link_title : '插入或編輯連結', +insert : '插入', +update : '更新', +cancel : '取消', +insert_link_url : '連結網址', +insert_link_target : '對象', +insert_link_target_same : '於同視窗中開啟連結', +insert_link_target_blank : '以新視窗中開啟連結', +insert_image_title : '插入或編輯圖檔', +insert_image_src : '圖檔網址', +insert_image_alt : '圖檔說明', +help_desc : '協助', +bold_img : "bold_tw.gif", +italic_img : "italic_tw.gif", +underline_img : "underline_tw.gif", +clipboard_msg : '在 Mozilla 和 Firefox 中無法使用複製或剪下或貼上功能。\n需要更多關於此的訊息嗎?', +popup_blocked : '喔!您有設置跳現視窗隔絕機制,已將功能跳現視窗給隔絕了。\n請調整跳現視窗隔絕機制的設定,才能正常使用此功能。' +}); diff --git a/webcit/tiny_mce/license.txt b/webcit/tiny_mce/license.txt new file mode 100644 index 000000000..3b0396a2b --- /dev/null +++ b/webcit/tiny_mce/license.txt @@ -0,0 +1,437 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. +. + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. +. + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. +. + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. +. + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. +. + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. +. + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. +. + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. +. + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/webcit/tiny_mce/plugins/_template/editor_plugin.js b/webcit/tiny_mce/plugins/_template/editor_plugin.js new file mode 100644 index 000000000..53472c824 --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/editor_plugin.js @@ -0,0 +1,118 @@ +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('template', 'en'); // <- Add a comma separated list of all supported languages + +/**** + * Steps for creating a plugin from this template: + * + * 1. Change all "template" to the name of your plugin. + * 2. Remove all the callbacks in this file that you don't need. + * 3. Remove the popup.htm file if you don't need any popups. + * 4. Add your custom logic to the callbacks you needed. + * 5. Write documentation in a readme.txt file on how to use the plugin. + * 6. Upload it under the "Plugins" section at sourceforge. + * + ****/ + +/** + * Gets executed when a editor instance is initialized + */ +function TinyMCE_template_initInstance(inst) { + // You can take out plugin specific parameters + alert("Initialization parameter:" + tinyMCE.getParam("template_someparam", false)); +} + +/** + * Gets executed when a editor needs to generate a button. + */ +function TinyMCE_template_getControlHTML(control_name) { + switch (control_name) { + case "template": + return ''; + } + + return ""; +} + +/** + * Gets executed when a command is called. + */ +function TinyMCE_template_execCommand(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + // Remember to have the "mce" prefix for commands so they don't intersect with built in ones in the browser. + case "mceTemplate": + // Show UI/Popup + if (user_interface) { + // Open a popup window and send in some custom data in a window argument + var template = new Array(); + + template['file'] = '../../plugins/template/popup.htm'; // Relative to theme + template['width'] = 300; + template['height'] = 200; + + tinyMCE.openWindow(template, {editor_id : editor_id, some_custom_arg : "somecustomdata"}); + + // Let TinyMCE know that something was modified + tinyMCE.triggerNodeChange(false); + } else { + // Do a command this gets called from the template popup + alert("execCommand: mceTemplate gets called from popup."); + } + + return true; + } + + // Pass to next handler in chain + return false; +} + +/** + * Gets executed when the selection/cursor position was changed. + */ +function TinyMCE_template_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + // Deselect template button + tinyMCE.switchClassSticky(editor_id + '_template', 'mceButtonNormal'); + + // Select template button if parent node is a strong or b + if (node.parentNode.nodeName == "STRONG" || node.parentNode.nodeName == "B") + tinyMCE.switchClassSticky(editor_id + '_template', 'mceButtonSelected'); + + return true; +} + +/** + * Gets executed when contents is inserted / retrived. + */ +function TinyMCE_template_cleanup(type, content) { + switch (type) { + case "get_from_editor": + alert("[FROM] Value HTML string: " + content); + + // Do custom cleanup code here + + break; + + case "insert_to_editor": + alert("[TO] Value HTML string: " + content); + + // Do custom cleanup code here + + break; + + case "get_from_editor_dom": + alert("[FROM] Value DOM Element " + content.innerHTML); + + // Do custom cleanup code here + + break; + + case "insert_to_editor_dom": + alert("[TO] Value DOM Element: " + content.innerHTML); + + // Do custom cleanup code here + + break; + } + + return content; +} diff --git a/webcit/tiny_mce/plugins/_template/editor_plugin_src.js b/webcit/tiny_mce/plugins/_template/editor_plugin_src.js new file mode 100644 index 000000000..7e181d104 --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/editor_plugin_src.js @@ -0,0 +1,132 @@ +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('template', 'en,he,nb,ru,ru_KOI8-R,ru_UTF-8,nn,fi,cy,es,is,pl'); // <- Add a comma separated list of all supported languages + +/**** + * Steps for creating a plugin from this template: + * + * 1. Change all "template" to the name of your plugin. + * 2. Remove all the callbacks in this file that you don't need. + * 3. Remove the popup.htm file if you don't need any popups. + * 4. Add your custom logic to the callbacks you needed. + * 5. Write documentation in a readme.txt file on how to use the plugin. + * 6. Upload it under the "Plugins" section at sourceforge. + * + ****/ + +/** + * Information about the plugin. + */ +function TinyMCE_template_getInfo() { + return { + longname : 'Template plugin', + author : 'Your name', + authorurl : 'http://www.yoursite.com', + infourl : 'http://www.yoursite.com/docs/template.html', + version : "1.0" + }; +}; + +/** + * Gets executed when a editor instance is initialized + */ +function TinyMCE_template_initInstance(inst) { + // You can take out plugin specific parameters + alert("Initialization parameter:" + tinyMCE.getParam("template_someparam", false)); +} + +/** + * Gets executed when a editor needs to generate a button. + */ +function TinyMCE_template_getControlHTML(control_name) { + switch (control_name) { + case "template": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceTemplate\', true);return false;'; + return ''; + } + + return ""; +} + +/** + * Gets executed when a command is called. + */ +function TinyMCE_template_execCommand(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + // Remember to have the "mce" prefix for commands so they don't intersect with built in ones in the browser. + case "mceTemplate": + // Show UI/Popup + if (user_interface) { + // Open a popup window and send in some custom data in a window argument + var template = new Array(); + + template['file'] = '../../plugins/template/popup.htm'; // Relative to theme + template['width'] = 300; + template['height'] = 200; + + tinyMCE.openWindow(template, {editor_id : editor_id, some_custom_arg : "somecustomdata"}); + + // Let TinyMCE know that something was modified + tinyMCE.triggerNodeChange(false); + } else { + // Do a command this gets called from the template popup + alert("execCommand: mceTemplate gets called from popup."); + } + + return true; + } + + // Pass to next handler in chain + return false; +} + +/** + * Gets executed when the selection/cursor position was changed. + */ +function TinyMCE_template_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + // Deselect template button + tinyMCE.switchClassSticky(editor_id + '_template', 'mceButtonNormal'); + + // Select template button if parent node is a strong or b + if (node.parentNode.nodeName == "STRONG" || node.parentNode.nodeName == "B") + tinyMCE.switchClassSticky(editor_id + '_template', 'mceButtonSelected'); + + return true; +} + +/** + * Gets executed when contents is inserted / retrived. + */ +function TinyMCE_template_cleanup(type, content) { + switch (type) { + case "get_from_editor": + alert("[FROM] Value HTML string: " + content); + + // Do custom cleanup code here + + break; + + case "insert_to_editor": + alert("[TO] Value HTML string: " + content); + + // Do custom cleanup code here + + break; + + case "get_from_editor_dom": + alert("[FROM] Value DOM Element " + content.innerHTML); + + // Do custom cleanup code here + + break; + + case "insert_to_editor_dom": + alert("[TO] Value DOM Element: " + content.innerHTML); + + // Do custom cleanup code here + + break; + } + + return content; +} diff --git a/webcit/tiny_mce/plugins/_template/images/template.gif b/webcit/tiny_mce/plugins/_template/images/template.gif new file mode 100644 index 0000000000000000000000000000000000000000..1ab5da4461113d2af579898528246fdbe52ecd00 GIT binary patch literal 87 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*pGzw+SQ`#f{}FJ-?!v#V)e mtsGNfpJeCKSAiOz**>0`XR2{OVa>-G_df0vaY_ */ + +tinyMCE.addToLang('',{ +template_title : 'Dette er bare en pop-up-skabelon', +template_desc : 'Dette er bare en testknap' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/de.js b/webcit/tiny_mce/plugins/_template/langs/de.js new file mode 100644 index 000000000..3aa213069 --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/de.js @@ -0,0 +1,9 @@ +// DE lang variables + +/* Remember to namespace the language parameters lang__ */ +/* Sprachparameter müssen als lang__ definiert werden */ + +tinyMCE.addToLang('',{ +template_title : 'Dies ist nur ein Beispiel-Popup', +template_desc : 'Dies ist nur ein Beispiel-Button' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/en.js b/webcit/tiny_mce/plugins/_template/langs/en.js new file mode 100644 index 000000000..2c3407690 --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/en.js @@ -0,0 +1,8 @@ +// UK lang variables + +/* Remember to namespace the language parameters lang__ */ + +tinyMCE.addToLang('',{ +template_title : 'This is just a template popup', +template_desc : 'This is just a template button' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/es.js b/webcit/tiny_mce/plugins/_template/langs/es.js new file mode 100644 index 000000000..8382e817b --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/es.js @@ -0,0 +1,14 @@ +/** + * ES lang variables + * + * Authors : Alvaro Velasco, + * Adolfo Sanz De Diego (asanzdiego) , + * Carlos C Soto (eclipxe) + * Last Updated : October 17, 2005 + * TinyMCE Version : 2.0RC3 + */ + +tinyMCE.addToLang('',{ +template_title : 'Esto es solo la plantilla de un popup', +template_desc : 'Esto es solo la plantilla de un botón' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/fr.js b/webcit/tiny_mce/plugins/_template/langs/fr.js new file mode 100644 index 000000000..709e48cf9 --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/fr.js @@ -0,0 +1,9 @@ +// Canadian French lang variables by Virtuelcom last modification: 2005-06-15 +// Modifié par Normand Lamoureux le 2005-11-12 + +/* N'oubliez pas d'identifer les paramètres de langue ainsi: _ */ + +tinyMCE.addToLang('',{ +template_title : 'Texte qui apparaîtra sous forme de titre dans la fenêtre pop-up de votre plugin', +template_desc : 'Texte qui apparaîtra sous forme d\'info-bulle au survol du bouton de votre plugin' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/fr_ca.js b/webcit/tiny_mce/plugins/_template/langs/fr_ca.js new file mode 100644 index 000000000..1c0fc957e --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/fr_ca.js @@ -0,0 +1,8 @@ +// Canadian French lang variables by Virtuelcom last modification: 2005-06-15 + +/* Remember to namespace the language parameters _ */ + +tinyMCE.addToLang('',{ +template_title : 'Ceci est un exmple pour le gabarit de popup', +template_desc : 'Ceci est un exmple pour le gabarit d\'un bouton' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/he.js b/webcit/tiny_mce/plugins/_template/langs/he.js new file mode 100644 index 000000000..71dbc4407 --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/he.js @@ -0,0 +1,8 @@ +// HE lang variables + +/* Remember to namespace the language parameters lang__ */ + +tinyMCE.addToLang('',{ +template_title : 'æä ñúí çìåï ÷åôõ ùì äúáðéú', +template_desc : 'æä ñúí ëôúåø ùì äúáðéú' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/hu.js b/webcit/tiny_mce/plugins/_template/langs/hu.js new file mode 100644 index 000000000..7a26f66ea --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/hu.js @@ -0,0 +1,8 @@ +// HU lang variables + +/* Remember to namespace the language parameters lang__ */ + +tinyMCE.addToLang('',{ +template_title : 'Ez csak egy példa popup', +template_desc : 'Ez csak egy példa gomb' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/is.js b/webcit/tiny_mce/plugins/_template/langs/is.js new file mode 100644 index 000000000..b3ed8e3c3 --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/is.js @@ -0,0 +1,8 @@ +// Iceland lang variables by Johannes Birgir Jensson + +/* Remember to namespace the language parameters lang__ */ + +tinyMCE.addToLang('',{ +template_title : 'Þetta er sniðmátsgluggi', +template_desc : 'Þetta er sniðmátstakki' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/nb.js b/webcit/tiny_mce/plugins/_template/langs/nb.js new file mode 100644 index 000000000..de1b13af2 --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/nb.js @@ -0,0 +1,8 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +/* Remember to namespace the language parameters lang__ */ + +tinyMCE.addToLang('',{ +template_title : 'Dette er bare en template popup', +template_desc : 'Dette er bare en template knapp' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/nl.js b/webcit/tiny_mce/plugins/_template/langs/nl.js new file mode 100644 index 000000000..1422b38fd --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/nl.js @@ -0,0 +1,8 @@ +// NL lang variables + +/* Remember to namespace the language parameters lang__ */ + +tinyMCE.addToLang('',{ +template_title : 'Dit is slechts een voorbeeldpopup', +template_desc : 'Dit is slechts een voorbeeldknop' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/nn.js b/webcit/tiny_mce/plugins/_template/langs/nn.js new file mode 100644 index 000000000..853d30c73 --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/nn.js @@ -0,0 +1,8 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +/* Remember to namespace the language parameters lang__ */ + +tinyMCE.addToLang('',{ +template_title : 'Dette er berre ein template popup', +template_desc : 'Dette er berre ein template knapp' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/pl.js b/webcit/tiny_mce/plugins/_template/langs/pl.js new file mode 100644 index 000000000..c1a9f914e --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/pl.js @@ -0,0 +1,8 @@ +// PL lang variables + +/* Remember to namespace the language parameters lang__ */ + +tinyMCE.addToLang('',{ +template_title : 'To jest szablon okna popup', +template_desc : 'To jest szablon przycisku' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/pt_br.js b/webcit/tiny_mce/plugins/_template/langs/pt_br.js new file mode 100644 index 000000000..23d85c044 --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/pt_br.js @@ -0,0 +1,13 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('',{ +template_title : 'Este é só um modêlo de popup', +template_desc : 'Este é só um modêlo de botão' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/ru.js b/webcit/tiny_mce/plugins/_template/langs/ru.js new file mode 100644 index 000000000..bed842897 --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/ru.js @@ -0,0 +1,8 @@ +// RU cp1251 lang variables + +/* Remember to namespace the language parameters lang__ */ + +tinyMCE.addToLang('',{ +template_title : 'Ýòî øàáëîí äëÿ popup', +template_desc : 'Ýòî øàáëîí äëÿ êíîïêè' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/_template/langs/ru_KOI8-R.js new file mode 100644 index 000000000..b406343cf --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/ru_KOI8-R.js @@ -0,0 +1,8 @@ +// RU KOI8-R lang variables + +/* Remember to namespace the language parameters lang__ */ + +tinyMCE.addToLang('',{ +template_title : 'üÔÏ ÛÁÂÌÏÎ ÄÌÑ popup', +template_desc : 'üÔÏ ÛÁÂÌÏÎ ÄÌÑ ËÎÏÐËÉ' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/_template/langs/ru_UTF-8.js new file mode 100644 index 000000000..00fbf1acd --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/ru_UTF-8.js @@ -0,0 +1,8 @@ +// RU UTF-8 lang variables + +/* Remember to namespace the language parameters lang__ */ + +tinyMCE.addToLang('',{ +template_title : 'Это шаблон для popup', +template_desc : 'Это шаблон для кнопки' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/zh_cn.js b/webcit/tiny_mce/plugins/_template/langs/zh_cn.js new file mode 100644 index 000000000..50f83ede4 --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/zh_cn.js @@ -0,0 +1,8 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +/* Remember to namespace the language parameters _ */ + +tinyMCE.addToLang('',{ +template_title : 'ÕâÊÇÒ»¸öÄ£°åµ¯³ö´°¿Ú', +template_desc : 'ÕâÊÇÒ»¸öÄ£°å°´Å¥' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/zh_tw.js b/webcit/tiny_mce/plugins/_template/langs/zh_tw.js new file mode 100644 index 000000000..b403638eb --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/zh_tw.js @@ -0,0 +1,7 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +template_title : '¼Ë¦¡¸õ²{µøµ¡', +template_desc : '¼Ë¦¡«ö¶s' +}); diff --git a/webcit/tiny_mce/plugins/_template/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/_template/langs/zh_tw_utf8.js new file mode 100644 index 000000000..ff6ee9be1 --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/langs/zh_tw_utf8.js @@ -0,0 +1,7 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +template_title : '樣式跳現視窗', +template_desc : '樣式按鈕' +}); diff --git a/webcit/tiny_mce/plugins/_template/popup.htm b/webcit/tiny_mce/plugins/_template/popup.htm new file mode 100644 index 000000000..b07467fa2 --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/popup.htm @@ -0,0 +1,48 @@ + + + {$lang_template_title} + + + + + +
    +

    {$lang_template_title}

    + + +
    + The selected element name: +
    + +
    +
    + +
    + +
    + +
    +
    +
    + + diff --git a/webcit/tiny_mce/plugins/_template/readme.txt b/webcit/tiny_mce/plugins/_template/readme.txt new file mode 100644 index 000000000..2ee1505cd --- /dev/null +++ b/webcit/tiny_mce/plugins/_template/readme.txt @@ -0,0 +1 @@ +This is a template/tutorial plugin that where created to help you in the development of own plugins for TinyMCE. \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/advhr/editor_plugin.js b/webcit/tiny_mce/plugins/advhr/editor_plugin.js new file mode 100644 index 000000000..cb3209214 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('advhr','en,de,sv,zh_cn,cs,fa,fr_ca,fr,pl,pt_br,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,fi,es,cy,is,zh_tw,zh_tw_utf8,sk');function TinyMCE_advhr_getInfo(){return{longname:'Advanced HR',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_advhr.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_advhr_getControlHTML(control_name){switch(control_name){case "advhr":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceAdvancedHr\');return false;';return '';}return "";}function TinyMCE_advhr_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceAdvancedHr":var template=new Array();template['file']='../../plugins/advhr/rule.htm';template['width']=270;template['height']=180;template['width']+=tinyMCE.getLang('lang_advhr_delta_width',0);template['height']+=tinyMCE.getLang('lang_advhr_delta_height',0);var size="",width="",noshade="";if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="hr"){tinyMCE.hrElement=tinyMCE.selectedElement;if(tinyMCE.hrElement){size=tinyMCE.hrElement.getAttribute('size')?tinyMCE.hrElement.getAttribute('size'):"";width=tinyMCE.hrElement.getAttribute('width')?tinyMCE.hrElement.getAttribute('width'):"";noshade=tinyMCE.hrElement.getAttribute('noshade')?tinyMCE.hrElement.getAttribute('noshade'):"";}tinyMCE.openWindow(template,{editor_id:editor_id,size:size,width:width,noshade:noshade,mceDo:'update'});}else{if(tinyMCE.isMSIE){tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,'
    ');}else{tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",size:size,width:width,noshade:noshade,mceDo:'insert'});}}return true;}return false;}function TinyMCE_advhr_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){tinyMCE.switchClassSticky(editor_id+'_advhr','mceButtonNormal');if(node==null)return;do{if(node.nodeName.toLowerCase()=="hr")tinyMCE.switchClassSticky(editor_id+'_advhr','mceButtonSelected');}while((node=node.parentNode));return true;} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/advhr/editor_plugin_src.js b/webcit/tiny_mce/plugins/advhr/editor_plugin_src.js new file mode 100644 index 000000000..b18afa578 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/editor_plugin_src.js @@ -0,0 +1,75 @@ +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('advhr', 'en,de,sv,zh_cn,cs,fa,fr_ca,fr,pl,pt_br,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,fi,es,cy,is,zh_tw,zh_tw_utf8,sk'); + +function TinyMCE_advhr_getInfo() { + return { + longname : 'Advanced HR', + author : 'Moxiecode Systems', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_advhr.html', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; +}; + +function TinyMCE_advhr_getControlHTML(control_name) { + switch (control_name) { + case "advhr": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceAdvancedHr\');return false;'; + return ''; + } + + return ""; +} + +/** + * Executes the mceAdvanceHr command. + */ +function TinyMCE_advhr_execCommand(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mceAdvancedHr": + var template = new Array(); + + template['file'] = '../../plugins/advhr/rule.htm'; // Relative to theme + template['width'] = 270; + template['height'] = 180; + + template['width'] += tinyMCE.getLang('lang_advhr_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_advhr_delta_height', 0); + + var size = "", width = "", noshade = ""; + if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "hr"){ + tinyMCE.hrElement = tinyMCE.selectedElement; + if (tinyMCE.hrElement) { + size = tinyMCE.hrElement.getAttribute('size') ? tinyMCE.hrElement.getAttribute('size') : ""; + width = tinyMCE.hrElement.getAttribute('width') ? tinyMCE.hrElement.getAttribute('width') : ""; + noshade = tinyMCE.hrElement.getAttribute('noshade') ? tinyMCE.hrElement.getAttribute('noshade') : ""; + } + tinyMCE.openWindow(template, {editor_id : editor_id, size : size, width : width, noshade : noshade, mceDo : 'update'}); + } else { + if (tinyMCE.isMSIE) { + tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,'
    '); + } else { + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", size : size, width : width, noshade : noshade, mceDo : 'insert'}); + } + } + + return true; + } + // Pass to next handler in chain + return false; +} + +function TinyMCE_advhr_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + tinyMCE.switchClassSticky(editor_id + '_advhr', 'mceButtonNormal'); + + if (node == null) + return; + + do { + if (node.nodeName.toLowerCase() == "hr") + tinyMCE.switchClassSticky(editor_id + '_advhr', 'mceButtonSelected'); + } while ((node = node.parentNode)); + + return true; +} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/advhr/images/advhr.gif b/webcit/tiny_mce/plugins/advhr/images/advhr.gif new file mode 100644 index 0000000000000000000000000000000000000000..e2f8658f463e2a260c22ae8affec1ece193886e3 GIT binary patch literal 153 zcmV;K0A~M3Nk%w1VH5xq0K*0VGD>2SnzBNA;8Vse6Vn)2G_{+hP(f{&eIlJZiD z@^XTb!rK0Vs`8@3@&Et;A^8LW000jFEC2ui02BZe000C=@X1N5y*TU5yZ@jS1PDT$ z1fZ?}K?R1v3{E24f>IpLLLoCp!-h*V90LY|vTz&<3Y;K;WW)lL6ibC7lt!VjcuX#v H%Mk!OxywD6 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/advhr/jscripts/rule.js b/webcit/tiny_mce/plugins/advhr/jscripts/rule.js new file mode 100644 index 000000000..a75a6dfa8 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/jscripts/rule.js @@ -0,0 +1,41 @@ +function init() { + var formObj = document.forms[0]; + formObj.width.value = tinyMCE.getWindowArg('width'); + formObj.size.value = tinyMCE.getWindowArg('size'); + formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('mceDo')); + if (tinyMCE.getWindowArg('noshade')) { + formObj.noshade.checked = true; + } + if (tinyMCE.getWindowArg('width').lastIndexOf('%')!=-1) { + formObj.width2.value = "%"; + formObj.width.value = formObj.width.value.substring(0,formObj.width.value.length-1); + } +} + +function insertHR() { + var formObj = document.forms[0]; + var width = formObj.width.value; + var size = formObj.size.value; + var html = ' +// Last Updated : October 2005 +// TinyMCE Version : 2.0RC3 + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'Insertar/Editar Barra Horizontal', +insert_advhr_width : 'Ancho', +insert_advhr_size : 'Alto', +insert_advhr_noshade : 'Sin Sombras' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/fa.js b/webcit/tiny_mce/plugins/advhr/langs/fa.js new file mode 100644 index 000000000..54a4fbc7a --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/fa.js @@ -0,0 +1,13 @@ +// IR lang variables +// Persian (Farsi) language pack (for IRAN) +// By: Morteza Zafari +// Lost@LostLord.com +// http://www.LostLord.com + +tinyMCE.addToLang('',{ +dir : 'rtl', +insert_advhr_desc : '??? ? ?????? ?? ????', +insert_advhr_width : '???', +insert_advhr_size : '??????', +insert_advhr_noshade : '???? ????' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/fi.js b/webcit/tiny_mce/plugins/advhr/langs/fi.js new file mode 100644 index 000000000..55cbb1d75 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/fi.js @@ -0,0 +1,8 @@ +// FI lang variables by Tuomo Aura, Ateco.fi + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'Lisää / Muokkaa vaakaviivaa', +insert_advhr_width : 'Leveys', +insert_advhr_size : 'Korkeus', +insert_advhr_noshade : 'Ei varjostusta' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/fr.js b/webcit/tiny_mce/plugins/advhr/langs/fr.js new file mode 100644 index 000000000..1971e3a40 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/fr.js @@ -0,0 +1,9 @@ +// French lang variables by Laurent Dran +// Modifié par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'Insérer une règle horizontale stylée', +insert_advhr_width : 'Largeur', +insert_advhr_size : 'Hauteur', +insert_advhr_noshade : 'Sans ombre' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/fr_ca.js b/webcit/tiny_mce/plugins/advhr/langs/fr_ca.js new file mode 100644 index 000000000..6dcd77391 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/fr_ca.js @@ -0,0 +1,8 @@ +// CA_FR lang variables + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'Insérer / Modifier Séparateur Horizontal', +insert_advhr_width : 'Largeur', +insert_advhr_size : 'Hauteur', +insert_advhr_noshade : 'Sans ombrage' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/he.js b/webcit/tiny_mce/plugins/advhr/langs/he.js new file mode 100644 index 000000000..ca2b22b26 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/he.js @@ -0,0 +1,8 @@ +// HE lang variables by Liron Newman, http://eesh.net + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'äëðñ/òøåê ÷å àåô÷é', +insert_advhr_width : 'øåçá', +insert_advhr_size : 'âåáä', +insert_advhr_noshade : 'ììà öì' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/hu.js b/webcit/tiny_mce/plugins/advhr/langs/hu.js new file mode 100644 index 000000000..2457f1c92 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/hu.js @@ -0,0 +1,8 @@ +// HU lang variables + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'Vízszintes vonal beillesztése / szerkesztése', +insert_advhr_width : 'Hosszúság', +insert_advhr_size : 'Szélesség', +insert_advhr_noshade : 'Nincs árnyék' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/is.js b/webcit/tiny_mce/plugins/advhr/langs/is.js new file mode 100644 index 000000000..63ca1d48e --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/is.js @@ -0,0 +1,8 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'Bæta við/breyta stiku', +insert_advhr_width : 'Breidd', +insert_advhr_size : 'Hæð', +insert_advhr_noshade : 'Enginn skuggi' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/nb.js b/webcit/tiny_mce/plugins/advhr/langs/nb.js new file mode 100644 index 000000000..14a5ab6b3 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/nb.js @@ -0,0 +1,8 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'Lage/Redigere horisontal linje', +insert_advhr_width : 'Bredde', +insert_advhr_size : 'Høyde', +insert_advhr_noshade : 'Ingen skygge' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/nl.js b/webcit/tiny_mce/plugins/advhr/langs/nl.js new file mode 100644 index 000000000..2ef3ba287 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/nl.js @@ -0,0 +1,8 @@ +// NL lang variables + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'Horizontale lijn invoegen/bewerken', +insert_advhr_width : 'Breedte', +insert_advhr_size : 'Hoogte', +insert_advhr_noshade : 'Geen schaduw' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/nn.js b/webcit/tiny_mce/plugins/advhr/langs/nn.js new file mode 100644 index 000000000..2cc7b16ba --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/nn.js @@ -0,0 +1,8 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'Lage/Redigere horisontal linje', +insert_advhr_width : 'Bredde', +insert_advhr_size : 'Høgde', +insert_advhr_noshade : 'Ingen skugge' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/pl.js b/webcit/tiny_mce/plugins/advhr/langs/pl.js new file mode 100644 index 000000000..dcb081eec --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/pl.js @@ -0,0 +1,11 @@ +// PL lang variables +// fixed by Wooya +// http://www.mfusion.prv.pl +// fixed by lemiel 14.11.2005 + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'Wstaw/Edytuj poziom± liniê', +insert_advhr_width : 'Szeroko¶æ', +insert_advhr_size : 'Wysoko¶æ', +insert_advhr_noshade : 'Brak cienia' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/pt_br.js b/webcit/tiny_mce/plugins/advhr/langs/pt_br.js new file mode 100644 index 000000000..03cf85abe --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/pt_br.js @@ -0,0 +1,16 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : ???? + * Revision and modifications: + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('',{ +insert_advhr_desc : 'Inserir / editar Linha Horizontal', +insert_advhr_width : 'Largura', +insert_advhr_size : 'Altura', +insert_advhr_noshade : 'Sem Sombra' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/ru.js b/webcit/tiny_mce/plugins/advhr/langs/ru.js new file mode 100644 index 000000000..e6295ee0c --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/ru.js @@ -0,0 +1,8 @@ +// RU cp1251 lang variables + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'Âñòàâèòü / ðåäàêòèðîâàòü ãîðèçîíòàëüíûé ðàçäåëèòåëü', +insert_advhr_width : 'Øèðèíà', +insert_advhr_size : 'Âûñîòà', +insert_advhr_noshade : 'Áåç òåíè' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/advhr/langs/ru_KOI8-R.js new file mode 100644 index 000000000..6dfa5c275 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/ru_KOI8-R.js @@ -0,0 +1,8 @@ +// RU KOI8-R lang variables + +tinyMCE.addToLang('',{ +insert_advhr_desc : '÷ÓÔÁ×ÉÔØ / ÒÅÄÁËÔÉÒÏ×ÁÔØ ÇÏÒÉÚÏÎÔÁÌØÎÙÊ ÒÁÚÄÅÌÉÔÅÌØ', +insert_advhr_width : 'ûÉÒÉÎÁ', +insert_advhr_size : '÷ÙÓÏÔÁ', +insert_advhr_noshade : 'âÅÚ ÔÅÎÉ' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/advhr/langs/ru_UTF-8.js new file mode 100644 index 000000000..f3d8b8a9c --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/ru_UTF-8.js @@ -0,0 +1,8 @@ +// RU UTF-8 lang variables + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'Вставить / редактировать горизонтальный разделитель', +insert_advhr_width : 'Ширина', +insert_advhr_size : 'Высота', +insert_advhr_noshade : 'Без тени' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/sk.js b/webcit/tiny_mce/plugins/advhr/langs/sk.js new file mode 100644 index 000000000..84c6d4636 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/sk.js @@ -0,0 +1,16 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:43 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'VložiÅ¥/editovaÅ¥ vodorovný oddeľovač', +insert_advhr_width : 'Šírka', +insert_advhr_size : 'Výška', +insert_advhr_noshade : 'NestieňovaÅ¥' +}); + diff --git a/webcit/tiny_mce/plugins/advhr/langs/sv.js b/webcit/tiny_mce/plugins/advhr/langs/sv.js new file mode 100644 index 000000000..e3b9fb253 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/sv.js @@ -0,0 +1,8 @@ +// SE lang variables + +tinyMCE.addToLang('',{ +insert_advhr_desc : 'Skapa/Redigera horisontell linje', +insert_advhr_width : 'Bredd', +insert_advhr_size : 'Höjd', +insert_advhr_noshade : 'Ingen skugga' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/zh_cn.js b/webcit/tiny_mce/plugins/advhr/langs/zh_cn.js new file mode 100644 index 000000000..b9ee54594 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/zh_cn.js @@ -0,0 +1,8 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('',{ +insert_advhr_desc : '²åÈë/±à¼­ ˮƽ±ê³ß', +insert_advhr_width : '¿í¶È', +insert_advhr_size : '¸ß¶È', +insert_advhr_noshade : 'ÎÞÒõÓ°' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/zh_tw.js b/webcit/tiny_mce/plugins/advhr/langs/zh_tw.js new file mode 100644 index 000000000..c3029f675 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/zh_tw.js @@ -0,0 +1,10 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + + +tinyMCE.addToLang('',{ +insert_advhr_desc : '´¡¤J©Î½s¿è¤ô¥­½u', +insert_advhr_width : '¼e', +insert_advhr_size : '°ª', +insert_advhr_noshade : 'µL³±¼v' +}); diff --git a/webcit/tiny_mce/plugins/advhr/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/advhr/langs/zh_tw_utf8.js new file mode 100644 index 000000000..bc26a5714 --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/langs/zh_tw_utf8.js @@ -0,0 +1,10 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + + +tinyMCE.addToLang('',{ +insert_advhr_desc : '插入或編輯水平線', +insert_advhr_width : '寬', +insert_advhr_size : '高', +insert_advhr_noshade : '無陰影' +}); diff --git a/webcit/tiny_mce/plugins/advhr/readme.txt b/webcit/tiny_mce/plugins/advhr/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/advhr/rule.htm b/webcit/tiny_mce/plugins/advhr/rule.htm new file mode 100644 index 000000000..0e711b41a --- /dev/null +++ b/webcit/tiny_mce/plugins/advhr/rule.htm @@ -0,0 +1,59 @@ + + + {$lang_insert_link_title} + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + +
    {$lang_insert_advhr_desc}
    {$lang_insert_advhr_width}: + + +
    {$lang_insert_advhr_size}:
    +
    + + diff --git a/webcit/tiny_mce/plugins/advimage/css/advimage.css b/webcit/tiny_mce/plugins/advimage/css/advimage.css new file mode 100644 index 000000000..f05e376bd --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/css/advimage.css @@ -0,0 +1,66 @@ +/* CSS file for advimage plugin popup */ + +.mceImageList { + width: 280px; +} + +.mceActionPanel { + margin-top: 7px; +} + +.alignPreview { + border: 1px solid black; + width: 140px; + height: 140px; + overflow: hidden; + padding: 5px; +} + +.checkbox { + border: 0px; +} + +.panel_wrapper div.current { + height: 305px; +} + +#prev { + margin:0px; + border: 1px + solid black; + width: 99%; + height:150px; + overflow: auto; +} + +#align, #classlist { + width: 150px; +} + +#width, #height { + vertical-align: middle; + width: 50px; + text-align: center; +} + +#vspace, #hspace, #border { + vertical-align: middle; + width: 30px; + text-align: center; +} + +#classlist { + width: 180px; +} + +input { + width: 280px; +} + +#constrain, #onmousemovecheck { + width: auto; +} + +#id, #dir, #lang, #usemap, #longdesc { + width: 200px; +} diff --git a/webcit/tiny_mce/plugins/advimage/editor_plugin.js b/webcit/tiny_mce/plugins/advimage/editor_plugin.js new file mode 100644 index 000000000..3c81a74f2 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('advimage','en,de,sv,zh_cn,cs,fa,fr_ca,fr,pl,pt_br,nl,he,nb,ru,ru_KOI8-R,ru_UTF-8,nn,cy,es,is,zh_tw,zh_tw_utf8,sk');function TinyMCE_advimage_getInfo(){return{longname:'Advanced image',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_advimage.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_advimage_getControlHTML(control_name){switch(control_name){case "image":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceAdvImage\');return false;';return '';}return "";}function TinyMCE_advimage_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceAdvImage":var template=new Array();template['file']='../../plugins/advimage/image.htm';template['width']=480;template['height']=380;template['width']+=tinyMCE.getLang('lang_advimage_delta_width',0);template['height']+=tinyMCE.getLang('lang_advimage_delta_height',0);var inst=tinyMCE.getInstanceById(editor_id);var elm=inst.getFocusElement();if(elm!=null&&tinyMCE.getAttrib(elm,'class').indexOf('mceItem')!=-1)return true;tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;}return false;}function TinyMCE_advimage_cleanup(type,content){switch(type){case "insert_to_editor_dom":var imgs=content.getElementsByTagName("img");for(var i=0;i'; + } + + return ""; +} + +function TinyMCE_advimage_execCommand(editor_id, element, command, user_interface, value) { + switch (command) { + case "mceAdvImage": + var template = new Array(); + + template['file'] = '../../plugins/advimage/image.htm'; + template['width'] = 480; + template['height'] = 380; + + // Language specific width and height addons + template['width'] += tinyMCE.getLang('lang_advimage_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_advimage_delta_height', 0); + + var inst = tinyMCE.getInstanceById(editor_id); + var elm = inst.getFocusElement(); + + if (elm != null && tinyMCE.getAttrib(elm, 'class').indexOf('mceItem') != -1) + return true; + + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); + + return true; + } + + return false; +} + +function TinyMCE_advimage_cleanup(type, content) { + switch (type) { + case "insert_to_editor_dom": + var imgs = content.getElementsByTagName("img"); + for (var i=0; i + + {$lang_insert_image_title} + + + + + + + + +
    + + +
    +
    +
    + {$lang_advimage_general} + + + + + + + + + + + + + + + + + + +
    + + + + +
     
     
    +
    + +
    + {$lang_advimage_preview} + +
    +
    + +
    +
    + {$lang_advimage_tab_appearance} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + {$lang_advimage_example_img} + Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam + nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum + edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam + erat volutpat. +
    +
    + x + px +
      + + + + +
    +
    + +
    +
    +
    + +
    +
    + {$lang_advimage_swap_image} + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
     
     
    + + + + +
     
     
    +
    + +
    + {$lang_advimage_misc} + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + +
    + + + + +
     
    +
    +
    +
    + +
    +
    + +
    + +
    + +
    +
    +
    + + diff --git a/webcit/tiny_mce/plugins/advimage/images/sample.gif b/webcit/tiny_mce/plugins/advimage/images/sample.gif new file mode 100644 index 0000000000000000000000000000000000000000..53bf6890b507741c10910c9e2217ad8247b98e8d GIT binary patch literal 1624 zcmV-e2B-N)Nk%w1VJ!eH0OkMy|NsB}{r&v>{Q3F$`1ttq^YifV@ayaA>FMd_=H}w! z;^5%m-rnBb-QC>W+}qpR+S=OL+1c3G*w@$B*4Eb4)YQ|{)zHw=&d$%x&CScp%gV~i z$;rvc$jHXV#>B+L!^6YE!otD9!N9=4zrVk|y}i7=yt})*y1Kf#xw*Hux3;#nwY9ah zw6wFcv$C?Xv9YnRu&}SMudc4Ht*x!BtgNf6tE#H1si~={sjjD|r>3T+rKP2$q@<&x zqobp!qN1Xqp`oFnrJ$goprE6lpP!zdp`MSWoSd7Ro12@UnwpxLnw^=MnV6WE zmzS58mX?*3mz9;3mX?*2l$4W`lai8@l9G~eg|M^H&l zLpBo?51@vfgB2q_TVh*dNP<;cR$Wg!vYsMHR!qvvOis>GNH`+ zJ3B|tqgANiBSy@x>Q#;x7+DuU7&rwlf#S04)VZvA$XoUy8Y&f7)SqP<}Lw@L# zA(@Cohl`6CZyedUu^BlmK|DG5$Kl2f8z@uCc)^k-3m7$G!njf7$;XhOW>^`rV#UFh zEN#eG;bP?tCs>{+)q)ceg9$aDAaTZ{MGK5rU8ty$qz8){MT#gHGX{#XEJHLonBXFa zj+#9GE&^pq!`qG`K5iiC!gq}sRY|1yD8?j++_^oR0g+)NNtZN`)08!0q=}AA4HhIo zFaa9NYu8%97=oos5f?O`lwre~4VfoIei+FyK|urxj@C(-q(sS(!$5uL3j&jg7&XY% zlr17;3GGL;2K8>CB87G97;W(2VZ((D+3Hz;L;bylfhf(kFNV8at)h;hdM z85WX(#*Hq@@BYePt3t_l{ zCL3|YVWydA0Fz{rTl65n00)c^)^-jJn1c zRVXtA6mkUMEDLU|v7{JK&_IJ2ciiCy7BOT1fdUBh8b=yrbYaCAchCU_7?H`b1`}4q zLB|_mI2!;7W4QCq6F1O+MW||6AwmKafUrReUA&QotxQZI8D$G)AuSVV@X<&A9v;~H zKnWjo&;bljq=29aCeV-t5GBYkL=Q}q(S~FLd2t39MyRmC%_GFHkPc7CfIt8P*emqV z0YK2j9A+kmW^!tn(ZmG+L=6DZR99W}8p9?Utr=#t@rE2=zxf3QQ(JBJ&<{Z2>8EUP zeX1B)2w_3gXV)D-0Tt+=#@cV-0f!PU#MglZ3m6b}0e08zK^x;9(u?Tga{%?&nNTXhcEuM_#J>yL>p*a zuZJ2pliCGSp!Ye8>YFq@)ZOW-uT~OrjFQK!)UyVGFt7ni'); + } +} + +function convertURL(url, node, on_save) { + return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);"); +} + +function getImageSrc(str) { + var pos = -1; + + if (!str) + return ""; + + if ((pos = str.indexOf('this.src=')) != -1) { + var src = str.substring(pos + 10); + + src = src.substring(0, src.indexOf('\'')); + + if (tinyMCE.getParam('convert_urls')) + src = convertURL(src, null, true); + + return src; + } + + return ""; +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + var formObj = document.forms[0]; + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + var action = "insert"; + var html = ""; + + // Image list src + html = getImageListHTML('imagelistsrc','src','onSelectMainImage'); + if (html == "") + document.getElementById("imagelistsrcrow").style.display = 'none'; + else + document.getElementById("imagelistsrccontainer").innerHTML = html; + + // Image list oversrc + html = getImageListHTML('imagelistover','onmouseoversrc'); + if (html == "") + document.getElementById("imagelistoverrow").style.display = 'none'; + else + document.getElementById("imagelistovercontainer").innerHTML = html; + + // Image list outsrc + html = getImageListHTML('imagelistout','onmouseoutsrc'); + if (html == "") + document.getElementById("imagelistoutrow").style.display = 'none'; + else + document.getElementById("imagelistoutcontainer").innerHTML = html; + + // Src browser + html = getBrowserHTML('srcbrowser','src','image','advimage'); + document.getElementById("srcbrowsercontainer").innerHTML = html; + + // Over browser + html = getBrowserHTML('oversrcbrowser','onmouseoversrc','image','advimage'); + document.getElementById("onmouseoversrccontainer").innerHTML = html; + + // Out browser + html = getBrowserHTML('outsrcbrowser','onmouseoutsrc','image','advimage'); + document.getElementById("onmouseoutsrccontainer").innerHTML = html; + + // Longdesc browser + html = getBrowserHTML('longdescbrowser','longdesc','file','advimage'); + document.getElementById("longdesccontainer").innerHTML = html; + + // Resize some elements + if (isVisible('srcbrowser')) + document.getElementById('src').style.width = '260px'; + + if (isVisible('oversrcbrowser')) + document.getElementById('onmouseoversrc').style.width = '260px'; + + if (isVisible('outsrcbrowser')) + document.getElementById('onmouseoutsrc').style.width = '260px'; + + if (isVisible('longdescbrowser')) + document.getElementById('longdesc').style.width = '180px'; + + // Check action + if (elm != null && elm.nodeName == "IMG") + action = "update"; + + formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); + + if (action == "update") { + var src = tinyMCE.getAttrib(elm, 'src'); + var onmouseoversrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover'))); + var onmouseoutsrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout'))); + + src = convertURL(src, elm, true); + + // Use mce_src if found + var mceRealSrc = tinyMCE.getAttrib(elm, 'mce_src'); + if (mceRealSrc != "") { + src = mceRealSrc; + + if (tinyMCE.getParam('convert_urls')) + src = convertURL(src, elm, true); + } + + if (onmouseoversrc != "" && tinyMCE.getParam('convert_urls')) + onmouseoversrc = convertURL(onmouseoversrc, elm, true); + + if (onmouseoutsrc != "" && tinyMCE.getParam('convert_urls')) + onmouseoutsrc = convertURL(onmouseoutsrc, elm, true); + + // Setup form data + var style = tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style")); + + // Store away old size + orgImageWidth = trimSize(getStyle(elm, 'width')) + orgImageHeight = trimSize(getStyle(elm, 'height')); + + formObj.src.value = src; + formObj.alt.value = tinyMCE.getAttrib(elm, 'alt'); + formObj.title.value = tinyMCE.getAttrib(elm, 'title'); + formObj.border.value = trimSize(getStyle(elm, 'border', 'borderWidth')); + formObj.vspace.value = tinyMCE.getAttrib(elm, 'vspace'); + formObj.hspace.value = tinyMCE.getAttrib(elm, 'hspace'); + formObj.width.value = orgImageWidth; + formObj.height.value = orgImageHeight; + formObj.onmouseoversrc.value = onmouseoversrc; + formObj.onmouseoutsrc.value = onmouseoutsrc; + formObj.id.value = tinyMCE.getAttrib(elm, 'id'); + formObj.dir.value = tinyMCE.getAttrib(elm, 'dir'); + formObj.lang.value = tinyMCE.getAttrib(elm, 'lang'); + formObj.longdesc.value = tinyMCE.getAttrib(elm, 'longdesc'); + formObj.usemap.value = tinyMCE.getAttrib(elm, 'usemap'); + formObj.style.value = tinyMCE.serializeStyle(style); + + // Select by the values + if (tinyMCE.isMSIE) + selectByValue(formObj, 'align', getStyle(elm, 'align', 'styleFloat')); + else + selectByValue(formObj, 'align', getStyle(elm, 'align', 'cssFloat')); + + addClassesToList('classlist', 'advimage_styles'); + + selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class')); + selectByValue(formObj, 'imagelistsrc', src); + selectByValue(formObj, 'imagelistover', onmouseoversrc); + selectByValue(formObj, 'imagelistout', onmouseoutsrc); + + updateStyle(); + showPreviewImage(src, true); + changeAppearance(); + + window.focus(); + } else + addClassesToList('classlist', 'advimage_styles'); + + // If option enabled default contrain proportions to checked + if (tinyMCE.getParam("advimage_constrain_proportions", true)) + formObj.constrain.checked = true; + + // Check swap image if valid data + if (formObj.onmouseoversrc.value != "" || formObj.onmouseoutsrc.value != "") + setSwapImageDisabled(false); + else + setSwapImageDisabled(true); +} + +function setSwapImageDisabled(state) { + var formObj = document.forms[0]; + + formObj.onmousemovecheck.checked = !state; + + setBrowserDisabled('overbrowser', state); + setBrowserDisabled('outbrowser', state); + + if (formObj.imagelistover) + formObj.imagelistover.disabled = state; + + if (formObj.imagelistout) + formObj.imagelistout.disabled = state; + + formObj.onmouseoversrc.disabled = state; + formObj.onmouseoutsrc.disabled = state; +} + +function setAttrib(elm, attrib, value) { + var formObj = document.forms[0]; + var valueElm = formObj.elements[attrib]; + + if (typeof(value) == "undefined" || value == null) { + value = ""; + + if (valueElm) + value = valueElm.value; + } + + if (value != "") { + elm.setAttribute(attrib, value); + + if (attrib == "style") + attrib = "style.cssText"; + + if (attrib == "longdesc") + attrib = "longDesc"; + + if (attrib == "width") { + attrib = "style.width"; + value = value + "px"; + } + + if (attrib == "height") { + attrib = "style.height"; + value = value + "px"; + } + + if (attrib == "class") + attrib = "className"; + + eval('elm.' + attrib + "=value;"); + } else + elm.removeAttribute(attrib); +} + +function makeAttrib(attrib, value) { + var formObj = document.forms[0]; + var valueElm = formObj.elements[attrib]; + + if (typeof(value) == "undefined" || value == null) { + value = ""; + + if (valueElm) + value = valueElm.value; + } + + if (value == "") + return ""; + + // XML encode it + value = value.replace(/&/g, '&'); + value = value.replace(/\"/g, '"'); + value = value.replace(//g, '&gr;'); + + return ' ' + attrib + '="' + value + '"'; +} + +function insertAction() { + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + var formObj = document.forms[0]; + var src = formObj.src.value; + var onmouseoversrc = formObj.onmouseoversrc.value; + var onmouseoutsrc = formObj.onmouseoutsrc.value; + + if (tinyMCE.getParam("accessibility_warnings")) { + if (formObj.alt.value == "") { + var answer = confirm(tinyMCE.getLang('lang_advimage_missing_alt', '', true)); + if (answer == true) { + formObj.alt.value = " "; + } + } else { + var answer = true; + } + + if (!answer) + return; + } + + if (onmouseoversrc && onmouseoversrc != "") + onmouseoversrc = "this.src='" + convertURL(onmouseoversrc, tinyMCE.imgElement) + "';"; + + if (onmouseoutsrc && onmouseoutsrc != "") + onmouseoutsrc = "this.src='" + convertURL(onmouseoutsrc, tinyMCE.imgElement) + "';"; + + if (elm != null && elm.nodeName == "IMG") { + setAttrib(elm, 'src', convertURL(src, tinyMCE.imgElement)); + setAttrib(elm, 'mce_src', src); + setAttrib(elm, 'alt'); + setAttrib(elm, 'title'); + setAttrib(elm, 'border'); + setAttrib(elm, 'vspace'); + setAttrib(elm, 'hspace'); + setAttrib(elm, 'width'); + setAttrib(elm, 'height'); + setAttrib(elm, 'onmouseover', onmouseoversrc); + setAttrib(elm, 'onmouseout', onmouseoutsrc); + setAttrib(elm, 'id'); + setAttrib(elm, 'dir'); + setAttrib(elm, 'lang'); + setAttrib(elm, 'longdesc'); + setAttrib(elm, 'usemap'); + setAttrib(elm, 'style'); + setAttrib(elm, 'class', getSelectValue(formObj, 'classlist')); + setAttrib(elm, 'align', getSelectValue(formObj, 'align')); + + //tinyMCEPopup.execCommand("mceRepaint"); + + // Repaint if dimensions changed + if (formObj.width.value != orgImageWidth || formObj.height.value != orgImageHeight) + inst.repaint(); + + // Refresh in old MSIE + if (tinyMCE.isMSIE5) + elm.outerHTML = elm.outerHTML; + } else { + var html = "' + + getImageData(src); +} + +function getImageData(src) { + preloadImg = new Image(); + + tinyMCE.addEvent(preloadImg, "load", updateImageData); + tinyMCE.addEvent(preloadImg, "error", resetImageData); + + preloadImg.src = src; +} + +function updateImageData() { + var formObj = document.forms[0]; + + if (formObj.width.value == "") + formObj.width.value = preloadImg.width; + + if (formObj.height.value == "") + formObj.height.value = preloadImg.height; + + updateStyle(); +} + +function resetImageData() { + var formObj = document.forms[0]; + formObj.width.value = formObj.height.value = ""; +} + +function getSelectValue(form_obj, field_name) { + var elm = form_obj.elements[field_name]; + + if (elm == null || elm.options == null) + return ""; + + return elm.options[elm.selectedIndex].value; +} + +function getImageListHTML(elm_id, target_form_element, onchange_func) { + if (typeof(tinyMCEImageList) == "undefined" || tinyMCEImageList.length == 0) + return ""; + + var html = ""; + + html += ''; + + return html; + + // tinyMCE.debug('-- image list start --', html, '-- image list end --'); +} + +// While loading +preinit(); diff --git a/webcit/tiny_mce/plugins/advimage/langs/cs.js b/webcit/tiny_mce/plugins/advimage/langs/cs.js new file mode 100644 index 000000000..9dd373d09 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/cs.js @@ -0,0 +1,8 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +insert_image_alt2 : 'Název obrázku', +insert_image_onmousemove : 'Alternativní obrázek', +insert_image_mouseover : 'pøi najetí myši', +insert_image_mouseout : 'pøi odjetí myši' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/cy.js b/webcit/tiny_mce/plugins/advimage/langs/cy.js new file mode 100644 index 000000000..8ca5b5649 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/cy.js @@ -0,0 +1,27 @@ +// UK lang variables + +tinyMCE.addToLang('advimage',{ +tab_general : 'Cyffredinol', +tab_appearance : 'Ymddangosiad', +tab_advanced : 'Uwch', +general : 'Cyffredinol', +title : 'Teitl', +preview : 'Rhagolwg', +constrain_proportions : 'Cadw cymesuredd', +langdir : 'Cyfeiriad iaith', +langcode : 'Côd iaith', +long_desc : 'Dolen disgrifiad hir', +style : 'Arddull', +classes : 'Dosbarthiadau', +ltr : 'Chwith i\'r dde', +rtl : 'Dde i\'r chwith', +id : 'Id', +image_map : 'Map delwedd', +swap_image : 'Cyfnewid delwedd', +alt_image : 'Delwedd amgen', +mouseover : 'llygoden drosodd', +mouseout : 'llygoden allan', +misc : 'Arall', +example_img : 'Delwedd rhagolwg delwedd', +missing_alt : 'Wyt ti\'n sicr eisiau parhau heb gynnwys Disgrifiad Delwedd? Heb un, mae\'n bosib na fydd y ddelwedd yn hygyrch i ddefnyddwyr gydag anableddau, neu rhai gyda phorwr testun, neu sy\'n pori gyda delweddau wedi\'u diffodd.' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/da.js b/webcit/tiny_mce/plugins/advimage/langs/da.js new file mode 100644 index 000000000..acd488b21 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/da.js @@ -0,0 +1,26 @@ +// DK lang variables contributed by Jan Moelgaard + +tinyMCE.addToLang('advimage',{ +tab_general : 'Generelt', +tab_appearance : 'Udseende', +tab_advanced : 'Avanceret', +general : 'Generelt', +title : 'Overskrift', +preview : 'Se', +constrain_proportions : 'Fasthold proportioner', +langdir : 'Tekstretning', +langcode : 'Sprogkode', +long_desc : 'Langt beskrivelseslink', +style : 'Style', +classes : 'Klasser', +ltr : 'Venstre til højre', +rtl : 'Højre til venstre', +id : 'Id', +image_map : 'Billedkort', +swap_image : 'Alternativt billede', +alt_image : 'Alternative image', +mouseover : 'ved mouse over', +mouseout : 'ved mouse out', +misc : 'Diverse', +example_img : 'Appearance preview image' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/de.js b/webcit/tiny_mce/plugins/advimage/langs/de.js new file mode 100644 index 000000000..52c2de818 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/de.js @@ -0,0 +1,27 @@ +// DE lang variables + +tinyMCE.addToLang('advimage',{ +tab_general : 'Allgemein', +tab_appearance : 'Erscheinungsbild', +tab_advanced : 'Erweitert', +general : 'Allgemein', +title : 'Titel', +preview : 'Vorschau', +constrain_proportions : 'Verhältnis beibehalten', +langdir : 'Sprachrichtung', +langcode : 'Sprach-Code', +long_desc : 'Link zu ausführlicher Beschreibung', +style : 'CSS-Stil', +classes : 'CSS-Klassen', +ltr : 'Von links nach rechts', +rtl : 'Von rechts nach links', +id : 'ID', +image_map : 'Image Map (Bild mit sensitiven Bereichen)', +swap_image : 'Bild austauschen', +alt_image : 'Alternatives Bild', +mouseover : 'für Mouse-Over', +mouseout : 'für Mouse-Out', +misc : 'Sonstiges', +example_img : 'Erscheinungsbild Vorschau Bild', +missing_alt : 'Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/en.js b/webcit/tiny_mce/plugins/advimage/langs/en.js new file mode 100644 index 000000000..ffd7e30c5 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/en.js @@ -0,0 +1,27 @@ +// UK lang variables + +tinyMCE.addToLang('advimage',{ +tab_general : 'General', +tab_appearance : 'Appearance', +tab_advanced : 'Advanced', +general : 'General', +title : 'Title', +preview : 'Preview', +constrain_proportions : 'Constrain proportions', +langdir : 'Language direction', +langcode : 'Language code', +long_desc : 'Long description link', +style : 'Style', +classes : 'Classes', +ltr : 'Left to right', +rtl : 'Right to left', +id : 'Id', +image_map : 'Image map', +swap_image : 'Swap image', +alt_image : 'Alternative image', +mouseover : 'for mouse over', +mouseout : 'for mouse out', +misc : 'Miscellaneous', +example_img : 'Appearance preview image', +missing_alt : 'Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/es.js b/webcit/tiny_mce/plugins/advimage/langs/es.js new file mode 100644 index 000000000..f95fe5953 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/es.js @@ -0,0 +1,35 @@ +/** + * ES lang variables + * + * Authors : Alvaro Velasco, + * Adolfo Sanz De Diego (asanzdiego) , + * Carlos C Soto (eclipxe) + * Last Updated : October 17, 2005 + * TinyMCE Version : 2.0RC3 + */ + +tinyMCE.addToLang('advimage',{ +tab_general : 'General', +tab_appearance : 'Aspecto', +tab_advanced : 'Avanzado', +general : 'General', +title : 'Titulo', +preview : 'Vista previa', +constrain_proportions : 'Bloquear relación de aspecto', +langdir : 'Dirección del texto', +langcode : 'Código del idioma', +long_desc : 'Descripción larga del link', +style : 'Estilo', +classes : 'Clases', +ltr : 'De izquierda a derecha', +rtl : 'De derecha a izquierda', +id : 'Id', +image_map : 'Mapa de la imagen', +swap_image : 'Intercambio de imagen', +alt_image : 'Imagen alternativa', +mouseover : 'Al pasar el ratón por encima de la imagen', +mouseout : 'Al sacar el ratón de la imagen', +misc : 'Misceláneo', +example_img : 'Aspecto vista previa imagen', +missing_alt : '¿Estás seguro de querer continuar sin incluir una descripción de la imagen? Sin ella la imagen puede no ser accesible para ciertos usuarios discapacitados, o para los usuarios que usen navegadores de texto, o para los usuarios que tengan las imagenes desactivadas en su navegador.' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/fa.js b/webcit/tiny_mce/plugins/advimage/langs/fa.js new file mode 100644 index 000000000..48dbe97b8 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/fa.js @@ -0,0 +1,13 @@ +// IR lang variables +// Persian (Farsi) language pack (for IRAN) +// By: Morteza Zafari +// Lost@LostLord.com +// http://www.LostLord.com + +tinyMCE.addToLang('',{ +dir : 'rtl', +insert_image_alt2 : '????? ???', +insert_image_onmousemove : '??? ???????', +insert_image_mouseover : '??? ??????? ????? ???? ?????? ????', +insert_image_mouseout : '??? ??????? ????? ???? ?????? ????' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/fa_ca.js b/webcit/tiny_mce/plugins/advimage/langs/fa_ca.js new file mode 100644 index 000000000..4779ba06a --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/fa_ca.js @@ -0,0 +1,8 @@ +// CA_FR lang variables + +tinyMCE.addToLang('',{ +insert_image_alt2 : 'Titre de l\'image', +insert_image_onmousemove : 'Image alternative', +insert_image_mouseover : 'pour le «mouse over»', +insert_image_mouseout : 'pour le «mouse out»' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/fr.js b/webcit/tiny_mce/plugins/advimage/langs/fr.js new file mode 100644 index 000000000..5adc8162e --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/fr.js @@ -0,0 +1,47 @@ +// French lang variables by Laurent Dran +// Modifié par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('advlink',{ +general_tab : 'Général', +popup_tab : 'Pop-up', +events_tab : 'Événements', +advanced_tab : 'Avancé', +general_props : 'Propriétés générales', +popup_props : 'Propriétés du pop-up', +event_props : 'Événements', +advanced_props : 'Propriétés avancées', +popup_opts : 'Options', +anchor_names : 'Ancres', +target_same : 'Ovrir dans la même fenêtre/cadre', +target_parent : 'Ouvrir dans la fenêtre/cadre parent', +target_top : 'Ouvrir dans la fenêtre principale', +target_blank : 'Ouvrir dans une nouvelle fenêtre', +popup : 'Pop-up Javascript', +popup_url : 'URL du pop-up', +popup_name : 'Nom de la fenêtre', +popup_return : 'Insérer \'return false;\'', +popup_scrollbars : 'Montrer les barres de défilement', +popup_statusbar : 'Montrer la barre de statut', +popup_toolbar : 'Montrer la barre d\'outils', +popup_menubar : 'Montrer la barre de menus', +popup_location : 'Montrer la barre de titre', +popup_resizable : 'Permettre le redimensionnement', +popup_dependent : 'Dépendent (Mozilla/Firefox seulement)', +popup_size : 'Taille', +popup_position : 'Position (X/Y)', +id : 'Id', +style: 'Style en ligne', +classes : 'Classe CSS', +target_name : 'Nom de la cible', +langdir : 'Sens d\'écriture', +target_langcode : 'Code de langue de la cible', +langcode : 'Code de langue du libellé', +encoding : 'Encodage de la cible', +mime : 'Type MIME de la cible', +rel : 'Relation de la page vers la cible', +rev : 'Relation de la cible vers la page', +tabindex : 'Attribut tabindex', +accesskey : 'Attribut accesskey', +ltr : 'Vers la droite', +rtl : 'Vers la gauche' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/fr_ca.js b/webcit/tiny_mce/plugins/advimage/langs/fr_ca.js new file mode 100644 index 000000000..4779ba06a --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/fr_ca.js @@ -0,0 +1,8 @@ +// CA_FR lang variables + +tinyMCE.addToLang('',{ +insert_image_alt2 : 'Titre de l\'image', +insert_image_onmousemove : 'Image alternative', +insert_image_mouseover : 'pour le «mouse over»', +insert_image_mouseout : 'pour le «mouse out»' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/he.js b/webcit/tiny_mce/plugins/advimage/langs/he.js new file mode 100644 index 000000000..ecb163f6b --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/he.js @@ -0,0 +1,27 @@ +// HE lang variables + +tinyMCE.addToLang('advimage',{ +tab_general : 'ëììé', +tab_appearance : 'îøàä', +tab_advanced : 'îú÷ãí', +general : 'ëììé', +title : 'ëåúøú', +preview : 'úöåâä î÷ãéîä', +constrain_proportions : 'äâáìú îéîãéí', +langdir : 'ëéååï ùôä', +langcode : '÷åã ùôä', +long_desc : '÷éùåø ìäñáø àøåê', +style : 'ñâðåï', +classes : 'Classéí', +ltr : 'ùîàì ìéîéï', +rtl : 'éîéï ìùîàì', +id : 'Id', +image_map : 'îôú úîåðä', +swap_image : 'äçìôú úîåðä', +alt_image : 'úîåðä çìåôéú', +mouseover : 'ëùñîï äòëáø îòì äúîåðä', +mouseout : 'ëùñîï äòëáø òåæá àú äúîåðä', +misc : 'àçø', +example_img : 'úöåâä î÷ãéîä ùì îøàä', +missing_alt : 'äàí àúä áèåç ùáøöåðê ìäîùéê îáìé ìëìåì úéàåø ùì äúîåðä? ììà úéàåø, éúëï ëé äúîåðä ìà úäéä ðâéùä ìîùúîùéí áòìé îåâáìåéåú, àå ëàìå äîùúîùéí áãôãôï è÷ñèåàìé, àå ùîñééøéí áøùú áìé ìäöéâ úîåðåú.' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/hu.js b/webcit/tiny_mce/plugins/advimage/langs/hu.js new file mode 100644 index 000000000..1980e8d84 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/hu.js @@ -0,0 +1,27 @@ +// HU lang variables + +tinyMCE.addToLang('advimage',{ +tab_general : 'Általános', +tab_appearance : 'Megjelenés', +tab_advanced : 'Haladó', +general : 'Általános', +title : 'Cím', +preview : 'Elõnézet', +constrain_proportions : 'Arányok kényszerítése', +langdir : 'Szöveg pozíció', +langcode : 'Szöveg kód', +long_desc : 'Hosszú leírás link', +style : 'Stílus', +classes : 'Osztályok', +ltr : 'Balról jobbra', +rtl : 'Jobbról balra', +id : 'Azonosító', +image_map : 'Kép térkép', +swap_image : 'Kép váltás', +alt_image : 'Másik kép', +mouseover : 'egér rámutatásra', +mouseout : 'egér elmozdítására', +misc : 'Egyéb', +example_img : 'Elõnézeti kép megjelenése', +missing_alt : 'Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/is.js b/webcit/tiny_mce/plugins/advimage/langs/is.js new file mode 100644 index 000000000..bae47b14c --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/is.js @@ -0,0 +1,27 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('advimage',{ +tab_general : 'Aðalstillingar', +tab_appearance : 'Útlit', +tab_advanced : 'Flóknari valkostir', +general : 'Helstu upplýsingar', +title : 'Titill', +preview : 'Forskoðun', +constrain_proportions : 'Vernda hlutföll', +langdir : 'Ritháttur tungumáls', +langcode : 'Tungumálskóði', +long_desc : 'Tengill á ítarlýsingu', +style : 'Stíll', +classes : 'Klassi', +ltr : 'Vinstri til hægri', +rtl : 'Hægri til vinstri', +id : 'Id', +image_map : 'Myndarkort', +swap_image : 'Skipta mynd', +alt_image : 'Skiptimynd', +mouseover : 'þegar mús fer yfir', +mouseout : 'þegar mús fer frá', +misc : 'Ýmislegt', +example_img : 'Forskoðunarmynd', +missing_alt : 'Ertu viss um að þú viljir halda áfram án myndarlýsingar? Án hennar munu sumir notendur, eins og fatlaðir eða með gamla vafra ekki geta séð myndina.' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/ko.js b/webcit/tiny_mce/plugins/advimage/langs/ko.js new file mode 100644 index 000000000..70eb4b1a7 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/ko.js @@ -0,0 +1,8 @@ +// KO lang variables + +tinyMCE.addToLang('',{ +insert_image_alt2 : '±×¸² Á¦¸ñ', +insert_image_onmousemove : '´ëü À̹ÌÁö', +insert_image_mouseover : '¸¶¿ì½º¸¦ ¿Ã·ÈÀ» ¶§', +insert_image_mouseout : '¸¶¿ì½º¸¦ ³»·ÈÀ» ¶§' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/nb.js b/webcit/tiny_mce/plugins/advimage/langs/nb.js new file mode 100644 index 000000000..487c59264 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/nb.js @@ -0,0 +1,27 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('advimage',{ +tab_general : 'Generelle innstillinger', +tab_appearance : 'Visuelle innstillinger', +tab_advanced : 'Avanserte innstillinger', +general : 'Generell', +title : 'Tittel', +preview : 'Forhåndsvisning', +constrain_proportions : 'Behold proporsjonene', +langdir : 'Skrift retning', +langcode : 'Språk kode', +long_desc : 'Lang beskrivelse', +style : 'Stil', +classes : 'CSS klasser', +ltr : 'Venstre mot høyre', +rtl : 'Høyre mot venstre', +id : 'Id', +image_map : 'Opprett bilde', +swap_image : 'Bytt bilde', +alt_image : 'Alternativt bilde', +mouseover : 'når pekeren er over', +mouseout : 'når pekeren er utenfor', +misc : 'Annet', +example_img : 'Forhåndsvisnings bilde', +missing_alt : 'Er du sikker på at du vil fortsette uten å sette inn en beskrivelse av bildet?' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/nl.js b/webcit/tiny_mce/plugins/advimage/langs/nl.js new file mode 100644 index 000000000..15ca4aac0 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/nl.js @@ -0,0 +1,27 @@ +// NL lang variables + +tinyMCE.addToLang('advimage',{ +tab_general : 'Algemeen', +tab_appearance : 'Beeld', +tab_advanced : 'Geavanceerd', +general : 'Algemeen', +title : 'Titel', +preview : 'Voorbeeld', +constrain_proportions : 'Verhoudingen behouden', +langdir : 'Taalrichting', +langcode : 'Taalcode', +long_desc : 'Link naar lange omschrijving', +style : 'Stijl', +classes : 'Stijlen', +ltr : 'Links naar rechts', +rtl : 'Rechts naar links', +id : 'Id', +image_map : 'Afbeelding opdelen', +swap_image : 'Afbeelding wisselen', +alt_image : 'Alternatieve afbeelding', +mouseover : 'voor muis-over', +mouseout : 'voor muis-uit', +misc : 'Diversen', +example_img : 'Voorbeeld afbeelding', +missing_alt : 'Zonder een beschrijving van de afbeelding, zal de pagina voor mensen met een visuele handicap of met afbeeldingen uitgeschakeld niet toegankelijk zijn. Weet u zeker dat u wilt doorgaan zonder beschrijving?' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/nn.js b/webcit/tiny_mce/plugins/advimage/langs/nn.js new file mode 100644 index 000000000..67ba3060f --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/nn.js @@ -0,0 +1,27 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('advimage',{ +tab_general : 'Generelle innstillinger', +tab_appearance : 'Visuelle innstillinger', +tab_advanced : 'Avanserte innstillinger', +general : 'Generell', +title : 'Tittel', +preview : 'Forhåndsvisning', +constrain_proportions : 'Behold proporsjonene', +langdir : 'Skrift retning', +langcode : 'Språk kode', +long_desc : 'Lang beskrivelse', +style : 'Stil', +classes : 'CSS klasser', +ltr : 'Venstre mot høgre', +rtl : 'Høgre mot venstre', +id : 'Id', +image_map : 'Opprett bilde', +swap_image : 'Bytt bilde', +alt_image : 'Alternativt bilde', +mouseover : 'når pekeren er over', +mouseout : 'når pekeren er utenfor', +misc : 'Annet', +example_img : 'Forhåndsvisningsbilde', +missing_alt : 'Er du sikker på at du vil fortsette uten å sette inn ein beskrivelse av bildet?' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/pl.js b/webcit/tiny_mce/plugins/advimage/langs/pl.js new file mode 100644 index 000000000..0fce7f7dc --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/pl.js @@ -0,0 +1,28 @@ +// PL lang variables +// fixed by lemiel 14.11.2005 + +tinyMCE.addToLang('advimage',{ +tab_general : 'G³ówne ustawienia', +tab_appearance : 'Widok', +tab_advanced : 'Zaawansowane', +general : 'G³ówne', +title : 'Tytu³', +preview : 'Podgl±d', +constrain_proportions : 'Zachowaj proporcje', +langdir : 'Kierunek tekstu', +langcode : 'Kod jêzyka', +long_desc : 'D³ugi opis linku', +style : 'Styl', +classes : 'Klasy', +ltr : 'Lewy do prawego', +rtl : 'Prawy do lewego', +id : 'Id', +image_map : 'Mapa obrazka', +swap_image : 'Podmiana obrazka', +alt_image : 'Alternatywny obrazek', +mouseover : 'gdy myszka nad obrazkiem', +mouseout : 'gdy myszka poza obrazkiem', +misc : 'Ró¿ne', +example_img : 'Przyk³adowy podgl±d obrazka', +missing_alt : 'Czy jeste¶ pewien, ¿e chcesz kontynuowaæ bez zawarcia opisu obrazka? Niektórzy u¿ytkownicy moga u¿ywaæ przegl±darek tekstowych, lub mieæ ograniczenia na wy¶wietlanie grafik, a wtedy Twój obrazek pozostanie dla nich niewidoczny.' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/pt_br.js b/webcit/tiny_mce/plugins/advimage/langs/pt_br.js new file mode 100644 index 000000000..841c1dcbd --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/pt_br.js @@ -0,0 +1,35 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : ???? + * Revision and modifications: + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('advimage',{ +tab_general : 'Geral', +tab_appearance : 'Aparência', +tab_advanced : 'Avançado', +general : 'Geral', +title : 'Título', +preview : 'Visualizar (Preview)', +constrain_proportions : 'Bloquear proporções', +langdir : 'Direção da linguagem', +langcode : 'Código da linguagem', +long_desc : 'Descrição completa do link', +style : 'Estilo', +classes : 'Classes', +ltr : 'Esquerda para direita', +rtl : 'Direita para esquerda', +id : 'Id', +image_map : 'Mapa da imagem', +swap_image : 'Trocar imagem', +alt_image : 'Imagem alternativa', +mouseover : 'para o mouse sobre o link', +mouseout : 'para o mouse fora do link', +misc : 'Miscelânia', +example_img : 'Aparência Visualizar Imagem', +missing_alt : 'Tem certeza que deseja continuar sem incluir uma descrição para imagem? Sem isso a imagem pode não estar acessível para alguns usuários especiáis, ou para aqueles que utilizam um navegador em modo texto, ou para navegadores com imagens desativadas.' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/ru.js b/webcit/tiny_mce/plugins/advimage/langs/ru.js new file mode 100644 index 000000000..9cac2839b --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/ru.js @@ -0,0 +1,26 @@ +// RU cp1251 lang variables + +tinyMCE.addToLang('advimage',{ +tab_general : 'Îñíîâíûå', +tab_appearance : 'Âèçóàëèçàöèÿ', +tab_advanced : 'Ðàñøèðåííûå', +general : 'Ãëàâíûå', +title : 'Çàãîëîâîê', +preview : 'Ïðåäâàðèòåëüíûé ïðîñìîòð', +constrain_proportions : 'Ñîõðàíèòü ïðîïîðöèè', +langdir : 'Îïèñàíèå ÿçûêà', +langcode : 'Êîä ÿçûêà', +long_desc : 'Ïîëíîå îïèñàíèå', +style : 'Ñòèëè', +classes : 'Êëàññû', +ltr : 'Ñëåâà íàïðàâî', +rtl : 'Ñïðàâà íàëåâî', +id : 'Id', +image_map : 'Êàðòà èçîáðàæåíèÿ', +swap_image : 'Ïîäìåíà êàðòèíêè', +alt_image : 'Àëüòåðíàòèâíîå èçîáðàæåíèå', +mouseover : 'ïðè íàâåäåíèè ìûøè', +mouseout : 'êîãäà óâîäèòå ìûøü', +misc : 'Ïðî÷åå', +example_img : 'Âèçóàëèçàöèÿ ðàñïîëîæåíèÿ êàðòèíêè' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/advimage/langs/ru_KOI8-R.js new file mode 100644 index 000000000..cc2047570 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/ru_KOI8-R.js @@ -0,0 +1,26 @@ +// RU KOI8-R lang variables + +tinyMCE.addToLang('advimage',{ +tab_general : 'ïÓÎÏ×ÎÙÅ', +tab_appearance : '÷ÉÚÕÁÌÉÚÁÃÉÑ', +tab_advanced : 'òÁÓÛÉÒÅÎÎÙÅ', +general : 'çÌÁ×ÎÙÅ', +title : 'úÁÇÏÌÏ×ÏË', +preview : 'ðÒÅÄ×ÁÒÉÔÅÌØÎÙÊ ÐÒÏÓÍÏÔÒ', +constrain_proportions : 'óÏÈÒÁÎÉÔØ ÐÒÏÐÏÒÃÉÉ', +langdir : 'ïÐÉÓÁÎÉÅ ÑÚÙËÁ', +langcode : 'ëÏÄ ÑÚÙËÁ', +long_desc : 'ðÏÌÎÏÅ ÏÐÉÓÁÎÉÅ', +style : 'óÔÉÌÉ', +classes : 'ëÌÁÓÓÙ', +ltr : 'óÌÅ×Á ÎÁÐÒÁ×Ï', +rtl : 'óÐÒÁ×Á ÎÁÌÅ×Ï', +id : 'Id', +image_map : 'ëÁÒÔÁ ÉÚÏÂÒÁÖÅÎÉÑ', +swap_image : 'ðÏÄÍÅÎÁ ËÁÒÔÉÎËÉ', +alt_image : 'áÌØÔÅÒÎÁÔÉ×ÎÏÅ ÉÚÏÂÒÁÖÅÎÉÅ', +mouseover : 'ÐÒÉ ÎÁ×ÅÄÅÎÉÉ ÍÙÛÉ', +mouseout : 'ËÏÇÄÁ Õ×ÏÄÉÔÅ ÍÙÛØ', +misc : 'ðÒÏÞÅÅ', +example_img : '÷ÉÚÕÁÌÉÚÁÃÉÑ ÒÁÓÐÏÌÏÖÅÎÉÑ ËÁÒÔÉÎËÉ' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/advimage/langs/ru_UTF-8.js new file mode 100644 index 000000000..04c612806 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/ru_UTF-8.js @@ -0,0 +1,26 @@ +// RU UTF-8 lang variables + +tinyMCE.addToLang('advimage',{ +tab_general : 'Основные', +tab_appearance : 'Визуализация', +tab_advanced : 'Расширенные', +general : 'Главные', +title : 'Заголовок', +preview : 'Предварительный просмотр', +constrain_proportions : 'Сохранить пропорции', +langdir : 'Описание языка', +langcode : 'Код языка', +long_desc : 'Полное описание', +style : 'Стили', +classes : 'Классы', +ltr : 'Слева направо', +rtl : 'Справа налево', +id : 'Id', +image_map : 'Карта изображения', +swap_image : 'Подмена картинки', +alt_image : 'Альтернативное изображение', +mouseover : 'при наведении мыши', +mouseout : 'когда уводите мышь', +misc : 'Прочее', +example_img : 'Визуализация Ñ€Ð°ÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÐºÐ°Ñ€Ñ‚инки' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/sk.js b/webcit/tiny_mce/plugins/advimage/langs/sk.js new file mode 100644 index 000000000..d5d4d6115 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/sk.js @@ -0,0 +1,16 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + + +tinyMCE.addToLang('',{ +insert_image_alt2 : 'Názov obrázku', +insert_image_onmousemove : 'Alternatívny obrázok', +insert_image_mouseover : 'pri najet? myÅ¡ou', +insert_image_mouseout : 'pri odjet? myÅ¡ou' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/sv.js b/webcit/tiny_mce/plugins/advimage/langs/sv.js new file mode 100644 index 000000000..b4cb17992 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/sv.js @@ -0,0 +1,27 @@ +// SE lang variables + +tinyMCE.addToLang('advimage',{ +tab_general : 'Generella inställningar', +tab_appearance : 'Visuella inställningar', +tab_advanced : 'Avancerade inställningar', +general : 'Generella', +title : 'Titel', +preview : 'Förhandsgranskning', +constrain_proportions : 'Behåll proportionerna', +langdir : 'Skrift riktning', +langcode : 'Språk kåd', +long_desc : 'Long beskrivning', +style : 'Stil', +classes : 'CSS Classer', +ltr : 'Vänster till höger', +rtl : 'Höger till vänster', +id : 'Id', +image_map : 'Bild karta', +swap_image : 'Byt bild', +alt_image : 'Alternativ bild', +mouseover : 'när pekaren är över', +mouseout : 'när pekaren är utanför', +misc : 'Övrigt', +example_img : 'Förhandsgransknings bild', +missing_alt : 'Är du säker på att du vill fortsätta utan att skriva en bild beskrivning. Utan en alternativ beskrivning är bilden inte handikapanpassad.' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/zh_cn.js b/webcit/tiny_mce/plugins/advimage/langs/zh_cn.js new file mode 100644 index 000000000..43e5818e6 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/zh_cn.js @@ -0,0 +1,27 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('advimage',{ +tab_general : 'Ò»°ã', +tab_appearance : 'ÏÔʾ', +tab_advanced : '¸ß¼¶', +general : 'Ò»°ã', +title : '±êÌâ', +preview : 'Ô¤ÀÀ', +constrain_proportions : 'Ô¼ÊøÊôÐÔ', +langdir : 'Êéд·½Ïò', +langcode : 'ÓïÑÔ±àÂë', +long_desc : '³¤ÃèÊöÁ´½Ó', +style : '·ç¸ñ', +classes : 'Àà', +ltr : '´Ó×óÖÁÓÒ', +rtl : '´ÓÓÒÖÁ×ó', +id : '±íʶ', +image_map : 'ͼƬ¶ÔÓ¦', +swap_image : 'µ÷»»Í¼Æ¬', +alt_image : 'ºòѡͼƬ', +mouseover : 'Êó±êÔÚÉÏÃæʱ', +mouseout : 'Êó±êÀ뿪ʱ', +misc : 'ÔÓÏî', +example_img : 'Appearance preview image', +missing_alt : 'ÄúÈ·ÈÏÒªÔÚûÓÐͼƬ˵Ã÷µÄÇé¿öϼÌÐøÂ𣿠ÕâÑùÆäËû¹Ø±ÕͼƬä¯ÀÀµÄÓû§½«ÎÞ·¨×¢Òâµ½ÄãÔÚÕâÀïÓÐͼƬ¡£' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/zh_tw.js b/webcit/tiny_mce/plugins/advimage/langs/zh_tw.js new file mode 100644 index 000000000..7cee3c387 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/zh_tw.js @@ -0,0 +1,29 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + + +tinyMCE.addToLang('advimage',{ +tab_general : '¤@¯ë', +tab_appearance : '¥~Æ[', +tab_advanced : '¶i¶¥', +general : '¤@¯ë', +title : '¼ÐÃD', +preview : '¹wÄý', +constrain_proportions : '¤ñ¨Ò­­¨î', +langdir : '»y¨¥¥Îªk', +langcode : '»y½X', +long_desc : '§¹¾ã»¡©ú³sµ²', +style : '¦¡¼Ë', +classes : '¤ÀÃþ', +ltr : '¥Ñ¥ª¦Ü¥k', +rtl : '¥Ñ¥k¦Ü¥ª', +id : '½s¸¹', +image_map : '¹ÏÀɬM®g', +swap_image : '¹ÏÀɥ洫', +alt_image : '´À¥N¹ÏÀÉ', +mouseover : '·í·Æ¹«²¾¤J', +mouseout : '·í·Æ¹«²¾¥X', +misc : 'Âø¶µ', +example_img : '¥~Æ[ ¹wÄý ¹ÏÀÉ', +missing_alt : '½T©w­n¦b¤£§t¹ÏÀÉ»¡©úªºª¬ªp¤UÄ~Äò°õ¦æ¶Ü¡H\n¨S¦³¹ÏÀÉ»¡©ú¥i¯à·|¾É­P¨º¨Ç¹³¬O¥H¯Â¤å¦rÂsÄý¾¹©Î\nÃö³¬ÂsÄý¾¹¹ÏÀÉÅã²{¥\¯àªº¥Î¤áµLªk¶¶§QŪ¨ú¸ê°T¡C' +}); diff --git a/webcit/tiny_mce/plugins/advimage/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/advimage/langs/zh_tw_utf8.js new file mode 100644 index 000000000..32ab67d35 --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/langs/zh_tw_utf8.js @@ -0,0 +1,29 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + + +tinyMCE.addToLang('advimage',{ +tab_general : '一般', +tab_appearance : '外觀', +tab_advanced : '進階', +general : '一般', +title : '標題', +preview : '預覽', +constrain_proportions : '比例限制', +langdir : '語言用法', +langcode : '語碼', +long_desc : '完整說明連結', +style : '式樣', +classes : '分類', +ltr : '由左至右', +rtl : '由右至左', +id : '編號', +image_map : '圖檔映射', +swap_image : '圖檔交換', +alt_image : '替代圖檔', +mouseover : '當滑鼠移入', +mouseout : '當滑鼠移出', +misc : '雜項', +example_img : '外觀 é è¦½ åœ–檔', +missing_alt : '確定要在不含圖檔說明的狀況下繼續執行嗎?\n沒有圖檔說明可能會導致那些像是以純文字瀏覽器或\n關閉瀏覽器圖檔顯現功能的用戶無法順利讀取資訊。' +}); diff --git a/webcit/tiny_mce/plugins/advimage/readme.txt b/webcit/tiny_mce/plugins/advimage/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/advimage/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/advlink/css/advlink.css b/webcit/tiny_mce/plugins/advlink/css/advlink.css new file mode 100644 index 000000000..0cb37bd20 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/css/advlink.css @@ -0,0 +1,35 @@ +/* CSS file for advimage plugin popup */ + +.mceLinkList, .mceAnchorList, #targetlist { + width: 280px; +} + +.mceActionPanel { + margin-top: 7px; +} + +.panel_wrapper div.current { + height: 320px; +} + +#classlist, #title, #href { + width: 280px; +} + +#popupurl, #popupname { + width: 200px; +} + +#popupwidth, #popupheight, #popupleft, #popuptop { + width: 30px; + vertical-align: middle; + text-align: center; +} + +#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey { + width: 200px; +} + +#events_panel input { + width: 200px; +} diff --git a/webcit/tiny_mce/plugins/advlink/editor_plugin.js b/webcit/tiny_mce/plugins/advlink/editor_plugin.js new file mode 100644 index 000000000..9e2047bdc --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('advlink','en,de,sv,zh_cn,cs,fa,fr_ca,fr,pl,pt_br,nl,he,nb,ru,ru_KOI8-R,ru_UTF-8,nn,cy,es,is,zh_tw,zh_tw_utf8,sk');function TinyMCE_advlink_getInfo(){return{longname:'Advanced link',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_advlink.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_advlink_getControlHTML(control_name){switch(control_name){case "link":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceAdvLink\');return false;';return '';}return "";}function TinyMCE_advlink_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceAdvLink":var anySelection=false;var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(selectedText&&selectedText.length>0);if(anySelection||(focusElm!=null&&focusElm.nodeName=="A")){var template=new Array();template['file']='../../plugins/advlink/link.htm';template['width']=480;template['height']=400;template['width']+=tinyMCE.getLang('lang_advlink_delta_width',0);template['height']+=tinyMCE.getLang('lang_advlink_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});}return true;}return false;}function TinyMCE_advlink_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){tinyMCE.switchClassSticky(editor_id+'_advlink','mceButtonDisabled',true);if(node==null)return;if(any_selection)tinyMCE.switchClassSticky(editor_id+'_advlink','mceButtonNormal',false);do{if(node.nodeName=="A"&&tinyMCE.getAttrib(node,'href')!="")tinyMCE.switchClassSticky(editor_id+'_advlink','mceButtonSelected',false);}while((node=node.parentNode));return true;} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/advlink/editor_plugin_src.js b/webcit/tiny_mce/plugins/advlink/editor_plugin_src.js new file mode 100644 index 000000000..77aecb90b --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/editor_plugin_src.js @@ -0,0 +1,69 @@ +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('advlink', 'en,de,sv,zh_cn,cs,fa,fr_ca,fr,pl,pt_br,nl,he,nb,ru,ru_KOI8-R,ru_UTF-8,nn,cy,es,is,zh_tw,zh_tw_utf8,sk'); + +function TinyMCE_advlink_getInfo() { + return { + longname : 'Advanced link', + author : 'Moxiecode Systems', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_advlink.html', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; +}; + +function TinyMCE_advlink_getControlHTML(control_name) { + switch (control_name) { + case "link": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceAdvLink\');return false;'; + return ''; + } + + return ""; +} + +function TinyMCE_advlink_execCommand(editor_id, element, command, user_interface, value) { + switch (command) { + case "mceAdvLink": + var anySelection = false; + var inst = tinyMCE.getInstanceById(editor_id); + var focusElm = inst.getFocusElement(); + + if (tinyMCE.selectedElement) + anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (selectedText && selectedText.length > 0); + + if (anySelection || (focusElm != null && focusElm.nodeName == "A")) { + var template = new Array(); + + template['file'] = '../../plugins/advlink/link.htm'; + template['width'] = 480; + template['height'] = 400; + + // Language specific width and height addons + template['width'] += tinyMCE.getLang('lang_advlink_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_advlink_delta_height', 0); + + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); + } + + return true; + } + + return false; +} + +function TinyMCE_advlink_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + tinyMCE.switchClassSticky(editor_id + '_advlink', 'mceButtonDisabled', true); + + if (node == null) + return; + + if (any_selection) + tinyMCE.switchClassSticky(editor_id + '_advlink', 'mceButtonNormal', false); + + do { + if (node.nodeName == "A" && tinyMCE.getAttrib(node, 'href') != "") + tinyMCE.switchClassSticky(editor_id + '_advlink', 'mceButtonSelected', false); + } while ((node = node.parentNode)); + + return true; +} diff --git a/webcit/tiny_mce/plugins/advlink/jscripts/functions.js b/webcit/tiny_mce/plugins/advlink/jscripts/functions.js new file mode 100644 index 000000000..538ad6a06 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/jscripts/functions.js @@ -0,0 +1,564 @@ +/* Functions for the advlink plugin popup */ + +var templates = { + "window.open" : "window.open('${url}','${target}','${options}')" +}; + +function preinit() { + // Initialize + tinyMCE.setWindowArg('mce_windowresize', false); + + // Import external list url javascript + var url = tinyMCE.getParam("external_link_list_url"); + if (url != null) { + // Fix relative + if (url.charAt(0) != '/' && url.indexOf('://') == -1) + url = tinyMCE.documentBasePath + "/" + url; + + document.write(''); + } +} + +function changeClass() { + var formObj = document.forms[0]; + formObj.classes.value = getSelectValue(formObj, 'classlist'); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + var formObj = document.forms[0]; + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + var action = "insert"; + var html; + + document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink'); + document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink'); + document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href'); + document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href'); + document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target'); + + // Link list + html = getLinkListHTML('linklisthref','href'); + if (html == "") + document.getElementById("linklisthrefrow").style.display = 'none'; + else + document.getElementById("linklisthrefcontainer").innerHTML = html; + + // Resize some elements + if (isVisible('hrefbrowser')) + document.getElementById('href').style.width = '260px'; + + if (isVisible('popupurlbrowser')) + document.getElementById('popupurl').style.width = '180px'; + + elm = tinyMCE.getParentElement(elm, "a"); + if (elm != null && elm.nodeName == "A") + action = "update"; + + formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); + + setPopupControlsDisabled(true); + + if (action == "update") { + var href = tinyMCE.getAttrib(elm, 'href'); + + href = convertURL(href, elm, true); + + // Use mce_href if found + var mceRealHref = tinyMCE.getAttrib(elm, 'mce_href'); + if (mceRealHref != "") { + href = mceRealHref; + + if (tinyMCE.getParam('convert_urls')) + href = convertURL(href, elm, true); + } + + var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick')); + + // Setup form data + setFormValue('href', href); + setFormValue('title', tinyMCE.getAttrib(elm, 'title')); + setFormValue('id', tinyMCE.getAttrib(elm, 'id')); + setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style")))); + setFormValue('rel', tinyMCE.getAttrib(elm, 'rel')); + setFormValue('rev', tinyMCE.getAttrib(elm, 'rev')); + setFormValue('charset', tinyMCE.getAttrib(elm, 'charset')); + setFormValue('hreflang', tinyMCE.getAttrib(elm, 'hreflang')); + setFormValue('dir', tinyMCE.getAttrib(elm, 'dir')); + setFormValue('lang', tinyMCE.getAttrib(elm, 'lang')); + setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); + setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); + setFormValue('type', tinyMCE.getAttrib(elm, 'type')); + setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus'))); + setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur'))); + setFormValue('onclick', onclick); + setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick'))); + setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown'))); + setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup'))); + setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover'))); + setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove'))); + setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout'))); + setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress'))); + setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown'))); + setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup'))); + setFormValue('target', tinyMCE.getAttrib(elm, 'target')); + setFormValue('classes', tinyMCE.getAttrib(elm, 'class')); + + // Parse onclick data + if (onclick != null && onclick.indexOf('window.open') != -1) + parseWindowOpen(onclick); + else + parseFunction(onclick); + + // Select by the values + selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir')); + selectByValue(formObj, 'rel', tinyMCE.getAttrib(elm, 'rel')); + selectByValue(formObj, 'rev', tinyMCE.getAttrib(elm, 'rev')); + selectByValue(formObj, 'linklisthref', href); + + if (href.charAt(0) == '#') + selectByValue(formObj, 'anchorlist', href); + + addClassesToList('classlist', 'advlink_styles'); + + selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'), true); + selectByValue(formObj, 'targetlist', tinyMCE.getAttrib(elm, 'target'), true); + } else + addClassesToList('classlist', 'advlink_styles'); + + window.focus(); +} + +function setFormValue(name, value) { + document.forms[0].elements[name].value = value; +} + +function convertURL(url, node, on_save) { + return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);"); +} + +function parseWindowOpen(onclick) { + var formObj = document.forms[0]; + + // Preprocess center code + if (onclick.indexOf('return false;') != -1) { + formObj.popupreturn.checked = true; + onclick = onclick.replace('return false;', ''); + } + + var onClickData = parseLink(onclick); + + if (onClickData != null) { + formObj.ispopup.checked = true; + setPopupControlsDisabled(false); + + var onClickWindowOptions = parseOptions(onClickData['options']); + var url = onClickData['url']; + + if (tinyMCE.getParam('convert_urls')) + url = convertURL(url, null, true); + + formObj.popupname.value = onClickData['target']; + formObj.popupurl.value = url; + formObj.popupwidth.value = getOption(onClickWindowOptions, 'width'); + formObj.popupheight.value = getOption(onClickWindowOptions, 'height'); + + formObj.popupleft.value = getOption(onClickWindowOptions, 'left'); + formObj.popuptop.value = getOption(onClickWindowOptions, 'top'); + + if (formObj.popupleft.value.indexOf('screen') != -1) + formObj.popupleft.value = "c"; + + if (formObj.popuptop.value.indexOf('screen') != -1) + formObj.popuptop.value = "c"; + + formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes"; + formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes"; + formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes"; + formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes"; + formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes"; + formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes"; + formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes"; + + buildOnClick(); + } +} + +function parseFunction(onclick) { + var formObj = document.forms[0]; + var onClickData = parseLink(onclick); + + // TODO: Add stuff here +} + +function getOption(opts, name) { + return typeof(opts[name]) == "undefined" ? "" : opts[name]; +} + +function setPopupControlsDisabled(state) { + var formObj = document.forms[0]; + + formObj.popupname.disabled = state; + formObj.popupurl.disabled = state; + formObj.popupwidth.disabled = state; + formObj.popupheight.disabled = state; + formObj.popupleft.disabled = state; + formObj.popuptop.disabled = state; + formObj.popuplocation.disabled = state; + formObj.popupscrollbars.disabled = state; + formObj.popupmenubar.disabled = state; + formObj.popupresizable.disabled = state; + formObj.popuptoolbar.disabled = state; + formObj.popupstatus.disabled = state; + formObj.popupreturn.disabled = state; + formObj.popupdependent.disabled = state; + + setBrowserDisabled('popupurlbrowser', state); +} + +function parseLink(link) { + link = link.replace(new RegExp(''', 'g'), "'"); + + var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1"); + + // Is function name a template function + var template = templates[fnName]; + if (template) { + // Build regexp + var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi")); + var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\("; + var replaceStr = ""; + for (var i=0; i'); + for (var i=0; i'; + html += ''; + + for (var i=0; i' + name + ''; + } + + html += ''; + + return html; +} + +function insertAction() { + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + + elm = tinyMCE.getParentElement(elm, "a"); + + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + + // Create new anchor elements + if (elm == null) { + if (tinyMCE.isSafari) + tinyMCEPopup.execCommand("mceInsertContent", false, '' + inst.getSelectedHTML() + ''); + else + tinyMCEPopup.execCommand("createlink", false, "#mce_temp_url#"); + + var elementArray = tinyMCE.getElementsByAttributeValue(inst.getBody(), "a", "href", "#mce_temp_url#"); + for (var i=0; i' + tinyMCELinkList[i][0] + ''; + + html += ''; + + return html; + + // tinyMCE.debug('-- image list start --', html, '-- image list end --'); +} + +function getTargetListHTML(elm_id, target_form_element) { + var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';'); + var html = ''; + + html += ''; + + return html; +} + +// While loading +preinit(); diff --git a/webcit/tiny_mce/plugins/advlink/langs/cs.js b/webcit/tiny_mce/plugins/advlink/langs/cs.js new file mode 100644 index 000000000..586dce0b5 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/cs.js @@ -0,0 +1,28 @@ +/** + * Czech lang variables + * encoding: utf-8 + * + * $Id: cs.js,v 1.4 2005/10/18 13:59:42 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +insert_link_target_same : 'Otevřít ve stejném okně/rámu', +insert_link_target_parent : 'Otevřít v rodičovském okně/rámu', +insert_link_target_top : 'Otevřít v nejvyšším rámu (přepíše vÅ¡echny rámy)', +insert_link_target_blank : 'Otevřít v novém okně', +insert_link_target_named : 'Otevřít v okně', +insert_link_popup : 'JS-Popup', +insert_link_popup_url : 'Popup URL', +insert_link_popup_name : 'Název okna', +insert_link_popup_return : 'Vložit \'return false\'', +insert_link_popup_scrollbars : 'Ukázat posuvníky', +insert_link_popup_statusbar : 'Ukázat stavový řádek', +insert_link_popup_toolbar : 'Ukázat ovládací liÅ¡tu', +insert_link_popup_menubar : 'Ukázat menu', +insert_link_popup_location : 'Ukázat liÅ¡tu umístění', +insert_link_popup_resizable : 'Proměnná velikost okna', +insert_link_popup_size : 'Velikost', +insert_link_popup_position : 'Umístění (X/Y)', +insert_link_popup_missingtarget : 'Vložte název cíle nebo vyberte jinou volbu.' +}); + diff --git a/webcit/tiny_mce/plugins/advlink/langs/cy.js b/webcit/tiny_mce/plugins/advlink/langs/cy.js new file mode 100644 index 000000000..5ad11a146 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/cy.js @@ -0,0 +1,46 @@ +// UK lang variables + +tinyMCE.addToLang('advlink',{ +general_tab : 'Cyffredinol', +popup_tab : 'Ffenest Naid', +events_tab : 'Digwyddiadau', +advanced_tab : 'Uwch', +general_props : 'Priodoleddau cyffredinol', +popup_props : 'Priodoleddau ffenest naid', +event_props : 'Digwyddiadau', +advanced_props : 'Priodoleddau uwch', +popup_opts : 'Dewisiadau', +anchor_names : 'Angorau', +target_same : 'Agor yn y ffenest / ffrâm yma', +target_parent : 'Agor yn rhiant y ffenest / ffrâm', +target_top : 'Agor yn y ffrâm uchaf (disodli pob ffrâm)', +target_blank : 'Agor mewn ffenest newydd', +popup : 'Ffenest naid Javascript', +popup_url : 'URL ffenest naid', +popup_name : 'Enw ffenest', +popup_return : 'Mewnosod \'return false\'', +popup_scrollbars : 'Dangos bariau sgrolio', +popup_statusbar : 'Dangos bar statws', +popup_toolbar : 'Dangos bariau offer', +popup_menubar : 'Dangos bar dewislen', +popup_location : 'Dangos bar lleoliad', +popup_resizable : 'Caniatáu newid maint y ffenest', +popup_dependent : 'Dibynnol (Mozilla/Firefox yn unig)', +popup_size : 'Maint', +popup_position : 'Lleoliad (X/Y)', +id : 'Id', +style: 'Arddull', +classes : 'Dosbarthiadau', +target_name : 'Enw targed', +langdir : 'Cyfeiriad iaith', +target_langcode : 'Iaith y targed', +langcode : 'Côd iaith', +encoding : 'Amgodio testun y targed', +mime : 'Math MIME y targed', +rel : 'Perthynas tudalen i\'r targed', +rev : 'Perthynas targed i\'r dudalen', +tabindex : 'Tabindex', +accesskey : 'Accesskey', +ltr : 'Chwith i\'r dde', +rtl : 'Dde i\'r chwith' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/da.js b/webcit/tiny_mce/plugins/advlink/langs/da.js new file mode 100644 index 000000000..511d40370 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/da.js @@ -0,0 +1,46 @@ +// DK lang variables contributed by Jan Moelgaard + +tinyMCE.addToLang('advlink',{ +general_tab : 'Generelt', +popup_tab : 'Pop up', +events_tab : 'Events', +advanced_tab : 'Avanceret', +general_props : 'Generelle egenskaber', +popup_props : 'Popup egenskaber', +event_props : 'Events', +advanced_props : 'Advancerede egenskaber', +popup_opts : 'Valgmuligheder', +anchor_names : 'Bogmærker', +target_same : 'Åbn i samme vindue / ramme', +target_parent : 'Åbn i overordnet vindue / ramme', +target_top : 'Åbn i topramme (erstatter alle rammer)', +target_blank : 'Åbn i nyt vindue', +popup : 'Javascript popup', +popup_url : 'Popup adresse', +popup_name : 'Winduets navn', +popup_return : 'Indsæt \'return false\'', +popup_scrollbars : 'Vis scrollbar', +popup_statusbar : 'Vis statuslinje', +popup_toolbar : 'Vis værktøjslinjer', +popup_menubar : 'Vis menulinje', +popup_location : 'Vis adresse', +popup_resizable : 'Gør vinduet skalerbart', +popup_dependent : 'Afhængigt (kun ved Mozilla/Firefox)', +popup_size : 'Størrelse', +popup_position : 'Placering (X/Y)', +id : 'Id', +style: 'Style', +classes : 'Klasser', +target_name : 'Target navn', +langdir : 'Sprogretning', +target_langcode : 'Target sprog', +langcode : 'Sprogkode', +encoding : 'Target karakterkode', +mime : 'Target MIME type', +rel : 'Relation mellem side og target', +rev : 'Relation mellem target og side', +tabindex : 'Tabindex', +accesskey : 'Adgangsnøgle', +ltr : 'Venstre til højre', +rtl : 'Højre til venstre' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/de.js b/webcit/tiny_mce/plugins/advlink/langs/de.js new file mode 100644 index 000000000..62c074407 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/de.js @@ -0,0 +1,47 @@ +// DE lang variables + +tinyMCE.addToLang('advlink',{ +general_tab : 'Allgemein', +popup_tab : 'Popup', +events_tab : 'JS-Events', +advanced_tab : 'Erweitert', +general_props : 'Allgemeine Eigenschaften', +popup_props : 'Popup-Eigenschaften', +event_props : 'Javascript-Events', +advanced_props : 'Erweiterte Eigenschaften', +popup_opts : 'Optionen', +anchor_names : 'Anker', +target_same : '_self - In diesem Fenster/Frame öffnen', +target_parent : '_parent - Im Eltern-Fenster/-Frame öffnen', +target_top : '_top - Im Fenster öffnen (ersetzt alle Frames)', +target_blank : '_blank - In neuem Fenster öffnen', +popup : 'Javascript-Popup', +popup_url : 'Popup-URL', +popup_name : 'Popup-Name', +popup_return : 'Mit \'return false\' einfügen', +popup_scrollbars : 'Scrollleisten anzeigen', +popup_statusbar : 'Statuszeilen anzeigen', +popup_toolbar : 'Werkzeugleisten anzeigen', +popup_menubar : 'Menüleiste anzeigen', +popup_location : 'Adresszeile anzeigen', +popup_resizable : 'Fenstergröße veränderbar', +popup_dependent : 'Abhängiges Fenster (Nur Mozilla/Firefox)', +popup_size : 'Größe', +popup_position : 'Position (X/Y)', +id : 'ID', +style: 'CSS-Stil', +classes : 'CSS-Klassen', +target_name : 'Zielname', +langdir : 'Sprachrichtung', +target_langcode : 'Zielsprache', +langcode : 'Sprach-Code', +encoding : 'Zeichenkodierung', +mime : 'MIME-Typ', +rel : 'Verhältnis Seite zu Ziel', +rev : 'Verhältnis Ziel zu Seite', +tabindex : 'Tabulator-Index', +accesskey : 'Tastaturkürzel', +ltr : 'Von links nach rechts', +rtl : 'Von rechts nach links', +delta_width : 10 +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/en.js b/webcit/tiny_mce/plugins/advlink/langs/en.js new file mode 100644 index 000000000..0e68e5ab3 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/en.js @@ -0,0 +1,46 @@ +// UK lang variables + +tinyMCE.addToLang('advlink',{ +general_tab : 'General', +popup_tab : 'Popup', +events_tab : 'Events', +advanced_tab : 'Advanced', +general_props : 'General properties', +popup_props : 'Popup properties', +event_props : 'Events', +advanced_props : 'Advanced properties', +popup_opts : 'Options', +anchor_names : 'Anchors', +target_same : 'Open in this window / frame', +target_parent : 'Open in parent window / frame', +target_top : 'Open in top frame (replaces all frames)', +target_blank : 'Open in new window', +popup : 'Javascript popup', +popup_url : 'Popup URL', +popup_name : 'Window name', +popup_return : 'Insert \'return false\'', +popup_scrollbars : 'Show scrollbars', +popup_statusbar : 'Show status bar', +popup_toolbar : 'Show toolbars', +popup_menubar : 'Show menu bar', +popup_location : 'Show location bar', +popup_resizable : 'Make window resizable', +popup_dependent : 'Dependent (Mozilla/Firefox only)', +popup_size : 'Size', +popup_position : 'Position (X/Y)', +id : 'Id', +style: 'Style', +classes : 'Classes', +target_name : 'Target name', +langdir : 'Language direction', +target_langcode : 'Target language', +langcode : 'Language code', +encoding : 'Target character encoding', +mime : 'Target MIME type', +rel : 'Relationship page to target', +rev : 'Relationship target to page', +tabindex : 'Tabindex', +accesskey : 'Accesskey', +ltr : 'Left to right', +rtl : 'Right to left' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/es.js b/webcit/tiny_mce/plugins/advlink/langs/es.js new file mode 100644 index 000000000..cd7f9d9cf --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/es.js @@ -0,0 +1,54 @@ +/** + * ES lang variables + * + * Authors : Alvaro Velasco, + * Adolfo Sanz De Diego (asanzdiego) , + * Carlos C Soto (eclipxe) + * Last Updated : October 17, 2005 + * TinyMCE Version : 2.0RC3 + */ + +tinyMCE.addToLang('advlink',{ +general_tab : 'General', +popup_tab : 'Popup', +events_tab : 'Eventos', +advanced_tab : 'Avanzado', +general_props : 'Propiedades generales', +popup_props : 'Propiedades de la popup', +event_props : 'Eventos', +advanced_props : 'Propiedades avanzadas', +popup_opts : 'Opciones', +anchor_names : 'Anclas', +target_same : 'Abrir en esta ventana/frame', +target_parent : 'Abrir en la ventana/frame padre', +target_top : 'Abrir el frame superior (replaza todos los frames)', +target_blank : 'Abrir en una ventana nueva', +popup : 'Popup con JavaScript', +popup_url : 'Dirección de la popup', +popup_name : 'Nombre de la ventana', +popup_return : 'Insertar \'return false\'', +popup_scrollbars : 'Mostrar barras de scroll', +popup_statusbar : 'Mostrar barra de estado', +popup_toolbar : 'Mostrar barras de tarea', +popup_menubar : 'Mostrar barra de menu', +popup_location : 'Mostrar barra de direcciones', +popup_resizable : 'La ventana puede cambiar de tamaño', +popup_dependent : 'Dependiente (solo Mozilla/Firefox)', +popup_size : 'Tamaño', +popup_position : 'Posición (X/Y)', +id : 'Id', +style: 'Estilo', +classes : 'Clases', +target_name : 'Nombre del target', +langdir : 'Dirección del texto', +target_langcode : 'Idioma del target', +langcode : 'Código del idioma', +encoding : 'Codificación de los carácteres del target', +mime : 'Tipo MIME del target', +rel : 'Relación de la página con el target', +rev : 'Relación del target con la página', +tabindex : 'Indice para la tabulación', +accesskey : 'Tecla de acceso', +ltr : 'de izquierda a derecha', +rtl : 'de derecha a izquierda' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/fa.js b/webcit/tiny_mce/plugins/advlink/langs/fa.js new file mode 100644 index 000000000..aca154bf8 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/fa.js @@ -0,0 +1,27 @@ +// IR lang variables +// Persian (Farsi) language pack (for IRAN) +// By: Morteza Zafari +// Lost@LostLord.com +// http://www.LostLord.com + +tinyMCE.addToLang('',{ +dir : 'rtl', +insert_link_target_same : '?? ???? ???? / ???? ??? ??', +insert_link_target_parent : '?? ???? / ???? ???? ??? ??', +insert_link_target_top : '?? ???? ???? ??? ?? (??? ?????? ?????? ????? ?????)', +insert_link_target_blank : '?? ???? ???? ??? ??', +insert_link_target_named : '?? ????? ??? ??', +insert_link_popup : 'JS-Popup', +insert_link_popup_url : 'URL ?????', +insert_link_popup_name : '??? ?????', +insert_link_popup_return : '?????? \'return false\'', +insert_link_popup_scrollbars : '????? scrollbars', +insert_link_popup_statusbar : '????? statusbar', +insert_link_popup_toolbar : '????? toolbars', +insert_link_popup_menubar : '????? menubar', +insert_link_popup_location : '????? locationbar', +insert_link_popup_resizable : '???? ????? ?????? ????', +insert_link_popup_size : '??????', +insert_link_popup_position : '?????? (X/Y)', +insert_link_popup_missingtarget : '???? ?? ??? ???? ???? ?????? ???? ?? ??? ??? ???? ????? ????? ?? ?????? ??????.' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/fr.js b/webcit/tiny_mce/plugins/advlink/langs/fr.js new file mode 100644 index 000000000..14f196ecf --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/fr.js @@ -0,0 +1,22 @@ +// French lang variables by Laurent Dran + +tinyMCE.addToLang('',{ +insert_link_target_same : 'Ouvre dans la fenętre / Cadre(frame)', +insert_link_target_parent : 'Ouvre dans fenętre parente / Cadres(frame)', +insert_link_target_top : 'Ouvre dans le Top frame (remplace toutes les cadres(frames))', +insert_link_target_blank : 'Ouvre dans la fenętre', +insert_link_target_named : 'Ouvre dans la fenętre', +insert_link_popup : 'JS-Popup', +insert_link_popup_url : 'URL de la Popup', +insert_link_popup_name : 'Nom de la fenętre', +insert_link_popup_return : 'Insert \'return false\'', +insert_link_popup_scrollbars : 'Montrer la barre de défilement ', +insert_link_popup_statusbar : 'Montrer la barre d\'état', +insert_link_popup_toolbar : 'Montrer la barre d\'outils', +insert_link_popup_menubar : 'Montrer la barre du menu', +insert_link_popup_location : 'Montre la barre d\'adresse', +insert_link_popup_resizable : 'Fabriquer une fenętre redimensionnable', +insert_link_popup_size : 'Taille', +insert_link_popup_position : 'Position (X/Y)', +insert_link_popup_missingtarget : 'Veuillez insérer un nom pour la cible ou choisissez une autre option.' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/fr_ca.js b/webcit/tiny_mce/plugins/advlink/langs/fr_ca.js new file mode 100644 index 000000000..7b57ba302 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/fr_ca.js @@ -0,0 +1,22 @@ +// CA_FR lang variables + +tinyMCE.addToLang('',{ +insert_link_target_same : 'Ouvrir dans la même fenêtre', +insert_link_target_parent : 'Ouvrir dans la fenêtre parent', +insert_link_target_top : 'Ouvrir dans le cadre supérieur', +insert_link_target_blank : 'Ouvrir dans une nouvelle fenêtre', +insert_link_target_named : 'Ouvrir à la destination', +insert_link_popup : 'JS-Popup', +insert_link_popup_url : 'URL du popup', +insert_link_popup_name : 'Nom de la fenêtre', +insert_link_popup_return : 'Insérer le script \'return false\'', +insert_link_popup_scrollbars : 'Barres de défilement', +insert_link_popup_statusbar : 'Barre de statut', +insert_link_popup_toolbar : 'Barres d\'outils', +insert_link_popup_menubar : 'Barre de menu', +insert_link_popup_location : 'Barre d\'adresse', +insert_link_popup_resizable : 'Fenêtre redimensionnable', +insert_link_popup_size : 'Dimensions', +insert_link_popup_position : 'Position (X/Y)', +insert_link_popup_missingtarget : 'S.v.p., entrer un nom de destination ou choisir une autre option.' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/he.js b/webcit/tiny_mce/plugins/advlink/langs/he.js new file mode 100644 index 000000000..bf3f79482 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/he.js @@ -0,0 +1,46 @@ +// UK lang variables + +tinyMCE.addToLang('advlink',{ +general_tab : 'ëììé', +popup_tab : 'çìåï ÷åôõ', +events_tab : 'àøåòéí', +advanced_tab : 'îú÷ãí', +general_props : 'îàôééðéí ëììééí', +popup_props : 'îàôééðé äçìåï ä÷åôõ', +event_props : 'àøåòéí', +advanced_props : 'îàôééðéí îú÷ãîéí', +popup_opts : 'àôùøåéåú', +anchor_names : 'òåâðéí', +target_same : 'ôúç áçìåï æä àå îñâøú æå', +target_parent : 'ôúç áçìåï àå áîñâøú äî÷åøééí', +target_top : 'ôúç áîñâøú äøàùéú (îçìéó àú ëì äîñâøåú)', +target_blank : 'ôúç áçìåï çãù', +popup : 'çìåï ÷åôõ ùì Javascript', +popup_url : 'ëúåáú äçìåï ä÷åôõ', +popup_name : 'ùí äçìåï', +popup_return : 'äëðñ \'return false\'', +popup_scrollbars : 'äöâ ôñé âìéìä', +popup_statusbar : 'äöâ ùåøú îöá', +popup_toolbar : 'äöâ ñøâìé ëìåí', +popup_menubar : 'äöâ àú ùåøú äúôøéèéí', +popup_location : 'äöâ àú ùåøú äëúåáú', +popup_resizable : 'çìåï ùðéúï ìùðåú àú âåãìå', +popup_dependent : 'úìåé (Mozilla/Firefox áìáã)', +popup_size : 'âåãì', +popup_position : 'îé÷åí (X/Y)', +id : 'Id', +style: 'ñâðåï', +classes : 'Classéí', +target_name : 'ùí éòã', +langdir : 'ëéååï ùôä', +target_langcode : 'ùôú éòã', +langcode : '÷åã ùôä', +encoding : '÷éãåã úååéí ùì äéòã', +mime : 'ñåâ MIME ùì äéòã', +rel : 'éçñ ùì ãó ìéòã', +rev : 'éçñ ùì éòã ìãó', +tabindex : 'ñãø èàáéí', +accesskey : 'î÷ù âéùä', +ltr : 'ùîàì ìéîéï', +rtl : 'éîéï ìùîàì' +}); \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/advlink/langs/hu.js b/webcit/tiny_mce/plugins/advlink/langs/hu.js new file mode 100644 index 000000000..75f6beb5f --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/hu.js @@ -0,0 +1,46 @@ +// HU lang variables + +tinyMCE.addToLang('advlink',{ +general_tab : 'Általános', +popup_tab : 'Popup', +events_tab : 'Események', +advanced_tab : 'Haladó', +general_props : 'Általános beállítások', +popup_props : 'Popup beállítások', +event_props : 'Események', +advanced_props : 'Haladó beállítások', +popup_opts : 'Opciók', +anchor_names : 'Horgonyok', +target_same : 'Megnyitás ebben az ablakban / keretben', +target_parent : 'Megnyitás a szülõ ablakban / keretben', +target_top : 'Megnyitás felsõ keretben (minden keretet lecserél)', +target_blank : 'Megnyitás új ablakban', +popup : 'Javascript popup', +popup_url : 'Popup URL', +popup_name : 'Ablak név', +popup_return : '\'return false\' beszúrása', +popup_scrollbars : 'Görgetõsávok megjelenítése', +popup_statusbar : 'Állapotsor megjelenítése', +popup_toolbar : 'Eszköztárak megjelenítése', +popup_menubar : 'Menüsor megjelenítése', +popup_location : 'Címsáv megjelenítése', +popup_resizable : 'Ablak átméretezhetõvé tétele', +popup_dependent : 'Függõ (csak Mozilla/Firefox)', +popup_size : 'Méret', +popup_position : 'Pozíció (X/Y)', +id : 'Azonosító', +style: 'Stílus', +classes : 'Osztályok', +target_name : 'Cél neve', +langdir : 'Szöveg pozíció', +target_langcode : 'Cél szöveg', +langcode : 'Szöveg kód', +encoding : 'Cél karakter kódolás', +mime : 'Cél MIME típus', +rel : 'Oldal kapcsolata a céllal', +rev : 'Cél kapcsolat az oldallal', +tabindex : 'Tabindex', +accesskey : 'Accesskey', +ltr : 'Balról jobbra', +rtl : 'Jobbról balra' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/is.js b/webcit/tiny_mce/plugins/advlink/langs/is.js new file mode 100644 index 000000000..3350e2b09 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/is.js @@ -0,0 +1,46 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('advlink',{ +general_tab : 'Almennt', +popup_tab : 'Sprettigluggi', +events_tab : 'Atburðir', +advanced_tab : 'Sérstillingar', +general_props : 'Almennar stillingar', +popup_props : 'Stillingar sprettiglugga', +event_props : 'Atburðir', +advanced_props : 'Sérstillingar', +popup_opts : 'Valkostir', +anchor_names : 'Akkeri', +target_same : 'Opna í þessum glugga / ramma', +target_parent : 'Opna í glugga / ramma foreldris', +target_top : 'Opna í efsta ramma (kemur í stað allra ramma)', +target_blank : 'Opna í nýjum glugga', +popup : 'Javascript sprettigluggi', +popup_url : 'Slóð sprettiglugga', +popup_name : 'Nafn glugga', +popup_return : 'Setja \'return false\'', +popup_scrollbars : 'Sýna skrunslár', +popup_statusbar : 'Sýna stöðustiku', +popup_toolbar : 'Sýna tólastiku', +popup_menubar : 'Sýna valstiku', +popup_location : 'Sýna slóðarstiku', +popup_resizable : 'Leyfa glugga að breyta stærð', +popup_dependent : 'Háður (eingöngu Mozilla/Firefox)', +popup_size : 'Stærð', +popup_position : 'Staðsetning (X/Y)', +id : 'Id', +style: 'Stíll', +classes : 'Klassi', +target_name : 'Nafn tengils', +langdir : 'Ritháttur tungumáls', +target_langcode : 'Tungumá tengils', +langcode : 'Tungumálskenni', +encoding : 'Textakóðun tengils', +mime : 'MIME-tegund tengils', +rel : 'Tengsl síðu til tengils', +rev : 'Tengsl tengils til síðu', +tabindex : 'Röðun', +accesskey : 'Flýtilykill', +ltr : 'Vinstri til hægri', +rtl : 'Hægri til vinstri' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/ko.js b/webcit/tiny_mce/plugins/advlink/langs/ko.js new file mode 100644 index 000000000..bcd48c04e --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/ko.js @@ -0,0 +1,21 @@ +// KO lang variables + +tinyMCE.addToLang('',{ +insert_link_target_same : '°°Àº â¿¡¼­ ¸µÅ©/ÇÁ·¹ÀÓ ¿­±â', +insert_link_target_parent : 'ºÎ¸ð â¿¡¼­ ¸µÅ©/ÇÁ·¹ÀÓ ¿­±â', +insert_link_target_top : 'TOP ÇÁ·¹ÀÓ¿¡¼­ ¿­±â (¸ðµç ÇÁ·¹ÀÓÀ» ´ëü)', +insert_link_target_blank : '»õ â¿¡¼­ ¿­±â', +insert_link_target_named : '»õ â¿¡¼­ ¿­±â', +insert_link_popup : 'JS-Popup', +insert_link_popup_url : 'Æ˾÷ URL', +insert_link_popup_name : 'â À̸§', +insert_link_popup_return : '\'return false\' ³Ö±â', +insert_link_popup_scrollbars : '½ºÅ©·Ñ¹Ù¸¦ º¸¿©ÁÜ', +insert_link_popup_statusbar : '»óÅÂâÀ» º¸¿©ÁÜ', +insert_link_popup_toolbar : 'Åø¹Ù¸¦ º¸¿©ÁÜ', +insert_link_popup_menubar : '¸Þ´º¹Ù¸¦ º¸¿©ÁÜ', +insert_link_popup_location : 'À§Ä¡ Ç¥½ÃÁÙÀ» º¸¿©ÁÜ', +insert_link_popup_resizable : 'Å©±â Á¶Àý °¡´ÉÇÑ À©µµ¿ì »ý¼º', +insert_link_popup_size : 'Å©±â', +insert_link_popup_position : 'À§Ä¡ (X/Y)' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/nb.js b/webcit/tiny_mce/plugins/advlink/langs/nb.js new file mode 100644 index 000000000..5528ada84 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/nb.js @@ -0,0 +1,46 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('advlink',{ +general_tab : 'Generelle innstillinger', +popup_tab : 'Popup', +events_tab : 'Hendelser', +advanced_tab : 'Avanserte innstillinger', +general_props : 'Generelle innstillinger', +popup_props : 'Popup innstillinger', +event_props : 'Hendelser', +advanced_props : 'Generelle innstillinger', +popup_opts : 'Innstillinger', +anchor_names : 'Bokmerke', +target_same : 'Åpne i samme vindu / ramme', +target_parent : 'Åpne i underliggende vindu / ramme', +target_top : 'Åpne i topprammen (erstatter alle rammer)', +target_blank : 'Åpne i et nytt vindu', +popup : 'Javascript popup', +popup_url : 'Popup URL', +popup_name : 'Vindu navn', +popup_return : 'Sett inn \'return false\'', +popup_scrollbars : 'Vis scrollbars', +popup_statusbar : 'Vis status bar', +popup_toolbar : 'Vis toolbars', +popup_menubar : 'Vis meny bar', +popup_location : 'Vis location bar', +popup_resizable : 'Gjør vinduet skalerbart', +popup_dependent : 'Avhengig vindu (Bare i Mozilla/Firefox)', +popup_size : 'St&oring;rrelse', +popup_position : 'Posisjon (X/Y)', +id : 'Id', +style: 'Stil', +classes : 'CSS klasser', +target_name : 'Mål navn', +langdir : 'Skrift retning', +target_langcode : 'Mål språk', +langcode : 'Språk kode', +encoding : 'Tegn konvertering', +mime : 'Målets MIME type', +rel : 'Relasjon side til mål', +rev : 'Relasjon mål til side', +tabindex : 'Tabindex', +accesskey : 'Accesskey', +ltr : 'Venstre mot høyre', +rtl : 'Høyre mot venstre' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/nl.js b/webcit/tiny_mce/plugins/advlink/langs/nl.js new file mode 100644 index 000000000..8d089ad12 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/nl.js @@ -0,0 +1,46 @@ +// NL lang variables + +tinyMCE.addToLang('',{ +general_tab : 'Algemeen', +popup_tab : 'Popup', +events_tab : 'Gebeurtenissen', +advanced_tab : 'Geavanceerd', +general_props : 'Algemene eigenschappen', +popup_props : 'Popup eigenschappen', +event_props : 'Gebeurtenissen', +advanced_props : 'Geavanceerde eigenschappen', +popup_opts : 'Opties', +anchor_names : 'Bladwijzers', +target_same : 'Openen in dit venster/frame', +target_parent : 'Openen in hgerliggend frame', +target_top : 'Openen in bovenste frame (vervangt alle frames)', +target_blank : 'Openen in nieuw venster', +popup : 'Javascript popup', +popup_url : 'Popup URL', +popup_name : 'Vensternaam', +popup_return : 'Voeg \'return false\' toe', +popup_scrollbars : 'Toon scrollbalken', +popup_statusbar : 'Toon statusbalk', +popup_toolbar : 'Toon werkbalk', +popup_menubar : 'Toon menubalk', +popup_location : 'Toon adresbalk', +popup_resizable : 'Maak venster schaalbaar', +popup_dependent : 'Afhankelijk (Mozilla/Firefox only)', +popup_size : 'Afmetingen', +popup_position : 'Positie (x/y)', +id : 'Id', +style: 'Stijl', +classes : 'Stijlen', +target_name : 'Naam doelframe', +langdir : 'Taalrichting', +target_langcode : 'Taal van doel', +langcode : 'Taalcode', +encoding : 'Doel character encoding', +mime : 'Doel MIME type', +rel : 'Relatie van pagina tot doel', +rev : 'Relatie van doel tot pagina', +tabindex : 'Tabindex', +accesskey : 'Toegangstoets', +ltr : 'Links naar rechts', +rtl : 'Rechts naar links' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/nn.js b/webcit/tiny_mce/plugins/advlink/langs/nn.js new file mode 100644 index 000000000..399f1d194 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/nn.js @@ -0,0 +1,46 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('advlink',{ +general_tab : 'Generelle innstillinger', +popup_tab : 'Popup', +events_tab : 'Hendelser', +advanced_tab : 'Avanserte innstillinger', +general_props : 'Generelle innstillinger', +popup_props : 'Popup innstillinger', +event_props : 'Hendelser', +advanced_props : 'Generelle innstillinger', +popup_opts : 'Innstillinger', +anchor_names : 'Bokmerke', +target_same : 'Åpne i samme vindauge / ramme', +target_parent : 'Åpne i underliggende vindauge / ramme', +target_top : 'Åpne i topprammen (erstatter alle rammer)', +target_blank : 'Åpne i eit nytt vindauge', +popup : 'Javascript popup', +popup_url : 'Popup URL', +popup_name : 'Vindauge navn', +popup_return : 'Sett inn \'return false\'', +popup_scrollbars : 'Vis scrollbars', +popup_statusbar : 'Vis status bar', +popup_toolbar : 'Vis toolbars', +popup_menubar : 'Vis meny bar', +popup_location : 'Vis location bar', +popup_resizable : 'Gjer vindauget skalerbart', +popup_dependent : 'Avhengig vindauge (Bare i Mozilla/Firefox)', +popup_size : 'Størrelse', +popup_position : 'Posisjon (X/Y)', +id : 'Id', +style: 'Stil', +classes : 'CSS klasser', +target_name : 'Mål navn', +langdir : 'Skrift retning', +target_langcode : 'Mål språk', +langcode : 'Språk kode', +encoding : 'Tekken konvertering', +mime : 'Målets MIME type', +rel : 'Relasjon side til mål', +rev : 'Relasjon mål til side', +tabindex : 'Tabindex', +accesskey : 'Accesskey', +ltr : 'Venstre mot høgre', +rtl : 'Høgre mot venstre' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/pl.js b/webcit/tiny_mce/plugins/advlink/langs/pl.js new file mode 100644 index 000000000..46c930c83 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/pl.js @@ -0,0 +1,49 @@ +// PL lang variables +// fixed by Wooya +// http://www.mfusion.prv.pl +// fixed by lemiel 14.11.2005 + +tinyMCE.addToLang('advlink',{ +general_tab : 'G³ówne ustawienia', +popup_tab : 'Okienko popup', +events_tab : 'Zdarzenia', +advanced_tab : 'Zaawansowane', +general_props : 'G³ówne', +popup_props : 'Ustawienia popup', +event_props : 'Zdarzenia', +advanced_props : 'Zaawansowane opcje', +popup_opts : 'Opcje', +anchor_names : 'Kotwice', +target_same : 'Otwórz w tym oknie / ramce', +target_parent : 'Otwórz w poprzednim oknie / ramce', +target_top : 'Otwórz w g³ównej ramce (zamienia wszystkie ramki)', +target_blank : 'Otwórz w nowym oknie', +popup : 'Okienko popup Javascript', +popup_url : 'URL dla popup', +popup_name : 'Nazwa okna', +popup_return : 'Wstaw \'return false\'', +popup_scrollbars : 'Poka¿ paski przewijania', +popup_statusbar : 'Poka¿ pasek statusu', +popup_toolbar : 'Poka¿ pasek narzêdzi', +popup_menubar : 'Poka¿ pasek menu', +popup_location : 'Poka¿ pasek adresu', +popup_resizable : 'Pozwalaj na zmianê wielko¶ci okna', +popup_dependent : 'Zale¿ne (tylko Mozilla/Firefox)', +popup_size : 'Rozmiar', +popup_position : 'Pozycja (X/Y)', +id : 'Id', +style: 'Styl', +classes : 'Klasa', +target_name : 'Nazwa celu', +langdir : 'Kierunek tekstu', +target_langcode : 'Jêzyk celu', +langcode : 'Kod jêzyka', +encoding : 'Kodowanie znaków celu', +mime : 'Typ MIME celu', +rel : 'Zale¿no¶æ strony do celu', +rev : 'Zale¿no¶æ celu do strony', +tabindex : 'Indeks tabeli', +accesskey : 'Klawisz dostêpu', +ltr : 'Lewy do prawego', +rtl : 'Prawy do lewego' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/pt_br.js b/webcit/tiny_mce/plugins/advlink/langs/pt_br.js new file mode 100644 index 000000000..159db1843 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/pt_br.js @@ -0,0 +1,54 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : ???? + * Revision and modifications: + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('advlink',{ +general_tab : 'Geral', +popup_tab : 'Popup', +events_tab : 'Eventos', +advanced_tab : 'Avançado', +general_props : 'Propriedades Gerais', +popup_props : 'Propriedades do Popup', +event_props : 'Eventos', +advanced_props : 'Propriedades Avançadas', +popup_opts : 'Opções', +anchor_names : 'Âncoras', +target_same : 'Abrir nesta janela / frame', +target_parent : 'Abrir na janela / frame', +target_top : 'Abrir na janela superior (repondo todas as frames)', +target_blank : 'Abrir em uma nova janela', +popup : 'Javascript popup', +popup_url : 'Popup de uma URL', +popup_name : 'Nome da Janela', +popup_return : 'Inserir \'returna falso\'', +popup_scrollbars : 'Mostrar barra de rolagem', +popup_statusbar : 'Mostrar barra de status', +popup_toolbar : 'Mostrar barra de ferramentas', +popup_menubar : 'Mostrar barra do menu', +popup_location : 'Mostrar barra de endereço', +popup_resizable : 'Permite redimensionamento da janela', +popup_dependent : 'Dependente (Somente para Mozilla/Firefox)', +popup_size : 'Tamanho', +popup_position : 'Posição (X/Y)', +id : 'Id', +style: 'Estilo', +classes : 'Classes', +target_name : 'Nome do Destino', +langdir : 'Direção do texto', +target_langcode : 'Idioma do destino', +langcode : 'Código do idioma', +encoding : 'Tipo de codifição de carctere de destino', +mime : 'Tipo de MIME do destino', +rel : 'Relacionamento da página com o destino', +rev : 'Relacionamento do destino com a página', +tabindex : 'Tabindex', +accesskey : 'Accesskey', +ltr : 'Esquerda para direita', +rtl : 'Direita para esquerda' +}); \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/advlink/langs/ru.js b/webcit/tiny_mce/plugins/advlink/langs/ru.js new file mode 100644 index 000000000..8e782dc2c --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/ru.js @@ -0,0 +1,47 @@ +// RU cp1251 lang variables + +tinyMCE.addToLang('advlink',{ +general_tab : 'Îñíîâíûå', +popup_tab : 'Âñïëûâàþùèå', +events_tab : 'Ñîáûòèÿ', +advanced_tab : 'Ðàñøèðåííûå', +general_props : 'Îñíîâíûå ñâîéñòâà', +popup_props : 'Ñâîéñòâà Popup ýëåìåíòîâ', +event_props : 'Ñîáûòèÿ', +advanced_props : 'Ðàñøèðåííûå íàñòðîéêè', +popup_opts : 'Îïöèè', +anchor_names : 'ßêîðÿ', +target_same : 'Îòêðûâàòü â ýòîì îêíå / ôðåéìå', +target_parent : 'Îòêðûâàòü â ðîäèòåëüñêîì îêíå / ôðåéìå', +target_top : 'Îòêðûâàòü â âåðõíåì ôðåéìå (çàìåíÿòü âñå ôðåéìû)', +target_blank : 'Îòêðûâàòü â íîâîì îêíå', +popup : 'Javascript popup', +popup_url : 'Popup URL', +popup_name : 'Èìÿ îêíà', +popup_return : 'Insert \'return false\'', +popup_scrollbars : 'Ïîêàçûâàòü ëèíåéêè ïðîêðóòêè', +popup_statusbar : 'Ïîêàçûâàòü status bar', +popup_toolbar : 'Ïîêàçûâàòü ïàíåëè èíñòðóìåíòîâ', +popup_menubar : 'Ïîêàçûâàòü ïàíåëü ìåíþ', +popup_location : 'Ïîêàçûâàòü location bar', +popup_resizable : 'Ïîçâîëèòü èçìåíÿòü ðàçìåðû îêíà', +popup_dependent : 'Çàâèñèìîñòü (òîëüêî Mozilla/Firefox)', +popup_size : 'Ðàçìåð', +popup_position : 'Ðàñïîëîæåíèå (X/Y)', +id : 'Id', +style: 'Ñòèëü', +classes : 'Êëàññû', +target_name : 'Èìÿ öåëè', +langdir : 'Íàïðàâëåíèå ïèñüìà â ÿçûêå', +target_langcode : 'Öåëåâîé ÿçûê', +langcode : 'Êîä ÿçûêà', +encoding : 'Öåëåâàÿ êîäèðîâêà', +mime : 'Öåëåâîé MIME òèï', +rel : 'Çàâèñèìîñòü page -> target', +rev : 'Çàâèñèìîñòü target -> page', +tabindex : 'Tabindex', +accesskey : 'Accesskey', +ltr : 'Ñëåâà íàïðàâî', +rtl : 'Ñïðàâà íàëåâî', +delta_width : 40 +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/advlink/langs/ru_KOI8-R.js new file mode 100644 index 000000000..a88821be4 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/ru_KOI8-R.js @@ -0,0 +1,46 @@ +// RU KOI8-R lang variables + +tinyMCE.addToLang('advlink',{ +general_tab : 'ïÓÎÏ×ÎÙÅ', +popup_tab : '÷ÓÐÌÙ×ÁÀÝÉÅ', +events_tab : 'óÏÂÙÔÉÑ', +advanced_tab : 'òÁÓÛÉÒÅÎÎÙÅ', +general_props : 'ïÓÎÏ×ÎÙÅ Ó×ÏÊÓÔ×Á', +popup_props : 'ó×ÏÊÓÔ×Á Popup ÜÌÅÍÅÎÔÏ×', +event_props : 'óÏÂÙÔÉÑ', +advanced_props : 'òÁÓÛÉÒÅÎÎÙÅ ÎÁÓÔÒÏÊËÉ', +popup_opts : 'ïÐÃÉÉ', +anchor_names : 'ñËÏÒÑ', +target_same : 'ïÔËÒÙ×ÁÔØ × ÜÔÏÍ ÏËÎÅ / ÆÒÅÊÍÅ', +target_parent : 'ïÔËÒÙ×ÁÔØ × ÒÏÄÉÔÅÌØÓËÏÍ ÏËÎÅ / ÆÒÅÊÍÅ', +target_top : 'ïÔËÒÙ×ÁÔØ × ×ÅÒÈÎÅÍ ÆÒÅÊÍÅ (ÚÁÍÅÎÑÔØ ×ÓÅ ÆÒÅÊÍÙ)', +target_blank : 'ïÔËÒÙ×ÁÔØ × ÎÏ×ÏÍ ÏËÎÅ', +popup : 'Javascript popup', +popup_url : 'Popup URL', +popup_name : 'éÍÑ ÏËÎÁ', +popup_return : 'Insert \'return false\'', +popup_scrollbars : 'ðÏËÁÚÙ×ÁÔØ ÌÉÎÅÊËÉ ÐÒÏËÒÕÔËÉ', +popup_statusbar : 'ðÏËÁÚÙ×ÁÔØ status bar', +popup_toolbar : 'ðÏËÁÚÙ×ÁÔØ ÐÁÎÅÌÉ ÉÎÓÔÒÕÍÅÎÔÏ×', +popup_menubar : 'ðÏËÁÚÙ×ÁÔØ ÐÁÎÅÌØ ÍÅÎÀ', +popup_location : 'ðÏËÁÚÙ×ÁÔØ location bar', +popup_resizable : 'ðÏÚ×ÏÌÉÔØ ÉÚÍÅÎÑÔØ ÒÁÚÍÅÒÙ ÏËÎÁ', +popup_dependent : 'úÁ×ÉÓÉÍÏÓÔØ (ÔÏÌØËÏ Mozilla/Firefox)', +popup_size : 'òÁÚÍÅÒ', +popup_position : 'òÁÓÐÏÌÏÖÅÎÉÅ (X/Y)', +id : 'Id', +style: 'óÔÉÌØ', +classes : 'ëÌÁÓÓÙ', +target_name : 'éÍÑ ÃÅÌÉ', +langdir : 'îÁÐÒÁ×ÌÅÎÉÅ ÐÉÓØÍÁ × ÑÚÙËÅ', +target_langcode : 'ãÅÌÅ×ÏÊ ÑÚÙË', +langcode : 'ëÏÄ ÑÚÙËÁ', +encoding : 'ãÅÌÅ×ÁÑ ËÏÄÉÒÏ×ËÁ', +mime : 'ãÅÌÅ×ÏÊ MIME ÔÉÐ', +rel : 'úÁ×ÉÓÉÍÏÓÔØ page -> target', +rev : 'úÁ×ÉÓÉÍÏÓÔØ target -> page', +tabindex : 'Tabindex', +accesskey : 'Accesskey', +ltr : 'óÌÅ×Á ÎÁÐÒÁ×Ï', +rtl : 'óÐÒÁ×Á ÎÁÌÅ×Ï' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/advlink/langs/ru_UTF-8.js new file mode 100644 index 000000000..146485dc0 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/ru_UTF-8.js @@ -0,0 +1,46 @@ +// RU UTF-8 lang variables + +tinyMCE.addToLang('advlink',{ +general_tab : 'Основные', +popup_tab : 'Всплывающие', +events_tab : 'События', +advanced_tab : 'Расширенные', +general_props : 'Основные свойства', +popup_props : 'Свойства Popup элементов', +event_props : 'События', +advanced_props : 'Расширенные настройки', +popup_opts : 'Опции', +anchor_names : 'Якоря', +target_same : 'Открывать в этом окне / фрейме', +target_parent : 'Открывать в родительском окне / фрейме', +target_top : 'Открывать в верхнем фрейме (заменять все фреймы)', +target_blank : 'Открывать в новом окне', +popup : 'Javascript popup', +popup_url : 'Popup URL', +popup_name : 'Имя окна', +popup_return : 'Insert \'return false\'', +popup_scrollbars : 'Показывать линейки прокрутки', +popup_statusbar : 'Показывать status bar', +popup_toolbar : 'Показывать панели инструментов', +popup_menubar : 'Показывать панель меню', +popup_location : 'Показывать location bar', +popup_resizable : 'Позволить изменять размеры окна', +popup_dependent : 'Зависимость (только Mozilla/Firefox)', +popup_size : 'Размер', +popup_position : 'Расположение (X/Y)', +id : 'Id', +style: 'Стиль', +classes : 'Классы', +target_name : 'Имя цели', +langdir : 'Направление письма в языке', +target_langcode : 'Целевой язык', +langcode : 'Код языка', +encoding : 'Целевая кодировка', +mime : 'Целевой MIME тип', +rel : 'Зависимость page -> target', +rev : 'Зависимость target -> page', +tabindex : 'Tabindex', +accesskey : 'Accesskey', +ltr : 'Слева направо', +rtl : 'Справа налево' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/sk.js b/webcit/tiny_mce/plugins/advlink/langs/sk.js new file mode 100644 index 000000000..8a1a8a49b --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/sk.js @@ -0,0 +1,30 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +insert_link_target_same : 'Otvoríť v rovnakom okne/ráme', +insert_link_target_parent : 'Otvoríť v rodičovském okne/ráme', +insert_link_target_top : 'OtvoriÅ¥ v najvyÅ¡Å¡om ráme (prepíše vÅ¡etky rámy)', +insert_link_target_blank : 'Otvoríť v novom okne', +insert_link_target_named : 'Otvoríť v okne', +insert_link_popup : 'JS-Popup', +insert_link_popup_url : 'Popup URL', +insert_link_popup_name : 'Názov okna', +insert_link_popup_return : 'VložiÅ¥ \'return false\'', +insert_link_popup_scrollbars : 'UkázaÅ¥ posúvníky', +insert_link_popup_statusbar : 'UkázaÅ¥ stavový riadok', +insert_link_popup_toolbar : 'UkázaÅ¥ ovládaciu liÅ¡tu', +insert_link_popup_menubar : 'UkázaÅ¥ menu', +insert_link_popup_location : 'UkázaÅ¥ liÅ¡tu umiestení', +insert_link_popup_resizable : 'Premenlivá veľkosÅ¥ okna', +insert_link_popup_size : 'VelikosÅ¥', +insert_link_popup_position : 'Umiestnenie (X/Y)', +insert_link_popup_missingtarget : 'Vložte názov cieľa alebo vyberte inú voľbu.' +}); + diff --git a/webcit/tiny_mce/plugins/advlink/langs/sv.js b/webcit/tiny_mce/plugins/advlink/langs/sv.js new file mode 100644 index 000000000..1efe42a97 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/sv.js @@ -0,0 +1,46 @@ +// UK lang variables + +tinyMCE.addToLang('advlink',{ +general_tab : 'Generella inställningar', +popup_tab : 'Popup', +events_tab : 'Händelser', +advanced_tab : 'Avancerade inställningar', +general_props : 'Generella inställningar', +popup_props : 'Popup inställningar', +event_props : 'Händelser', +advanced_props : 'Generella inställningar', +popup_opts : 'Inställningar', +anchor_names : 'Bokmärken', +target_same : 'Öppna i samma fönster / ram', +target_parent : 'Öppna i underliggande fönster / ram', +target_top : 'Öppna i toppramen (ersätter alla ramar)', +target_blank : 'Öppna i ett nytt fönster', +popup : 'Javascript popup', +popup_url : 'Popup URL', +popup_name : 'Fönster namn', +popup_return : 'Sättin \'return false\'', +popup_scrollbars : 'Visa scrollbars', +popup_statusbar : 'Visa status bar', +popup_toolbar : 'Visa toolbars', +popup_menubar : 'Visa menu bar', +popup_location : 'Visa location bar', +popup_resizable : 'Gör fönstret skalbart', +popup_dependent : 'Beroende fönster (Ändast i Mozilla/Firefox)', +popup_size : 'Storek', +popup_position : 'Position (X/Y)', +id : 'Id', +style: 'Stil', +classes : 'CSS Classer', +target_name : 'Mål namn', +langdir : 'Skrift riktning', +target_langcode : 'Mål språk', +langcode : 'Språk kåd', +encoding : 'Tecken konvertering', +mime : 'Målets MIME typ', +rel : 'Relation sida till mål', +rev : 'Relation mål till sida', +tabindex : 'Tabindex', +accesskey : 'Accesskey', +ltr : 'Vänster till höger', +rtl : 'Höger till vänster' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/zh_cn.js b/webcit/tiny_mce/plugins/advlink/langs/zh_cn.js new file mode 100644 index 000000000..9cd3de933 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/zh_cn.js @@ -0,0 +1,46 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('advlink',{ +general_tab : 'Ò»°ã', +popup_tab : 'µ¯³ö', +events_tab : 'ʼþ', +advanced_tab : '¸ß¼¶', +general_props : 'Ò»°ãÊôÐÔ', +popup_props : 'µ¯³öÊôÐÔ', +event_props : 'ʼþÊôÐÔ', +advanced_props : '¸ß¼¼ÊôÐÔ', +popup_opts : 'Ñ¡Ïî', +anchor_names : 'êµã', +target_same : 'ÔÚµ±Ç°´°¿Ú/¿ò¼ÜÖдò¿ª', +target_parent : 'ÔÚ¸¸´°¿Ú/¿ò¼ÜÖдò¿ª', +target_top : 'ÔÚ¶¥¶Ë´°¿Ú/¿ò¼ÜÖдò¿ª', +target_blank : 'ÔÚд°¿ÚÖдò¿ª', +popup : 'Javascript µ¯³ö', +popup_url : 'µ¯³öµØÖ·', +popup_name : 'µ¯³ö´°¿ÚÃû', +popup_return : '²åÈë \'return false\'', +popup_scrollbars : 'ÏÔʾ¹ö¶¯Ìõ', +popup_statusbar : 'ÏÔʾ״̬Ìõ', +popup_toolbar : 'ÏÔʾ¹¤¾ßÌõ', +popup_menubar : 'ÏÔʾ²Ëµ¥Ìõ', +popup_location : 'ÏÔʾµØÖ·Ìõ', +popup_resizable : '´°¿Ú´óС¿É±ä', +popup_dependent : 'Dependent (½öÏÞÓÚ Mozilla/Firefox)', +popup_size : '´óС', +popup_position : 'λÖà (X/Y)', +id : '±êʶ', +style: 'Ñùʽ', +classes : 'Àà', +target_name : 'Ä¿±êÃû³Æ', +langdir : 'Êéд·½Ïò', +target_langcode : 'Ä¿±êÓïÑÔ', +langcode : 'ÓïÑÔ±àÂë', +encoding : 'Ä¿±êÎÄ×Ö±àÂë', +mime : 'Ä¿±ê MIME ÖÖÀà', +rel : 'Ò³ÓëÄ¿±êµÄ¹Øϵ', +rev : 'Ä¿±êÓëÒ³µÄ¹Øϵ', +tabindex : 'Tabindex', +accesskey : 'Accesskey', +ltr : '´Ó×óµ½ÓÒ', +rtl : '´ÓÓÒµ½×ó' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/zh_tw.js b/webcit/tiny_mce/plugins/advlink/langs/zh_tw.js new file mode 100644 index 000000000..ebeef2639 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/zh_tw.js @@ -0,0 +1,47 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('advlink',{ +general_tab : '¤@¯ë', +popup_tab : '¸õ²{µøµ¡', +events_tab : '¨Æ¥ó', +advanced_tab : '¶i¶¥', +general_props : '¤@¯ëÄÝ©Ê', +popup_props : '¸õ²{µøµ¡ÄÝ©Ê', +event_props : '¨Æ¥óÄÝ©Ê', +advanced_props : '¶i¶¥ÄÝ©Ê', +popup_opts : '¿ï¶µ', +anchor_names : '³sµ²ÂI', +target_same : '©ó¦¹µøµ¡©Î®Ø¬[¤¤¶}±Ò', +target_parent : '©ó¤W¼hµøµ¡©Î®Ø¬[¤¤¶}±Ò', +target_top : '©ó¥D®Ø¬[¤¤¶}±Ò¡]·|¨ú¥N¥þ³¡®Ø¬[¡^', +target_blank : '©ó·sµøµ¡¤¤¶}±Ò', +popup : 'Javascript ¸õ²{µøµ¡', +popup_url : '¸õ²{µøµ¡ºô§}', +popup_name : 'µøµ¡¦WºÙ', +popup_return : '´¡¤J "¸T¦^¤W­¶"', +popup_scrollbars : 'Åã¥Ü²¾°Ê¶b', +popup_statusbar : 'Åã¥Üª¬ºA¦C', +popup_toolbar : 'Åã¥Ü¤u¨ã¦C', +popup_menubar : 'Åã¥Ü¿ï³æ¦C', +popup_location : 'Åã¥Ü¦ì¸m¦C', +popup_resizable : '¥i¤j¤p¤Æµøµ¡', +popup_dependent : '±qÄÝ©Ê¡]¶È¾A¥Î Mozilla / Firefox ¡^', +popup_size : '¤j¤p', +popup_position : '¦ì¸m¡] X / Y ¶b¡^', +id : '½s½X', +style: '¦¡¼Ë', +classes : '¤ÀÃþ', +target_name : '¹ï¶H¦WºÙ', +langdir : '»y¨¥¥Îªk', +target_langcode : '¹ï¶H»y¨¥', +langcode : '»y½X', +encoding : '¹ï¶H¦r¤¸½s½X', +mime : '¹ï¶H MIME «¬¦¡', +rel : '±Nºô­¶»P¹ï¶H²£¥ÍÃöÁp', +rev : '±N¹ï¶H»Pºô­¶²£¥ÍÃöÁp', +tabindex : '¼ÐÅÒ¯Á¤Þ', +accesskey : '¦s¨úÁä', +ltr : '¥Ñ¥ª¦Ü¥k', +rtl : '¥Ñ¥k¦Ü¥ª' +}); diff --git a/webcit/tiny_mce/plugins/advlink/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/advlink/langs/zh_tw_utf8.js new file mode 100644 index 000000000..e360a6d35 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/langs/zh_tw_utf8.js @@ -0,0 +1,47 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('advlink',{ +general_tab : '一般', +popup_tab : '跳現視窗', +events_tab : '事件', +advanced_tab : '進階', +general_props : '一般屬性', +popup_props : '跳現視窗屬性', +event_props : '事件屬性', +advanced_props : '進階屬性', +popup_opts : '選項', +anchor_names : '連結點', +target_same : '於此視窗或框架中開啟', +target_parent : '於上層視窗或框架中開啟', +target_top : '於主框架中開啟(會取代全部框架)', +target_blank : '於新視窗中開啟', +popup : 'Javascript 跳現視窗', +popup_url : '跳現視窗網址', +popup_name : '視窗名稱', +popup_return : '插入 "禁回上頁"', +popup_scrollbars : '顯示移動軸', +popup_statusbar : '顯示狀態列', +popup_toolbar : '顯示工具列', +popup_menubar : '顯示選單列', +popup_location : '顯示位置列', +popup_resizable : '可大小化視窗', +popup_dependent : '從屬性(僅適用 Mozilla / Firefox )', +popup_size : '大小', +popup_position : '位置( X / Y 軸)', +id : '編碼', +style: '式樣', +classes : '分類', +target_name : '對象名稱', +langdir : '語言用法', +target_langcode : '對象語言', +langcode : '語碼', +encoding : '對象字元編碼', +mime : '對象 MIME 型式', +rel : '將網頁與對象產生關聯', +rev : '將對象與網頁產生關聯', +tabindex : '標籤索引', +accesskey : '存取鍵', +ltr : '由左至右', +rtl : '由右至左' +}); diff --git a/webcit/tiny_mce/plugins/advlink/link.htm b/webcit/tiny_mce/plugins/advlink/link.htm new file mode 100644 index 000000000..2299ac808 --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/link.htm @@ -0,0 +1,334 @@ + + + {$lang_insert_link_title} + + + + + + + + +
    + + +
    +
    +
    + {$lang_advlink_general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
     
     
     
     
    + +
    +
    +
    + + + +
    +
    + {$lang_advlink_advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    + {$lang_advlink_event_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +
    + +
    + +
    + +
    +
    +
    + + diff --git a/webcit/tiny_mce/plugins/advlink/readme.txt b/webcit/tiny_mce/plugins/advlink/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/advlink/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/autosave/editor_plugin.js b/webcit/tiny_mce/plugins/autosave/editor_plugin.js new file mode 100644 index 000000000..cc0500858 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('autosave','en,sv,cs,he,nb,hu,de,da,ru,ru_KOI8-R,ru_UTF-8,nn,fi,cy,es,is,pl,pt_br');function TinyMCE_autosave_getInfo(){return{longname:'Auto save',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_autosave.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_autosave_beforeUnloadHandler(){var msg=tinyMCE.getLang("lang_autosave_unload_msg");var anyDirty=false;for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(inst.isDirty())return msg;}return;}window.onbeforeunload=TinyMCE_autosave_beforeUnloadHandler; \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/autosave/editor_plugin_src.js b/webcit/tiny_mce/plugins/autosave/editor_plugin_src.js new file mode 100644 index 000000000..0cc8b32cd --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/editor_plugin_src.js @@ -0,0 +1,30 @@ +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('autosave', 'en,sv,cs,he,nb,hu,de,da,ru,ru_KOI8-R,ru_UTF-8,nn,fi,cy,es,is,pl,pt_br'); + +function TinyMCE_autosave_getInfo() { + return { + longname : 'Auto save', + author : 'Moxiecode Systems', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_autosave.html', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; +}; + +function TinyMCE_autosave_beforeUnloadHandler() { + var msg = tinyMCE.getLang("lang_autosave_unload_msg"); + + var anyDirty = false; + for (var n in tinyMCE.instances) { + var inst = tinyMCE.instances[n]; + if (!tinyMCE.isInstance(inst)) + continue; + + if (inst.isDirty()) + return msg; + } + + return; +} + +window.onbeforeunload = TinyMCE_autosave_beforeUnloadHandler; diff --git a/webcit/tiny_mce/plugins/autosave/langs/cs.js b/webcit/tiny_mce/plugins/autosave/langs/cs.js new file mode 100644 index 000000000..8033482fd --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/cs.js @@ -0,0 +1,11 @@ +/** + * Czech lang variables + * encoding: utf-8 + * + * $Id: cs.js,v 1.1 2005/10/18 13:55:41 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'Změny, které jste udělal(a) budou ztraceny, jestliže opustíte tuto stránku.' +}); + diff --git a/webcit/tiny_mce/plugins/autosave/langs/cy.js b/webcit/tiny_mce/plugins/autosave/langs/cy.js new file mode 100644 index 000000000..60e79b947 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/cy.js @@ -0,0 +1,5 @@ +// EN lang variables + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'Byddi di\'n colli unrhyw newidiadau os wyt ti\'n gadael y dudalen hon.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/da.js b/webcit/tiny_mce/plugins/autosave/langs/da.js new file mode 100644 index 000000000..f66dfe3af --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/da.js @@ -0,0 +1,5 @@ +// DK lang variables contributed by Jan Moelgaard + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'De ændringer, du har lavet, vil gå tabt, hvis du lukker denne side.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/de.js b/webcit/tiny_mce/plugins/autosave/langs/de.js new file mode 100644 index 000000000..90060a91a --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/de.js @@ -0,0 +1,5 @@ +// DE lang variables + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'Alle Veränderungen an dieser Seite werden verlorengehen, wenn Sie diese Seite jetzt verlassen.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/en.js b/webcit/tiny_mce/plugins/autosave/langs/en.js new file mode 100644 index 000000000..01951332d --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/en.js @@ -0,0 +1,5 @@ +// EN lang variables + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'The changes you made will be lost if you navigate away from this page.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/es.js b/webcit/tiny_mce/plugins/autosave/langs/es.js new file mode 100644 index 000000000..de3dc362f --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/es.js @@ -0,0 +1,13 @@ +/** + * ES lang variables + * + * Authors : Alvaro Velasco, + * Adolfo Sanz De Diego (asanzdiego) , + * Carlos C Soto (eclipxe) + * Last Updated : October 17, 2005 + * TinyMCE Version : 2.0RC3 + */ + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'Los cambios que hayas hecho pueden perderse si navegas fuera de esta página.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/fr.js b/webcit/tiny_mce/plugins/autosave/langs/fr.js new file mode 100644 index 000000000..957a13663 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/fr.js @@ -0,0 +1,5 @@ +// Traduit par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'Vos modifications seront perdues si vous quittez cette page.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/he.js b/webcit/tiny_mce/plugins/autosave/langs/he.js new file mode 100644 index 000000000..cf3fa3c26 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/he.js @@ -0,0 +1,5 @@ +// HE lang variables + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'äùéðåééí ùáéöòú éàáãå àí úòæåá àú ãó æä.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/hu.js b/webcit/tiny_mce/plugins/autosave/langs/hu.js new file mode 100644 index 000000000..53ba609cd --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/hu.js @@ -0,0 +1,5 @@ +// HU lang variables + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'A módosítások el fognak veszni, ha elnavigálsz az oldalról.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/is.js b/webcit/tiny_mce/plugins/autosave/langs/is.js new file mode 100644 index 000000000..58c86a8c9 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/is.js @@ -0,0 +1,5 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'Breytingarnar sem þú gerðir munu hverfa ef þú flakkar annað.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/nb.js b/webcit/tiny_mce/plugins/autosave/langs/nb.js new file mode 100644 index 000000000..149c159fb --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/nb.js @@ -0,0 +1,6 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'Forandringene du gjorde forsvinner om du velger å forlate denne siden.' +}); + diff --git a/webcit/tiny_mce/plugins/autosave/langs/nl.js b/webcit/tiny_mce/plugins/autosave/langs/nl.js new file mode 100644 index 000000000..608764c85 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/nl.js @@ -0,0 +1,5 @@ +// NL lang variables + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'De gemaakte veranderingen zullen verloren gaan als u naar een andere pagina navigeert.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/nn.js b/webcit/tiny_mce/plugins/autosave/langs/nn.js new file mode 100644 index 000000000..d1f261f45 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/nn.js @@ -0,0 +1,6 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'Forandringene du gjorde forsvinner om du velger å forlate denne siden.' +}); + diff --git a/webcit/tiny_mce/plugins/autosave/langs/pl.js b/webcit/tiny_mce/plugins/autosave/langs/pl.js new file mode 100644 index 000000000..6656f5cbf --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/pl.js @@ -0,0 +1,8 @@ +// PL lang variables +// fixed by Wooya +// http://www.mfusion.prv.pl +// fixed by lemiel 14.11.2005 + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'Zmiany jakie wprowadzi³e¶ zostan± utracone, je¶li opu¶cisz teraz tê stronê.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/pt_br.js b/webcit/tiny_mce/plugins/autosave/langs/pt_br.js new file mode 100644 index 000000000..025a1b603 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/pt_br.js @@ -0,0 +1,12 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('',{ +autosave_unload_msg : 'As modificações feitas serão perdidas caso você navegue fora desta página.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/ru.js b/webcit/tiny_mce/plugins/autosave/langs/ru.js new file mode 100644 index 000000000..a58fa40c2 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/ru.js @@ -0,0 +1,5 @@ +// RU lang variables cp1251 + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'Èçìåíåíèÿ íå áóäóò ïîòåðÿíû åñëè Âû óéä¸òå ñ ýòîé ñòðàíèöû.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/autosave/langs/ru_KOI8-R.js new file mode 100644 index 000000000..f43c32552 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/ru_KOI8-R.js @@ -0,0 +1,5 @@ +// RU lang variables KOI8-R + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'éÚÍÅÎÅÎÉÑ ÎÅ ÂÕÄÕÔ ÐÏÔÅÒÑÎÙ ÅÓÌÉ ÷Ù ÕÊÄ£ÔÅ Ó ÜÔÏÊ ÓÔÒÁÎÉÃÙ.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/autosave/langs/ru_UTF-8.js new file mode 100644 index 000000000..092ec6ac1 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/ru_UTF-8.js @@ -0,0 +1,5 @@ +// RU lang variables UTF-8 + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'Изменения не будут потеряны если Вы уйдёте с этой страницы.' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/sk.js b/webcit/tiny_mce/plugins/autosave/langs/sk.js new file mode 100644 index 000000000..0224a754d --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/sk.js @@ -0,0 +1,13 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'Zmeny, ktoré ste urobyl(a) budú stratené, ak opustíte túto stránku.' +}); + diff --git a/webcit/tiny_mce/plugins/autosave/langs/sv.js b/webcit/tiny_mce/plugins/autosave/langs/sv.js new file mode 100644 index 000000000..7c1b66ee4 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/sv.js @@ -0,0 +1,6 @@ +// SE lang variables + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'Förändringarna du gjorde kommer att gå förlorade om du väljer att lämna denna sida.' +}); + diff --git a/webcit/tiny_mce/plugins/autosave/langs/zh_cn.js b/webcit/tiny_mce/plugins/autosave/langs/zh_cn.js new file mode 100644 index 000000000..260b67c57 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/zh_cn.js @@ -0,0 +1,5 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'Èç¹ûÄúÀ뿪±¾Ò³£¬ÄúËù×÷µÄÐ޸Ľ«»áÏûʧ¡£' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/zh_tw.js b/webcit/tiny_mce/plugins/autosave/langs/zh_tw.js new file mode 100644 index 000000000..ebf0f60a9 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/zh_tw.js @@ -0,0 +1,6 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +autosave_unload_msg : '©Ò¦³¤w§@ªº§ïÅÜ·|¦]±zÂ÷¶}¦¹­¶­±¦Ó¦Û°Ê©ñ±ó¤£Àx¦s' +}); diff --git a/webcit/tiny_mce/plugins/autosave/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/autosave/langs/zh_tw_utf8.js new file mode 100644 index 000000000..e18fc0045 --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/langs/zh_tw_utf8.js @@ -0,0 +1,6 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +autosave_unload_msg : '所有已作的改變會因您離開此頁面而自動放棄不儲存' +}); diff --git a/webcit/tiny_mce/plugins/autosave/readme.txt b/webcit/tiny_mce/plugins/autosave/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/autosave/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/contextmenu/css/contextmenu.css b/webcit/tiny_mce/plugins/contextmenu/css/contextmenu.css new file mode 100644 index 000000000..58bb33757 --- /dev/null +++ b/webcit/tiny_mce/plugins/contextmenu/css/contextmenu.css @@ -0,0 +1,60 @@ +.contextMenuIEPopup { + padding: 0px; + margin: 0px; + border: 0px; + overflow: hidden; +} + +.contextMenu { + position: absolute; + cursor: default; + z-index: 1000; + border: 1px solid #D4D0C8; + background-color: #FFFFFF; +} + +.contextMenuItem, .contextMenuItemOver { +} + +.contextMenuItemOver { + background-color: #B6BDD2; +} + +.contextMenuSeparator { + width: 100%; + background-color: #D4D0C8; + border: 0px; +} + +.contextMenuImage, .contextMenuItemDisabled { + border: 0px; +} + +.contextMenuIcon { + background-color: #F0F0EE; +} + +.contextMenuItemOver .contextMenuIcon { + background-color: #B6BDD2; +} + +.contextMenuIcon { + background-color: #F0F0EE; +} + +.contextMenuItemDisabled img { + filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); + -moz-opacity:0.3; + opacity: 0.3; +} + +.contextMenuText { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 11px; + margin-left: 5px; + margin-right: 10px; +} + +.contextMenuItemDisabled { + color: #AAAAAA; +} diff --git a/webcit/tiny_mce/plugins/contextmenu/editor_plugin.js b/webcit/tiny_mce/plugins/contextmenu/editor_plugin.js new file mode 100644 index 000000000..dc4567cff --- /dev/null +++ b/webcit/tiny_mce/plugins/contextmenu/editor_plugin.js @@ -0,0 +1 @@ +if(!tinyMCE.settings['contextmenu_skip_plugin_css'])tinyMCE.loadCSS(tinyMCE.baseURL+"/plugins/contextmenu/css/contextmenu.css");var TinyMCE_contextmenu_contextMenu=null;function TinyMCE_contextmenu_getInfo(){return{longname:'Context menus',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_contextmenu.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_contextmenu_initInstance(inst){if(tinyMCE.isMSIE5_0&&tinyMCE.isOpera)return;tinyMCE.addEvent(inst.getDoc(),"click",TinyMCE_contextmenu_hideContextMenu);tinyMCE.addEvent(inst.getDoc(),"keypress",TinyMCE_contextmenu_hideContextMenu);tinyMCE.addEvent(inst.getDoc(),"keydown",TinyMCE_contextmenu_hideContextMenu);tinyMCE.addEvent(document,"click",TinyMCE_contextmenu_hideContextMenu);tinyMCE.addEvent(document,"keypress",TinyMCE_contextmenu_hideContextMenu);tinyMCE.addEvent(document,"keydown",TinyMCE_contextmenu_hideContextMenu);var contextMenu=new ContextMenu({commandhandler:"TinyMCE_contextmenu_commandHandler",spacer_image:tinyMCE.baseURL+"/plugins/contextmenu/images/spacer.gif"});TinyMCE_contextmenu_contextMenu=contextMenu;if(tinyMCE.isGecko){tinyMCE.addEvent(inst.getDoc(),"contextmenu",function(e){TinyMCE_contextmenu_showContextMenu(tinyMCE.isMSIE?inst.contentWindow.event:e,inst);});}else tinyMCE.addEvent(inst.getDoc(),"contextmenu",TinyMCE_contextmenu_onContextMenu);}function TinyMCE_contextmenu_onContextMenu(e){var elm=tinyMCE.isMSIE?e.srcElement:e.target;var targetInst,body;if((body=tinyMCE.getParentElement(elm,"body"))!=null){for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(body==inst.getBody()){targetInst=inst;break;}}return TinyMCE_contextmenu_showContextMenu(tinyMCE.isMSIE?targetInst.contentWindow.event:e,targetInst);}}function TinyMCE_contextmenu_showContextMenu(e,inst){function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name):"";}var x,y,elm,contextMenu;var pos=tinyMCE.getAbsPosition(inst.iframeElement);x=tinyMCE.isMSIE?e.screenX:pos.absLeft+(e.pageX-inst.getBody().scrollLeft);y=tinyMCE.isMSIE?e.screenY:pos.absTop+(e.pageY-inst.getBody().scrollTop);elm=tinyMCE.isMSIE?e.srcElement:e.target;contextMenu=TinyMCE_contextmenu_contextMenu;contextMenu.inst=inst;window.setTimeout(function(){var theme=tinyMCE.getParam("theme");contextMenu.clearAll();var sel=inst.getSelectedText().length!=0||elm.nodeName=="IMG";contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/cut.gif","$lang_cut_desc","Cut","",!sel);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/copy.gif","$lang_copy_desc","Copy","",!sel);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_paste_desc","Paste","",false);elm=tinyMCE.getParentElement(elm,"img,table,td");if(elm){switch(elm.nodeName){case "IMG":contextMenu.addSeparator();if(tinyMCE.getAttrib(elm,'class').indexOf('mceItemFlash')==0)contextMenu.addItem(tinyMCE.baseURL+"/plugins/flash/images/flash.gif","$lang_flash_props","mceFlash");else contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/image.gif","$lang_image_props_desc",typeof(TinyMCE_advimage_getControlHTML)!="undefined"?"mceAdvImage":"mceImage");break;case "TABLE":case "TD":if(typeof(TinyMCE_table_getControlHTML)!="undefined"){var colspan=(elm.nodeName=="TABLE")?"":getAttrib(elm,"colspan");var rowspan=(elm.nodeName=="TABLE")?"":getAttrib(elm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/cut.gif","$lang_table_cut_row_desc","mceTableCutRow");contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/copy.gif","$lang_table_copy_row_desc","mceTableCopyRow");contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_table_paste_row_before_desc","mceTablePasteRowBefore","",inst.tableRowClipboard==null);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_table_paste_row_after_desc","mceTablePasteRowAfter","",inst.tableRowClipboard==null);contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_desc","mceInsertTable","insert");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_props_desc","mceInsertTable");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_cell_props.gif","$lang_table_cell_desc","mceTableCellProps");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete.gif","$lang_table_del","mceTableDelete");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_row_props.gif","$lang_table_row_desc","mceTableRowProps");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_row_before.gif","$lang_table_row_before_desc","mceTableInsertRowBefore");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_row_after.gif","$lang_table_row_after_desc","mceTableInsertRowAfter");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete_row.gif","$lang_table_delete_row_desc","mceTableDeleteRow");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_col_before.gif","$lang_table_col_before_desc","mceTableInsertColBefore");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_col_after.gif","$lang_table_col_after_desc","mceTableInsertColAfter");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete_col.gif","$lang_table_delete_col_desc","mceTableDeleteCol");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_split_cells.gif","$lang_table_split_cells_desc","mceTableSplitCells","",(colspan=="1"&&rowspan=="1"));contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_merge_cells.gif","$lang_table_merge_cells_desc","mceTableMergeCells","",false);}break;}}else{if(typeof(TinyMCE_table_getControlHTML)!="undefined"){contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_desc","mceInsertTable","insert");}}contextMenu.show(x,y);},10);tinyMCE.cancelEvent(e);return false;}function TinyMCE_contextmenu_hideContextMenu(){TinyMCE_contextmenu_contextMenu.hide();}function TinyMCE_contextmenu_commandHandler(command,value){TinyMCE_contextmenu_contextMenu.hide();var ui=false;if(command=="mceInsertTable"||command=="mceTableCellProps"||command=="mceTableRowProps"||command=="mceTableMergeCells")ui=true;if(command=="Paste")value=null;TinyMCE_contextmenu_contextMenu.inst.execCommand(command,ui,value);}function ContextMenu(settings){function defParam(key,def_val){settings[key]=typeof(settings[key])!="undefined"?settings[key]:def_val;}var self=this;this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.contextMenuDiv=document.createElement("div");this.contextMenuDiv.className="contextMenu";this.contextMenuDiv.setAttribute("class","contextMenu");this.contextMenuDiv.style.display="none";this.contextMenuDiv.style.position='absolute';this.contextMenuDiv.style.zindex=1000;this.contextMenuDiv.style.left='0px';this.contextMenuDiv.style.top='0px';this.contextMenuDiv.unselectable="on";document.body.appendChild(this.contextMenuDiv);defParam("commandhandler","");defParam("spacer_image","images/spacer.gif");this.items=new Array();this.settings=settings;this.html="";if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera){this.pop=window.createPopup();doc=this.pop.document;doc.open();doc.write('');doc.close();}};ContextMenu.prototype.clearAll=function(){this.html="";this.contextMenuDiv.innerHTML="";};ContextMenu.prototype.addSeparator=function(){this.html+='
    ';html+=title;html+='
    ';html+=this.html;html+='
    ';this.contextMenuDiv.innerHTML=html;if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera){var width,height;this.contextMenuDiv.style.display="block";width=this.contextMenuDiv.offsetWidth;height=this.contextMenuDiv.offsetHeight;this.contextMenuDiv.style.display="none";this.pop.document.body.innerHTML='
    '+html+"
    ";this.pop.document.tinyMCE=tinyMCE;this.pop.document.contextMenu=this;this.pop.show(x,y,width,height);}else{this.contextMenuDiv.style.left=x+'px';this.contextMenuDiv.style.top=y+'px';this.contextMenuDiv.style.display="block";}};ContextMenu.prototype.hide=function(){if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera)this.pop.hide();else this.contextMenuDiv.style.display="none";};ContextMenu.prototype.execCommand=function(command,value){eval(this.settings['commandhandler']+"(command, value);");}; \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/contextmenu/editor_plugin_src.js b/webcit/tiny_mce/plugins/contextmenu/editor_plugin_src.js new file mode 100644 index 000000000..42743e46a --- /dev/null +++ b/webcit/tiny_mce/plugins/contextmenu/editor_plugin_src.js @@ -0,0 +1,309 @@ +/* Import plugin specific language pack */ +//tinyMCE.importPluginLanguagePack('contextmenu', 'en,zh_cn,cs,fa,fr_ca,fr,de,nb'); +if (!tinyMCE.settings['contextmenu_skip_plugin_css']) + tinyMCE.loadCSS(tinyMCE.baseURL + "/plugins/contextmenu/css/contextmenu.css"); + +// Global contextmenu class instance +var TinyMCE_contextmenu_contextMenu = null; + +function TinyMCE_contextmenu_getInfo() { + return { + longname : 'Context menus', + author : 'Moxiecode Systems', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_contextmenu.html', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; +}; + +function TinyMCE_contextmenu_initInstance(inst) { + // Is not working on MSIE 5.0 or Opera no contextmenu event + if (tinyMCE.isMSIE5_0 && tinyMCE.isOpera) + return; + + // Add hide event handles + tinyMCE.addEvent(inst.getDoc(), "click", TinyMCE_contextmenu_hideContextMenu); + tinyMCE.addEvent(inst.getDoc(), "keypress", TinyMCE_contextmenu_hideContextMenu); + tinyMCE.addEvent(inst.getDoc(), "keydown", TinyMCE_contextmenu_hideContextMenu); + tinyMCE.addEvent(document, "click", TinyMCE_contextmenu_hideContextMenu); + tinyMCE.addEvent(document, "keypress", TinyMCE_contextmenu_hideContextMenu); + tinyMCE.addEvent(document, "keydown", TinyMCE_contextmenu_hideContextMenu); + + var contextMenu = new ContextMenu({ + commandhandler : "TinyMCE_contextmenu_commandHandler", + spacer_image : tinyMCE.baseURL + "/plugins/contextmenu/images/spacer.gif" + }); + + // Register global reference + TinyMCE_contextmenu_contextMenu = contextMenu; + + // Attach contextmenu event + if (tinyMCE.isGecko) { + tinyMCE.addEvent(inst.getDoc(), "contextmenu", function(e) {TinyMCE_contextmenu_showContextMenu(tinyMCE.isMSIE ? inst.contentWindow.event : e, inst);}); + } else + tinyMCE.addEvent(inst.getDoc(), "contextmenu", TinyMCE_contextmenu_onContextMenu); +} + +function TinyMCE_contextmenu_onContextMenu(e) { + var elm = tinyMCE.isMSIE ? e.srcElement : e.target; + var targetInst, body; + + // Find instance + if ((body = tinyMCE.getParentElement(elm, "body")) != null) { + for (var n in tinyMCE.instances) { + var inst = tinyMCE.instances[n]; + if (!tinyMCE.isInstance(inst)) + continue; + + if (body == inst.getBody()) { + targetInst = inst; + break; + } + } + + return TinyMCE_contextmenu_showContextMenu(tinyMCE.isMSIE ? targetInst.contentWindow.event : e, targetInst); + } +} + +function TinyMCE_contextmenu_showContextMenu(e, inst) { + function getAttrib(elm, name) { + return elm.getAttribute(name) ? elm.getAttribute(name) : ""; + } + + var x, y, elm, contextMenu; + var pos = tinyMCE.getAbsPosition(inst.iframeElement); + + x = tinyMCE.isMSIE ? e.screenX : pos.absLeft + (e.pageX - inst.getBody().scrollLeft); + y = tinyMCE.isMSIE ? e.screenY : pos.absTop + (e.pageY - inst.getBody().scrollTop); + elm = tinyMCE.isMSIE ? e.srcElement : e.target; + contextMenu = TinyMCE_contextmenu_contextMenu; + contextMenu.inst = inst; + + // Mozilla needs some time + window.setTimeout(function () { + var theme = tinyMCE.getParam("theme"); + + contextMenu.clearAll(); + var sel = inst.getSelectedText().length != 0 || elm.nodeName == "IMG"; + + // Default items + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_cut_desc", "Cut", "", !sel); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_copy_desc", "Copy", "", !sel); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_paste_desc", "Paste", "", false); + + // Get element + elm = tinyMCE.getParentElement(elm, "img,table,td"); + if (elm) { + switch (elm.nodeName) { + case "IMG": + contextMenu.addSeparator(); + + // If flash + if (tinyMCE.getAttrib(elm, 'class').indexOf('mceItemFlash') == 0) + contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_flash_props", "mceFlash"); + else + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/image.gif", "$lang_image_props_desc", typeof(TinyMCE_advimage_getControlHTML) != "undefined" ? "mceAdvImage" : "mceImage"); + break; + + case "TABLE": + case "TD": + // Is table plugin loaded + if (typeof(TinyMCE_table_getControlHTML) != "undefined") { + var colspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "colspan"); + var rowspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "rowspan"); + + colspan = colspan == "" ? "1" : colspan; + rowspan = rowspan == "" ? "1" : rowspan; + + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_table_cut_row_desc", "mceTableCutRow"); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_table_copy_row_desc", "mceTableCopyRow"); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_before_desc", "mceTablePasteRowBefore", "", inst.tableRowClipboard == null); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_after_desc", "mceTablePasteRowAfter", "", inst.tableRowClipboard == null); + +/* contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyleft.gif", "$lang_justifyleft_desc", "JustifyLeft", "", false); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifycenter.gif", "$lang_justifycenter_desc", "JustifyCenter", "", false); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyright.gif", "$lang_justifyright_desc", "JustifyRight", "", false); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyfull.gif", "$lang_justifyfull_desc", "JustifyFull", "", false);*/ + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_props_desc", "mceInsertTable"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_cell_props.gif", "$lang_table_cell_desc", "mceTableCellProps"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete.gif", "$lang_table_del", "mceTableDelete"); + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_row_props.gif", "$lang_table_row_desc", "mceTableRowProps"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_before.gif", "$lang_table_row_before_desc", "mceTableInsertRowBefore"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_after.gif", "$lang_table_row_after_desc", "mceTableInsertRowAfter"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_row.gif", "$lang_table_delete_row_desc", "mceTableDeleteRow"); + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_before.gif", "$lang_table_col_before_desc", "mceTableInsertColBefore"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_after.gif", "$lang_table_col_after_desc", "mceTableInsertColAfter"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_col.gif", "$lang_table_delete_col_desc", "mceTableDeleteCol"); + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_split_cells.gif", "$lang_table_split_cells_desc", "mceTableSplitCells", "", (colspan == "1" && rowspan == "1")); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_merge_cells.gif", "$lang_table_merge_cells_desc", "mceTableMergeCells", "", false); + } + break; + } + } else { + // Add table specific + if (typeof(TinyMCE_table_getControlHTML) != "undefined") { + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert"); + } + } + + contextMenu.show(x, y); + }, 10); + + // Cancel default handeling + tinyMCE.cancelEvent(e); + return false; +} + +function TinyMCE_contextmenu_hideContextMenu() { + TinyMCE_contextmenu_contextMenu.hide(); +} + +function TinyMCE_contextmenu_commandHandler(command, value) { + TinyMCE_contextmenu_contextMenu.hide(); + + // UI must be true on these + var ui = false; + if (command == "mceInsertTable" || command == "mceTableCellProps" || command == "mceTableRowProps" || command == "mceTableMergeCells") + ui = true; + + if (command == "Paste") + value = null; + + TinyMCE_contextmenu_contextMenu.inst.execCommand(command, ui, value); +} + +// Context menu class + +function ContextMenu(settings) { + // Default value function + function defParam(key, def_val) { + settings[key] = typeof(settings[key]) != "undefined" ? settings[key] : def_val; + } + + var self = this; + + this.isMSIE = (navigator.appName == "Microsoft Internet Explorer"); + + // Setup contextmenu div + this.contextMenuDiv = document.createElement("div"); + this.contextMenuDiv.className = "contextMenu"; + this.contextMenuDiv.setAttribute("class", "contextMenu"); + this.contextMenuDiv.style.display = "none"; + this.contextMenuDiv.style.position = 'absolute'; + this.contextMenuDiv.style.zindex = 1000; + this.contextMenuDiv.style.left = '0px'; + this.contextMenuDiv.style.top = '0px'; + this.contextMenuDiv.unselectable = "on"; + + document.body.appendChild(this.contextMenuDiv); + + // Setup default values + defParam("commandhandler", ""); + defParam("spacer_image", "images/spacer.gif"); + + this.items = new Array(); + this.settings = settings; + this.html = ""; + + // IE Popup + if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) { + this.pop = window.createPopup(); + doc = this.pop.document; + doc.open(); + doc.write(''); + doc.close(); + } +}; + +ContextMenu.prototype.clearAll = function() { + this.html = ""; + this.contextMenuDiv.innerHTML = ""; +}; + +ContextMenu.prototype.addSeparator = function() { + this.html += '
    '; + + // Add text + html += title; + + html += '
    '; + html += this.html; + html += '
    '; + + this.contextMenuDiv.innerHTML = html; + + if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) { + var width, height; + + // Get dimensions + this.contextMenuDiv.style.display = "block"; + width = this.contextMenuDiv.offsetWidth; + height = this.contextMenuDiv.offsetHeight; + this.contextMenuDiv.style.display = "none"; + + // Setup popup and show + this.pop.document.body.innerHTML = '
    ' + html + "
    "; + this.pop.document.tinyMCE = tinyMCE; + this.pop.document.contextMenu = this; + this.pop.show(x, y, width, height); + } else { + this.contextMenuDiv.style.left = x + 'px'; + this.contextMenuDiv.style.top = y + 'px'; + this.contextMenuDiv.style.display = "block"; + } +}; + +ContextMenu.prototype.hide = function() { + if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) + this.pop.hide(); + else + this.contextMenuDiv.style.display = "none"; +}; + +ContextMenu.prototype.execCommand = function(command, value) { + eval(this.settings['commandhandler'] + "(command, value);"); +}; diff --git a/webcit/tiny_mce/plugins/contextmenu/images/spacer.gif b/webcit/tiny_mce/plugins/contextmenu/images/spacer.gif new file mode 100644 index 0000000000000000000000000000000000000000..388486517fa8da13ebd150e8f65d5096c3e10c3a GIT binary patch literal 43 ncmZ?wbhEHbWMp7un7{x9ia%KxMSyG_5FaGNz{KRj$Y2csb)f_x literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/contextmenu/readme.txt b/webcit/tiny_mce/plugins/contextmenu/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/contextmenu/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/directionality/editor_plugin.js b/webcit/tiny_mce/plugins/directionality/editor_plugin.js new file mode 100644 index 000000000..78e192173 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('directionality','en,sv,fr_ca,zh_cn,cs,da,he,nb,de,hu,ru,ru_KOI8-R,ru_UTF-8,nn,es,cy,is,pl,nl,fr,pt_br');function TinyMCE_directionality_getInfo(){return{longname:'Directionality',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_directionality.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_directionality_getControlHTML(control_name){switch(control_name){case "ltr":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceDirectionLTR\');return false;';return '';case "rtl":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceDirectionRTL\');return false;';return '';}return "";}function TinyMCE_directionality_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceDirectionLTR":var inst=tinyMCE.getInstanceById(editor_id);var elm=tinyMCE.getParentElement(inst.getFocusElement(),"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(elm)elm.setAttribute("dir","ltr");tinyMCE.triggerNodeChange(false);return true;case "mceDirectionRTL":var inst=tinyMCE.getInstanceById(editor_id);var elm=tinyMCE.getParentElement(inst.getFocusElement(),"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(elm)elm.setAttribute("dir","rtl");tinyMCE.triggerNodeChange(false);return true;}return false;}function TinyMCE_directionality_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name):"";}tinyMCE.switchClassSticky(editor_id+'_ltr','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_rtl','mceButtonNormal',false);if(node==null)return;var elm=tinyMCE.getParentElement(node,"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(!elm){tinyMCE.switchClassSticky(editor_id+'_ltr','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_rtl','mceButtonDisabled',true);return;}var dir=getAttrib(elm,"dir");if(dir=="ltr"||dir=="")tinyMCE.switchClassSticky(editor_id+'_ltr','mceButtonSelected',false);else tinyMCE.switchClassSticky(editor_id+'_rtl','mceButtonSelected',false);return true;} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/directionality/editor_plugin_src.js b/webcit/tiny_mce/plugins/directionality/editor_plugin_src.js new file mode 100644 index 000000000..210d2aa26 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/editor_plugin_src.js @@ -0,0 +1,81 @@ +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('directionality', 'en,sv,fr_ca,zh_cn,cs,da,he,nb,de,hu,ru,ru_KOI8-R,ru_UTF-8,nn,es,cy,is,pl,nl,fr,pt_br'); + +function TinyMCE_directionality_getInfo() { + return { + longname : 'Directionality', + author : 'Moxiecode Systems', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_directionality.html', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; +}; + +function TinyMCE_directionality_getControlHTML(control_name) { + switch (control_name) { + case "ltr": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceDirectionLTR\');return false;'; + return ''; + + case "rtl": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceDirectionRTL\');return false;'; + return ''; + } + + return ""; +} + +function TinyMCE_directionality_execCommand(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mceDirectionLTR": + var inst = tinyMCE.getInstanceById(editor_id); + var elm = tinyMCE.getParentElement(inst.getFocusElement(), "p,div,td,h1,h2,h3,h4,h5,h6,pre,address"); + + if (elm) + elm.setAttribute("dir", "ltr"); + + tinyMCE.triggerNodeChange(false); + return true; + + case "mceDirectionRTL": + var inst = tinyMCE.getInstanceById(editor_id); + var elm = tinyMCE.getParentElement(inst.getFocusElement(), "p,div,td,h1,h2,h3,h4,h5,h6,pre,address"); + + if (elm) + elm.setAttribute("dir", "rtl"); + + tinyMCE.triggerNodeChange(false); + return true; + } + + // Pass to next handler in chain + return false; +} + +function TinyMCE_directionality_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + function getAttrib(elm, name) { + return elm.getAttribute(name) ? elm.getAttribute(name) : ""; + } + + tinyMCE.switchClassSticky(editor_id + '_ltr', 'mceButtonNormal', false); + tinyMCE.switchClassSticky(editor_id + '_rtl', 'mceButtonNormal', false); + + if (node == null) + return; + + var elm = tinyMCE.getParentElement(node, "p,div,td,h1,h2,h3,h4,h5,h6,pre,address"); + if (!elm) { + tinyMCE.switchClassSticky(editor_id + '_ltr', 'mceButtonDisabled', true); + tinyMCE.switchClassSticky(editor_id + '_rtl', 'mceButtonDisabled', true); + return; + } + + var dir = getAttrib(elm, "dir"); + if (dir == "ltr" || dir == "") + tinyMCE.switchClassSticky(editor_id + '_ltr', 'mceButtonSelected', false); + else + tinyMCE.switchClassSticky(editor_id + '_rtl', 'mceButtonSelected', false); + + return true; +} diff --git a/webcit/tiny_mce/plugins/directionality/images/ltr.gif b/webcit/tiny_mce/plugins/directionality/images/ltr.gif new file mode 100644 index 0000000000000000000000000000000000000000..ac8f30c1208e044ac5ed8f4f82c2e513c56c9f4b GIT binary patch literal 155 zcmV;M0A&A1Nk%w1VH5xq0K*0V6B83EOqQXfrM$epT3%aDeA>#+*g!o%lCtD@cz8l? zx@C{wCodDf2?TZ&Ww46PQZJ;6HbgF) J&uDZ606X)4Hvs?u literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/directionality/images/rtl.gif b/webcit/tiny_mce/plugins/directionality/images/rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..0348f9965669dd9cfba3c69d71d20ea3928e46fe GIT binary patch literal 153 zcmV;K0A~M3Nk%w1VH5xq0K*Lc6&4jPQl5&6in_+zPfbr=jNa1D%1Uy=K0H3Nv#n}w zX?>#YH($5z?CQtO-2eapA^8LW000jFEC2ui02BZe000C=@X1N5y*TU5yU$K@847`% z$mA5FC73`GOG9yB3IYHR|EvoJCQ;(~3X4J@W03VE4#r`rF-`^yYR0P4Vz}3jcuX#v H%@F`Q*OWXP literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/directionality/langs/cs.js b/webcit/tiny_mce/plugins/directionality/langs/cs.js new file mode 100644 index 000000000..194657195 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/cs.js @@ -0,0 +1,12 @@ +/** + * Czech lang variables + * encoding: utf-8 + * + * $Id: cs.js,v 1.1 2005/10/18 13:55:41 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Směr z leva doprava', +directionality_rtl_desc : 'Směr z prava doleva' +}); + diff --git a/webcit/tiny_mce/plugins/directionality/langs/cy.js b/webcit/tiny_mce/plugins/directionality/langs/cy.js new file mode 100644 index 000000000..0f593a6e5 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/cy.js @@ -0,0 +1,6 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Cyfeiriad chwith i\'r dde', +directionality_rtl_desc : 'Cyfeiriad dde i\'r chwith' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/da.js b/webcit/tiny_mce/plugins/directionality/langs/da.js new file mode 100644 index 000000000..5eab4ea02 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/da.js @@ -0,0 +1,6 @@ +// DK lang variables contributed by Jan Moelgaard + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Retning - venstre mod højre', +directionality_rtl_desc : 'Retning - højre mod venstre' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/de.js b/webcit/tiny_mce/plugins/directionality/langs/de.js new file mode 100644 index 000000000..5551a486a --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/de.js @@ -0,0 +1,6 @@ +// DE lang variables + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Von links nach rechts', +directionality_rtl_desc : 'Von rechts nach links' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/en.js b/webcit/tiny_mce/plugins/directionality/langs/en.js new file mode 100644 index 000000000..a1db29785 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/en.js @@ -0,0 +1,6 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Direction left to right', +directionality_rtl_desc : 'Direction right to left' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/es.js b/webcit/tiny_mce/plugins/directionality/langs/es.js new file mode 100644 index 000000000..deca2674f --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/es.js @@ -0,0 +1,14 @@ +/** + * ES lang variables + * + * Authors : Alvaro Velasco, + * Adolfo Sanz De Diego (asanzdiego) , + * Carlos C Soto (eclipxe) + * Last Updated : October 17, 2005 + * TinyMCE Version : 2.0RC3 + */ + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Dirección de izquierda a derecha', +directionality_rtl_desc : 'Dirección de derecha a izquierda' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/fr.js b/webcit/tiny_mce/plugins/directionality/langs/fr.js new file mode 100644 index 000000000..6a4e24a2f --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/fr.js @@ -0,0 +1,6 @@ +// Traduit par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Vers la droite', +directionality_rtl_desc : 'Vers la gauche' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/fr_ca.js b/webcit/tiny_mce/plugins/directionality/langs/fr_ca.js new file mode 100644 index 000000000..1ed3b89ea --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/fr_ca.js @@ -0,0 +1,6 @@ +// fr_ca lang variables + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Direction de la gauche vers la droite', +directionality_rtl_desc : 'Direction de la droite vers la gauche' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/he.js b/webcit/tiny_mce/plugins/directionality/langs/he.js new file mode 100644 index 000000000..063b94313 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/he.js @@ -0,0 +1,6 @@ +// HE lang variables by Liron Newman, http://eesh.net + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'ëéååï ùîàì ìéîéï', +directionality_rtl_desc : 'ëéååï éîéï ìùîàì' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/hu.js b/webcit/tiny_mce/plugins/directionality/langs/hu.js new file mode 100644 index 000000000..d61608a9b --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/hu.js @@ -0,0 +1,6 @@ +// HU lang variables + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Elhelyezkedés balról jobbra', +directionality_rtl_desc : 'Elhelyezkedés jobbról balra' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/is.js b/webcit/tiny_mce/plugins/directionality/langs/is.js new file mode 100644 index 000000000..19b66a903 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/is.js @@ -0,0 +1,6 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Frá vinstri til hægri', +directionality_rtl_desc : 'Frá hægri til vinstri' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/nb.js b/webcit/tiny_mce/plugins/directionality/langs/nb.js new file mode 100644 index 000000000..bec3514b8 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/nb.js @@ -0,0 +1,6 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Retning fra venstre mot høyre', +directionality_rtl_desc : 'Retning fra høyre mot venstre' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/nl.js b/webcit/tiny_mce/plugins/directionality/langs/nl.js new file mode 100644 index 000000000..409d6df20 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/nl.js @@ -0,0 +1,6 @@ +// NL lang variables + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Richting links naar rechts', +directionality_rtl_desc : 'Richting rechts naar links' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/nn.js b/webcit/tiny_mce/plugins/directionality/langs/nn.js new file mode 100644 index 000000000..3186896ec --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/nn.js @@ -0,0 +1,6 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Venstre mot høgre', +directionality_rtl_desc : 'Høgre mot venstre' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/pl.js b/webcit/tiny_mce/plugins/directionality/langs/pl.js new file mode 100644 index 000000000..90d400d56 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/pl.js @@ -0,0 +1,8 @@ +// PL lang variables +// fixed by Wooya +// http://www.mfusion.prv.pl + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Kierunek od lewej do prawej', +directionality_rtl_desc : 'Kierunek od prawej do lewej' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/pt_br.js b/webcit/tiny_mce/plugins/directionality/langs/pt_br.js new file mode 100644 index 000000000..dc240f253 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/pt_br.js @@ -0,0 +1,13 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Direcionamento da esquerda para direita', +directionality_rtl_desc : 'Direcionamento da direita para esquerda' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/ru.js b/webcit/tiny_mce/plugins/directionality/langs/ru.js new file mode 100644 index 000000000..263b2d27f --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/ru.js @@ -0,0 +1,6 @@ +// RU lang variables cp1251 + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Íàïðàâëåíèå ñëåâà íàïðàâî', +directionality_rtl_desc : 'Íàïðàâëåíèå ñïðàâà íàëåâî' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/directionality/langs/ru_KOI8-R.js new file mode 100644 index 000000000..e2dba4be8 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/ru_KOI8-R.js @@ -0,0 +1,6 @@ +// RU lang variables KOI8-R + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'îÁÐÒÁ×ÌÅÎÉÅ ÓÌÅ×Á ÎÁÐÒÁ×Ï', +directionality_rtl_desc : 'îÁÐÒÁ×ÌÅÎÉÅ ÓÐÒÁ×Á ÎÁÌÅ×Ï' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/directionality/langs/ru_UTF-8.js new file mode 100644 index 000000000..5ce95effd --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/ru_UTF-8.js @@ -0,0 +1,6 @@ +// RU lang variables UTF-8 + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Направление слева направо', +directionality_rtl_desc : 'Направление справа налево' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/sk.js b/webcit/tiny_mce/plugins/directionality/langs/sk.js new file mode 100644 index 000000000..0754b557e --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/sk.js @@ -0,0 +1,14 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Smer z ľava doprava', +directionality_rtl_desc : 'Smer z prava doľava' +}); + diff --git a/webcit/tiny_mce/plugins/directionality/langs/sv.js b/webcit/tiny_mce/plugins/directionality/langs/sv.js new file mode 100644 index 000000000..7abfc8dba --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/sv.js @@ -0,0 +1,6 @@ +// SV lang variables + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Riktning från vänster till höger', +directionality_rtl_desc : 'Riktning från höger till vänster' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/zh_cn.js b/webcit/tiny_mce/plugins/directionality/langs/zh_cn.js new file mode 100644 index 000000000..922874f18 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/zh_cn.js @@ -0,0 +1,6 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('',{ +directionality_ltr_desc : '·½Ïò´Ó×óÍùÓÒ', +directionality_rtl_desc : '·½Ïò´ÓÓÒÍù×ó' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/zh_tw.js b/webcit/tiny_mce/plugins/directionality/langs/zh_tw.js new file mode 100644 index 000000000..db59c8670 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/zh_tw.js @@ -0,0 +1,7 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +directionality_ltr_desc : '¥Ñ¥ª©¹¥k¤è¦V', +directionality_rtl_desc : '¥Ñ¥k©¹¥ª¤è¦V' +}); diff --git a/webcit/tiny_mce/plugins/directionality/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/directionality/langs/zh_tw_utf8.js new file mode 100644 index 000000000..54e320170 --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/langs/zh_tw_utf8.js @@ -0,0 +1,7 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +directionality_ltr_desc : '由左往右方向', +directionality_rtl_desc : '由右往左方向' +}); diff --git a/webcit/tiny_mce/plugins/directionality/readme.txt b/webcit/tiny_mce/plugins/directionality/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/directionality/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/emotions/editor_plugin.js b/webcit/tiny_mce/plugins/emotions/editor_plugin.js new file mode 100644 index 000000000..68f2c42b7 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('emotions','en,sv,zh_cn,cs,fa,fr_ca,fr,de,pl,pt_br,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,es,cy,is,zh_tw,zh_tw_utf8,sk');function TinyMCE_emotions_getInfo(){return{longname:'Emotions',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_emotions.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_emotions_getControlHTML(control_name){switch(control_name){case "emotions":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceEmotion\');return false;';return '';}return "";}function TinyMCE_emotions_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceEmotion":var template=new Array();template['file']='../../plugins/emotions/emotions.htm';template['width']=160;template['height']=160;template['width']+=tinyMCE.getLang('lang_emotions_delta_width',0);template['height']+=tinyMCE.getLang('lang_emotions_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;}return false;} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/emotions/editor_plugin_src.js b/webcit/tiny_mce/plugins/emotions/editor_plugin_src.js new file mode 100644 index 000000000..4517b9479 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/editor_plugin_src.js @@ -0,0 +1,51 @@ +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('emotions', 'en,sv,zh_cn,cs,fa,fr_ca,fr,de,pl,pt_br,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,es,cy,is,zh_tw,zh_tw_utf8,sk'); + +function TinyMCE_emotions_getInfo() { + return { + longname : 'Emotions', + author : 'Moxiecode Systems', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_emotions.html', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; +}; + +/** + * Returns the HTML contents of the emotions control. + */ +function TinyMCE_emotions_getControlHTML(control_name) { + switch (control_name) { + case "emotions": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceEmotion\');return false;'; + return ''; + } + + return ""; +} + +/** + * Executes the mceEmotion command. + */ +function TinyMCE_emotions_execCommand(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mceEmotion": + var template = new Array(); + + template['file'] = '../../plugins/emotions/emotions.htm'; // Relative to theme + template['width'] = 160; + template['height'] = 160; + + // Language specific width and height addons + template['width'] += tinyMCE.getLang('lang_emotions_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_emotions_delta_height', 0); + + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); + + return true; + } + + // Pass to next handler in chain + return false; +} diff --git a/webcit/tiny_mce/plugins/emotions/emotions.htm b/webcit/tiny_mce/plugins/emotions/emotions.htm new file mode 100644 index 000000000..c70f4b45f --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/emotions.htm @@ -0,0 +1,40 @@ + + + {$lang_emotions_title} + + + + + +
    +
    {$lang_emotions_title}:

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    {$lang_emotions_cool}{$lang_emotions_cry}{$lang_emotions_embarassed}{$lang_emotions_foot_in_mouth}
    {$lang_emotions_frown}{$lang_emotions_innocent}{$lang_emotions_kiss}{$lang_emotions_laughing}
    {$lang_emotions_money_mouth}{$lang_emotions_sealed}{$lang_emotions_smile}{$lang_emotions_surprised}
    {$lang_emotions_tongue-out}{$lang_emotions_undecided}{$lang_emotions_wink}{$lang_emotions_yell}
    +
    + + diff --git a/webcit/tiny_mce/plugins/emotions/images/emotions.gif b/webcit/tiny_mce/plugins/emotions/images/emotions.gif new file mode 100644 index 0000000000000000000000000000000000000000..26adbe68aad9509fadb09f54e8d21928d036b508 GIT binary patch literal 357 zcmV-r0h<0tNk%w1VH5xq0MrlwCJF+^#>SR<4C>Dj%C>6W(lWoQPVevT^YB^Fy&h6M z4YZgH{O~qtR1(Ci8T;lQ`uh6d*t-7xar*K{#Jrulo-Wtd*44u?{`oh#n;gQXGXDEo z_}UVAU=FH^0ssI2A^8LW0018VEC2ui02BZe000Hz;3tk`X_io`rY8wSM&@~$5kc(- z5zB>062xUez?lve2Vyf}FeV#>qjEqQ5|YW~;@nOo34>7=S!5Xvg){w>EN&u*p|HVV z6bd`uzA1=B2N?(xb{!3chZqwG8C4$#W_B114-Xsz100$g3yzQyla`vJmmCwFfPxGI z9;BKc0}m68fO8BS0v!pO2^|6)41SIf6b>7e9RSJz9hDmn6h;sSSH}+y0s;=sVFzOn z78(f%p$`lg2niY%V}KS04h2w51r7!ljwlus1{w|y8Vpcimt&fR00;x%YnP*;h!6lf DobY}R literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/emotions/images/readme.txt b/webcit/tiny_mce/plugins/emotions/images/readme.txt new file mode 100644 index 000000000..a3cea1b68 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/images/readme.txt @@ -0,0 +1,2 @@ +These emotions where taken from Mozilla Thunderbird. +I hope they don't get angry if I use them here after all this is a open source project aswell. diff --git a/webcit/tiny_mce/plugins/emotions/images/smiley-cool.gif b/webcit/tiny_mce/plugins/emotions/images/smiley-cool.gif new file mode 100644 index 0000000000000000000000000000000000000000..ba90cc36fb0415d0273d1cd206bff63fd9c91fde GIT binary patch literal 354 zcmV-o0iFIwNk%w1VG;lm0Mr!#3ke00dJfFY%i+lrhK7V(RutUQJhPY;?(XfrsZKgL z7WLQ^zPO&zzav{)SL^9nBOw~z(=orMEH5uC-P_gr`uhCnASMa|$-iRw?m_(dUwU8) zq>Kx}s1_F$4FCWDA^8LW0018VEC2ui01^Na000Hw;3tYzX_jM3Qpv$_M?zI9i5=0S zX-{-uv=l3%&P0s%m9Ox_a(m_c|u z01g3U0`Wll5)poVdma=N8y<3f0Sf~hXmTC}2oxMW4FdxUj+z4<0}lrX2nP=qkDRIt z9Ge*(qzMrj3jrIOjvI{`5eWzt3`G_T8yChG8w(a19SkK12@M(+799Zr9n=~PzBCmA z5)BU-)YKUd4H5!D9|!^o9kWIe9SH(WDHRk92}DZ?3})2$P@$55g90f0N)ZA8JID5J Aw*UYD literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/emotions/images/smiley-cry.gif b/webcit/tiny_mce/plugins/emotions/images/smiley-cry.gif new file mode 100644 index 0000000000000000000000000000000000000000..74d897a4f6d22e814e2b054e98b8a75fb464b4be GIT binary patch literal 329 zcmV-P0k-}}Nk%w1VG;lm0Mr-&E)xPSit@9T3%;vR+|V+?t0A(pllJjXrMl7n=_A_a za^B+Su$LjvyC3@TIQZNZa##w=!k(SO^P#bO*w(eU#;{U83XFCU_V)J5wrb+;g2vkN z#>U24qVoOvY5)KLA^8LW0018VEC2ui01^Na000HX;3tY$X_jM3QUfCh%s^o(nF++< zc?Th6v=oL>*by8K!mhvwelUXuuW&&U9iGO3hM@>Njw{l^#0q9mWpcefdI;O$;efnY zkd~@r-o$*74FCWI1%d((4+jDz0va0>69^fI6%`W{8w!gU1pyL>prH>E0R<%k6Aq%H z4ij+^9TEwM5P}eh2@)L<~6+>@EpxfA0YrcPNsSu literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/emotions/images/smiley-embarassed.gif b/webcit/tiny_mce/plugins/emotions/images/smiley-embarassed.gif new file mode 100644 index 0000000000000000000000000000000000000000..963a96b8a7593b1d8bcbab073abe5ee4e539dbf6 GIT binary patch literal 331 zcmV-R0kr-{Nk%w1VG;lm0MrryDh>j~yq&6%75dW~z^P39(NxsGDE{UkxtkIEq(S-a zRKlwv+S=Lr?>hbYY~sQ?c3T&ZcN_Nh_EU3s(>Io6B&>WW`@bsw**)Ocy1bht z{*G6|uwwqUQ2+n{A^8LW0018VEC2ui01^Na000HZ;3tYwX_jM3YQ!c88=*-m*&&bO zILd=`w3KAC;8hxpif*w9ek6oqV-Z0L77fROK$BSR@5BAv-%C>6y>>#+D4e#&nz^qMDItlpp zTG728+|V&?R13PIEBW(C`uh6d*t-1sZ^XQv;oDD}iYLOV7uVO;{`xl4#4tJ{0;h@! z>)kfFn;iS@Hvj+tA^8LW0018VEC2ui01^Na000Hm;3tYuX_jM3Mo7199TGt*Nf;R= zNmOPKwA8_2Q6MTDP6eT`I1VESVj-zGIG(JdB3U44kcdI@;AAq{Gv^^O%%ltj2GdB) z>vIL;d*~=0a|w1Bf^!cF9R~+vb94;_0}TxWlnMrlj2MuVoSYAreF`3(0|pHS8VLgr zi3bP_qZ;q#>Sw62=mns-On=0wransPVevT^YK{Dy(0YY zH)vE6x0?;Wqb>gZas1^OT0si>`ugD5y87}*#H$s=yq(wA*8cf7{`y+(+9J7|9QfT7 z`ROHiU=Y&6FaQ7mA^8LW0018VEC2ui01^Na000Hi;3tYvX_jM3N`@u~nju9hSuh^r zIEcp-wA7(NL0~2d#RP+(G!CPPA>o*KJjv_CkucCA5=K?AfF#RG2V*8BU@jL304|4P z2;PGRF@bj$et;Jf2pR_mVsIA<85|n}kQ*Bq42Ovqj*yy>6P0=h3X&9Z01yyk~2N4w%7#RW^55W%`0vQ+-6(y_*2pqz~90*;x9}yM}%$UI(7t#$D mK_3Se1{4HKM+6iG7EmeH6$V631{L5n)#CyC0qx-*Apkoyg?w!Q literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/emotions/images/smiley-innocent.gif b/webcit/tiny_mce/plugins/emotions/images/smiley-innocent.gif new file mode 100644 index 0000000000000000000000000000000000000000..334d49e0e60f2997c9ba24071764f95d9e08a5cc GIT binary patch literal 336 zcmV-W0k8f?Nk%w1VG;lm0MrryI4TI-%dP0m5~*+Y`T~ z7Rth){q{I_X%*S48uRZ|(b3V&wIKTX`u+WJzo<^$#wuY;3W|Cf{O29IkTAcaE&lpe z+P*^H)-tknA^-pYA^8LW0018VEC2ui01^Na000He;3tYwX_n)75QgVvNQ`6#5gcMm zEEG~blgXokptKAJgCU?%JT?yos!R6cPtcQWh2siHlNI2L}ifQhgX02^InZ2?-ktkqVRyZJY^Trk|lv zovp437?1~d46O)?2(1i+2NDYk8<+_Kil!K!3njA^!I#dL8x<729}*B65mC=m5gHH@ iDi9P3f*VjB3KS4HDb_qqRul{0DIT=Nk%w1VG;lm0Mrx!QauaC#>Vb6G=_5=^YB^9wrc376Sb5I-qJGf@9vZ# z5WlKU(!eVB+7tfnDXp0zyB`?BZ5IChalob*`uh6d*t+@dKGHcU+L|83yq*5~IoH?L zy`?Gp<{bX|SpWb4A^8LW0018VEC2ui01^Na000Hg;3tYyX_jM3R?Bl7&r(q;SsVx< zNd$5fv{ZsKA$SlL3&KN~a1tZRf*~1Ltkx9~2uL3&z-yb0WJDRY082|tP literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/emotions/images/smiley-laughing.gif b/webcit/tiny_mce/plugins/emotions/images/smiley-laughing.gif new file mode 100644 index 0000000000000000000000000000000000000000..1606c119e75678c4031f384e0d50849906e8f533 GIT binary patch literal 344 zcmV-e0jK^)Nk%w1VG;lm0MruzQauf>s;1-69HWK?p_PpF=Pd8~Ygtcnp*fHAL z**;z>w3iC}`fmL6IkKB1N;3zEa}&zKpsu1;_V)HocR5-{J~BcYvE`YXhBnc@CfU=! za(Ec zG>66zv=rqr;2j)}gKqE$ekcSD?}0=WLB?AWp85)qALd+P=4)6X4oXy{bw2>K^d$ z@6ERvva+(4ib~41YUkTEn1&#?rzrOHT>1I=Y*h`+%*@WtPUPg|!@EEI_d5LgZ>^Og z-qyCjsu$J9F8}}lA^8LW0018VEC2ui01^Na000HT;3tYxX_jM37RWXX8&XUv=@{Oj zX@_Sxw3H&!kzgQ?2LvPOL=>Y5VxieY9+_+eqFEql6OKWXd3Ze8Ggf2Zln@U|mI9d9 zGm^(wVUTA5cYs-V1`2#+a})^z6chrF5`~8k5e6@pmkW`GeGw<069yTQaGnH)s0suV zR|pCd0ZtRCsjM9VB^L+~7X%f*zyuc%2p3=#ycf#L%McYo9|{Z&5D^#_78qL%3{WW( X7Xb)FP6z?UH6ODVz!ev-DIowmgll^P literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/emotions/images/smiley-smile.gif b/webcit/tiny_mce/plugins/emotions/images/smiley-smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6a9e60d5ddd1243fbbf2197b4dc6cd9c1b58b93 GIT binary patch literal 345 zcmV-f0jB;(Nk%w1VG;lm0MrlwCJF+^#>SR<4C>Dj%C>6W(lWoQPVevT^YB^Fy&h6M z4YZgH{O~qtR1(Ci8T;lQ`uh6d*t-7xar*K{#Jrulo-Wtd*44u?{`oh#n;gQXGXDEo z_}UVAU=FH^0ssI2A^8LW0018VEC2ui01^Na000Hn;3tYuX_jM3Mn>j&nGr!MNh}v4 zNyxPjwA7*EKx`%q#$Vl9SM>N9ReH-cn1&^4jYXf0KotqjT;UWC94U(4-NtX4#i!%9}pHA2?&dg3>XLr r8Wuqx2Nnhn1xrT-4h9xbDb^GQ8V(K`1{C5o)#U;I0p5-K5CQ-@9%ySnDDC*4*{OcpiwransPVevTQacIr@mkQp zCf(06s)_=>r7UYx48o@u`uh6d*t-7rH~ji<`P&oj;5Wp)o!8ga`SV6TA_BIW5#ZWV z{`*+__>9}pJ}3JDSl85wB_3Jn)Q o9|so(4+|I^92g4^1{Y8%(iR3pP6ig=HPPY$`~mLZA3^{CJDB=?L;wH) literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif b/webcit/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif new file mode 100644 index 0000000000000000000000000000000000000000..2075dc16058f1f17912167675ce5cfb9986fc71d GIT binary patch literal 328 zcmV-O0k{4~Nk%w1VG;lm0Mrx!CJF+^#>SU@3-{U*rx+Q^wrc$ABfqLn@9*x?z8(4X zSW-O=@){bmmI~g|GQXoP);cvj3|f1M8e@{G*!tYaiCEujj1NGxRN#6#tiCETo+{x{Hkzt z5k-kPvcD=V2nbmjCgL6k{uF&2nP-t0s;w<385Nx2oxDb z9T5Pp7qJl?3Kkh9oe2sCr5F$p7zPSlsUH*@54w*83=9Or4;w)r2pcU95(FL|1Th;< aDaRQH4;Tal7#Y$v#?=Au0pHUfApkpvZg^t= literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/emotions/images/smiley-undecided.gif b/webcit/tiny_mce/plugins/emotions/images/smiley-undecided.gif new file mode 100644 index 0000000000000000000000000000000000000000..bef7e257303f8243c89787e7a7f9955dd1f112e2 GIT binary patch literal 337 zcmV-X0j~Z>Nk%w1VG;lm0MroxDi#99#>R?y8~4}{%C>6#>?OadPVevTr-=vi@LATn z4rERY-qJF+n+?CCE&B3D{{3Shh?>WT0o%`b%*Voqm`dL;(4F35y zc485^n;g!+Bme*aA^8LW0018VEC2ui01^Na000Hf;3tYvX_jM3N=AnuogqakNi<9X zK?&0kwA8^tNn{?C$|IAYI1ZzT!2>}iuMddFK#NEkRl!7%6brJAnUs;)XcnA}TNBSP zxQ9;SvEfwYeSaGd2^|LqU~(QF1qBxr3Ii7x84ZVt8wCTKoSYAqc?p`G2onnpk`IOl z1`HLGj}riN2p1K12N4z&8IBDc6tEWs859;JtRB6>lf+xO9}yT19toMv8wnl`7(pKg j7zPv!OGgY81{hE&(iR3pP6ig;HPPS!_yOwPA0Yrc)=Yf3 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/emotions/images/smiley-wink.gif b/webcit/tiny_mce/plugins/emotions/images/smiley-wink.gif new file mode 100644 index 0000000000000000000000000000000000000000..9faf1aff8f4b28e02f4f414975fe1859c43b6b54 GIT binary patch literal 351 zcmV-l0igazNk%w1VG;lm0MrryC=CL}#>Sn03F^-g-qAA3wransPV?|t@9*x%vmQ`7 z4E*pcw3rOOq%3t@4*K#({N^40{c-yG`rz2Q!KfI-yq*61HrBop*VoqW<}&{JS@_x# zwwfH#!YTdnIsgCwA^8LW0018VEC2ui01^Na000Ht;3tYwX_jM3P6j6koH0o%Sun&A zMF+tYv=pL2IcOdp&qH&dG!P?+ArV0)J)O=Yk}%LD6Go&#@MJn3he8=)%%lWOM*#pN zEDD9iq9J$@90v~;83`GC4i0+{2OJ0pVtacF5E}yn8<`pmkCBv_pqZEtoPY-l0}P>= z3WE6cr`19U7DgF9{F}at6R35*Q5~ x2OgBy9tRx_7(pKh7zPvsOGgA01{hE&-4zBzP6id}HMp@0Krnzkbss_i06S`>cdh^c literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/emotions/images/smiley-yell.gif b/webcit/tiny_mce/plugins/emotions/images/smiley-yell.gif new file mode 100644 index 0000000000000000000000000000000000000000..648e6e879123fe49beebbc1f3635141864a79a9c GIT binary patch literal 336 zcmV-W0k8f?Nk%w1VG;lm0MrryG8O{K#>IbS7WCB_mWF$+hzY-{PWkp(?(Xf;zbH~P z3jOdj?W+^YwrakfE8fyG&5jTBz!3WS`fgM_;MltQ+c}4GO8)(E`S3`@yq&d~5!ct& z)v79NObo)O7XSbNA^8LW0018VEC2ui01^Na000He;3tYwX_jM3QifI(nn6h_*=Wyk zUB{y}v=qYOIUF#R3dZPhAVv~H;(|a2yN_5FH&J0|$eJ3kw4gj1Y?v5d#>LMV12^6BYy$1)ZKA zga!|m2?POz0R)f>4+aPl8KD{gz`+G_9vLMFQU?RU!8uyH9}*i52|cC+7S0YEK_3Vk i1|APfM-Ltb8&4_H83sg61{vHn(cc000qNZzApkp/g, '&gr;'); + + var html = '' + title + ''; + + tinyMCE.execCommand('mceInsertContent', false, html); + tinyMCEPopup.close(); +} diff --git a/webcit/tiny_mce/plugins/emotions/langs/cs.js b/webcit/tiny_mce/plugins/emotions/langs/cs.js new file mode 100644 index 000000000..b91fd8463 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/cs.js @@ -0,0 +1,12 @@ +/** + * Czech lang variables + * encoding: utf-8 + * + * $Id: cs.js,v 1.4 2005/10/18 13:59:42 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +insert_emotions_title : 'Vložit emotikonu', +emotions_desc : 'Emotikony' +}); + diff --git a/webcit/tiny_mce/plugins/emotions/langs/cy.js b/webcit/tiny_mce/plugins/emotions/langs/cy.js new file mode 100644 index 000000000..d771cef2b --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/cy.js @@ -0,0 +1,22 @@ +// UK lang variables + +tinyMCE.addToLang('emotions',{ +title : 'Mewnosod gwenoglun', +desc : 'Gwenogluniau', +cool : 'Cŵl', +cry : 'Crïo', +embarassed : 'Cywilydd', +foot_in_mouth : 'Troed yn y ceg', +frown : 'Gwgu', +innocent : 'Diniwed', +kiss : 'Sws', +laughing : 'Chwerthin', +money_mouth : 'Ceg arian', +sealed : 'Seliwyd', +smile : 'Gwên', +surprised : 'Synnu', +tongue_out : 'Tafod allan', +undecided : 'Penagored', +wink : 'Winc', +yell : 'Gwaedd' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/da.js b/webcit/tiny_mce/plugins/emotions/langs/da.js new file mode 100644 index 000000000..a671571d3 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/da.js @@ -0,0 +1,22 @@ +// DK lang variables contributed by Jan Moelgaard + +tinyMCE.addToLang('emotions',{ +title : 'Indsæt smiley', +desc : 'Smileys', +cool : 'Cool', +cry : 'Gråd', +embarassed : 'Forlegen', +foot_in_mouth : 'Foden i munden', +frown : 'Rynket pande', +innocent : 'Uskyldig', +kiss : 'Kys', +laughing : 'Latter', +money_mouth : 'Lækker mund', +sealed : 'Lukket af', +smile : 'Smil', +surprised : 'Overrasket', +tongue_out : 'Ræk tunge', +undecided : 'Usikker', +wink : 'Blink', +yell : 'Råb' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/de.js b/webcit/tiny_mce/plugins/emotions/langs/de.js new file mode 100644 index 000000000..5ca550827 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/de.js @@ -0,0 +1,22 @@ +// DE lang variables + +tinyMCE.addToLang('emotions',{ +title : 'Insert emotion', +desc : 'Emotions', +cool : 'Cool', +cry : 'Cry', +embarassed : 'Embarassed', +foot_in_mouth : 'Foot in mouth', +frown : 'Frown', +innocent : 'Innocent', +kiss : 'Kiss', +laughing : 'Laughing', +money_mouth : 'Money mouth', +sealed : 'Sealed', +smile : 'Smile', +surprised : 'Surprised', +tongue_out : 'Tongue out', +undecided : 'Undecided', +wink : 'Wink', +yell : 'Yell' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/el.js b/webcit/tiny_mce/plugins/emotions/langs/el.js new file mode 100644 index 000000000..f1fa85893 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/el.js @@ -0,0 +1,6 @@ +// Greek lang variables by Jacaranda Bill + +tinyMCE.addToLang('',{ +insert_emotions_title : 'ÅéóáãùãÞ åíüò åéêïíéäßïõ emoticon', +emotions_desc : 'Åéêïíßäéá emoticons' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/en.js b/webcit/tiny_mce/plugins/emotions/langs/en.js new file mode 100644 index 000000000..3cdd67517 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/en.js @@ -0,0 +1,22 @@ +// UK lang variables + +tinyMCE.addToLang('emotions',{ +title : 'Insert emotion', +desc : 'Emotions', +cool : 'Cool', +cry : 'Cry', +embarassed : 'Embarassed', +foot_in_mouth : 'Foot in mouth', +frown : 'Frown', +innocent : 'Innocent', +kiss : 'Kiss', +laughing : 'Laughing', +money_mouth : 'Money mouth', +sealed : 'Sealed', +smile : 'Smile', +surprised : 'Surprised', +tongue_out : 'Tongue out', +undecided : 'Undecided', +wink : 'Wink', +yell : 'Yell' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/es.js b/webcit/tiny_mce/plugins/emotions/langs/es.js new file mode 100644 index 000000000..cafdb0cd4 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/es.js @@ -0,0 +1,30 @@ +/** + * ES lang variables + * + * Authors : Alvaro Velasco, + * Adolfo Sanz De Diego (asanzdiego) , + * Carlos C Soto (eclipxe) + * Last Updated : October 17, 2005 + * TinyMCE Version : 2.0RC3 + */ + +tinyMCE.addToLang('emotions',{ +title : 'Intertar emoticono', +desc : 'Emoticonos', +cool : 'Chulo', +cry : 'Llorando', +embarassed : 'Avergonzado', +foot_in_mouth : 'Sin palabras', +frown : 'Triste', +innocent : 'Inocente', +kiss : 'Beso', +laughing : 'Riendo', +money_mouth : 'Forrado', +sealed : 'Boca sellada', +smile : 'Sonriente', +surprised : 'Sorprendido', +tongue_out : 'Burla', +undecided : 'Indeciso', +wink : 'Guiño', +yell : 'Enfadado' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/fa.js b/webcit/tiny_mce/plugins/emotions/langs/fa.js new file mode 100644 index 000000000..f357f1ab2 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/fa.js @@ -0,0 +1,11 @@ +// IR lang variables +// Persian (Farsi) language pack (for IRAN) +// By: Morteza Zafari +// Lost@LostLord.com +// http://www.LostLord.com + +tinyMCE.addToLang('',{ +dir : 'rtl', +insert_emotions_title : '?????? ????', +emotions_desc : '??????' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/fr.js b/webcit/tiny_mce/plugins/emotions/langs/fr.js new file mode 100644 index 000000000..be7c1ade7 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/fr.js @@ -0,0 +1,22 @@ +// Traduit par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('emotions',{ +title : 'Choisir une émoticône', +desc : 'Insérer une émoticône', +cool : 'Cool', +cry : 'Triste', +embarassed : 'Embarrassé', +foot_in_mouth : 'Oups !', +frown : 'Mécontent', +innocent : 'Innocent', +kiss : 'Bisou', +laughing : 'Mort de rire', +money_mouth : 'Sencuré', +sealed : 'Motus', +smile : 'Sourire', +surprised : 'Surprise', +tongue_out : 'Moqueur', +undecided : 'Perplexe', +wink : 'Clin d\'oeil', +yell : 'Horreur !' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/fr_ca.js b/webcit/tiny_mce/plugins/emotions/langs/fr_ca.js new file mode 100644 index 000000000..41b771a1d --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/fr_ca.js @@ -0,0 +1,6 @@ +// Canadian French lang variables by Virtuelcom last modification: 2005-06-15 + +tinyMCE.addToLang('',{ +insert_emotions_title : 'Insérer un émoticon', +emotions_desc : 'Émoticons' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/he.js b/webcit/tiny_mce/plugins/emotions/langs/he.js new file mode 100644 index 000000000..47d983a54 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/he.js @@ -0,0 +1,22 @@ +// HE lang variables + +tinyMCE.addToLang('emotions',{ +title : 'äëðñ øâùåï', +desc : 'øâùåðéí', +cool : 'øâåò', +cry : 'áåëä', +embarassed : 'ðáåê', +foot_in_mouth : 'òí äøâì áôä', +frown : 'æåòó', +innocent : 'úîéí', +kiss : 'ðùé÷ä', +laughing : 'öåç÷', +money_mouth : 'ôä ùì ëñó', +sealed : 'àèåí', +smile : 'çéåê', +surprised : 'îåôúò', +tongue_out : 'ìùåï áçåõ', +undecided : 'áìúé äçìèé', +wink : '÷øéöä', +yell : 'öò÷ä' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/hu.js b/webcit/tiny_mce/plugins/emotions/langs/hu.js new file mode 100644 index 000000000..35c4c9574 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/hu.js @@ -0,0 +1,22 @@ +// HU lang variables + +tinyMCE.addToLang('emotions',{ +title : 'Hangulatjel beszúrása', +desc : 'Hangulatjelek', +cool : 'Király', +cry : 'Sírás', +embarassed : 'Zavart', +foot_in_mouth : 'Foot in mouth', +frown : 'Homlokráncolás', +innocent : 'Ártatlan', +kiss : 'Csók', +laughing : 'Nevetés', +money_mouth : 'Pénzéhes', +sealed : 'Elnémult', +smile : 'Mosolygás', +surprised : 'Meglepett', +tongue_out : 'Tongue out', +undecided : 'Határozatlan', +wink : 'Kacsintás', +yell : 'Sikoltás' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/is.js b/webcit/tiny_mce/plugins/emotions/langs/is.js new file mode 100644 index 000000000..583e8b8d7 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/is.js @@ -0,0 +1,22 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('emotions',{ +title : 'Tilfinningatákn', +desc : 'Tilfinningatákn', +cool : 'Svalur', +cry : 'Gráta', +embarassed : 'Skömmustulegur', +foot_in_mouth : 'Tala af sér', +frown : 'Fýldur', +innocent : 'Saklaus', +kiss : 'Koss', +laughing : 'Hlæjandi', +money_mouth : 'Gráðugur', +sealed : 'Þögull sem gröfin', +smile : 'Brosandi', +surprised : 'Hissa', +tongue_out : 'Ullandi', +undecided : 'Óákveðinn', +wink : 'Glottandi', +yell : 'Öskrandi' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/it.js b/webcit/tiny_mce/plugins/emotions/langs/it.js new file mode 100644 index 000000000..3e84bf9d3 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/it.js @@ -0,0 +1,6 @@ +//IT lang variables + +tinyMCE.addToLang('',{ +insert_emotions_title : 'Inserisci una emoticon', +emotions_desc : 'Emoticon' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/ko.js b/webcit/tiny_mce/plugins/emotions/langs/ko.js new file mode 100644 index 000000000..49f813474 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/ko.js @@ -0,0 +1,6 @@ +// KO lang variables + +tinyMCE.addToLang('',{ +insert_emotions_title : 'À̸ðƼÄÜ ³Ö±â', +emotions_desc : 'À̸ðƼÄÜ' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/nb.js b/webcit/tiny_mce/plugins/emotions/langs/nb.js new file mode 100644 index 000000000..801f3b23d --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/nb.js @@ -0,0 +1,22 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('emotions',{ +title : 'Lim inn følelse', +desc : 'Følelser', +cool : 'Cool', +cry : 'Gråter', +embarassed : 'Sjenert', +foot_in_mouth : 'Fot i munnen', +frown : 'Lei seg', +innocent : 'Uskyldig', +kiss : 'Kyss', +laughing : 'Ler', +money_mouth : 'Penger i munnen', +sealed : 'Hemmelig', +smile : 'Glad', +surprised : 'Overrasket', +tongue_out : 'Rekke tunge', +undecided : 'Betenkt', +wink : 'Flørt', +yell : 'Skrikende' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/nl.js b/webcit/tiny_mce/plugins/emotions/langs/nl.js new file mode 100644 index 000000000..a596ab4da --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/nl.js @@ -0,0 +1,22 @@ +// NL lang variables + +tinyMCE.addToLang('emotions',{ +title : 'Emoticon invoegen', +desc : 'Emoticons', +cool : 'Cool', +cry : 'Huilen', +embarassed : 'Verlegen', // embarrassed +foot_in_mouth : 'Eten in mond', // food in mouth? +frown : 'Fronsen', +innocent : 'Onschuldig', +kiss : 'Kus', +laughing : 'Lachend', +money_mouth : 'Geldgezicht', +sealed : 'Verzegeld', +smile : 'Smile', +surprised : 'Verbaasd', +tongue_out : 'Tong uitstekend', +undecided : 'Obepaald', +wink : 'Knipoog', +yell : 'Schreeuwen' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/nn.js b/webcit/tiny_mce/plugins/emotions/langs/nn.js new file mode 100644 index 000000000..92f17a0d4 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/nn.js @@ -0,0 +1,22 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('emotions',{ +title : 'Lim inn følelse', +desc : 'Følelser', +cool : 'Cool', +cry : 'Gråter', +embarassed : 'Sjenert', +foot_in_mouth : 'Fot i munnen', +frown : 'Lei seg', +innocent : 'Uskyldig', +kiss : 'Kyss', +laughing : 'Ler', +money_mouth : 'Penger i munnen', +sealed : 'Hemmelig', +smile : 'Glad', +surprised : 'Overrasket', +tongue_out : 'Rekke tunge', +undecided : 'Betenkt', +wink : 'Flørt', +yell : 'Skrikende' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/pl.js b/webcit/tiny_mce/plugins/emotions/langs/pl.js new file mode 100644 index 000000000..c19da95d4 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/pl.js @@ -0,0 +1,25 @@ +// PL lang variables +// fixed by Wooya +// http://www.mfusion.prv.pl +// lemiel 25.10.2005 + +tinyMCE.addToLang('emotions',{ +title : 'Wstaw emotikonkê', +desc : 'Emotikonki', +cool : 'Super', +cry : 'P³aczê', +embarassed : 'Za¿enowanie', +foot_in_mouth : 'Trzepiê jêzorem', +frown : 'Marszczê brew', +innocent : 'Niewinny', +kiss : 'Poca³unek', +laughing : '¦miech', +money_mouth : 'Zasady ¿yciowe', +sealed : 'Zaplombowane usta', +smile : 'U¶miech', +surprised : 'Zaskoczenie', +tongue_out : 'Pokazujê jêzyk', +undecided : 'Niezdecydowanie', +wink : 'Perskie oko', +yell : 'Wycie' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/pt_br.js b/webcit/tiny_mce/plugins/emotions/langs/pt_br.js new file mode 100644 index 000000000..f46ec0b6e --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/pt_br.js @@ -0,0 +1,29 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('emotions',{ +title : 'Inserir Emoticons', +desc : 'Emoticons', +cool : 'Legal', +cry : 'Chorando', +embarassed : 'Embaraçado', +foot_in_mouth : 'Falando asneira', +frown : 'Triste', +innocent : 'Inocente', +kiss : 'Beijo', +laughing : 'Rindo', +money_mouth : 'Interesseiro', +sealed : 'Lábios fechados', +smile : 'Sorriso', +surprised : 'Surpreso', +tongue_out : 'Mostrar a língüa', +undecided : 'Indeciso', +wink : 'Piscar', +yell : 'Grito' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/ru.js b/webcit/tiny_mce/plugins/emotions/langs/ru.js new file mode 100644 index 000000000..00f55b229 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/ru.js @@ -0,0 +1,22 @@ +// RU lang variables cp1251 + +tinyMCE.addToLang('emotions',{ +title : 'Âñòàâèòü ñìàéëèê', +desc : 'Ñìàéëèêè', +cool : 'Cool', +cry : 'Ïëà÷', +embarassed : 'Embarassed', +foot_in_mouth : 'Foot in mouth', +frown : 'Íàõìóðåííîñòü', +innocent : 'Ñâÿòîé', +kiss : 'Ïîöåëóé', +laughing : 'Ñìåõ', +money_mouth : 'Money mouth', +sealed : 'Çàêëååííûé', +smile : 'Óëûáêà', +surprised : 'Ñþðïðèç', +tongue_out : 'Âûñóíóòûé ÿçûê', +undecided : 'Undecided', +wink : 'Wink', +yell : 'Yell' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/emotions/langs/ru_KOI8-R.js new file mode 100644 index 000000000..ec9af98b8 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/ru_KOI8-R.js @@ -0,0 +1,22 @@ +// RU lang variables KOI8-R + +tinyMCE.addToLang('emotions',{ +title : '÷ÓÔÁ×ÉÔØ ÓÍÁÊÌÉË', +desc : 'óÍÁÊÌÉËÉ', +cool : 'Cool', +cry : 'ðÌÁÞ', +embarassed : 'Embarassed', +foot_in_mouth : 'Foot in mouth', +frown : 'îÁÈÍÕÒÅÎÎÏÓÔØ', +innocent : 'ó×ÑÔÏÊ', +kiss : 'ðÏÃÅÌÕÊ', +laughing : 'óÍÅÈ', +money_mouth : 'Money mouth', +sealed : 'úÁËÌÅÅÎÎÙÊ', +smile : 'õÌÙÂËÁ', +surprised : 'óÀÒÐÒÉÚ', +tongue_out : '÷ÙÓÕÎÕÔÙÊ ÑÚÙË', +undecided : 'Undecided', +wink : 'Wink', +yell : 'Yell' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/emotions/langs/ru_UTF-8.js new file mode 100644 index 000000000..2c94bc8a0 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/ru_UTF-8.js @@ -0,0 +1,22 @@ +// RU lang variables UTF-8 + +tinyMCE.addToLang('emotions',{ +title : 'Вставить смайлик', +desc : 'Смайлики', +cool : 'Cool', +cry : 'Плач', +embarassed : 'Embarassed', +foot_in_mouth : 'Foot in mouth', +frown : 'Нахмуренность', +innocent : 'Святой', +kiss : 'Поцелуй', +laughing : 'Смех', +money_mouth : 'Money mouth', +sealed : 'Заклеенный', +smile : 'Улыбка', +surprised : 'Сюрприз', +tongue_out : 'Высунутый язык', +undecided : 'Undecided', +wink : 'Wink', +yell : 'Yell' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/sk.js b/webcit/tiny_mce/plugins/emotions/langs/sk.js new file mode 100644 index 000000000..0746fdc0e --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/sk.js @@ -0,0 +1,14 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +insert_emotions_title : 'VložiÅ¥ emotikonu', +emotions_desc : 'Emotikony' +}); + diff --git a/webcit/tiny_mce/plugins/emotions/langs/sv.js b/webcit/tiny_mce/plugins/emotions/langs/sv.js new file mode 100644 index 000000000..18d0740e6 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/sv.js @@ -0,0 +1,22 @@ +// SE lang variables + +tinyMCE.addToLang('emotions',{ +title : 'Klistra in känsla', +desc : 'Känslor', +cool : 'Cool', +cry : 'Gråter', +embarassed : 'Generad', +foot_in_mouth : 'Fot i munnnen', +frown : 'Ledsen', +innocent : 'Oskyldig', +kiss : 'Kyss', +laughing : 'Skrattande', +money_mouth : 'Penga mun', +sealed : 'Hemlis', +smile : 'Glad', +surprised : 'Förvånad', +tongue_out : 'Räcka ut tungan', +undecided : 'Fundersam', +wink : 'Flört', +yell : 'Skrikandes' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/zh_cn.js b/webcit/tiny_mce/plugins/emotions/langs/zh_cn.js new file mode 100644 index 000000000..2d05cb923 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/zh_cn.js @@ -0,0 +1,22 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('emotions',{ +title : '²åÈë±íÇé', +desc : '±íÇé', +cool : 'Cool', +cry : 'Cry', +embarassed : 'Embarassed', +foot_in_mouth : 'Foot in mouth', +frown : 'Frown', +innocent : 'Innocent', +kiss : 'Kiss', +laughing : 'Laughing', +money_mouth : 'Money mouth', +sealed : 'Sealed', +smile : 'Smile', +surprised : 'Surprised', +tongue_out : 'Tongue out', +undecided : 'Undecided', +wink : 'Wink', +yell : 'Yell' +}); \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/emotions/langs/zh_tw.js b/webcit/tiny_mce/plugins/emotions/langs/zh_tw.js new file mode 100644 index 000000000..ca3e2d6aa --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/zh_tw.js @@ -0,0 +1,23 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('emotions',{ +title : '´¡¤Jªí±¡¹Ï¥Ü', +desc : 'ªí±¡¹Ï¥Ü', +cool : '»Å³á', +cry : '¤j­ú', +embarassed : '¦nêɧr', +foot_in_mouth : '¯ä¦º¤F', +frown : '­ó¡IÃi±o²z§A', +innocent : '§Ú¬OµL¶dªº', +kiss : '¿Ë¤@­Ó', +laughing : '¤Ó¥i¯º¹Æ', +money_mouth : '¦n°ª¿³³á', +sealed : '³¬¼L', +smile : '·L¯º', +surprised : 'Åå³Y', +tongue_out : '¦R¦ÞÀY', +undecided : '§Ú·Q·Q', +wink : '¯w²´', +yell : '°I¦º¤F¡ã¡ã' +}); diff --git a/webcit/tiny_mce/plugins/emotions/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/emotions/langs/zh_tw_utf8.js new file mode 100644 index 000000000..1bc29d953 --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/langs/zh_tw_utf8.js @@ -0,0 +1,23 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('emotions',{ +title : '插入表情圖示', +desc : '表情圖示', +cool : '酷喔', +cry : '大哭', +embarassed : '好糗呀', +foot_in_mouth : '臭死了', +frown : '哼!懶得理你', +innocent : '我是無辜的', +kiss : '親一個', +laughing : '太可笑嘍', +money_mouth : '好高興喔', +sealed : '閉嘴', +smile : '微笑', +surprised : '驚訝', +tongue_out : '吐舌頭', +undecided : '我想想', +wink : '眨眼', +yell : '衰死了~~' +}); diff --git a/webcit/tiny_mce/plugins/emotions/readme.txt b/webcit/tiny_mce/plugins/emotions/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/emotions/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/flash/css/content.css b/webcit/tiny_mce/plugins/flash/css/content.css new file mode 100644 index 000000000..843258b79 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/css/content.css @@ -0,0 +1,7 @@ +.mceItemFlash { + border: 1px dotted #cc0000; + background-image: url('../images/flash.gif'); + background-position: center; + background-repeat: no-repeat; + background-color: #ffffcc; +} diff --git a/webcit/tiny_mce/plugins/flash/css/flash.css b/webcit/tiny_mce/plugins/flash/css/flash.css new file mode 100644 index 000000000..d3e88e1a2 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/css/flash.css @@ -0,0 +1,11 @@ +.panel_wrapper div.current { + height: 100px; +} + +#width, #height { + width: 50px; +} + +#file { + width: 250px; +} diff --git a/webcit/tiny_mce/plugins/flash/editor_plugin.js b/webcit/tiny_mce/plugins/flash/editor_plugin.js new file mode 100644 index 000000000..daf029499 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('flash','en,de,sv,zh_cn,cs,fa,fr_ca,fr,pl,pt_br,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,es,cy,is,zh_tw,zh_tw_utf8,sk,pt_br');function TinyMCE_flash_getInfo(){return{longname:'Flash',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_flash.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_flash_initInstance(inst){if(!tinyMCE.settings['flash_skip_plugin_css'])tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/flash/css/content.css");}function TinyMCE_flash_getControlHTML(control_name){switch(control_name){case "flash":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceFlash\');return false;';return '';}return "";}function TinyMCE_flash_parseAttributes(attribute_string){var attributeName="";var attributeValue="";var withInName;var withInValue;var attributes=new Array();var whiteSpaceRegExp=new RegExp('^[ \n\r\t]+','g');if(attribute_string==null||attribute_string.length<2)return null;withInName=withInValue=false;for(var i=0;i','gi'),'');content=content.replace(new RegExp('<[ ]*object','gi'),'','gi'),'');while((startPos=content.indexOf('',startPos);var attribs=TinyMCE_flash_parseAttributes(content.substring(startPos+6,endPos));embedList[embedList.length]=attribs;}var index=0;while((startPos=content.indexOf('=embedList.length)break;var attribs=embedList[index];endPos=content.indexOf('',startPos);endPos+=9;var contentAfter=content.substring(endPos);content=content.substring(0,startPos);content+=''+content.substring(endPos);content+=contentAfter;index++;startPos++;}var index=0;while((startPos=content.indexOf('=embedList.length)break;var attribs=embedList[index];endPos=content.indexOf('>',startPos);endPos+=9;var contentAfter=content.substring(endPos);content=content.substring(0,startPos);content+=''+content.substring(endPos);content+=contentAfter;index++;startPos++;}break;case "get_from_editor":var startPos=-1;while((startPos=content.indexOf('',startPos);var attribs=TinyMCE_flash_parseAttributes(content.substring(startPos+4,endPos));if(attribs['class']!="mceItemFlash")continue;endPos+=2;var embedHTML='';var wmode=tinyMCE.getParam("flash_wmode","");var quality=tinyMCE.getParam("flash_quality","high");var menu=tinyMCE.getParam("flash_menu","false");embedHTML+='';embedHTML+='';embedHTML+='';embedHTML+='';embedHTML+='';embedHTML+='';chunkBefore=content.substring(0,startPos);chunkAfter=content.substring(endPos);content=chunkBefore+embedHTML+chunkAfter;}break;}return content;}function TinyMCE_flash_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){tinyMCE.switchClassSticky(editor_id+'_flash','mceButtonNormal');if(node==null)return;do{if(node.nodeName.toLowerCase()=="img"&&tinyMCE.getAttrib(node,'class').indexOf('mceItemFlash')==0)tinyMCE.switchClassSticky(editor_id+'_flash','mceButtonSelected');}while((node=node.parentNode));return true;} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/flash/editor_plugin_src.js b/webcit/tiny_mce/plugins/flash/editor_plugin_src.js new file mode 100644 index 000000000..e4fa86327 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/editor_plugin_src.js @@ -0,0 +1,270 @@ +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('flash', 'en,de,sv,zh_cn,cs,fa,fr_ca,fr,pl,pt_br,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,es,cy,is,zh_tw,zh_tw_utf8,sk,pt_br'); + +function TinyMCE_flash_getInfo() { + return { + longname : 'Flash', + author : 'Moxiecode Systems', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_flash.html', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; +}; + +function TinyMCE_flash_initInstance(inst) { + if (!tinyMCE.settings['flash_skip_plugin_css']) + tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/flash/css/content.css"); +} + +function TinyMCE_flash_getControlHTML(control_name) { + switch (control_name) { + case "flash": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceFlash\');return false;'; + return ''; + } + + return ""; +} + +function TinyMCE_flash_parseAttributes(attribute_string) { + var attributeName = ""; + var attributeValue = ""; + var withInName; + var withInValue; + var attributes = new Array(); + var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g'); + + if (attribute_string == null || attribute_string.length < 2) + return null; + + withInName = withInValue = false; + + for (var i=0; i','gi'),''); + content = content.replace(new RegExp('<[ ]*object','gi'),'','gi'),''); + + // Parse all embed tags + while ((startPos = content.indexOf('', startPos); + var attribs = TinyMCE_flash_parseAttributes(content.substring(startPos + 6, endPos)); + embedList[embedList.length] = attribs; + } + + // Parse all object tags and replace them with images from the embed data + var index = 0; + while ((startPos = content.indexOf('= embedList.length) + break; + + var attribs = embedList[index]; + + // Find end of object + endPos = content.indexOf('', startPos); + endPos += 9; + + // Insert image + var contentAfter = content.substring(endPos); + content = content.substring(0, startPos); + content += '' + content.substring(endPos); + content += contentAfter; + index++; + + startPos++; + } + + // Parse all embed tags and replace them with images from the embed data + var index = 0; + while ((startPos = content.indexOf('= embedList.length) + break; + + var attribs = embedList[index]; + + // Find end of embed + endPos = content.indexOf('>', startPos); + endPos += 9; + + // Insert image + var contentAfter = content.substring(endPos); + content = content.substring(0, startPos); + content += '' + content.substring(endPos); + content += contentAfter; + index++; + + startPos++; + } + + break; + + case "get_from_editor": + // Parse all img tags and replace them with object+embed + var startPos = -1; + while ((startPos = content.indexOf('', startPos); + var attribs = TinyMCE_flash_parseAttributes(content.substring(startPos + 4, endPos)); + + // Is not flash, skip it + if (attribs['class'] != "mceItemFlash") + continue; + + endPos += 2; + + var embedHTML = ''; + var wmode = tinyMCE.getParam("flash_wmode", ""); + var quality = tinyMCE.getParam("flash_quality", "high"); + var menu = tinyMCE.getParam("flash_menu", "false"); + + // Insert object + embed + embedHTML += ''; + embedHTML += ''; + embedHTML += ''; + embedHTML += ''; + embedHTML += ''; + embedHTML += ''; + + // Insert embed/object chunk + chunkBefore = content.substring(0, startPos); + chunkAfter = content.substring(endPos); + content = chunkBefore + embedHTML + chunkAfter; + } + break; + } + + // Pass through to next handler in chain + return content; +} + +function TinyMCE_flash_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + tinyMCE.switchClassSticky(editor_id + '_flash', 'mceButtonNormal'); + + if (node == null) + return; + + do { + if (node.nodeName.toLowerCase() == "img" && tinyMCE.getAttrib(node, 'class').indexOf('mceItemFlash') == 0) + tinyMCE.switchClassSticky(editor_id + '_flash', 'mceButtonSelected'); + } while ((node = node.parentNode)); + + return true; +} diff --git a/webcit/tiny_mce/plugins/flash/flash.htm b/webcit/tiny_mce/plugins/flash/flash.htm new file mode 100644 index 000000000..7bab48ad0 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/flash.htm @@ -0,0 +1,70 @@ + + + {$lang_flash_title} + + + + + + + + +
    + + +
    +
    +
    + {$lang_flash_general} + + + + + + + + + + + + + + +
    + + + + + +
     
    +
     
    + +  x  + +
    +
    +
    +
    + +
    +
    + +
    + +
    + +
    +
    +
    + + diff --git a/webcit/tiny_mce/plugins/flash/images/flash.gif b/webcit/tiny_mce/plugins/flash/images/flash.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb192e6ceda8d19ad8e7d08dd1cfde0aa72ead2a GIT binary patch literal 241 zcmVOzlLa+Za}7>m0&NpCfJ0FQc3~F7DE)S%o1)Qi1n@vxX46qnD4hRS-NE*Pw!4UvE=#^N( literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/flash/jscripts/flash.js b/webcit/tiny_mce/plugins/flash/jscripts/flash.js new file mode 100644 index 000000000..4f0807726 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/jscripts/flash.js @@ -0,0 +1,107 @@ +var url = tinyMCE.getParam("flash_external_list_url"); +if (url != null) { + // Fix relative + if (url.charAt(0) != '/' && url.indexOf('://') == -1) + url = tinyMCE.documentBasePath + "/" + url; + + document.write(''); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById("filebrowsercontainer").innerHTML = getBrowserHTML('filebrowser','file','flash','flash'); + + // Image list outsrc + var html = getFlashListHTML('filebrowser','file','flash','flash'); + if (html == "") + document.getElementById("linklistrow").style.display = 'none'; + else + document.getElementById("linklistcontainer").innerHTML = html; + + var formObj = document.forms[0]; + var swffile = tinyMCE.getWindowArg('swffile'); + var swfwidth = '' + tinyMCE.getWindowArg('swfwidth'); + var swfheight = '' + tinyMCE.getWindowArg('swfheight'); + + if (swfwidth.indexOf('%')!=-1) { + formObj.width2.value = "%"; + formObj.width.value = swfwidth.substring(0,swfwidth.length-1); + } else { + formObj.width2.value = "px"; + formObj.width.value = swfwidth; + } + + if (swfheight.indexOf('%')!=-1) { + formObj.height2.value = "%"; + formObj.height.value = swfheight.substring(0,swfheight.length-1); + } else { + formObj.height2.value = "px"; + formObj.height.value = swfheight; + } + + formObj.file.value = swffile; + formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); + + selectByValue(formObj, 'linklist', swffile); + + // Handle file browser + if (isVisible('filebrowser')) + document.getElementById('file').style.width = '230px'; + + // Auto select flash in list + if (typeof(tinyMCEFlashList) != "undefined" && tinyMCEFlashList.length > 0) { + for (var i=0; i 0) { + var html = ""; + + html += ''; + + return html; + } + + return ""; +} + +function insertFlash() { + var formObj = document.forms[0]; + var html = ''; + var file = formObj.file.value; + var width = formObj.width.value; + var height = formObj.height.value; + if (formObj.width2.value=='%') { + width = width + '%'; + } + if (formObj.height2.value=='%') { + height = height + '%'; + } + + if (width == "") + width = 100; + + if (height == "") + height = 100; + + html += '' + + '' + file + ''; + + tinyMCEPopup.execCommand("mceInsertContent", true, html); + tinyMCE.selectedInstance.repaint(); + + tinyMCEPopup.close(); +} diff --git a/webcit/tiny_mce/plugins/flash/langs/cs.js b/webcit/tiny_mce/plugins/flash/langs/cs.js new file mode 100644 index 000000000..cebe01976 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/cs.js @@ -0,0 +1,14 @@ +/** + * Czech lang variables + * encoding: utf-8 + * + * $Id: cs.js,v 1.6 2005/10/18 13:59:42 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +insert_flash : 'Vložit/editovat Flash Movie', +insert_flash_file : 'Flash soubor (.swf)', +insert_flash_size : 'Velikost', +insert_flash_list : 'Seznam', +flash_props : 'Vlastnosti Flash' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/cy.js b/webcit/tiny_mce/plugins/flash/langs/cy.js new file mode 100644 index 000000000..c2e17e4e1 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/cy.js @@ -0,0 +1,11 @@ +// UK lang variables + +tinyMCE.addToLang('flash',{ +title : 'Mewnosod/golygu Ffilm Flash', +desc : 'Mewnosod/golygu Ffilm Flash', +file : 'Ffeil Flash (.swf)', +size : 'Maint', +list : 'Ffeiliau Flash', +props : 'Priodoleddau Flash', +general : 'Cyffredinol' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/da.js b/webcit/tiny_mce/plugins/flash/langs/da.js new file mode 100644 index 000000000..cd2134af0 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/da.js @@ -0,0 +1,11 @@ +// DK lang variables contributed by Jan Moelgaard + +tinyMCE.addToLang('flash',{ +title : 'Indsæt / rediger Flash-film', +desc : 'Indsæt / rediger Flash-film', +file : 'Flash-Fil (.swf)', +size : 'Størrelse', +list : 'Flash filer', +props : 'Flash egenskaber', +general : 'Genererelt' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/de.js b/webcit/tiny_mce/plugins/flash/langs/de.js new file mode 100644 index 000000000..4072c14f4 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/de.js @@ -0,0 +1,11 @@ +// DE lang variables + +tinyMCE.addToLang('flash',{ +title : 'Flash-Datei einfügen/bearbeiten', +desc : 'Flash-Datei einfügen/bearbeiten', +file : 'Flash-Datei (.swf)', +size : 'Größe', +list : 'Flash-Dateien', +props : 'Flash-Eigenschaften', +general : 'Allgemein' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/en.js b/webcit/tiny_mce/plugins/flash/langs/en.js new file mode 100644 index 000000000..67272bc97 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/en.js @@ -0,0 +1,11 @@ +// UK lang variables + +tinyMCE.addToLang('flash',{ +title : 'Insert / edit Flash Movie', +desc : 'Insert / edit Flash Movie', +file : 'Flash-File (.swf)', +size : 'Size', +list : 'Flash files', +props : 'Flash properties', +general : 'General' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/es.js b/webcit/tiny_mce/plugins/flash/langs/es.js new file mode 100644 index 000000000..f916a1c6b --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/es.js @@ -0,0 +1,19 @@ +/** + * ES lang variables + * + * Authors : Alvaro Velasco, + * Adolfo Sanz De Diego (asanzdiego) , + * Carlos C Soto (eclipxe) + * Last Updated : October 17, 2005 + * TinyMCE Version : 2.0RC3 + */ + +tinyMCE.addToLang('flash',{ +title : 'Insertar / editar pelicula Flash', +desc : 'Insert / edit Flash Movie', +file : 'Fichero Flash (.swf)', +size : 'Tamaño', +list : 'Ficheros Flash', +props : 'Propiedades del Flash', +general : 'General' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/fa.js b/webcit/tiny_mce/plugins/flash/langs/fa.js new file mode 100644 index 000000000..66a8b4e65 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/fa.js @@ -0,0 +1,13 @@ +// IR lang variables +// Persian (Farsi) language pack (for IRAN) +// By: Morteza Zafari +// Lost@LostLord.com +// http://www.LostLord.com + +tinyMCE.addToLang('',{ +dir : 'rtl', +insert_flash : '?????? ? ?????? ???? ???', +insert_flash_file : '???? ??? (.swf)', +insert_flash_size : '?????', +flash_props : 'Flash properties' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/fr.js b/webcit/tiny_mce/plugins/flash/langs/fr.js new file mode 100644 index 000000000..34a03486c --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/fr.js @@ -0,0 +1,11 @@ +// Traduit par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('flash',{ +title : 'Gestionnaire d\'animation Flash', +desc : 'Insérer une animation Flash', +file : 'Fichier Flash (.swf)', +size : 'Taille', +list : 'Fichiers Flash', +props : 'Propriétés Flash', +general : 'Général' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/fr_ca.js b/webcit/tiny_mce/plugins/flash/langs/fr_ca.js new file mode 100644 index 000000000..f80d9205d --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/fr_ca.js @@ -0,0 +1,9 @@ +// Canadian French lang variables by Virtuelcom last modification: 2005-06-15 + +tinyMCE.addToLang('',{ +insert_flash : 'Insérer / Modifier une animation Flash', +insert_flash_file : 'Fichier Flash (.swf)', +insert_flash_size : 'Dimension', +insert_flash_list : 'Fichiers Flash', +flash_props : 'Propriétés Flash' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/he.js b/webcit/tiny_mce/plugins/flash/langs/he.js new file mode 100644 index 000000000..09448fed2 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/he.js @@ -0,0 +1,11 @@ +// HE lang variables + +tinyMCE.addToLang('flash',{ +title : 'äëðñ/òøåê ñøèåï Flash', +desc : 'äëðñ/òøåê ñøèåï Flash', +file : '÷åáõ Flash (.swf)', +size : 'âåãì', +list : '÷áöé Flash', +props : 'îàôééðé Flash', +general : 'ëììé' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/hu.js b/webcit/tiny_mce/plugins/flash/langs/hu.js new file mode 100644 index 000000000..0760f10a6 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/hu.js @@ -0,0 +1,11 @@ +// HU lang variables + +tinyMCE.addToLang('flash',{ +title : 'Flash animáció beszúrása / szerkesztése', +desc : 'Flash animáció beszúrása / szerkesztése', +file : 'Flash-Fájl (.swf)', +size : 'Méret', +list : 'Flash fájlok', +props : 'Flash tulajdonságok', +general : 'Általános' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/is.js b/webcit/tiny_mce/plugins/flash/langs/is.js new file mode 100644 index 000000000..022a7d6bc --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/is.js @@ -0,0 +1,11 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('flash',{ +title : 'Bæta við / breyta Flash-mynd', +desc : 'Bæta við / breyta Flash-mynd', +file : 'Flash-skrá (.swf)', +size : 'Stærð', +list : 'Flash skrár', +props : 'Flash stillingar', +general : 'Almennt' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/nb.js b/webcit/tiny_mce/plugins/flash/langs/nb.js new file mode 100644 index 000000000..09eaa6a78 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/nb.js @@ -0,0 +1,11 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('flash',{ +title : 'Lag/oppdater flash-film', +desc : 'Lag/oppdater flash-film', +file : 'Flash-film (.swf)', +size : 'Størrelse', +list : 'Flash-filer', +props : 'Flash egenskaper', +general : 'Generelle innstillinger' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/nl.js b/webcit/tiny_mce/plugins/flash/langs/nl.js new file mode 100644 index 000000000..5a35fe658 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/nl.js @@ -0,0 +1,11 @@ +// NL lang variables + +tinyMCE.addToLang('flash',{ +title : 'Flash bestand invoegen/bewerken', +desc : 'Flash bestand invoegen/bewerken', +file : 'Flash bestand (.swf)', +size : 'Grootte', +list : 'Flash bestanden', +props : 'Flash eigenschappen', +general : 'Algemeen' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/nn.js b/webcit/tiny_mce/plugins/flash/langs/nn.js new file mode 100644 index 000000000..13eb072da --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/nn.js @@ -0,0 +1,11 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('flash',{ +title : 'Lag/oppdater flash-film', +desc : 'Lag/oppdater flash-film', +file : 'Flash-film (.swf)', +size : 'Størrelse', +list : 'Flash-filer', +props : 'Flash egenskaper', +general : 'Generelle innstillinger' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/pl.js b/webcit/tiny_mce/plugins/flash/langs/pl.js new file mode 100644 index 000000000..ece0c457f --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/pl.js @@ -0,0 +1,14 @@ +// PL lang variables +// fixed by Wooya +// http://www.mfusion.prv.pl +// fixed by lemiel 14.11.2005 + +tinyMCE.addToLang('flash',{ +title : 'Wstaw/edytuj film flash', +desc : 'Wstaw/edytuj film flash', +file : 'Plik flash (.swf)', +size : 'Rozmiar', +list : 'Pliki flash', +props : 'W³a¶ciwo¶ci flash', +general : 'G³ówne' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/pt_br.js b/webcit/tiny_mce/plugins/flash/langs/pt_br.js new file mode 100644 index 000000000..cf0c2e35a --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/pt_br.js @@ -0,0 +1,19 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : ???? + * Revision and modifications: + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('flash',{ +title : 'Inserir / editar Arquivo Flash', +desc : 'Inserir / editar Arquivo Flash', +file : 'Arquivo Flash (.swf)', +size : 'Tamanho', +list : 'Lista de arquivos Flash', +props : 'Propriedades do Flash', +general : 'Geral' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/ru.js b/webcit/tiny_mce/plugins/flash/langs/ru.js new file mode 100644 index 000000000..6b4805b39 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/ru.js @@ -0,0 +1,11 @@ +// RU lang variables cp1251 + +tinyMCE.addToLang('flash',{ +title : 'Âñòàâèòü / Ðåäàêòèðîâàòü Flash ðîëèê', +desc : 'Âñòàâèòü / Ðåäàêòèðîâàòü Flash ðîëèê', +file : 'Flash-Ôàéë (.swf)', +size : 'Ðàçìåð', +list : 'Flash ôàéëû', +props : 'Ñâîéñòâà Flash', +general : 'Îñíîâíîå' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/flash/langs/ru_KOI8-R.js new file mode 100644 index 000000000..0b9a52255 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/ru_KOI8-R.js @@ -0,0 +1,11 @@ +// RU lang variables KOI8-R + +tinyMCE.addToLang('flash',{ +title : '÷ÓÔÁ×ÉÔØ / òÅÄÁËÔÉÒÏ×ÁÔØ Flash ÒÏÌÉË', +desc : '÷ÓÔÁ×ÉÔØ / òÅÄÁËÔÉÒÏ×ÁÔØ Flash ÒÏÌÉË', +file : 'Flash-æÁÊÌ (.swf)', +size : 'òÁÚÍÅÒ', +list : 'Flash ÆÁÊÌÙ', +props : 'ó×ÏÊÓÔ×Á Flash', +general : 'ïÓÎÏ×ÎÏÅ' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/flash/langs/ru_UTF-8.js new file mode 100644 index 000000000..bdb004f92 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/ru_UTF-8.js @@ -0,0 +1,11 @@ +// RU lang variables UTF-8 + +tinyMCE.addToLang('flash',{ +title : 'Вставить / Редактировать Flash ролик', +desc : 'Вставить / Редактировать Flash ролик', +file : 'Flash-Файл (.swf)', +size : 'Размер', +list : 'Flash файлы', +props : 'Свойства Flash', +general : 'Основное' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/sk.js b/webcit/tiny_mce/plugins/flash/langs/sk.js new file mode 100644 index 000000000..46a6c0122 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/sk.js @@ -0,0 +1,16 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +insert_flash : 'VložiÅ¥/editovaÅ¥ Flash Movie', +insert_flash_file : 'Flash súbor (.swf)', +insert_flash_size : 'VeľkosÅ¥', +insert_flash_list : 'Zoznam', +flash_props : 'Vlastnosti Flash' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/sv.js b/webcit/tiny_mce/plugins/flash/langs/sv.js new file mode 100644 index 000000000..211ba98c9 --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/sv.js @@ -0,0 +1,11 @@ +// SE lang variables + +tinyMCE.addToLang('flash',{ +title : 'Skapa/uppdatera flash-film', +desc : 'Skapa/uppdatera flash-film', +file : 'Flash-film (.swf)', +size : 'Storlek', +list : 'Flash-filer', +props : 'Flash egenskaper', +general : 'Generella inställningar' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/zh_cn.js b/webcit/tiny_mce/plugins/flash/langs/zh_cn.js new file mode 100644 index 000000000..82c830d4e --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/zh_cn.js @@ -0,0 +1,11 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('flash',{ +title : '²åÈë/±à¼­ FlashµçÓ°', +desc : 'FlashµçÓ°ÃèÊö', +file : 'Flash²å¼þ(.swf)', +size : '³ß´ç', +list : 'Flash²å¼þÁбí', +props : 'FlashÊôÐÔ', +general : 'Ò»°ã' +}); \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/flash/langs/zh_tw.js b/webcit/tiny_mce/plugins/flash/langs/zh_tw.js new file mode 100644 index 000000000..31ae8b17f --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/zh_tw.js @@ -0,0 +1,12 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('flash',{ +title : '´¡¤J©Î½s¿è Flash °ÊµeÀÉ', +desc : '´¡¤J©Î½s¿è Flash °ÊµeÀÉ', +file : 'Flash °ÊµeÀÉ¡] .swf ¡^', +size : '¤j¤p', +list : 'Flash °ÊµeÀÉ', +props : 'Flash °ÊµeÀÉÄÝ©Ê', +general : '¤@¯ë' +}); diff --git a/webcit/tiny_mce/plugins/flash/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/flash/langs/zh_tw_utf8.js new file mode 100644 index 000000000..724f7f32e --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/langs/zh_tw_utf8.js @@ -0,0 +1,12 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('flash',{ +title : '插入或編輯 Flash 動畫檔', +desc : '插入或編輯 Flash 動畫檔', +file : 'Flash 動畫檔( .swf )', +size : '大小', +list : 'Flash 動畫檔', +props : 'Flash 動畫檔屬性', +general : '一般' +}); diff --git a/webcit/tiny_mce/plugins/flash/readme.txt b/webcit/tiny_mce/plugins/flash/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/flash/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/fullscreen/editor_plugin.js b/webcit/tiny_mce/plugins/fullscreen/editor_plugin.js new file mode 100644 index 000000000..4c6bccd32 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('fullscreen','en,sv,cs,fr_ca,zh_cn,da,he,nb,de,hu,ru,ru_KOI8-R,ru_UTF-8,nn,es,cy,is,pl,nl,fr,pt_br');function TinyMCE_fullscreen_getInfo(){return{longname:'Fullscreen',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_fullscreen.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_fullscreen_getControlHTML(control_name){switch(control_name){case "fullscreen":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceFullScreen\');return false;';return '';}return "";}function TinyMCE_fullscreen_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceFullScreen":if(tinyMCE.getParam('fullscreen_is_enabled')){window.opener.tinyMCE.execInstanceCommand(tinyMCE.getParam('fullscreen_editor_id'),'mceSetContent',false,tinyMCE.getContent(editor_id));top.close();}else{tinyMCE.setWindowArg('editor_id',editor_id);var win=window.open(tinyMCE.baseURL+"/plugins/fullscreen/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);}return true;}return false;} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/fullscreen/editor_plugin_src.js b/webcit/tiny_mce/plugins/fullscreen/editor_plugin_src.js new file mode 100644 index 000000000..68ab1f9e5 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/editor_plugin_src.js @@ -0,0 +1,45 @@ +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('fullscreen', 'en,sv,cs,fr_ca,zh_cn,da,he,nb,de,hu,ru,ru_KOI8-R,ru_UTF-8,nn,es,cy,is,pl,nl,fr,pt_br'); + +function TinyMCE_fullscreen_getInfo() { + return { + longname : 'Fullscreen', + author : 'Moxiecode Systems', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_fullscreen.html', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; +}; + +function TinyMCE_fullscreen_getControlHTML(control_name) { + switch (control_name) { + case "fullscreen": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceFullScreen\');return false;'; + return ''; + } + + return ""; +} + +function TinyMCE_fullscreen_execCommand(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mceFullScreen": + if (tinyMCE.getParam('fullscreen_is_enabled')) { + // In fullscreen mode + window.opener.tinyMCE.execInstanceCommand(tinyMCE.getParam('fullscreen_editor_id'), 'mceSetContent', false, tinyMCE.getContent(editor_id)); + top.close(); + } else { + tinyMCE.setWindowArg('editor_id', editor_id); + + var win = window.open(tinyMCE.baseURL + "/plugins/fullscreen/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight); + } + + return true; + } + + // Pass to next handler in chain + return false; +} + + diff --git a/webcit/tiny_mce/plugins/fullscreen/fullscreen.htm b/webcit/tiny_mce/plugins/fullscreen/fullscreen.htm new file mode 100644 index 000000000..d648d7610 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/fullscreen.htm @@ -0,0 +1,73 @@ + + + {$lang_fullscreen_title} + + + + + + + + + diff --git a/webcit/tiny_mce/plugins/fullscreen/images/fullscreen.gif b/webcit/tiny_mce/plugins/fullscreen/images/fullscreen.gif new file mode 100644 index 0000000000000000000000000000000000000000..66fa6d92177f171fd42883474b7dd093bd2d339a GIT binary patch literal 198 zcmV;%06G6hNk%w1VH5xq0K*LcGD>2ivBykw!ot@6bd$)Ew*2Dq{%MuzLU-VNrt;$I z{;0?PSAE;|`To-4{r~^~A^8LW000jFEC2ui02BZe000DY@X1N5y*O(ey8oUPG-PQu zh5=L~;SvlX%mSjURO>jy;xC1Q4L8xD48CAu$Z8M;}RUJf0>sOc_ z4h#giNmy{Z(DeG+E>qDAdHB(q-q8pM40A +// Last Updated : October 2005 +// TinyMCE Version : 2.0RC3 + +tinyMCE.addToLang('',{ +fullscreen_title : 'Pantalla completa', +fullscreen_desc : 'Cambiar a pantalla completa' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/fr.js b/webcit/tiny_mce/plugins/fullscreen/langs/fr.js new file mode 100644 index 000000000..9637605ce --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/fr.js @@ -0,0 +1,6 @@ +// Traduit par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('',{ +fullscreen_title : 'Affichage plein écran', +fullscreen_desc : 'Affichage plein écran/normal' +}); \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/fr_ca.js b/webcit/tiny_mce/plugins/fullscreen/langs/fr_ca.js new file mode 100644 index 000000000..a810964a0 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/fr_ca.js @@ -0,0 +1,6 @@ +// Canadian French lang variables by Virtuelcom last modification: 2005-06-15 + +tinyMCE.addToLang('',{ +fullscreen_title : 'Mode plein écran', +fullscreen_desc : 'Basculer le mode plein écrans' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/he.js b/webcit/tiny_mce/plugins/fullscreen/langs/he.js new file mode 100644 index 000000000..13663dab6 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/he.js @@ -0,0 +1,6 @@ +// HE lang variables by Liron Newman, http://eesh.net + +tinyMCE.addToLang('',{ +fullscreen_title : 'îöá îñê îìà', +fullscreen_desc : 'äçìó îöá îñê îìà' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/hu.js b/webcit/tiny_mce/plugins/fullscreen/langs/hu.js new file mode 100644 index 000000000..520124543 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/hu.js @@ -0,0 +1,6 @@ +// HU lang variables + +tinyMCE.addToLang('',{ +fullscreen_title : 'Teljesképernyõs mód', +fullscreen_desc : 'Váltás teljesképernyõs módra' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/is.js b/webcit/tiny_mce/plugins/fullscreen/langs/is.js new file mode 100644 index 000000000..5cec332b8 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/is.js @@ -0,0 +1,6 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('',{ +fullscreen_title : 'Heilskjár', +fullscreen_desc : 'Skipta í / úr heilskjá' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/nb.js b/webcit/tiny_mce/plugins/fullscreen/langs/nb.js new file mode 100644 index 000000000..be4047f17 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/nb.js @@ -0,0 +1,6 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +fullscreen_title : 'Fullskjerm tilstand', +fullscreen_desc : 'Hopp fra/til fullskjermtilstand' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/nl.js b/webcit/tiny_mce/plugins/fullscreen/langs/nl.js new file mode 100644 index 000000000..8e28e208c --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/nl.js @@ -0,0 +1,6 @@ +// NL lang variables + +tinyMCE.addToLang('',{ +fullscreen_title : 'Volledig scherm', +fullscreen_desc : 'Volledig scherm aan/uit' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/nn.js b/webcit/tiny_mce/plugins/fullscreen/langs/nn.js new file mode 100644 index 000000000..5b6f3e7a9 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/nn.js @@ -0,0 +1,6 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +fullscreen_title : 'Fullskjerm tilstand', +fullscreen_desc : 'Hopp fra/til fullskjermtilstand' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/pl.js b/webcit/tiny_mce/plugins/fullscreen/langs/pl.js new file mode 100644 index 000000000..4dffb2e5e --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/pl.js @@ -0,0 +1,9 @@ +// PL lang variables +// fixed by Wooya +// http://www.mfusion.prv.pl +// fixed by lemiel 14.11.2005 + +tinyMCE.addToLang('',{ +fullscreen_title : 'Tryb pe³noekranowy', +fullscreen_desc : 'Prze³±cz w tryb pe³noekranowy' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/pt_br.js b/webcit/tiny_mce/plugins/fullscreen/langs/pt_br.js new file mode 100644 index 000000000..433615c3a --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/pt_br.js @@ -0,0 +1,14 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : ???? + * Revision and modifications: + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('',{ +fullscreen_title : 'Modo de Janela Inteira (Fullscreen)', +fullscreen_desc : 'Alterar para modo de janela inteira' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/ru.js b/webcit/tiny_mce/plugins/fullscreen/langs/ru.js new file mode 100644 index 000000000..ab0d9a4a7 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/ru.js @@ -0,0 +1,6 @@ +// RU lang variables cp1251 + +tinyMCE.addToLang('',{ +fullscreen_title : 'Ïîëíîýêðàííûé ðåæèì', +fullscreen_desc : 'Âêëþ÷èòü ïîëíîýêðàííûé ðåæèì' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/fullscreen/langs/ru_KOI8-R.js new file mode 100644 index 000000000..3b17116ad --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/ru_KOI8-R.js @@ -0,0 +1,6 @@ +// RU lang variables KOI8-R + +tinyMCE.addToLang('',{ +fullscreen_title : 'ðÏÌÎÏÜËÒÁÎÎÙÊ ÒÅÖÉÍ', +fullscreen_desc : '÷ËÌÀÞÉÔØ ÐÏÌÎÏÜËÒÁÎÎÙÊ ÒÅÖÉÍ' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/fullscreen/langs/ru_UTF-8.js new file mode 100644 index 000000000..d4fd1b3b7 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/ru_UTF-8.js @@ -0,0 +1,6 @@ +// RU lang variables UTF-8 + +tinyMCE.addToLang('',{ +fullscreen_title : 'Полноэкранный режим', +fullscreen_desc : 'Включить полноэкранный режим' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/sk.js b/webcit/tiny_mce/plugins/fullscreen/langs/sk.js new file mode 100644 index 000000000..4f7791694 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/sk.js @@ -0,0 +1,14 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +fullscreen_title : 'Na celú obrazovku', +fullscreen_desc : 'Prepnúť na celú obrazovku' +}); + diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/sv.js b/webcit/tiny_mce/plugins/fullscreen/langs/sv.js new file mode 100644 index 000000000..5f671f087 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/sv.js @@ -0,0 +1,6 @@ +// SV lang variables + +tinyMCE.addToLang('',{ +fullscreen_title : 'Fullskärmsläge', +fullscreen_desc : 'Hoppa från/till fullskärmsläge' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/zh_cn.js b/webcit/tiny_mce/plugins/fullscreen/langs/zh_cn.js new file mode 100644 index 000000000..866427f28 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/zh_cn.js @@ -0,0 +1,6 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('',{ +fullscreen_title : 'È«ÆÁģʽ', +fullscreen_desc : 'Çл»È«ÆÁģʽ' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/zh_tw.js b/webcit/tiny_mce/plugins/fullscreen/langs/zh_tw.js new file mode 100644 index 000000000..47a456ac4 --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/zh_tw.js @@ -0,0 +1,7 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +fullscreen_title : '¥þ¿Ã¹õ¼Ò¦¡', +fullscreen_desc : 'Âন¥þ¿Ã¹õ¼Ò¦¡' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/fullscreen/langs/zh_tw_utf8.js new file mode 100644 index 000000000..2442c4bfc --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/langs/zh_tw_utf8.js @@ -0,0 +1,7 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +fullscreen_title : '全螢幕模式', +fullscreen_desc : '轉成全螢幕模式' +}); diff --git a/webcit/tiny_mce/plugins/fullscreen/readme.txt b/webcit/tiny_mce/plugins/fullscreen/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/fullscreen/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/iespell/editor_plugin.js b/webcit/tiny_mce/plugins/iespell/editor_plugin.js new file mode 100644 index 000000000..9368e44b3 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('iespell','cs,el,en,fr_ca,it,ko,sv,zh_cn,fr,de,pl,pt_br,nl,da,he,nb,ru,ru_KOI8-R,ru_UTF-8,nn,fi,cy,es,is,zh_tw,zh_tw_utf8,sk');function TinyMCE_iespell_getInfo(){return{longname:'IESpell',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_iespell.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_iespell_getControlHTML(control_name){if(control_name=="iespell"&&(tinyMCE.isMSIE&&!tinyMCE.isOpera)){var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceIESpell\');return false;';return '';}return "";}function TinyMCE_iespell_execCommand(editor_id,element,command,user_interface,value){if(command=="mceIESpell"){try{var ieSpell=new ActiveXObject("ieSpell.ieSpellExtension");ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement);}catch(e){if(e.number==-2146827859){if(confirm(tinyMCE.getLang("lang_iespell_download","",true)))window.open('http://www.iespell.com/download.php','ieSpellDownload','');}else alert("Error Loading ieSpell: Exception "+e.number);}return true;}return false;} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/iespell/editor_plugin_src.js b/webcit/tiny_mce/plugins/iespell/editor_plugin_src.js new file mode 100644 index 000000000..1b09fb72d --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/editor_plugin_src.js @@ -0,0 +1,49 @@ +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('iespell', 'cs,el,en,fr_ca,it,ko,sv,zh_cn,fr,de,pl,pt_br,nl,da,he,nb,ru,ru_KOI8-R,ru_UTF-8,nn,fi,cy,es,is,zh_tw,zh_tw_utf8,sk'); + +function TinyMCE_iespell_getInfo() { + return { + longname : 'IESpell', + author : 'Moxiecode Systems', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_iespell.html', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; +}; + +/** + * Returns the HTML contents of the iespell control. + */ +function TinyMCE_iespell_getControlHTML(control_name) { + // Is it the iespell control and is the brower MSIE. + if (control_name == "iespell" && (tinyMCE.isMSIE && !tinyMCE.isOpera)) { + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceIESpell\');return false;'; + return ''; + } + + return ""; +} + +/** + * Executes the mceIESpell command. + */ +function TinyMCE_iespell_execCommand(editor_id, element, command, user_interface, value) { + // Handle ieSpellCommand + if (command == "mceIESpell") { + try { + var ieSpell = new ActiveXObject("ieSpell.ieSpellExtension"); + ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement); + } catch (e) { + if (e.number == -2146827859) { + if (confirm(tinyMCE.getLang("lang_iespell_download", "", true))) + window.open('http://www.iespell.com/download.php', 'ieSpellDownload', ''); + } else + alert("Error Loading ieSpell: Exception " + e.number); + } + + return true; + } + + // Pass to next handler in chain + return false; +} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/iespell/images/iespell.gif b/webcit/tiny_mce/plugins/iespell/images/iespell.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9a2891891f6c44cb58cec06e1df90154fab728a GIT binary patch literal 124 zcmZ?wbhEHb6k!ly*u=!(3j)h--?(Uy@xY+qK|sTU2^&5zFfb_oWMO1rU}w+)vVkf^ z7#NrxD|X%aXK>0>Hb7yGOru0Qdt8t~Pr`|eUN*M-2T$>5EI)1;e(KzB(FM&H4!CkG acb!zU>toUKL&1g`63e=@%dCAF7_0$Ni7k5o literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/iespell/langs/cs.js b/webcit/tiny_mce/plugins/iespell/langs/cs.js new file mode 100644 index 000000000..04e1282c9 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/cs.js @@ -0,0 +1,12 @@ +/** + * Czech lang variables + * encoding: utf-8 + * + * $Id: cs.js,v 1.4 2005/10/18 13:59:42 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +iespell_desc : 'Spustit kontrolu pravopisu', +iespell_download : "ieSpell nedetekován. Klikněte na OK a otevřete stahovací stránku." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/cy.js b/webcit/tiny_mce/plugins/iespell/langs/cy.js new file mode 100644 index 000000000..e7671a2e7 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/cy.js @@ -0,0 +1,7 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +iespell_desc : 'Dechrau gwirio sillafu', +iespell_download : "Methwyd canfod ieSpell. Cliciwch OK i fynd i'r dudalen lawrlwytho." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/da.js b/webcit/tiny_mce/plugins/iespell/langs/da.js new file mode 100644 index 000000000..4612e1864 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/da.js @@ -0,0 +1,7 @@ +// DK lang variables contributed by Jan Moelgaard + +tinyMCE.addToLang('',{ +iespell_desc : 'Lav stavekontrol', +iespell_download : "ieSpell kan ikke findes. Klik på OK for at fortsætte til downloadsiden." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/de.js b/webcit/tiny_mce/plugins/iespell/langs/de.js new file mode 100644 index 000000000..bc10a5005 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/de.js @@ -0,0 +1,7 @@ +// DE lang variables + +tinyMCE.addToLang('',{ +iespell_desc : 'Rechtschreibprüfung', +iespell_download : "ieSpell nicht gefunden. Klicken Sie OK, um die Download-Seite aufzurufen." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/el.js b/webcit/tiny_mce/plugins/iespell/langs/el.js new file mode 100644 index 000000000..9b48b86c0 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/el.js @@ -0,0 +1,7 @@ +// Greek lang variables by Jacaranda Bill + +tinyMCE.addToLang('',{ +iespell_desc : 'Ïñèïãñáöéêüò Ýëåã÷ïò', +iespell_download : "Ôï ðñüãñáììá ieSpell äåí âñÝèçêå. ÐáôÞóôå OK ãéá íá ìåôáâåßôå óôçí éóôïóåëßäá ëÞøçò ôïõ ðñïãñÜììáôïò." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/en.js b/webcit/tiny_mce/plugins/iespell/langs/en.js new file mode 100644 index 000000000..c3688e946 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/en.js @@ -0,0 +1,7 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +iespell_desc : 'Run spell checking', +iespell_download : "ieSpell not detected. Click OK to go to download page." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/es.js b/webcit/tiny_mce/plugins/iespell/langs/es.js new file mode 100644 index 000000000..f27868ad1 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/es.js @@ -0,0 +1,15 @@ +/** + * ES lang variables + * + * Authors : Alvaro Velasco, + * Adolfo Sanz De Diego (asanzdiego) , + * Carlos C Soto (eclipxe) + * Last Updated : October 17, 2005 + * TinyMCE Version : 2.0RC3 + */ + +tinyMCE.addToLang('',{ +iespell_desc : 'Ejecutar corrector ortográfico', +iespell_download : "Corrector ortográfico no detectado. Pulse OK para ir a la página de descarga." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/fr.js b/webcit/tiny_mce/plugins/iespell/langs/fr.js new file mode 100644 index 000000000..ba5573a34 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/fr.js @@ -0,0 +1,7 @@ +// French lang variables by Laurent Dran +// Modifié par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('',{ +iespell_desc : 'Lancer le vérificateur d\'orthographe', +iespell_download : "Le dictionnaire ieSpell n\'a pas été trouvé.\n\nCliquez sur Ok pour aller au site de téléchargement." +}); diff --git a/webcit/tiny_mce/plugins/iespell/langs/fr_ca.js b/webcit/tiny_mce/plugins/iespell/langs/fr_ca.js new file mode 100644 index 000000000..8904bebe4 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/fr_ca.js @@ -0,0 +1,6 @@ +// Canadian French lang variables by Virtuelcom last modification: 2005-06-15 + +tinyMCE.addToLang('',{ +iespell_desc : 'Executer le vérificateur d\'orthographe', +iespell_download : "ieSpell n\'a pas été trouvé. Cliquez sur OK pour aller au site de téléchargement." +}); diff --git a/webcit/tiny_mce/plugins/iespell/langs/he.js b/webcit/tiny_mce/plugins/iespell/langs/he.js new file mode 100644 index 000000000..1c1fde67f --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/he.js @@ -0,0 +1,6 @@ +// HE lang variables by Liron Newman, http://eesh.net + +tinyMCE.addToLang('',{ +iespell_desc : 'äôòì áãé÷ú àéåú', +iespell_download : "ìà ðîöà ieSpell. ìçõ òì àéùåø ëãé ìäâéò ìãó ääåøãä." +}); diff --git a/webcit/tiny_mce/plugins/iespell/langs/hu.js b/webcit/tiny_mce/plugins/iespell/langs/hu.js new file mode 100644 index 000000000..d24a8039c --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/hu.js @@ -0,0 +1,7 @@ +// HU lang variables + +tinyMCE.addToLang('',{ +iespell_desc : 'Helyesírásellenõrzés indítása', +iespell_download : "ieSpell nem található. Kattints az OK-ra a letöltési oldalhoz." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/is.js b/webcit/tiny_mce/plugins/iespell/langs/is.js new file mode 100644 index 000000000..f30240060 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/is.js @@ -0,0 +1,7 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('',{ +iespell_desc : 'Stafsetningarpúki', +iespell_download : "ieSpell ekki til staðar. Smellið á OK til að sjá niðurhalssíðu." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/it.js b/webcit/tiny_mce/plugins/iespell/langs/it.js new file mode 100644 index 000000000..6f4d529c1 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/it.js @@ -0,0 +1,7 @@ +// IT lang variables + +tinyMCE.addToLang('',{ +iespell_desc : 'Avvia il controllo ortografico', +iespell_download : "ieSpell non trovato. Clicca OK per andare alla pagina di download." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/ko.js b/webcit/tiny_mce/plugins/iespell/langs/ko.js new file mode 100644 index 000000000..eb0309260 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/ko.js @@ -0,0 +1,7 @@ +// KO lang variables + +tinyMCE.addToLang('',{ +iespell_desc : '¸ÂÃã¹ý °Ë»ç ½ÇÇà', +iespell_download : "ieSpellÀ» ãÀ» ¼ö ¾ø½À´Ï´Ù. OK¸¦ ´©¸£¸é ´Ù¿î·Îµå ÆäÀÌÁö·Î À̵¿ÇÕ´Ï´Ù." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/nb.js b/webcit/tiny_mce/plugins/iespell/langs/nb.js new file mode 100644 index 000000000..71d165f0a --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/nb.js @@ -0,0 +1,6 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +iespell_desc : 'Kjør rettstavingskontroll', +iespell_download : "ieSpell virker ikke å være installert. Klikk OK for å laste hjem." +}); diff --git a/webcit/tiny_mce/plugins/iespell/langs/nl.js b/webcit/tiny_mce/plugins/iespell/langs/nl.js new file mode 100644 index 000000000..9d3530d94 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/nl.js @@ -0,0 +1,6 @@ +// NL lang variables + +tinyMCE.addToLang('',{ +iespell_desc : 'Spellingscontrole', +iespell_download : "ieSpell niet gedetecteerd. Klik op OK om deze te downloaden." +}); diff --git a/webcit/tiny_mce/plugins/iespell/langs/nn.js b/webcit/tiny_mce/plugins/iespell/langs/nn.js new file mode 100644 index 000000000..85b46a1ea --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/nn.js @@ -0,0 +1,6 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +iespell_desc : 'Kjør rettstavingskontroll', +iespell_download : "ieSpell virker ikke å være installert. Klikk OK for å laste hjem." +}); diff --git a/webcit/tiny_mce/plugins/iespell/langs/pl.js b/webcit/tiny_mce/plugins/iespell/langs/pl.js new file mode 100644 index 000000000..1b30d97c0 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/pl.js @@ -0,0 +1,8 @@ +// PL lang variables +// fixed by Wooya +// http://www.mfusion.prv.pl + +tinyMCE.addToLang('',{ +iespell_desc : 'Uruchom sprawdzanie pisowni', +iespell_download : "Nie wykryto pluginu, kliknij aby przej¶æ do strony z pluginami." +}); diff --git a/webcit/tiny_mce/plugins/iespell/langs/pt_br.js b/webcit/tiny_mce/plugins/iespell/langs/pt_br.js new file mode 100644 index 000000000..6b808f487 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/pt_br.js @@ -0,0 +1,14 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : ???? + * Revision and modifications: + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('',{ +iespell_desc : 'Executar verificação ortográfica', +iespell_download : "Verificador ieSpell não detectado. Click OK para ir à página de download." +}); diff --git a/webcit/tiny_mce/plugins/iespell/langs/ru.js b/webcit/tiny_mce/plugins/iespell/langs/ru.js new file mode 100644 index 000000000..006af8e8a --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/ru.js @@ -0,0 +1,7 @@ +// RU lang variables cp1251 + +tinyMCE.addToLang('',{ +iespell_desc : 'Çàïóñòèòü ïðîâåðêó îðôîãðàôèè', +iespell_download : "ieSpell íå îáíàðóæåí. íàæìèòå OK, ÷òîáû ïåðåéòè íà ñòðàíèöó çàãðóçêè." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/iespell/langs/ru_KOI8-R.js new file mode 100644 index 000000000..61c7bf23c --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/ru_KOI8-R.js @@ -0,0 +1,7 @@ +// RU lang variables KOI8-R + +tinyMCE.addToLang('',{ +iespell_desc : 'úÁÐÕÓÔÉÔØ ÐÒÏ×ÅÒËÕ ÏÒÆÏÇÒÁÆÉÉ', +iespell_download : "ieSpell ÎÅ ÏÂÎÁÒÕÖÅÎ. ÎÁÖÍÉÔÅ OK, ÞÔÏÂÙ ÐÅÒÅÊÔÉ ÎÁ ÓÔÒÁÎÉÃÕ ÚÁÇÒÕÚËÉ." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/iespell/langs/ru_UTF-8.js new file mode 100644 index 000000000..1de0ad6ff --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/ru_UTF-8.js @@ -0,0 +1,7 @@ +// RU lang variables UTF-8 + +tinyMCE.addToLang('',{ +iespell_desc : 'Запустить проверку орфографии', +iespell_download : "ieSpell не обнаружен. нажмите OK, чтобы перейти на страницу загрузки." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/sk.js b/webcit/tiny_mce/plugins/iespell/langs/sk.js new file mode 100644 index 000000000..0c095171e --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/sk.js @@ -0,0 +1,14 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +iespell_desc : 'SpustiÅ¥ kontrolu pravopisu', +iespell_download : "ieSpell nedetekovaný Kliknite na OK a otvorte stahovaciu stránku." +}); + diff --git a/webcit/tiny_mce/plugins/iespell/langs/sv.js b/webcit/tiny_mce/plugins/iespell/langs/sv.js new file mode 100644 index 000000000..7006885b2 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/sv.js @@ -0,0 +1,6 @@ +// SE lang variables + +tinyMCE.addToLang('',{ +iespell_desc : 'Kör rättstavningskontroll', +iespell_download : "ieSpell verkar inte vara installerad. Klicka OK för att ladda hem." +}); diff --git a/webcit/tiny_mce/plugins/iespell/langs/zh_cn.js b/webcit/tiny_mce/plugins/iespell/langs/zh_cn.js new file mode 100644 index 000000000..032655acf --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/zh_cn.js @@ -0,0 +1,6 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('',{ +iespell_desc : 'ÔËÐÐƴд¼ì²é', +iespell_download : "δ¼ì²âµ½ ieSpell ƴд¼ì²é£¬µã»÷ OK Ç°ÍùÏÂÔØÒ³Ãæ¡£" +}); diff --git a/webcit/tiny_mce/plugins/iespell/langs/zh_tw.js b/webcit/tiny_mce/plugins/iespell/langs/zh_tw.js new file mode 100644 index 000000000..5345a72b6 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/zh_tw.js @@ -0,0 +1,7 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +iespell_desc : '°õ¦æ«÷¦rÀˬd', +iespell_download : "µL ieSpell «÷¦rÀˬd¥\¯à¡CÂI«ö¡u½T©w¡v«á¤U¸ü¦w¸Ë" +}); diff --git a/webcit/tiny_mce/plugins/iespell/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/iespell/langs/zh_tw_utf8.js new file mode 100644 index 000000000..936520a20 --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/langs/zh_tw_utf8.js @@ -0,0 +1,8 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +iespell_desc : '執行拼字檢查', +iespell_download : "無 ieSpell 拼字檢查功能。點按「確定」後下載安裝" +}); + diff --git a/webcit/tiny_mce/plugins/iespell/readme.txt b/webcit/tiny_mce/plugins/iespell/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/iespell/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/inlinepopups/css/inlinepopup.css b/webcit/tiny_mce/plugins/inlinepopups/css/inlinepopup.css new file mode 100644 index 000000000..2b62077eb --- /dev/null +++ b/webcit/tiny_mce/plugins/inlinepopups/css/inlinepopup.css @@ -0,0 +1,69 @@ +/* Window classes */ + +.mceWindow { + position: absolute; + left: 0px; + top: 0px; + border: 1px solid black; + background-color: #D4D0C8; +} + +.mceWindowHead { + background-color: #334F8D; + width: 100%; + height: 18px; + cursor: move; + overflow: hidden; +} + +.mceWindowBody { + clear: both; + background-color: white; +} + +.mceWindowStatusbar { + background-color: #D4D0C8; + height: 12px; + border-top: 1px solid black; +} + +.mceWindowTitle { + float: left; + font-family: "MS Sans Serif"; + font-size: 9pt; + font-weight: bold; + line-height: 18px; + color: white; + margin-left: 2px; + overflow: hidden; +} + +.mceWindowHeadTools { + margin-right: 2px; +} + +.mceWindowClose, .mceWindowMinimize, .mceWindowMaximize { + display: block; + float: right; + overflow: hidden; + margin-top: 2px; +} + +.mceWindowClose { + margin-left: 2px; +} + +.mceWindowMinimize { +} + +.mceWindowMaximize { +} + +.mceWindowResize { + display: block; + float: right; + overflow: hidden; + cursor: se-resize; + width: 12px; + height: 12px; +} diff --git a/webcit/tiny_mce/plugins/inlinepopups/editor_plugin.js b/webcit/tiny_mce/plugins/inlinepopups/editor_plugin.js new file mode 100644 index 000000000..a70f4d7c6 --- /dev/null +++ b/webcit/tiny_mce/plugins/inlinepopups/editor_plugin.js @@ -0,0 +1 @@ +function TinyMCE_inlinepopups_getInfo(){return{longname:'Inline Popups',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_inlinepopups.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};TinyMCE.prototype.orgOpenWindow=TinyMCE.prototype.openWindow;TinyMCE.prototype.openWindow=function(template,args){if(args['inline']!="yes"||tinyMCE.isOpera||tinyMCE.getParam("plugins").indexOf('inlinepopups')==-1){mcWindows.selectedWindow=null;args['mce_inside_iframe']=false;this.orgOpenWindow(template,args);return;}var url,resizable,scrollbars;args['mce_inside_iframe']=true;tinyMCE.windowArgs=args;if(template['file'].charAt(0)!='/'&&template['file'].indexOf('://')==-1)url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template['file'];else url=template['file'];if(!(width=parseInt(template['width'])))width=320;if(!(height=parseInt(template['height'])))height=200;resizable=(args&&args['resizable'])?args['resizable']:"no";scrollbars=(args&&args['scrollbars'])?args['scrollbars']:"no";height+=18;for(var name in args){if(typeof(args[name])=='function')continue;url=tinyMCE.replaceVar(url,name,escape(args[name]));}var elm=document.getElementById(this.selectedInstance.editorId+'_parent');var pos=tinyMCE.getAbsPosition(elm);pos.absLeft+=Math.round((elm.firstChild.clientWidth/2)-(width/2));pos.absTop+=Math.round((elm.firstChild.clientHeight/2)-(height/2));mcWindows.open(url,mcWindows.idCounter++,"modal=yes,width="+width+",height="+height+",resizable="+resizable+",scrollbars="+scrollbars+",statusbar="+resizable+",left="+pos.absLeft+",top="+pos.absTop);};TinyMCE.prototype.orgCloseWindow=TinyMCE.prototype.closeWindow;TinyMCE.prototype.closeWindow=function(win){if(mcWindows.selectedWindow!=null)mcWindows.selectedWindow.close();else this.orgCloseWindow(win);};TinyMCE.prototype.setWindowTitle=function(win_ref,title){for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(win_ref.name==win.id+"_iframe")window.frames[win.id+"_iframe"].document.getElementById(win.id+'_title').innerHTML=title;}};function MCWindows(){this.settings=new Array();this.windows=new Array();this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isGecko=navigator.userAgent.indexOf('Gecko')!=-1;this.isSafari=navigator.userAgent.indexOf('Safari')!=-1;this.isMac=navigator.userAgent.indexOf('Mac')!=-1;this.isMSIE5_0=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5.0')!=-1);this.action="none";this.selectedWindow=null;this.lastSelectedWindow=null;this.zindex=100;this.mouseDownScreenX=0;this.mouseDownScreenY=0;this.mouseDownLayerX=0;this.mouseDownLayerY=0;this.mouseDownWidth=0;this.mouseDownHeight=0;this.idCounter=0;};MCWindows.prototype.init=function(settings){this.settings=settings;if(this.isMSIE)this.addEvent(document,"mousemove",mcWindows.eventDispatcher);else this.addEvent(window,"mousemove",mcWindows.eventDispatcher);this.addEvent(document,"mouseup",mcWindows.eventDispatcher);this.doc=document;};MCWindows.prototype.getParam=function(name,default_value){var value=null;value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(value=="true"||value=="false")return(value=="true");return value;};MCWindows.prototype.eventDispatcher=function(e){e=typeof(e)=="undefined"?window.event:e;if(mcWindows.selectedWindow==null)return;if(mcWindows.isGecko&&e.type=="mousedown"){var elm=e.currentTarget;for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(win.headElement==elm||win.resizeElement==elm){win.focus();break;}}}switch(e.type){case "mousemove":mcWindows.selectedWindow.onMouseMove(e);break;case "mouseup":mcWindows.selectedWindow.onMouseUp(e);break;case "mousedown":mcWindows.selectedWindow.onMouseDown(e);break;case "focus":mcWindows.selectedWindow.onFocus(e);break;}};MCWindows.prototype.addEvent=function(obj,name,handler){if(this.isMSIE)obj.attachEvent("on"+name,handler);else obj.addEventListener(name,handler,true);};MCWindows.prototype.cancelEvent=function(e){if(this.isMSIE){e.returnValue=false;e.cancelBubble=true;}else e.preventDefault();};MCWindows.prototype.parseFeatures=function(opts){opts=opts.toLowerCase();opts=opts.replace(/;/g,",");opts=opts.replace(/[^0-9a-z=,]/g,"");var optionChunks=opts.split(',');var options=new Array();options['left']="10";options['top']="10";options['width']="300";options['height']="300";options['resizable']="yes";options['minimizable']="yes";options['maximizable']="yes";options['close']="yes";options['movable']="yes";options['statusbar']="yes";options['scrollbars']="auto";options['modal']="no";if(opts=="")return options;for(var i=0;i';html+='';html+='';html+='Wrapper iframe';html+='';html+='';html+='';html+='';html+='
    ';html+='
    ';html+='
    ';html+='
    ';html+='
    ';html+='
    ';if(features['statusbar']=="yes"){html+='
    ';if(features['resizable']=="yes"){if(this.isGecko)html+='
    ';else html+='
    ';}html+='
    ';}html+='
    ';html+='';html+='';this.createFloatingIFrame(id,features['left'],features['top'],features['width'],features['height'],html);};MCWindows.prototype.setDocumentLock=function(state){if(state){var elm=document.getElementById('mcWindowEventBlocker');if(elm==null){elm=document.createElement("div");elm.id="mcWindowEventBlocker";elm.style.position="absolute";elm.style.left="0px";elm.style.top="0px";document.body.appendChild(elm);}elm.style.display="none";var imgPath=this.getParam("images_path");var width=document.body.clientWidth;var height=document.body.clientHeight;elm.style.width=width;elm.style.height=height;elm.innerHTML='';elm.style.zIndex=mcWindows.zindex-1;elm.style.display="block";}else{var elm=document.getElementById('mcWindowEventBlocker');if(mcWindows.windows.length==0)elm.parentNode.removeChild(elm);else elm.style.zIndex=mcWindows.zindex-1;}};MCWindows.prototype.onLoad=function(name){var win=mcWindows.windows[name];var id="mcWindow_"+name;var wrapperIframe=window.frames[id+"_iframe"].frames[0];var wrapperDoc=window.frames[id+"_iframe"].document;var doc=window.frames[id+"_iframe"].document;var winDiv=document.getElementById("mcWindow_"+name+"_div");var realIframe=window.frames[id+"_iframe"].frames[0];win.id="mcWindow_"+name;win.winElement=winDiv;win.bodyElement=doc.getElementById(id+'_body');win.iframeElement=doc.getElementById(id+'_iframe');win.headElement=doc.getElementById(id+'_head');win.titleElement=doc.getElementById(id+'_title');win.resizeElement=doc.getElementById(id+'_resize');win.containerElement=doc.getElementById(id+'_container');win.left=win.features['left'];win.top=win.features['top'];win.frame=window.frames[id+'_iframe'].frames[0];win.wrapperFrame=window.frames[id+'_iframe'];win.wrapperIFrameElement=document.getElementById(id+"_iframe");mcWindows.addEvent(win.headElement,"mousedown",mcWindows.eventDispatcher);if(win.resizeElement!=null)mcWindows.addEvent(win.resizeElement,"mousedown",mcWindows.eventDispatcher);if(mcWindows.isMSIE){mcWindows.addEvent(realIframe.document,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe.document,"mouseup",mcWindows.eventDispatcher);}else{mcWindows.addEvent(realIframe,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe,"mouseup",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe,"focus",mcWindows.eventDispatcher);}for(var i=0;i'; + html += ''; + html += ''; + + html += '
    '; + html += '
    '; + html += '
    '; +// html += ' '; +// html += ' '; + html += '
    '; + html += '
    '; + html += '
    '; + + if (features['statusbar'] == "yes") { + html += '
    '; + + if (features['resizable'] == "yes") { + if (this.isGecko) + html += '
    '; + else + html += '
    '; + } + + html += '
    '; + } + + html += '
    '; + + html += ''; + html += ''; + + // Create iframe + this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html); +}; + +// Blocks the document events by placing a image over the whole document +MCWindows.prototype.setDocumentLock = function(state) { + if (state) { + var elm = document.getElementById('mcWindowEventBlocker'); + if (elm == null) { + elm = document.createElement("div"); + + elm.id = "mcWindowEventBlocker"; + elm.style.position = "absolute"; + elm.style.left = "0px"; + elm.style.top = "0px"; + + document.body.appendChild(elm); + } + + elm.style.display = "none"; + + var imgPath = this.getParam("images_path"); + var width = document.body.clientWidth; + var height = document.body.clientHeight; + + elm.style.width = width; + elm.style.height = height; + elm.innerHTML = ''; + + elm.style.zIndex = mcWindows.zindex-1; + elm.style.display = "block"; + } else { + var elm = document.getElementById('mcWindowEventBlocker'); + + if (mcWindows.windows.length == 0) + elm.parentNode.removeChild(elm); + else + elm.style.zIndex = mcWindows.zindex-1; + } +}; + +// Gets called when wrapper iframe is initialized +MCWindows.prototype.onLoad = function(name) { + var win = mcWindows.windows[name]; + var id = "mcWindow_" + name; + var wrapperIframe = window.frames[id + "_iframe"].frames[0]; + var wrapperDoc = window.frames[id + "_iframe"].document; + var doc = window.frames[id + "_iframe"].document; + var winDiv = document.getElementById("mcWindow_" + name + "_div"); + var realIframe = window.frames[id + "_iframe"].frames[0]; + + // Set window data + win.id = "mcWindow_" + name; + win.winElement = winDiv; + win.bodyElement = doc.getElementById(id + '_body'); + win.iframeElement = doc.getElementById(id + '_iframe'); + win.headElement = doc.getElementById(id + '_head'); + win.titleElement = doc.getElementById(id + '_title'); + win.resizeElement = doc.getElementById(id + '_resize'); + win.containerElement = doc.getElementById(id + '_container'); + win.left = win.features['left']; + win.top = win.features['top']; + win.frame = window.frames[id + '_iframe'].frames[0]; + win.wrapperFrame = window.frames[id + '_iframe']; + win.wrapperIFrameElement = document.getElementById(id + "_iframe"); + + // Add event handlers + mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher); + + if (win.resizeElement != null) + mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher); + + if (mcWindows.isMSIE) { + mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher); + } else { + mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher); + } + + for (var i=0; iutpmhBaYhCPCMFj~25SJyItL8^ literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/inlinepopups/images/window_close.gif b/webcit/tiny_mce/plugins/inlinepopups/images/window_close.gif new file mode 100644 index 0000000000000000000000000000000000000000..3469e5aea1d1594aded9b9fe41dbf66f7db66e5d GIT binary patch literal 110 zcmZ?wbhEHb6ky8EpFaMT6=+Em0o-!%GKPcq}sebpyqLVpV!VJ~` DxTYg8 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/inlinepopups/images/window_minimize.gif b/webcit/tiny_mce/plugins/inlinepopups/images/window_minimize.gif new file mode 100644 index 0000000000000000000000000000000000000000..94f167a4dd150485a7530bdf5d2c9e4dd42f109a GIT binary patch literal 112 zcmZ?wbhEHb6ky'; + + html += '
    '; + html += '
    '; + html += '
    '; +// html += ' '; +// html += ' '; + html += '
    '; + html += '
    '; + html += '
    '; + html += '
    '; + html += '
    '; + html += '
    '; + html += '
    '; + + html += ''; + html += ''; + + // Create iframe + this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html); +}; + +// Gets called when wrapper iframe is initialized +MCWindows.prototype.onLoad = function(name) { + var win = mcWindows.windows[name]; + var id = "mcWindow_" + name; + var wrapperIframe = window.frames[id + "_iframe"].frames[0]; + var wrapperDoc = window.frames[id + "_iframe"].document; + var doc = window.frames[id + "_iframe"].document; + var winDiv = document.getElementById("mcWindow_" + name + "_div"); + var realIframe = window.frames[id + "_iframe"].frames[0]; + + // Set window data + win.id = "mcWindow_" + name + "_iframe"; + win.winElement = winDiv; + win.bodyElement = doc.getElementById(id + '_body'); + win.iframeElement = doc.getElementById(id + '_iframe'); + win.headElement = doc.getElementById(id + '_head'); + win.titleElement = doc.getElementById(id + '_title'); + win.resizeElement = doc.getElementById(id + '_resize'); + win.containerElement = doc.getElementById(id + '_container'); + win.left = win.features['left']; + win.top = win.features['top']; + win.frame = window.frames[id + '_iframe'].frames[0]; + win.wrapperFrame = window.frames[id + '_iframe']; + win.wrapperIFrameElement = document.getElementById(id + "_iframe"); + + // Add event handlers + mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher); + mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher); + + if (mcWindows.isMSIE) { + mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher); + } else { + mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher); + } + + for (var i=0; i';case "inserttime":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceInsertTime\');return false;';return '';}return "";}function TinyMCE_insertdatetime_execCommand(editor_id,element,command,user_interface,value){function addZeros(value,len){value=""+value;if(value.length'; + + case "inserttime": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceInsertTime\');return false;'; + return ''; + } + + return ""; +} + +/** + * Executes the mceInsertDate command. + */ +function TinyMCE_insertdatetime_execCommand(editor_id, element, command, user_interface, value) { + /* Adds zeros infront of value */ + function addZeros(value, len) { + value = "" + value; + + if (value.length < len) { + for (var i=0; i<(len-value.length); i++) + value = "0" + value; + } + + return value; + } + + /* Returns the date object in the specified format */ + function getDateTime(date, format) { + format = tinyMCE.regexpReplace(format, "%D", "%m/%d/%y"); + format = tinyMCE.regexpReplace(format, "%r", "%I:%M:%S %p"); + format = tinyMCE.regexpReplace(format, "%Y", "" + date.getFullYear()); + format = tinyMCE.regexpReplace(format, "%y", "" + date.getYear()); + format = tinyMCE.regexpReplace(format, "%m", addZeros(date.getMonth()+1, 2)); + format = tinyMCE.regexpReplace(format, "%d", addZeros(date.getDate(), 2)); + format = tinyMCE.regexpReplace(format, "%H", "" + addZeros(date.getHours(), 2)); + format = tinyMCE.regexpReplace(format, "%M", "" + addZeros(date.getMinutes(), 2)); + format = tinyMCE.regexpReplace(format, "%S", "" + addZeros(date.getSeconds(), 2)); + format = tinyMCE.regexpReplace(format, "%I", "" + ((date.getHours() + 11) % 12 + 1)); + format = tinyMCE.regexpReplace(format, "%p", "" + (date.getHours() < 12 ? "AM" : "PM")); + format = tinyMCE.regexpReplace(format, "%B", "" + tinyMCE.getLang("lang_inserttime_months_long")[date.getMonth()]); + format = tinyMCE.regexpReplace(format, "%b", "" + tinyMCE.getLang("lang_inserttime_months_short")[date.getMonth()]); + format = tinyMCE.regexpReplace(format, "%A", "" + tinyMCE.getLang("lang_inserttime_day_long")[date.getDay()]); + format = tinyMCE.regexpReplace(format, "%a", "" + tinyMCE.getLang("lang_inserttime_day_short")[date.getDay()]); + format = tinyMCE.regexpReplace(format, "%%", "%"); + + return format; + } + + // Handle commands + switch (command) { + case "mceInsertDate": + tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_dateFormat", tinyMCE.getLang('lang_insertdate_def_fmt')))); + return true; + + case "mceInsertTime": + tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_timeFormat", tinyMCE.getLang('lang_inserttime_def_fmt')))); + return true; + } + + // Pass to next handler in chain + return false; +} diff --git a/webcit/tiny_mce/plugins/insertdatetime/images/insertdate.gif b/webcit/tiny_mce/plugins/insertdatetime/images/insertdate.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ad424d3d19b07b05a9a5e6828325dba602bf0ac GIT binary patch literal 287 zcmZ?wbhEHb6k!lyxFW>B%FNo-)U@-!h1l*#K+sgxG=KdOCpWJH7oK&k{F0QClRxK; zUGY6FBdaM3*DEP01;r*^y7l_cpMSIV{WJ1PdiCl@R#_1PZlL&+g^__loIwYq1Y{=z z>zoIweJPpqGFHv=ysdZmz?n>=yO($C_`KCy7oKxXT2e)*CXcnVec1bGEwlY~SW1Ph9k_!1Zx z0ux!;MFks`CnShAGcoZo@HNcp=UBithl#7ca+x@v$Yzn%>>L$UeQJCwVwdu5(%iJ= N=w|H`C)E@gtO1pRV_^UQ literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/insertdatetime/images/inserttime.gif b/webcit/tiny_mce/plugins/insertdatetime/images/inserttime.gif new file mode 100644 index 0000000000000000000000000000000000000000..6dad3b36d0a89c68b8410a2c11e00b077dc5ad8a GIT binary patch literal 239 zcmZ?wbhEHb6k!lyxFX76WEC`h)AdV_{w3zMwypWp*gG$8(xo+PwyZn(@6)$mn-1NI zPRt6b+BALc^7grBje?3!pS^tO*1wXPzTJBdJ$n1|-`{@@o)HYVf#OdVMg|6P1|5(R zkev*yIS*9(QZnadtXh}zI_|<15m)1lhEqd0Rb*G)$UEe%!DfCXB|P(m22;Dr)fEw{ z0$i#>8, + * Carlos C Soto (eclipxe) + * Last Updated : October 17, 2005 + * TinyMCE Version : 2.0RC3 + */ + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%d-%m-%Y', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'Insertar fecha', +inserttime_desc : 'Insertar hora', +inserttime_months_long : new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"), +inserttime_months_short : new Array("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"), +inserttime_day_long : new Array("Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"), +inserttime_day_short : new Array("Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb", "Dom") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/fa.js b/webcit/tiny_mce/plugins/insertdatetime/langs/fa.js new file mode 100644 index 000000000..5d89b7331 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/fa.js @@ -0,0 +1,13 @@ +// IR lang variables +// Persian (Farsi) language pack (for IRAN) +// By: Morteza Zafari +// Lost@LostLord.com +// http://www.LostLord.com + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%Y-%m-%d', +inserttime_def_fmt : '%H:%M:%S', +dir : 'rtl', +insertdate_desc : '?????? ?????', +inserttime_desc : '?????? ????' +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/fi.js b/webcit/tiny_mce/plugins/insertdatetime/langs/fi.js new file mode 100644 index 000000000..3758c96fd --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/fi.js @@ -0,0 +1,12 @@ +// FI lang variables by Tuomo Aura, Ateco.fi + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%d.%m.%Y', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'Lisää päivämäärä', +inserttime_desc : 'Lisää kellonaika', +inserttime_months_long : new Array("Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"), +inserttime_months_short : new Array("Tammi", "Helmi", "Maalis", "Huhti", "Touko", "Kesä", "Heinä", "Elo", "Syys", "Loka", "Marras", "Joulu"), +inserttime_day_long : new Array("Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai"), +inserttime_day_short : new Array("Su", "Ma", "Ti", "Ke", "To", "Pe", "La") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/fr.js b/webcit/tiny_mce/plugins/insertdatetime/langs/fr.js new file mode 100644 index 000000000..81e5b7e0a --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/fr.js @@ -0,0 +1,12 @@ +// Traduit par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%Y-%m-%d', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'Insérer la date', +inserttime_desc : 'Insérer l\'heure', +inserttime_months_long : new Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"), +inserttime_months_short : new Array("Jan", "Fév", "Mar", "Avr", "Mai", "Jun", "Jul", "Aoû", "Sep", "Oct", "Nov", "Déc"), +inserttime_day_long : new Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"), +inserttime_day_short : new Array("Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/fr_ca.js b/webcit/tiny_mce/plugins/insertdatetime/langs/fr_ca.js new file mode 100644 index 000000000..72a076c34 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/fr_ca.js @@ -0,0 +1,10 @@ +// Canadian French lang variables by Virtuelcom + +tinyMCE.addToLang('',{ +insertdate_desc : 'Insérer la date', +inserttime_desc : 'Insérer l\'heure', +inserttime_months_long : new Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"), +inserttime_months_short : new Array("Jan", "Fev", "Mar", "Avr", "Mai", "Juin", "Juil", "Aout", "Sep", "Oct", "Nov", "Dec"), +inserttime_day_long : new Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"), +inserttime_day_short : new Array("Lun", "Mar", "Mer", "Jeu", "Thu", "Ven", "Sam", "Dim") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/he.js b/webcit/tiny_mce/plugins/insertdatetime/langs/he.js new file mode 100644 index 000000000..95663e604 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/he.js @@ -0,0 +1,12 @@ +// HE lang variables by Liron Newman, http://eesh.net + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%Y-%m-%d', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'äëðñ úàøéê', +inserttime_desc : 'äëðñ ùòä', +inserttime_months_long : new Array("éðåàø", "ôáøåàø", "îøõ", "àôøéì", "îàé", "éåðé", "éåìé", "àåëåñè", "ñôèîáø", "àå÷èåáø", "ðåáîáø", "ãöîáø"), +inserttime_months_short : new Array("éðå", "ôáø", "îøõ", "àôø", "îàé", "éåð", "éåì", "àåâ", "ñôè", "àå÷", "ðåá", "ãöî"), +inserttime_day_long : new Array("éåí øàùåï", "éåí ùðé", "éåí ùìéùé", "éåí øáéòé", "éåí çîéùé", "éåí ùéùé", "éåí ùáú", "éåí øàùåï"), +inserttime_day_short : new Array("à'", "á'", "â'", "ã'", "ä'", "å'", "ù'", "à'") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/hu.js b/webcit/tiny_mce/plugins/insertdatetime/langs/hu.js new file mode 100644 index 000000000..52c909fd9 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/hu.js @@ -0,0 +1,12 @@ +// HU lang variables + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%Y-%m-%d', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'Dátum beszúrása', +inserttime_desc : 'Idõ beszúrása', +inserttime_months_long : new Array("Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"), +inserttime_months_short : new Array("Jan", "Feb", "Már", "Ápr", "Máj", "Jún", "Júl", "Aug", "Sze", "Okt", "Nov", "Dec"), +inserttime_day_long : new Array("Vasárnap", "Hétfõ", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat", "Vasárnap"), +inserttime_day_short : new Array("Vas", "Hé", "Ke", "Sze", "Csü", "Pén", "Szo", "Vas") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/is.js b/webcit/tiny_mce/plugins/insertdatetime/langs/is.js new file mode 100644 index 000000000..c54397632 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/is.js @@ -0,0 +1,12 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%d. %m. %Y', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'Setja inn dagsetningu', +inserttime_desc : 'Setja inn tíma', +inserttime_months_long : new Array("Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"), +inserttime_months_short : new Array("Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Ágú", "Sep", "Okt", "Nóv", "Des"), +inserttime_day_long : new Array("Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur", "Sunnudagur"), +inserttime_day_short : new Array("Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau", "Sun") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/it.js b/webcit/tiny_mce/plugins/insertdatetime/langs/it.js new file mode 100644 index 000000000..365fc28d8 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/it.js @@ -0,0 +1,12 @@ +// IT lang variables + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%Y-%m-%d', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'Inserisci data', +inserttime_desc : 'Inserisci ora', +inserttime_months_long : new Array("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"), +inserttime_months_short : new Array("Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"), +inserttime_day_long : new Array("Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica"), +inserttime_day_short : new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/ko.js b/webcit/tiny_mce/plugins/insertdatetime/langs/ko.js new file mode 100644 index 000000000..007f08cc6 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/ko.js @@ -0,0 +1,12 @@ +// KO lang variables + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%Y-%m-%d', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : '³¯Â¥ ³Ö±â', +inserttime_desc : '½Ã°£ ³Ö±â', +inserttime_months_long : new Array("1¿ù", "2¿ù", "3¿ù", "4¿ù", "5¿ù", "6¿ù", "7¿ù", "8¿ù", "9¿ù", "10¿ù", "11¿ù", "12¿ù"), +inserttime_months_short : new Array("1¿ù", "2¿ù", "3¿ù", "4¿ù", "5¿ù", "6¿ù", "7¿ù", "8¿ù", "9¿ù", "10¿ù", "11¿ù", "12¿ù"), +inserttime_day_long : new Array("ÀÏ¿äÀÏ", "¿ù¿äÀÏ", "È­¿äÀÏ", "¼ö¿äÀÏ", "¸ñ¿äÀÏ", "±Ý¿äÀÏ", "Åä¿äÀÏ", "ÀÏ¿äÀÏ"), +inserttime_day_short : new Array("ÀÏ", "¿ù", "È­", "¼ö", "¸ñ", "±Ý", "Åä", "ÀÏ") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/nb.js b/webcit/tiny_mce/plugins/insertdatetime/langs/nb.js new file mode 100644 index 000000000..b52c4f9a4 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/nb.js @@ -0,0 +1,12 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%Y-%m-%d', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'Lim inn dato', +inserttime_desc : 'Lim inn tid', +inserttime_months_long : new Array("Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"), +inserttime_months_short : new Array("Jan","Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"), +inserttime_day_long : new Array("Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"), +inserttime_day_short : new Array("Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/nl.js b/webcit/tiny_mce/plugins/insertdatetime/langs/nl.js new file mode 100644 index 000000000..375ae4b1f --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/nl.js @@ -0,0 +1,12 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%d-%m-%Y', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'Datum invoegen', +inserttime_desc : 'Tijd invoegen', +inserttime_months_long : new Array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"), +inserttime_months_short : new Array("jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "oct", "nov", "dec"), +inserttime_day_long : new Array("zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag", "zondag"), +inserttime_day_short : new Array("zo", "ma", "di", "wo", "do", "vr", "za", "zo") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/nn.js b/webcit/tiny_mce/plugins/insertdatetime/langs/nn.js new file mode 100644 index 000000000..244e335da --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/nn.js @@ -0,0 +1,12 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%Y-%m-%d', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'Lim inn dato', +inserttime_desc : 'Lim inn tid', +inserttime_months_long : new Array("Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"), +inserttime_months_short : new Array("Jan","Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"), +inserttime_day_long : new Array("Sundag", "Mandag", "Tysdag", "Onsdag", "Torsdag", "Fredag", "Laurdag", "Sundag"), +inserttime_day_short : new Array("Sun", "Man", "Tys", "Ons", "Tor", "Fre", "Laur", "Sun") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/pl.js b/webcit/tiny_mce/plugins/insertdatetime/langs/pl.js new file mode 100644 index 000000000..160002a6e --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/pl.js @@ -0,0 +1,15 @@ +// PL lang variables +// fixed by Wooya +// http://www.mfusion.prv.pl +// fixed by lemiel 14.11.2005 + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%Y-%m-%d', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'Wstaw aktualn± datê', +inserttime_desc : 'Wstaw aktualny czas', +inserttime_months_long : new Array("Styczeñ", "Luty", "Marzec", "Kwiecieñ", "Maj", "Czerwiec", "Lipiec", "Sierpieñ", "Wrzesieñ", "Pa¼dziernik", "Listopad", "Grudzieñ"), +inserttime_months_short : new Array("Sty", "Lut", "Mar", "Kwi", "Maj", "Czer", "Lip", "Sier", "Wrze", "Pa¼", "List", "Grudz"), +inserttime_day_long : new Array("Niedziela", "Poniedzia³ek", "Wtorek", "¦roda", "Czwartek", "Pi±tek", "Sobota", "Niedziela"), +inserttime_day_short : new Array("Nie", "Pon", "Wto", "¦ro", "Czw", "Pi±", "Sob", "Nie") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/pt_br.js b/webcit/tiny_mce/plugins/insertdatetime/langs/pt_br.js new file mode 100644 index 000000000..27fb439b0 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/pt_br.js @@ -0,0 +1,20 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : ???? + * Revision and modifications: + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%d/%m/%y', +inserttime_def_fmt : '%H:%M:%S hs', +insertdate_desc : 'Inserir data', +inserttime_desc : 'Inserir hora', +inserttime_months_long : new Array("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"), +inserttime_months_short : new Array("Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"), +inserttime_day_long : new Array("Domingo", "Segunda-Feira", "Terça-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "Sábado", "Domingo"), +inserttime_day_short : new Array("Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab", "Dom") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/ru.js b/webcit/tiny_mce/plugins/insertdatetime/langs/ru.js new file mode 100644 index 000000000..cfebf25dd --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/ru.js @@ -0,0 +1,12 @@ +// RU lang variables cp1251 + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%d %m %Y', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'Âñòàâèòü äàòó', +inserttime_desc : 'Âñòàâèòü âðåìÿ', +inserttime_months_long : new Array("ÿíâàðÿ", "ôåâðàëÿ", "ìàðòà", "àïðåëÿ", "ìàÿ", "èþíÿ", "èþëÿ", "àâãóñòà", "ñåíòÿáðÿ", "îêòÿáðÿ", "íîÿáðÿ", "äåêàáðÿ"), +inserttime_months_short : new Array("ÿíâ", "ôåâ", "ìàðò", "àïð", "ìàé", "èþíü", "èþëü", "àâã", "ñåíò", "îêò", "íáð", "äåê"), +inserttime_day_long : new Array("âîñêðåñåíüå", "ïîíåäåëüíèê", "âòîðíèê", "ñðåäà", "÷åòâåðã", "ïÿòíèöà", "ñóááîòà", "âîñêðåñåíüå"), +inserttime_day_short : new Array("âñê", "ïí", "âò", "ñð", "÷òâ", "ïòí", "ñá", "âñê") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/insertdatetime/langs/ru_KOI8-R.js new file mode 100644 index 000000000..0bce11978 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/ru_KOI8-R.js @@ -0,0 +1,12 @@ +// RU lang variables KOI8-R + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%d %m %Y', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : '÷ÓÔÁ×ÉÔØ ÄÁÔÕ', +inserttime_desc : '÷ÓÔÁ×ÉÔØ ×ÒÅÍÑ', +inserttime_months_long : new Array("ÑÎ×ÁÒÑ", "ÆÅ×ÒÁÌÑ", "ÍÁÒÔÁ", "ÁÐÒÅÌÑ", "ÍÁÑ", "ÉÀÎÑ", "ÉÀÌÑ", "Á×ÇÕÓÔÁ", "ÓÅÎÔÑÂÒÑ", "ÏËÔÑÂÒÑ", "ÎÏÑÂÒÑ", "ÄÅËÁÂÒÑ"), +inserttime_months_short : new Array("ÑÎ×", "ÆÅ×", "ÍÁÒÔ", "ÁÐÒ", "ÍÁÊ", "ÉÀÎØ", "ÉÀÌØ", "Á×Ç", "ÓÅÎÔ", "ÏËÔ", "ÎÂÒ", "ÄÅË"), +inserttime_day_long : new Array("×ÏÓËÒÅÓÅÎØÅ", "ÐÏÎÅÄÅÌØÎÉË", "×ÔÏÒÎÉË", "ÓÒÅÄÁ", "ÞÅÔ×ÅÒÇ", "ÐÑÔÎÉÃÁ", "ÓÕÂÂÏÔÁ", "×ÏÓËÒÅÓÅÎØÅ"), +inserttime_day_short : new Array("×ÓË", "ÐÎ", "×Ô", "ÓÒ", "ÞÔ×", "ÐÔÎ", "ÓÂ", "×ÓË") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/insertdatetime/langs/ru_UTF-8.js new file mode 100644 index 000000000..bbf4596c1 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/ru_UTF-8.js @@ -0,0 +1,12 @@ +// RU lang variables UTF-8 + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%d %m %Y', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'Вставить дату', +inserttime_desc : 'Вставить время', +inserttime_months_long : new Array("января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"), +inserttime_months_short : new Array("янв", "фев", "март", "апр", "май", "июнь", "июль", "авг", "сент", "окт", "нбр", "дек"), +inserttime_day_long : new Array("воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота", "воскресенье"), +inserttime_day_short : new Array("вск", "пн", "вт", "ср", "чтв", "птн", "сб", "вск") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/sk.js b/webcit/tiny_mce/plugins/insertdatetime/langs/sk.js new file mode 100644 index 000000000..6060b5502 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/sk.js @@ -0,0 +1,20 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%Y-%m-%d', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'VložiÅ¥ dátum', +inserttime_desc : 'VložiÅ¥ čas', +inserttime_months_long : new Array('Január','Február','Marec','Apríl','Máj','Jún','Júl','August','September','Október','November','December'), +inserttime_months_short : new Array('Jan','Feb','Mar','Apr','Máj','Jún','Júl','Aug','Sep','Okt','Nov','Dec'), +inserttime_day_long : new Array('Nedeľa','Pondelok','Utorok','Streda','Å tvrtok','Piatok','Sobota','Nedeľa'), +inserttime_day_short : new Array('Ne','Po','Ut','St','Å t','Pi','So','Ne') +}); + diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/sv.js b/webcit/tiny_mce/plugins/insertdatetime/langs/sv.js new file mode 100644 index 000000000..39f0e8fa7 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/sv.js @@ -0,0 +1,12 @@ +// SE lang variables + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%Y-%m-%d', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : 'Klistra in datum', +inserttime_desc : 'Klistra in tid', +inserttime_months_long : new Array("Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"), +inserttime_months_short : new Array("Jan","Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"), +inserttime_day_long : new Array("Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag", "Söndag"), +inserttime_day_short : new Array("Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör", "Sön") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/zh_cn.js b/webcit/tiny_mce/plugins/insertdatetime/langs/zh_cn.js new file mode 100644 index 000000000..ead7dd217 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/zh_cn.js @@ -0,0 +1,12 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%Y-%m-%d', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : '²åÈ뵱ǰÈÕÆÚ', +inserttime_desc : '²åÈ뵱ǰʱ¼ä', +inserttime_months_long : new Array("Ò»Ô·Ý", "¶þÔ·Ý", "ÈýÔ·Ý", "ËÄÔ·Ý", "ÎåÔ·Ý", "ÁùÔ·Ý", "ÆßÔ·Ý", "°ËÔ·Ý", "¾ÅÔ·Ý", "ʮԷÝ", "ʮһÔ·Ý", "Ê®¶þÔ·Ý"), +inserttime_months_short : new Array("Ò»ÔÂ", "¶þÔÂ", "ÈýÔÂ", "ËÄÔÂ", "ÎåÔÂ", "ÁùÔÂ", "ÆßÔÂ", "°ËÔÂ", "¾ÅÔÂ", "Ê®ÔÂ", "ʮһÔÂ", "Ê®¶þÔÂ"), +inserttime_day_long : new Array("ÐÇÆÚÈÕ", "ÐÇÆÚÒ»", "ÐÇÆÚ¶þ", "ÐÇÆÚÈý", "ÐÇÆÚËÄ", "ÐÇÆÚÎå", "ÐÇÆÚÁù", "ÐÇÆÚÈÕ"), +inserttime_day_short : new Array("ÐÇÆÚÈÕ", "ÐÇÆÚÒ»", "ÐÇÆÚ¶þ", "ÐÇÆÚÈý", "ÐÇÆÚËÄ", "ÐÇÆÚÎå", "ÐÇÆÚÁù", "ÐÇÆÚÈÕ") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/zh_tw.js b/webcit/tiny_mce/plugins/insertdatetime/langs/zh_tw.js new file mode 100644 index 000000000..f9cd497a8 --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/zh_tw.js @@ -0,0 +1,13 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%Y-%m-%d', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : '´¡¤J¤é´Á', +inserttime_desc : '´¡¤J®É¶¡', +inserttime_months_long : new Array("¤@¤ë", "¤G¤ë", "¤T¤ë", "¥|¤ë", "¤­¤ë", "¤»¤ë", "¤C¤ë", "¤K¤ë", "¤E¤ë", "¤Q¤ë", "¤Q¤@¤ë", "¤Q¤G¤ë"), +inserttime_months_short : new Array("¤@", "¤G", "¤T", "¥|", "¤­", "¤»", "¤C", "¤K", "¤E", "¤Q", "¤Q¤@", "¤Q¤G"), +inserttime_day_long : new Array("¬P´Á¤é", "¬P´Á¤@", "¬P´Á¤G", "¬P´Á¤T", "¬P´Á¥|", "¬P´Á¤­", "¬P´Á¤»", "¬P´Á¤é"), +inserttime_day_short : new Array("¤é", "¤@", "¤G", "¤T", "¥|", "¤­", "¤»", "¤é") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/insertdatetime/langs/zh_tw_utf8.js new file mode 100644 index 000000000..df9af306e --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/langs/zh_tw_utf8.js @@ -0,0 +1,13 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +insertdate_def_fmt : '%Y/%m/%d', +inserttime_def_fmt : '%H:%M:%S', +insertdate_desc : '插入日期', +inserttime_desc : '插入時間', +inserttime_months_long : new Array("一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"), +inserttime_months_short : new Array("一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"), +inserttime_day_long : new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"), +inserttime_day_short : new Array("日", "一", "二", "三", "四", "五", "六", "日") +}); diff --git a/webcit/tiny_mce/plugins/insertdatetime/readme.txt b/webcit/tiny_mce/plugins/insertdatetime/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/insertdatetime/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/noneditable/css/noneditable.css b/webcit/tiny_mce/plugins/noneditable/css/noneditable.css new file mode 100644 index 000000000..c4dc455ea --- /dev/null +++ b/webcit/tiny_mce/plugins/noneditable/css/noneditable.css @@ -0,0 +1,17 @@ +/* This is the CSS file for the noneditable elements plugin */ + +.mceItemEditable { + /*border: 1px dotted #0000cc;*/ + -moz-user-focus: none; + -moz-user-input: auto; + -moz-user-modify: auto; + -moz-user-select: text; +} + +.mceItemNonEditable { + /*border: 1px dotted #cc0000;*/ + -moz-user-focus: ignore; + /*-moz-user-input: disabled;*/ + -moz-user-modify: read-only; + -moz-user-select: all; +} diff --git a/webcit/tiny_mce/plugins/noneditable/editor_plugin.js b/webcit/tiny_mce/plugins/noneditable/editor_plugin.js new file mode 100644 index 000000000..37beb47c1 --- /dev/null +++ b/webcit/tiny_mce/plugins/noneditable/editor_plugin.js @@ -0,0 +1 @@ +function TinyMCE_noneditable_getInfo(){return{longname:'Non editable elements',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_noneditable.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_noneditable_initInstance(inst){tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/noneditable/css/noneditable.css");if(tinyMCE.isMSIE5_0)tinyMCE.settings['plugins']=tinyMCE.settings['plugins'].replace(/noneditable/gi,'Noneditable');if(tinyMCE.isGecko){tinyMCE.addEvent(inst.getDoc(),"keyup",TinyMCE_noneditable_fixKeyUp);}}function TinyMCE_noneditable_fixKeyUp(e){var inst=tinyMCE.selectedInstance;var sel=inst.getSel();var rng=inst.getRng();var an=sel.anchorNode;if((e.keyCode==38||e.keyCode==37||e.keyCode==40||e.keyCode==39)&&(elm=TinyMCE_noneditable_isNonEditable(an))!=null){rng=inst.getDoc().createRange();rng.selectNode(elm);rng.collapse(true);sel.removeAllRanges();sel.addRange(rng);tinyMCE.cancelEvent(e);}}function TinyMCE_noneditable_selectAll(e){var inst=tinyMCE.selectedInstance;var sel=inst.getSel();var doc=inst.getDoc();if((elm=TinyMCE_noneditable_isNonEditable(sel.focusNode))!=null){inst.selectNode(elm,false);tinyMCE.cancelEvent(e);return;}if((elm=TinyMCE_noneditable_isNonEditable(sel.anchorNode))!=null){inst.selectNode(elm,false);tinyMCE.cancelEvent(e);return;}}function TinyMCE_noneditable_isNonEditable(elm){var editClass=tinyMCE.getParam("noneditable_editable_class","mceItemEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceItemNonEditable");if(!elm)return;do{var className=elm.className?elm.className:"";if(className.indexOf(editClass)!=-1)return null;if(className.indexOf(nonEditClass)!=-1)return elm;}while(elm=elm.parentNode);return null;}function TinyMCE_noneditable_cleanup(type,content,inst){switch(type){case "insert_to_editor_dom":var nodes=tinyMCE.getNodeTree(content,new Array(),1);var editClass=tinyMCE.getParam("noneditable_editable_class","mceItemEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceItemNonEditable");for(var i=0;i","gi"),'<$1class="$2$3$4" contenteditable="true"$5>');content=content.replace(new RegExp("<(.*?)class=\"(.*?)("+nonEditClass+")(.*?)\"(.*?)>","gi"),'<$1class="$2$3$4" contenteditable="false"$5>');}break;case "get_from_editor_dom":if(tinyMCE.getParam("noneditable_leave_contenteditable",false)){var nodes=tinyMCE.getNodeTree(content,new Array(),1);for(var i=0;i", "gi"), '<$1class="$2$3$4" contenteditable="true"$5>'); + content = content.replace(new RegExp("<(.*?)class=\"(.*?)(" + nonEditClass + ")(.*?)\"(.*?)>", "gi"), '<$1class="$2$3$4" contenteditable="false"$5>'); + } + + break; + + case "get_from_editor_dom": + if (tinyMCE.getParam("noneditable_leave_contenteditable", false)) { + var nodes = tinyMCE.getNodeTree(content, new Array(), 1); + + for (var i=0; i + + blank_page + + + + + + + + + diff --git a/webcit/tiny_mce/plugins/paste/css/blank.css b/webcit/tiny_mce/plugins/paste/css/blank.css new file mode 100644 index 000000000..eca411a42 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/css/blank.css @@ -0,0 +1,13 @@ +body { + background-color: #FFFFFF; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} diff --git a/webcit/tiny_mce/plugins/paste/css/pasteword.css b/webcit/tiny_mce/plugins/paste/css/pasteword.css new file mode 100644 index 000000000..b3be6270b --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/css/pasteword.css @@ -0,0 +1,3 @@ +.sourceIframe { + border: 1px solid #808080; +} diff --git a/webcit/tiny_mce/plugins/paste/editor_plugin.js b/webcit/tiny_mce/plugins/paste/editor_plugin.js new file mode 100644 index 000000000..ffc2f8dbb --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('paste','en,sv,cs,zh_cn,fr_ca,da,he,nb,de,hu,ru,ru_KOI8-R,ru_UTF-8,nn,fi,es,cy,is,pl,nl,fr,pt_br');function TinyMCE_paste_getInfo(){return{longname:'Paste text/word',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_paste.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_paste_initInstance(inst){if(tinyMCE.isMSIE&&tinyMCE.getParam("paste_auto_cleanup_on_paste",false))tinyMCE.addEvent(inst.getBody(),"paste",TinyMCE_paste_handleEvent);}function TinyMCE_paste_handleEvent(e){switch(e.type){case "paste":var html=TinyMCE_paste__clipboardHTML();tinyMCE.execCommand('delete');if(html&&html.length>0)tinyMCE.execCommand('mcePasteWord',false,html);tinyMCE.cancelEvent(e);return false;}return true;}function TinyMCE_paste_getControlHTML(control_name){switch(control_name){case "pastetext":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePasteText\', true);return false;';return '';case "pasteword":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePasteWord\', true);return false;';return '';case "selectall":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSelectAll\');return false;';return '';}return '';}function TinyMCE_paste_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mcePasteText":if(user_interface){if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&!tinyMCE.getParam('paste_use_dialog',false))TinyMCE_paste__insertText(clipboardData.getData("Text"),true);else{var template=new Array();template['file']='../../plugins/paste/pastetext.htm';template['width']=450;template['height']=400;var plain_text="";tinyMCE.openWindow(template,{editor_id:editor_id,plain_text:plain_text,resizable:"yes",scrollbars:"no",inline:"yes",mceDo:'insert'});}}else TinyMCE_paste__insertText(value['html'],value['linebreaks']);return true;case "mcePasteWord":if(user_interface){if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&!tinyMCE.getParam('paste_use_dialog',false)){var html=TinyMCE_paste__clipboardHTML();if(html&&html.length>0)TinyMCE_paste__insertWordContent(html);}else{var template=new Array();template['file']='../../plugins/paste/pasteword.htm';template['width']=450;template['height']=400;var plain_text="";tinyMCE.openWindow(template,{editor_id:editor_id,plain_text:plain_text,resizable:"yes",scrollbars:"no",inline:"yes",mceDo:'insert'});}}else TinyMCE_paste__insertWordContent(value);return true;case "mceSelectAll":tinyMCE.execInstanceCommand(editor_id,'selectall');return true;}return false;}function TinyMCE_paste__insertText(content,bLinebreaks){if(content&&content.length>0){if(bLinebreaks){if(tinyMCE.getParam("paste_create_paragraphs",true)){var rl=tinyMCE.getParam("paste_replace_list",'\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i

    ","gi");content=tinyMCE.regexpReplace(content,"\r\r","

    ","gi");content=tinyMCE.regexpReplace(content,"\n\n","

    ","gi");if((pos=content.indexOf('

    '))!=-1){tinyMCE.execCommand("Delete");var node=tinyMCE.selectedInstance.getFocusElement();var breakElms=new Array();do{if(node.nodeType==1){if(node.nodeName=="TD"||node.nodeName=="BODY")break;breakElms[breakElms.length]=node;}}while(node=node.parentNode);var before="",after="

    ";before+=content.substring(0,pos);for(var i=0;i";after+="<"+breakElms[(breakElms.length-1)-i].nodeName+">";}before+="

    ";content=before+content.substring(pos+7)+after;}}if(tinyMCE.getParam("paste_create_linebreaks",true)){content=tinyMCE.regexpReplace(content,"\r\n","
    ","gi");content=tinyMCE.regexpReplace(content,"\r","
    ","gi");content=tinyMCE.regexpReplace(content,"\n","
    ","gi");}}tinyMCE.execCommand("mceInsertRawHTML",false,content);}}function TinyMCE_paste__insertWordContent(content){if(content&&content.length>0){var bull=String.fromCharCode(8226);var middot=String.fromCharCode(183);var rl=tinyMCE.getParam("paste_replace_list",'\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i(.*?)<\/p>','gi'),'

    $1

    ');}content=content.replace(new RegExp('tab-stops: list [0-9]+.0pt">','gi'),'">'+"--list--");content=content.replace(new RegExp(bull+"(.*?)
    ","gi"),"

    "+middot+"$1

    ");content=content.replace(new RegExp('','gi'),""+bull);content=content.replace(/<\/o:p>/gi,"");content=content.replace(new RegExp('
    ]*>/gi,"");content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(/<\/?font[^>]*>/gi,"");switch(tinyMCE.getParam("paste_strip_class_attributes","all")){case "all":content=content.replace(/<(\w[^>]*)class=([^|>]*)([^>]*)/gi,"<$1$3");break;case "mso":content=content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)','gi'),"<$1$3");break;}content=content.replace(new RegExp('href="?'+TinyMCE_paste__reEscape(""+document.location)+'','gi'),'href="'+tinyMCE.settings['document_base_url']);content=content.replace(/<(\w[^>]*)lang=([^|>]*)([^>]*)/gi,"<$1$3");content=content.replace(/<\\?\?xml[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,"");content=content.replace(/--page break--\s*

     <\/p>/gi,"");content=content.replace(/--page break--/gi,"");if(!tinyMCE.settings['force_p_newlines']){content=content.replace('','','gi');content=content.replace('

    ','

    ','gi');}if(!tinyMCE.isMSIE&&!tinyMCE.settings['force_p_newlines']){content=content.replace(/<\/?p[^>]*>/gi,"");}content=content.replace(/<\/?div[^>]*>/gi,"");if(tinyMCE.getParam("paste_convert_middot_lists",true)){var div=document.createElement("div");div.innerHTML=content;var className=tinyMCE.getParam("paste_unindented_list_class","unIndentedList");while(TinyMCE_paste_convertMiddots(div,"--list--"));while(TinyMCE_paste_convertMiddots(div,middot,className));while(TinyMCE_paste_convertMiddots(div,bull));content=div.innerHTML;}if(tinyMCE.getParam("paste_convert_headers_to_strong",false)){content=content.replace(/ <\/h[1-6]>/gi,'

      

    ');content=content.replace(//gi,'

    ');content=content.replace(/<\/h[1-6]>/gi,'

    ');content=content.replace(/ <\/b>/gi,'  ');content=content.replace(/^( )*/gi,'');}content=content.replace(/--list--/gi,"");tinyMCE.execCommand("mceInsertContent",false,content);tinyMCE.execCommand("mceCleanup");}}function TinyMCE_paste__reEscape(s){var l="?.\\*[](){}+^$:";var o="";for(var i=0;i 0) + tinyMCE.execCommand('mcePasteWord', false, html); + + tinyMCE.cancelEvent(e); + return false; + } + + return true; +} + +function TinyMCE_paste_getControlHTML(control_name) { + switch (control_name) { + case "pastetext": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePasteText\', true);return false;'; + return ''; + + case "pasteword": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePasteWord\', true);return false;'; + return ''; + + case "selectall": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSelectAll\');return false;'; + return ''; + } + + return ''; +} + +function TinyMCE_paste_execCommand(editor_id, element, command, user_interface, value) { + switch (command) { + case "mcePasteText": + if (user_interface) { + if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && !tinyMCE.getParam('paste_use_dialog', false)) + TinyMCE_paste__insertText(clipboardData.getData("Text"), true); + else { + var template = new Array(); + template['file'] = '../../plugins/paste/pastetext.htm'; // Relative to theme + template['width'] = 450; + template['height'] = 400; + var plain_text = ""; + tinyMCE.openWindow(template, {editor_id : editor_id, plain_text: plain_text, resizable : "yes", scrollbars : "no", inline : "yes", mceDo : 'insert'}); + } + } else + TinyMCE_paste__insertText(value['html'], value['linebreaks']); + + return true; + + case "mcePasteWord": + if (user_interface) { + if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && !tinyMCE.getParam('paste_use_dialog', false)) { + var html = TinyMCE_paste__clipboardHTML(); + + if (html && html.length > 0) + TinyMCE_paste__insertWordContent(html); + } else { + var template = new Array(); + template['file'] = '../../plugins/paste/pasteword.htm'; // Relative to theme + template['width'] = 450; + template['height'] = 400; + var plain_text = ""; + tinyMCE.openWindow(template, {editor_id : editor_id, plain_text: plain_text, resizable : "yes", scrollbars : "no", inline : "yes", mceDo : 'insert'}); + } + } else + TinyMCE_paste__insertWordContent(value); + + return true; + + case "mceSelectAll": + tinyMCE.execInstanceCommand(editor_id, 'selectall'); + return true; + + } + + // Pass to next handler in chain + return false; +} + +function TinyMCE_paste__insertText(content, bLinebreaks) { + if (content && content.length > 0) { + if (bLinebreaks) { + // Special paragraph treatment + if (tinyMCE.getParam("paste_create_paragraphs", true)) { + var rl = tinyMCE.getParam("paste_replace_list", '\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(','); + for (var i=0; i

    ", "gi"); + content = tinyMCE.regexpReplace(content, "\r\r", "

    ", "gi"); + content = tinyMCE.regexpReplace(content, "\n\n", "

    ", "gi"); + + // Has paragraphs + if ((pos = content.indexOf('

    ')) != -1) { + tinyMCE.execCommand("Delete"); + + var node = tinyMCE.selectedInstance.getFocusElement(); + + // Get list of elements to break + var breakElms = new Array(); + + do { + if (node.nodeType == 1) { + // Don't break tables and break at body + if (node.nodeName == "TD" || node.nodeName == "BODY") + break; + + breakElms[breakElms.length] = node; + } + } while(node = node.parentNode); + + var before = "", after = "

    "; + before += content.substring(0, pos); + + for (var i=0; i"; + after += "<" + breakElms[(breakElms.length-1)-i].nodeName + ">"; + } + + before += "

    "; + content = before + content.substring(pos+7) + after; + } + } + + if (tinyMCE.getParam("paste_create_linebreaks", true)) { + content = tinyMCE.regexpReplace(content, "\r\n", "
    ", "gi"); + content = tinyMCE.regexpReplace(content, "\r", "
    ", "gi"); + content = tinyMCE.regexpReplace(content, "\n", "
    ", "gi"); + } + } + + tinyMCE.execCommand("mceInsertRawHTML", false, content); + } +} + +function TinyMCE_paste__insertWordContent(content) { + if (content && content.length > 0) { + // Cleanup Word content + var bull = String.fromCharCode(8226); + var middot = String.fromCharCode(183); + + var rl = tinyMCE.getParam("paste_replace_list", '\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(','); + for (var i=0; i(.*?)<\/p>', 'gi'), '

    $1

    '); + } + + content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">', 'gi'), '">' + "--list--"); + content = content.replace(new RegExp(bull + "(.*?)
    ", "gi"), "

    " + middot + "$1

    "); + content = content.replace(new RegExp('', 'gi'), "" + bull); // Covert to bull list + content = content.replace(/<\/o:p>/gi, ""); + content = content.replace(new RegExp('
    ]*>/gi, ""); + content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3"); + content = content.replace(/<\/?font[^>]*>/gi, ""); + + // Strips class attributes. + switch (tinyMCE.getParam("paste_strip_class_attributes", "all")) { + case "all": + content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3"); + break; + + case "mso": + content = content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)', 'gi'), "<$1$3"); + break; + } + + content = content.replace(new RegExp('href="?' + TinyMCE_paste__reEscape("" + document.location) + '', 'gi'), 'href="' + tinyMCE.settings['document_base_url']); + content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3"); + content = content.replace(/<\\?\?xml[^>]*>/gi, ""); + content = content.replace(/<\/?\w+:[^>]*>/gi, ""); + content = content.replace(/-- page break --\s*

     <\/p>/gi, ""); // Remove pagebreaks + content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks + +// content = content.replace(/\/? */gi, "");   +// content = content.replace(/

     <\/p>/gi, ''); + + if (!tinyMCE.settings['force_p_newlines']) { + content = content.replace('', '' ,'gi'); + content = content.replace('

    ', '

    ' ,'gi'); + } + + if (!tinyMCE.isMSIE && !tinyMCE.settings['force_p_newlines']) { + content = content.replace(/<\/?p[^>]*>/gi, ""); + } + + content = content.replace(/<\/?div[^>]*>/gi, ""); + + // Convert all middlot lists to UL lists + if (tinyMCE.getParam("paste_convert_middot_lists", true)) { + var div = document.createElement("div"); + div.innerHTML = content; + + // Convert all middot paragraphs to li elements + var className = tinyMCE.getParam("paste_unindented_list_class", "unIndentedList"); + + while (TinyMCE_paste_convertMiddots(div, "--list--")) ; // bull + while (TinyMCE_paste_convertMiddots(div, middot, className)) ; // Middot + while (TinyMCE_paste_convertMiddots(div, bull)) ; // bull + + content = div.innerHTML; + } + + // Replace all headers with strong and fix some other issues + if (tinyMCE.getParam("paste_convert_headers_to_strong", false)) { + content = content.replace(/ <\/h[1-6]>/gi, '

      

    '); + content = content.replace(//gi, '

    '); + content = content.replace(/<\/h[1-6]>/gi, '

    '); + content = content.replace(/ <\/b>/gi, '  '); + content = content.replace(/^( )*/gi, ''); + } + + content = content.replace(/--list--/gi, ""); // Remove --list-- + + // Insert cleaned content + tinyMCE.execCommand("mceInsertContent", false, content); + tinyMCE.execCommand("mceCleanup"); // Do normal cleanup + } +} + +function TinyMCE_paste__reEscape(s) { + var l = "?.\\*[](){}+^$:"; + var o = ""; + + for (var i=0; i0ondXNk%w1VH5xq0Mrx!1_B0_axV75Hbzor!NSXCdX{^Irr^|uM>8k3npWTE z_STXHS!s#*>!gx|Yo@ZsW>!X~or(6f8HSR!`Stns%~QLpkDHB#_S}MbXH&+{=9Zzh z?#yQR^0wxx1^@s6A^8LW0018VEC2ui02BZe000G};3tk`X`X1RuAgN^Z0kBrb7aot zpjKB$4aY6Okz`JhPDhA2R1%QD;%Mpx9h=D{J24ar3{>0WqA)oAG#Wz^+%kwxLXub< z?1lt;BzPh$atCz>8V3d!dm?>*9R(B<6dDo(2@MAWZAKl9j~5yS02%-jm?It;n*|UH x69x?u000uCBpwzJxT_PPyBcT!B@7V}4-dX-X}~EO7|jFE1FA&_VoEyR91$H zhF*o+yUXv_-t_+d{r~^~A^8LW000jFEC2ui02BZe000Df@X1N5y*TU5>o7+Heg`=$ zM>Vb`J5+6XI1YlG<>HNl6DSIVBbTDA90dXakZ|A{FcP9bO8^|GhK^#QC9Oj(LshaR z2ng_D!6;5z$V3ouMKH9x8G>#F1jS?n3^ffjGze^C6ft%K2nKhF0(nntVhjR`9h;n; H5)lA9u4PUG literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/paste/jscripts/pastetext.js b/webcit/tiny_mce/plugins/paste/jscripts/pastetext.js new file mode 100644 index 000000000..927745b17 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/jscripts/pastetext.js @@ -0,0 +1,34 @@ +function saveContent() { + if (document.forms[0].htmlSource.value == '') { + tinyMCEPopup.close(); + return false; + } + + tinyMCEPopup.execCommand('mcePasteText', false, { + html : document.forms[0].htmlSource.value, + linebreaks : document.forms[0].linebreaks.checked + }); + + tinyMCEPopup.close(); +} + +function onLoadInit() { + tinyMCEPopup.resizeToInnerSize(); + + resizeInputs(); +} + +var wHeight=0, wWidth=0, owHeight=0, owWidth=0; + +function resizeInputs() { + if (!tinyMCE.isMSIE) { + wHeight = self.innerHeight-80; + wWidth = self.innerWidth-17; + } else { + wHeight = document.body.clientHeight-80; + wWidth = document.body.clientWidth-17; + } + + document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px'; + document.forms[0].htmlSource.style.width = Math.abs(wWidth) + 'px'; +} diff --git a/webcit/tiny_mce/plugins/paste/jscripts/pasteword.js b/webcit/tiny_mce/plugins/paste/jscripts/pasteword.js new file mode 100644 index 000000000..c56ea81c7 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/jscripts/pasteword.js @@ -0,0 +1,46 @@ +function saveContent() { + var html = document.getElementById("frmData").contentWindow.document.body.innerHTML; + + if (html == ''){ + tinyMCEPopup.close(); + return false; + } + + tinyMCEPopup.execCommand('mcePasteWord', false, html); + tinyMCEPopup.close(); +} + +function onLoadInit() { + tinyMCEPopup.resizeToInnerSize(); + + // Fix for endless reloading in FF + window.setTimeout('createIFrame();', 10); +} + +function createIFrame() { + document.getElementById('iframecontainer').innerHTML = ''; +} + +var wHeight=0, wWidth=0, owHeight=0, owWidth=0; + +function initIframe(doc) { + var dir = tinyMCE.selectedInstance.settings['directionality']; + doc.body.dir = dir; + resizeInputs(); +} + +function resizeInputs() { + if (!tinyMCE.isMSIE) { + wHeight = self.innerHeight - 80; + wWidth = self.innerWidth - 18; + } else { + wHeight = document.body.clientHeight - 80; + wWidth = document.body.clientWidth - 18; + } + + var elm = document.getElementById('frmData'); + if (elm) { + elm.style.height = Math.abs(wHeight) + 'px'; + elm.style.width = Math.abs(wWidth) + 'px'; + } +} diff --git a/webcit/tiny_mce/plugins/paste/langs/cs.js b/webcit/tiny_mce/plugins/paste/langs/cs.js new file mode 100644 index 000000000..081aa6b60 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/cs.js @@ -0,0 +1,16 @@ +/** + * Czech lang variables + * encoding: utf-8 + * + * $Id: cs.js,v 1.4 2005/10/18 13:59:43 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +paste_text_desc : 'Vložit neformátovaný text', +paste_text_title : 'Použij CTRL + V na klávesnici pro vložení textu do okna.', +paste_text_linebreaks : 'Nechej přeruÅ¡ení řádků', +paste_word_desc : 'Vložit text z aplikace Word', +paste_word_title : 'Použij CTRL + V na klávesnici pro vložení textu do okna.', +selectall_desc : 'Označit vÅ¡e' +}); + diff --git a/webcit/tiny_mce/plugins/paste/langs/cy.js b/webcit/tiny_mce/plugins/paste/langs/cy.js new file mode 100644 index 000000000..a4f6f5241 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/cy.js @@ -0,0 +1,10 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +paste_text_desc : 'Gludo fel Testun Plaen', +paste_text_title : 'Defnyddia CTRL+V ar dy fysellfwrdd i ludo\'r testun i fewn i\'r ffenest.', +paste_text_linebreaks : 'Cadw toriadau llinell', +paste_word_desc : 'Gludo o Word', +paste_word_title : 'Defnyddia CTRL+V ar dy fysellfwrdd i ludo\'r testun i fewn i\'r ffenest.', +selectall_desc : 'Dewis Popeth' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/da.js b/webcit/tiny_mce/plugins/paste/langs/da.js new file mode 100644 index 000000000..54b5288a0 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/da.js @@ -0,0 +1,10 @@ +// DK lang variables contributed by Jan Moelgaard + +tinyMCE.addToLang('',{ +paste_text_desc : 'Indsæt som ren tekst', +paste_text_title : 'Brug CTRL+V på tastaturett indsætte teksten i vinduet.', +paste_text_linebreaks : 'Behold linjebrud', +paste_word_desc : 'Indsæt fra Word', +paste_word_title : 'Brug CTRL+V på tastaturett indsætte teksten i vinduet.', +selectall_desc : 'Vælg alt' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/de.js b/webcit/tiny_mce/plugins/paste/langs/de.js new file mode 100644 index 000000000..de3497913 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/de.js @@ -0,0 +1,10 @@ +// DE lang variables + +tinyMCE.addToLang('',{ +paste_text_desc : 'Als unformatierten Text einfügen', +paste_text_title : 'Benutzen Sie Strg+V/Apfel-V auf Ihrer Tastatur, um Text in das Fenster einzufügen.', +paste_text_linebreaks : 'Zeilenumbrüche beibehalten', +paste_word_desc : 'Microsoft Word-Text einfügen', +paste_word_title : 'Benutzen Sie Strg+V/Apfel-V auf Ihrer Tastatur, um Text in das Fenster einzufügen.', +selectall_desc : 'Alles auswählen' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/en.js b/webcit/tiny_mce/plugins/paste/langs/en.js new file mode 100644 index 000000000..b125d5119 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/en.js @@ -0,0 +1,10 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +paste_text_desc : 'Paste as Plain Text', +paste_text_title : 'Use CTRL+V on your keyboard to paste the text into the window.', +paste_text_linebreaks : 'Keep linebreaks', +paste_word_desc : 'Paste from Word', +paste_word_title : 'Use CTRL+V on your keyboard to paste the text into the window.', +selectall_desc : 'Select All' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/es.js b/webcit/tiny_mce/plugins/paste/langs/es.js new file mode 100644 index 000000000..2f5acf40b --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/es.js @@ -0,0 +1,12 @@ +// ES lang variables by Alvaro Velasco and Adolfo Sanz De Diego (asanzdiego) +// Last Updated : October 2005 +// TinyMCE Version : 2.0RC3 + +tinyMCE.addToLang('',{ +paste_text_desc : 'Pegar como texto plano', +paste_text_title : 'Use CTRL+V para pegar el texto en la ventana.', +paste_text_linebreaks : 'Mantener saltos de linea', +paste_word_desc : 'Pegar desde Word', +paste_word_title : 'Use CTRL+V para pegar el texto en la ventana.', +selectall_desc : 'Seleccionar todo' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/fi.js b/webcit/tiny_mce/plugins/paste/langs/fi.js new file mode 100644 index 000000000..49c373eca --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/fi.js @@ -0,0 +1,10 @@ +// FI lang variables by Tuomo Aura, Ateco.fi + +tinyMCE.addToLang('',{ +paste_text_desc : 'Liitä tavallisena tekstinä', +paste_text_title : 'Paina CTRL+V liittääksesi leikkaamasi/kopioimasi tekstin ikkunaan.', +paste_text_linebreaks : 'Säilytä rivinvaihdot', +paste_word_desc : 'Liitä Wordista', +paste_word_title : 'Paina CTRL+V liittääksesi leikkaamasi/kopioimasi tekstin ikkunaan.', +selectall_desc : 'Valitse kaikki' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/fr.js b/webcit/tiny_mce/plugins/paste/langs/fr.js new file mode 100644 index 000000000..3406ea657 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/fr.js @@ -0,0 +1,10 @@ +// Traduit par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('',{ +paste_text_desc : 'Coller comme du texte', +paste_text_title : 'Faites CTRL+V pour coller le texte dans la fenêtre.', +paste_text_linebreaks : 'Conserver les retours à la ligne', +paste_word_desc : 'Coller depuis Word', +paste_word_title : 'Faites CTRL+V pour coller le texte dans la fenêtre.', +selectall_desc : 'Sélectionner tout' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/fr_ca.js b/webcit/tiny_mce/plugins/paste/langs/fr_ca.js new file mode 100644 index 000000000..14d611d9e --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/fr_ca.js @@ -0,0 +1,10 @@ +// Canadian French lang variables by Virtuelcom last modification: 2005-06-15 + +tinyMCE.addToLang('',{ +paste_text_desc : 'Coller texte seulement', +paste_text_title : 'Utilisez CTRL+V sur votre clavier pour coller le texte dans la fenêtre.', +paste_text_linebreaks : 'Garder les sauts de ligne', +paste_word_desc : 'Coller à partir de Word', +paste_word_title : 'Utilisez CTRL+V sur votre clavier pour coller le texte dans la fenêtre.', +selectall_desc : 'Selectionner tout' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/he.js b/webcit/tiny_mce/plugins/paste/langs/he.js new file mode 100644 index 000000000..d660e43f2 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/he.js @@ -0,0 +1,10 @@ +// HE lang variables by Liron Newman, http://eesh.net + +tinyMCE.addToLang('',{ +paste_text_desc : 'äãá÷ ëè÷ñè øâéì', +paste_text_title : 'äùúîù á-CTRL+V ùòì äî÷ìãú ùìê ëãé ìäãáé÷ àú äè÷ñè ìçìåï.', +paste_text_linebreaks : 'ùîåø òì îòáøé ùåøä', +paste_word_desc : 'äãá÷ î-Word', +paste_word_title : 'äùúîù á-CTRL+V ùòì äî÷ìãú ùìê ëãé ìäãáé÷ àú äè÷ñè ìçìåï.', +selectall_desc : 'áçø äëì' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/hu.js b/webcit/tiny_mce/plugins/paste/langs/hu.js new file mode 100644 index 000000000..09d6f825d --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/hu.js @@ -0,0 +1,10 @@ +// HU lang variables + +tinyMCE.addToLang('',{ +paste_text_desc : 'Beillesztés sima szövegként', +paste_text_title : 'Használd a CTRL+V -t a billentyûzeten a szöveg beillesztéséhez az ablakba.', +paste_text_linebreaks : 'Keep linebreaks', +paste_word_desc : 'Beillesztés Word-bõl', +paste_word_title : 'Használd a CTRL+V -t a billentyûzeten a szöveg beillesztéséhez az ablakba.', +selectall_desc : 'Mindet kijelöl' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/is.js b/webcit/tiny_mce/plugins/paste/langs/is.js new file mode 100644 index 000000000..28c540399 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/is.js @@ -0,0 +1,10 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('',{ +paste_text_desc : 'Skeyta texta eingöngu', +paste_text_title : 'Notaðu CTRL+V á lyklaborðinu til að skeyta textanum í gluggann.', +paste_text_linebreaks : 'Halda línubilum', +paste_word_desc : 'Skeyta úr Word', +paste_word_title : 'Notaðu CTRL+V á lyklaborðinu til að skeyta textanum í gluggann.', +selectall_desc : 'Velja allt' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/nb.js b/webcit/tiny_mce/plugins/paste/langs/nb.js new file mode 100644 index 000000000..446aeae0f --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/nb.js @@ -0,0 +1,10 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +paste_text_desc : 'Lim inn som vanlig tekst', +paste_text_title : 'Bruk CTRL+V på tastaturet ditt for å lime inn i dette vinduet.', +paste_text_linebreaks : 'Spar linjebrudd', +paste_word_desc : 'Lim inn fra Office (Word)', +paste_word_title : 'Bruk CTRL+V på tastaturet ditt for å lime inn i dette vinduet.', +selectall_desc : 'Velg alt' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/nl.js b/webcit/tiny_mce/plugins/paste/langs/nl.js new file mode 100644 index 000000000..642e0122a --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/nl.js @@ -0,0 +1,10 @@ +// NL lang variables + +tinyMCE.addToLang('',{ +paste_text_desc : 'Plakken als platte tekst', +paste_text_title : 'Gebruik CTRL+V op uw toetsenbord om de tekst in het venster te plakken.', +paste_text_linebreaks : 'Behoud regeleinden', +paste_word_desc : 'Plakken uit Word', +paste_word_title : 'Gebruik CTRL+V op uw toetsenbord om de tekst in het venster te plakken.', +selectall_desc : 'Alles selecteren' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/nn.js b/webcit/tiny_mce/plugins/paste/langs/nn.js new file mode 100644 index 000000000..9084597ef --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/nn.js @@ -0,0 +1,10 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +paste_text_desc : 'Lim inn som vanleg tekst', +paste_text_title : 'Bruk CTRL+V på tastaturet ditt for å lime inn i dette vindauget.', +paste_text_linebreaks : 'Spar linjebrudd', +paste_word_desc : 'Lim inn frå Office (Word)', +paste_word_title : 'Bruk CTRL+V på tastaturet ditt for å lime inn i dette vindauget.', +selectall_desc : 'Velg alt' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/pl.js b/webcit/tiny_mce/plugins/paste/langs/pl.js new file mode 100644 index 000000000..65e0cda42 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/pl.js @@ -0,0 +1,12 @@ +// PL lang variables +// fixed by Wooya +// http://www.mfusion.prv.pl + +tinyMCE.addToLang('',{ +paste_text_desc : 'Wklej jako czysty tekst', +paste_text_title : 'U¿yj CTRL+V na klawiaturze, aby wkleiæ tekst do okna.', +paste_text_linebreaks : 'Zachowaj ³amanie linii', +paste_word_desc : 'Wklej z Worda', +paste_word_title : 'U¿yj CTRL+V na klawiaturze, aby wkleiæ tekst do okna.', +selectall_desc : 'Zaznacz wszystko' +}); \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/paste/langs/pt_br.js b/webcit/tiny_mce/plugins/paste/langs/pt_br.js new file mode 100644 index 000000000..bf777460d --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/pt_br.js @@ -0,0 +1,17 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('',{ +paste_text_desc : 'Colar um texto simples', +paste_text_title : 'Use CTRL+V no seu teclado para colar o texto dentro da janela.', +paste_text_linebreaks : 'Manter quebras de linha', +paste_word_desc : 'Colar do Word', +paste_word_title : 'Use CTRL+V no seu teclado para colar o texto dentro da janela.', +selectall_desc : 'Selecionar tudo' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/ru.js b/webcit/tiny_mce/plugins/paste/langs/ru.js new file mode 100644 index 000000000..c720cb66f --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/ru.js @@ -0,0 +1,10 @@ +// RU cp1251 lang variables + +tinyMCE.addToLang('',{ +paste_text_desc : 'Âñòàâèòü êàê ïðîñòîé òåêñò', +paste_text_title : 'Èñïîëüçóéòå CTRL+V äëÿ âñòàâêè òåêñòà â îêîøêî.', +paste_text_linebreaks : 'Ñîõðàíèòü ïåðåíîñû ñòðîê', +paste_word_desc : 'Âñòàâèòü èç Word', +paste_word_title : 'Èñïîëüçóéòå CTRL+V äëÿ âñòàâêè òåêñòà â îêîøêî.', +selectall_desc : 'Âûäåëèòü âñ¸' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/paste/langs/ru_KOI8-R.js new file mode 100644 index 000000000..be754855a --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/ru_KOI8-R.js @@ -0,0 +1,10 @@ +// RU KOI8-R lang variables + +tinyMCE.addToLang('',{ +paste_text_desc : '÷ÓÔÁ×ÉÔØ ËÁË ÐÒÏÓÔÏÊ ÔÅËÓÔ', +paste_text_title : 'éÓÐÏÌØÚÕÊÔÅ CTRL+V ÄÌÑ ×ÓÔÁ×ËÉ ÔÅËÓÔÁ × ÏËÏÛËÏ.', +paste_text_linebreaks : 'óÏÈÒÁÎÉÔØ ÐÅÒÅÎÏÓÙ ÓÔÒÏË', +paste_word_desc : '÷ÓÔÁ×ÉÔØ ÉÚ Word', +paste_word_title : 'éÓÐÏÌØÚÕÊÔÅ CTRL+V ÄÌÑ ×ÓÔÁ×ËÉ ÔÅËÓÔÁ × ÏËÏÛËÏ.', +selectall_desc : '÷ÙÄÅÌÉÔØ ×Ó£' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/paste/langs/ru_UTF-8.js new file mode 100644 index 000000000..c5dc2cfaf --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/ru_UTF-8.js @@ -0,0 +1,10 @@ +// RU UTF-8 lang variables + +tinyMCE.addToLang('',{ +paste_text_desc : 'Вставить как простой текст', +paste_text_title : 'Используйте CTRL+V для вставки текста в окошко.', +paste_text_linebreaks : 'Сохранить переносы строк', +paste_word_desc : 'Вставить из Word', +paste_word_title : 'Используйте CTRL+V для вставки текста в окошко.', +selectall_desc : 'Выделить всё' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/sk.js b/webcit/tiny_mce/plugins/paste/langs/sk.js new file mode 100644 index 000000000..a92ee19a0 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/sk.js @@ -0,0 +1,18 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +paste_text_desc : 'VložiÅ¥ neformatovaný text', +paste_text_title : 'Použi CTRL + V na klávesnici pre vloženie textu do okna.', +paste_text_linebreaks : 'Nechaj preruÅ¡enie riadkov', +paste_word_desc : 'VložiÅ¥ text s aplikáce Word', +paste_word_title : 'Použi CTRL + V na klávesnici pre vloženie textu do okna.', +selectall_desc : 'OznačiÅ¥ vÅ¡etko' +}); + diff --git a/webcit/tiny_mce/plugins/paste/langs/sv.js b/webcit/tiny_mce/plugins/paste/langs/sv.js new file mode 100644 index 000000000..c005c9435 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/sv.js @@ -0,0 +1,10 @@ +// SV lang variables + +tinyMCE.addToLang('',{ +paste_text_desc : 'Klistra in som vanlig text', +paste_text_title : 'Använd CTRL+V på ditt tangentbord för att klistra in i detta fönster.', +paste_text_linebreaks : 'Spara radbrytningar', +paste_word_desc : 'Klistra in från Word', +paste_word_title : 'Använd CTRL+V på ditt tangentbord för att klistra in i detta fönster.', +selectall_desc : 'Select All' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/zh_cn.js b/webcit/tiny_mce/plugins/paste/langs/zh_cn.js new file mode 100644 index 000000000..0c2bb0f12 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/zh_cn.js @@ -0,0 +1,10 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('',{ +paste_text_desc : '×÷Ϊ´¿Îı¾Õ³Ìù', +paste_text_title : 'ʹÓÿì½Ý¼ü CTRL+V ½«Îı¾±¾Õ³Ìùµ½ÒÔÏ´°¿ÚÖÐ', +paste_text_linebreaks : '±£Áô»»Ðзû', +paste_word_desc : '´ÓWordÕ³Ìù', +paste_word_title : 'ʹÓÿì½Ý¼ü CTRL+V ½«Îı¾Õ³Ìùµ½ÒÔÏ´°¿Ú', +selectall_desc : 'È«Ñ¡' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/zh_tw.js b/webcit/tiny_mce/plugins/paste/langs/zh_tw.js new file mode 100644 index 000000000..ecbcc7be1 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/zh_tw.js @@ -0,0 +1,11 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +paste_text_desc : '±Ä¯Â¤å¦r¼Ò¦¡¶K¤W', +paste_text_title : '¨Ï¥ÎÁä½L¤Wªº CTRL+V ²Õ¦XÁä±N¤å¦r¶K¤J§@·~°Ï¤¤', +paste_text_linebreaks : '«O¯d´«¦æ²Å¸¹', +paste_word_desc : '¦Û Word ¤ºÂà¶K', +paste_word_title : '¨Ï¥ÎÁä½L¤Wªº CTRL+V ²Õ¦XÁä±N¤å¦r¶K¤J§@·~°Ï¤¤', +selectall_desc : '¥þ¿ï' +}); diff --git a/webcit/tiny_mce/plugins/paste/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/paste/langs/zh_tw_utf8.js new file mode 100644 index 000000000..04b60d514 --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/langs/zh_tw_utf8.js @@ -0,0 +1,11 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +paste_text_desc : '採純文字模式貼上', +paste_text_title : '使用鍵盤上的 CTRL+V 組合鍵將文字貼入作業區中', +paste_text_linebreaks : '保留換行符號', +paste_word_desc : '自 Word 內轉貼', +paste_word_title : '使用鍵盤上的 CTRL+V 組合鍵將文字貼入作業區中', +selectall_desc : '全選' +}); diff --git a/webcit/tiny_mce/plugins/paste/pastetext.htm b/webcit/tiny_mce/plugins/paste/pastetext.htm new file mode 100644 index 000000000..63ff0007b --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/pastetext.htm @@ -0,0 +1,34 @@ + + + {$lang_paste_text_desc} + + + + + + +
    +
    {$lang_paste_text_desc}
    + +
    + +
    + +
    + +
    {$lang_paste_text_title}
    + + + +
    +
    + +
    + +
    + +
    +
    +
    + + \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/paste/pasteword.htm b/webcit/tiny_mce/plugins/paste/pasteword.htm new file mode 100644 index 000000000..7acc7f78f --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/pasteword.htm @@ -0,0 +1,29 @@ + + + + {$lang_paste_word_desc} + + + + + + +
    +
    {$lang_paste_word_desc}
    + +
    {$lang_paste_word_title}
    + +
    + +
    +
    + +
    + +
    + +
    +
    +
    + + diff --git a/webcit/tiny_mce/plugins/paste/readme.txt b/webcit/tiny_mce/plugins/paste/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/paste/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/preview/editor_plugin.js b/webcit/tiny_mce/plugins/preview/editor_plugin.js new file mode 100644 index 000000000..caa9945a9 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('preview','cs,de,el,en,fr_ca,it,ko,pt,sv,zh_cn,fa,fr,pl,pt_br,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,es,cy,is,zh_tw,zh_tw_utf8,sk');function TinyMCE_preview_getInfo(){return{longname:'Preview',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_preview.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_preview_getControlHTML(control_name){switch(control_name){case "preview":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePreview\');return false;';return '';}return "";}function TinyMCE_preview_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mcePreview":var previewPage=tinyMCE.getParam("plugin_preview_pageurl",null);var previewWidth=tinyMCE.getParam("plugin_preview_width","550");var previewHeight=tinyMCE.getParam("plugin_preview_height","600");if(previewPage){var template=new Array();template['file']=previewPage;template['width']=previewWidth;template['height']=previewHeight;tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"yes",inline:"yes",content:tinyMCE.getContent(),content_css:tinyMCE.getParam("content_css")});}else{var win=window.open("","mcePreview","menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width="+previewWidth+",height="+previewHeight);var html="";html+=tinyMCE.getParam('doctype');html+='';html+='';html+=''+tinyMCE.getLang('lang_preview_desc')+'';html+='';html+='';html+='';html+='';html+='';html+=tinyMCE.getContent();html+='';html+='';win.document.write(html);win.document.close();}return true;}return false;} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/preview/editor_plugin_src.js b/webcit/tiny_mce/plugins/preview/editor_plugin_src.js new file mode 100644 index 000000000..028b2f68a --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/editor_plugin_src.js @@ -0,0 +1,72 @@ +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('preview', 'cs,de,el,en,fr_ca,it,ko,pt,sv,zh_cn,fa,fr,pl,pt_br,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,es,cy,is,zh_tw,zh_tw_utf8,sk'); + +function TinyMCE_preview_getInfo() { + return { + longname : 'Preview', + author : 'Moxiecode Systems', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_preview.html', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; +}; + +/** + * Returns the HTML contents of the preview control. + */ +function TinyMCE_preview_getControlHTML(control_name) { + switch (control_name) { + case "preview": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePreview\');return false;'; + return ''; + } + + return ""; +} + +/** + * Executes the mcePreview command. + */ +function TinyMCE_preview_execCommand(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mcePreview": + var previewPage = tinyMCE.getParam("plugin_preview_pageurl", null); + var previewWidth = tinyMCE.getParam("plugin_preview_width", "550"); + var previewHeight = tinyMCE.getParam("plugin_preview_height", "600"); + + // Use a custom preview page + if (previewPage) { + var template = new Array(); + + template['file'] = previewPage; + template['width'] = previewWidth; + template['height'] = previewHeight; + + tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "yes", inline : "yes", content : tinyMCE.getContent(), content_css : tinyMCE.getParam("content_css")}); + } else { + var win = window.open("", "mcePreview", "menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width=" + previewWidth + ",height=" + previewHeight); + var html = ""; + + html += tinyMCE.getParam('doctype'); + html += ''; + html += ''; + html += '' + tinyMCE.getLang('lang_preview_desc') + ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += tinyMCE.getContent(); + html += ''; + html += ''; + + win.document.write(html); + win.document.close(); + } + + return true; + } + + return false; +} diff --git a/webcit/tiny_mce/plugins/preview/example.html b/webcit/tiny_mce/plugins/preview/example.html new file mode 100644 index 000000000..19ebead45 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/example.html @@ -0,0 +1,13 @@ + + + +Example of a custom preview page + + + + +Editor contents:
    +{$content} + + + diff --git a/webcit/tiny_mce/plugins/preview/images/preview.gif b/webcit/tiny_mce/plugins/preview/images/preview.gif new file mode 100644 index 0000000000000000000000000000000000000000..318936eaac98edd0d40334abcd2f7c1c10abaec9 GIT binary patch literal 286 zcmV+(0pb2fNk%w1VH5xq0MrctLNX#=n%>{t-ZHm6e~^^jl|5qG(t>VEt(9$;rn0=h z!9sF^Hceyu{Qa@O*@D`dO0sseucF4-?uW03pRULFzFJ~vZ(3SX#mU#gdO|Xil9ZX3 zZ+Cy;3tk`X`blmtgJ&}spvFxO)+pf z*Yu0)Jeq<*Oi>zw$YY{tU??18WAZRSAc+luBS5_%gFt}U=_CkVMPL9SG->9@i6RJS z282$nbL>vSb9vQ6%F(nbX9-_S>5dgx&$jBi8JKA7wKL7v# literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/preview/langs/cs.js b/webcit/tiny_mce/plugins/preview/langs/cs.js new file mode 100644 index 000000000..3cd7d4e8f --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/cs.js @@ -0,0 +1,11 @@ +/** + * Czech lang variables + * encoding: utf-8 + * + * $Id: cs.js,v 1.4 2005/10/18 13:59:43 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +preview_desc : 'Náhled' +}); + diff --git a/webcit/tiny_mce/plugins/preview/langs/cy.js b/webcit/tiny_mce/plugins/preview/langs/cy.js new file mode 100644 index 000000000..01d4201d5 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/cy.js @@ -0,0 +1,5 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +preview_desc : 'Rhagolwg' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/da.js b/webcit/tiny_mce/plugins/preview/langs/da.js new file mode 100644 index 000000000..07b7662a0 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/da.js @@ -0,0 +1,5 @@ +// DK lang variables contributed by Jan Moelgaard + +tinyMCE.addToLang('',{ +preview_desc : 'Se siden' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/de.js b/webcit/tiny_mce/plugins/preview/langs/de.js new file mode 100644 index 000000000..c8bc6b12b --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/de.js @@ -0,0 +1,5 @@ +// DE lang variables + +tinyMCE.addToLang('',{ +preview_desc : 'Vorschau' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/el.js b/webcit/tiny_mce/plugins/preview/langs/el.js new file mode 100644 index 000000000..6e5f8ae7e --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/el.js @@ -0,0 +1,5 @@ +// Greek lang variables by Jacaranda Bill + +tinyMCE.addToLang('',{ +preview_desc : 'Ðñïåðéóêüðçóç éóôïóåëßäáò' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/en.js b/webcit/tiny_mce/plugins/preview/langs/en.js new file mode 100644 index 000000000..b68b6751d --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/en.js @@ -0,0 +1,5 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +preview_desc : 'Preview' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/es.js b/webcit/tiny_mce/plugins/preview/langs/es.js new file mode 100644 index 000000000..a305521b4 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/es.js @@ -0,0 +1,7 @@ +// ES lang variables by Alvaro Velasco and Adolfo Sanz De Diego (asanzdiego) +// Last Updated : October 2005 +// TinyMCE Version : 2.0RC3 + +tinyMCE.addToLang('',{ +preview_desc : 'Vista previa' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/fa.js b/webcit/tiny_mce/plugins/preview/langs/fa.js new file mode 100644 index 000000000..d9a965810 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/fa.js @@ -0,0 +1,10 @@ +// IR lang variables +// Persian (Farsi) language pack (for IRAN) +// By: Morteza Zafari +// Lost@LostLord.com +// http://www.LostLord.com + +tinyMCE.addToLang('',{ +dir : 'rtl', +preview_desc : '??? ?????' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/fr.js b/webcit/tiny_mce/plugins/preview/langs/fr.js new file mode 100644 index 000000000..ac8675a94 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/fr.js @@ -0,0 +1,6 @@ +// French lang variables by Laurent Dran +// Modifié par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('',{ +preview_desc : 'Prévisualisation' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/fr_ca.js b/webcit/tiny_mce/plugins/preview/langs/fr_ca.js new file mode 100644 index 000000000..1f687d696 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/fr_ca.js @@ -0,0 +1,5 @@ +// Canadian French lang variables by Virtuelcom last modification: 2005-06-15 + +tinyMCE.addToLang('',{ +preview_desc : 'Prévisualisation' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/he.js b/webcit/tiny_mce/plugins/preview/langs/he.js new file mode 100644 index 000000000..6fd7262dc --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/he.js @@ -0,0 +1,5 @@ +// HE lang variables by Liron Newman, http://eesh.net + +tinyMCE.addToLang('',{ +preview_desc : 'úöåâä î÷ãéîä' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/hu.js b/webcit/tiny_mce/plugins/preview/langs/hu.js new file mode 100644 index 000000000..94e83b9c6 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/hu.js @@ -0,0 +1,5 @@ +// HU lang variables + +tinyMCE.addToLang('',{ +preview_desc : 'Elõnézet' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/is.js b/webcit/tiny_mce/plugins/preview/langs/is.js new file mode 100644 index 000000000..d20b485b2 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/is.js @@ -0,0 +1,5 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('',{ +preview_desc : 'Forskoða' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/it.js b/webcit/tiny_mce/plugins/preview/langs/it.js new file mode 100644 index 000000000..f63d43032 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/it.js @@ -0,0 +1,5 @@ +// IT lang variables + +tinyMCE.addToLang('',{ +preview_desc : 'Anteprima' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/ko.js b/webcit/tiny_mce/plugins/preview/langs/ko.js new file mode 100644 index 000000000..2759a082a --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/ko.js @@ -0,0 +1,5 @@ +// KO lang variables + +tinyMCE.addToLang('',{ +preview_desc : '¹Ì¸®º¸±â' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/nb.js b/webcit/tiny_mce/plugins/preview/langs/nb.js new file mode 100644 index 000000000..231f1ba30 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/nb.js @@ -0,0 +1,5 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +preview_desc : 'Forhåndsvisning' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/nl.js b/webcit/tiny_mce/plugins/preview/langs/nl.js new file mode 100644 index 000000000..ec66d32a1 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/nl.js @@ -0,0 +1,5 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +preview_desc : 'Voorbeeld' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/nn.js b/webcit/tiny_mce/plugins/preview/langs/nn.js new file mode 100644 index 000000000..e273a271a --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/nn.js @@ -0,0 +1,5 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +preview_desc : 'Forhåndsvisning' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/pl.js b/webcit/tiny_mce/plugins/preview/langs/pl.js new file mode 100644 index 000000000..2e3f90191 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/pl.js @@ -0,0 +1,7 @@ +// PL lang variables +// fixed by Wooya +// http://www.musion.prv.pl + +tinyMCE.addToLang('',{ +preview_desc : 'Podgl±d' +}); \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/preview/langs/pt.js b/webcit/tiny_mce/plugins/preview/langs/pt.js new file mode 100644 index 000000000..6256c4739 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/pt.js @@ -0,0 +1,5 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +preview_desc : 'Pré-visualização' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/pt_br.js b/webcit/tiny_mce/plugins/preview/langs/pt_br.js new file mode 100644 index 000000000..3cbf43047 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/pt_br.js @@ -0,0 +1,13 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : ???? + * Revision and modifications: + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('',{ +preview_desc : 'Visualizar' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/ru.js b/webcit/tiny_mce/plugins/preview/langs/ru.js new file mode 100644 index 000000000..994bb57be --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/ru.js @@ -0,0 +1,5 @@ +// RU lang variables cp1251 + +tinyMCE.addToLang('',{ +preview_desc : 'Ïðåäâàðèòåëüíûé ïðîñìîòð' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/preview/langs/ru_KOI8-R.js new file mode 100644 index 000000000..5de38b6aa --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/ru_KOI8-R.js @@ -0,0 +1,5 @@ +// RU lang variables KOI8-R + +tinyMCE.addToLang('',{ +preview_desc : 'ðÒÅÄ×ÁÒÉÔÅÌØÎÙÊ ÐÒÏÓÍÏÔÒ' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/preview/langs/ru_UTF-8.js new file mode 100644 index 000000000..dda8c81db --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/ru_UTF-8.js @@ -0,0 +1,5 @@ +// RU lang variables UTF-8 + +tinyMCE.addToLang('',{ +preview_desc : 'Предварительный просмотр' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/sk.js b/webcit/tiny_mce/plugins/preview/langs/sk.js new file mode 100644 index 000000000..7a1971f40 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/sk.js @@ -0,0 +1,13 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +preview_desc : 'Náhľad' +}); + diff --git a/webcit/tiny_mce/plugins/preview/langs/sv.js b/webcit/tiny_mce/plugins/preview/langs/sv.js new file mode 100644 index 000000000..cb2bbf87e --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/sv.js @@ -0,0 +1,5 @@ +// SE lang variables + +tinyMCE.addToLang('',{ +preview_desc : 'Förhandsgranska' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/zh_cn.js b/webcit/tiny_mce/plugins/preview/langs/zh_cn.js new file mode 100644 index 000000000..b5b6d0696 --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/zh_cn.js @@ -0,0 +1,5 @@ +// Simplified Chinese lang variables contributed by cube316 (cube316@etang.com) + +tinyMCE.addToLang('',{ +preview_desc : 'Ô¤ÀÀ' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/zh_tw.js b/webcit/tiny_mce/plugins/preview/langs/zh_tw.js new file mode 100644 index 000000000..f15e5515f --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/zh_tw.js @@ -0,0 +1,6 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +preview_desc : '¹wÄý' +}); diff --git a/webcit/tiny_mce/plugins/preview/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/preview/langs/zh_tw_utf8.js new file mode 100644 index 000000000..9d5e7378a --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/langs/zh_tw_utf8.js @@ -0,0 +1,6 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +preview_desc : '預覽' +}); diff --git a/webcit/tiny_mce/plugins/preview/readme.txt b/webcit/tiny_mce/plugins/preview/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/preview/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/print/editor_plugin.js b/webcit/tiny_mce/plugins/print/editor_plugin.js new file mode 100644 index 000000000..4f565e554 --- /dev/null +++ b/webcit/tiny_mce/plugins/print/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('print','en,sv,zh_cn,fa,fr_ca,fr,de,pl,pt_br,cs,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,fi,es,cy,is,zh_tw,zh_tw_utf8,sk');function TinyMCE_print_getInfo(){return{longname:'Print',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_print.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_print_getControlHTML(control_name){switch(control_name){case "print":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePrint\',true);return false;';return '';}return "";}function TinyMCE_print_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mcePrint":tinyMCE.getInstanceById(editor_id).contentWindow.print();return true;}return false;} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/print/editor_plugin_src.js b/webcit/tiny_mce/plugins/print/editor_plugin_src.js new file mode 100644 index 000000000..d2188cd37 --- /dev/null +++ b/webcit/tiny_mce/plugins/print/editor_plugin_src.js @@ -0,0 +1,37 @@ +/* Import theme specific language pack */ +tinyMCE.importPluginLanguagePack('print', 'en,sv,zh_cn,fa,fr_ca,fr,de,pl,pt_br,cs,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,fi,es,cy,is,zh_tw,zh_tw_utf8,sk'); + +function TinyMCE_print_getInfo() { + return { + longname : 'Print', + author : 'Moxiecode Systems', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_print.html', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; +}; + +function TinyMCE_print_getControlHTML(control_name) { + switch (control_name) { + case "print": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePrint\',true);return false;'; + return ''; + } + + return ""; +} + +/** + * Executes the search/replace commands. + */ +function TinyMCE_print_execCommand(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mcePrint": + tinyMCE.getInstanceById(editor_id).contentWindow.print(); + return true; + } + + // Pass to next handler in chain + return false; +} diff --git a/webcit/tiny_mce/plugins/print/images/print.gif b/webcit/tiny_mce/plugins/print/images/print.gif new file mode 100644 index 0000000000000000000000000000000000000000..72104d177b7fb10164fe2dcd5c11833af420ed0d GIT binary patch literal 211 zcmV;^04)DUNk%w1VH5xq0K*3W0-^$glB?9%;yO@jtF_9q{sK~CfBXCW68-|a#?oSO ziL%e~l%llZ>Gg7ing9R*A^8LW000jFEC2ui02BZe000Dl@X1N5y*TUrMEc;T3BqBT z4PgiwVSWT5C`y(zC#n*d;5M+t%)nq+5`;vqkun5Sl>{S3U<4crgF(S?7%GgM_|OPs zD* +// Last Updated : October 2005 +// TinyMCE Version : 2.0RC3 + +tinyMCE.addToLang('',{ +print_desc : 'Imprimir' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/fa.js b/webcit/tiny_mce/plugins/print/langs/fa.js new file mode 100644 index 000000000..81e6df015 --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/fa.js @@ -0,0 +1,10 @@ +// IR lang variables +// Persian (Farsi) language pack (for IRAN) +// By: Morteza Zafari +// Lost@LostLord.com +// http://www.LostLord.com + +tinyMCE.addToLang('',{ +dir : 'rtl', +print_desc : '???' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/fi.js b/webcit/tiny_mce/plugins/print/langs/fi.js new file mode 100644 index 000000000..e97d9abae --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/fi.js @@ -0,0 +1,5 @@ +// FI lang variables by Tuomo Aura, Ateco.fi + +tinyMCE.addToLang('',{ +print_desc : 'Tulosta' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/fr.js b/webcit/tiny_mce/plugins/print/langs/fr.js new file mode 100644 index 000000000..9979dc636 --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/fr.js @@ -0,0 +1,5 @@ +// French lang variables by Laurent Dran + +tinyMCE.addToLang('',{ +print_desc : 'Imprimer' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/fr_ca.js b/webcit/tiny_mce/plugins/print/langs/fr_ca.js new file mode 100644 index 000000000..c98cc74ff --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/fr_ca.js @@ -0,0 +1,5 @@ +// Canadian French lang variables by Virtuelcom last modification: 2005-06-15 + +tinyMCE.addToLang('',{ +print_desc : 'Imprimer' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/he.js b/webcit/tiny_mce/plugins/print/langs/he.js new file mode 100644 index 000000000..de55f38f5 --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/he.js @@ -0,0 +1,5 @@ +// HE lang variables by Liron Newman, http://eesh.net + +tinyMCE.addToLang('',{ +print_desc : 'äãôñ' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/hu.js b/webcit/tiny_mce/plugins/print/langs/hu.js new file mode 100644 index 000000000..8e1ec6a29 --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/hu.js @@ -0,0 +1,5 @@ +// HU lang variables + +tinyMCE.addToLang('',{ +print_desc : 'Nyomtatás' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/is.js b/webcit/tiny_mce/plugins/print/langs/is.js new file mode 100644 index 000000000..df67cae81 --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/is.js @@ -0,0 +1,5 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('',{ +print_desc : 'Prenta' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/nb.js b/webcit/tiny_mce/plugins/print/langs/nb.js new file mode 100644 index 000000000..e2dba3bd8 --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/nb.js @@ -0,0 +1,5 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +print_desc : 'Skriv ut' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/nl.js b/webcit/tiny_mce/plugins/print/langs/nl.js new file mode 100644 index 000000000..7b120259b --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/nl.js @@ -0,0 +1,5 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +print_desc : 'Afdrukken' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/nn.js b/webcit/tiny_mce/plugins/print/langs/nn.js new file mode 100644 index 000000000..4e2fdec2e --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/nn.js @@ -0,0 +1,5 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +print_desc : 'Skriv ut' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/pl.js b/webcit/tiny_mce/plugins/print/langs/pl.js new file mode 100644 index 000000000..d13f09ce5 --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/pl.js @@ -0,0 +1,5 @@ +// PL lang variables + +tinyMCE.addToLang('',{ +print_desc : 'Drukuj' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/pt_br.js b/webcit/tiny_mce/plugins/print/langs/pt_br.js new file mode 100644 index 000000000..28052e411 --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/pt_br.js @@ -0,0 +1,13 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : ???? + * Revision and modifications: + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('',{ +print_desc : 'Imprimir' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/ru.js b/webcit/tiny_mce/plugins/print/langs/ru.js new file mode 100644 index 000000000..edc826b74 --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/ru.js @@ -0,0 +1,5 @@ +// RU lang variables cp1251 + +tinyMCE.addToLang('',{ +print_desc : 'Ðàñïå÷àòàòü' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/print/langs/ru_KOI8-R.js new file mode 100644 index 000000000..038375ccc --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/ru_KOI8-R.js @@ -0,0 +1,5 @@ +// RU lang variables KOI8-R + +tinyMCE.addToLang('',{ +print_desc : 'òÁÓÐÅÞÁÔÁÔØ' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/print/langs/ru_UTF-8.js new file mode 100644 index 000000000..a7185f8bc --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/ru_UTF-8.js @@ -0,0 +1,5 @@ +// RU lang variables UTF-8 + +tinyMCE.addToLang('',{ +print_desc : 'Распечатать' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/sk.js b/webcit/tiny_mce/plugins/print/langs/sk.js new file mode 100644 index 000000000..995476327 --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/sk.js @@ -0,0 +1,13 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +print_desc : 'Tlač' +}); + diff --git a/webcit/tiny_mce/plugins/print/langs/sv.js b/webcit/tiny_mce/plugins/print/langs/sv.js new file mode 100644 index 000000000..34484379e --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/sv.js @@ -0,0 +1,5 @@ +// SE lang variables + +tinyMCE.addToLang('',{ +print_desc : 'Skriv ut' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/zh_cn.js b/webcit/tiny_mce/plugins/print/langs/zh_cn.js new file mode 100644 index 000000000..957512c88 --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/zh_cn.js @@ -0,0 +1,6 @@ +// Simplified Chinese lang variables contributed by cube316 (cube316@gmail.com) +//Çë·ÃÎÊ http://www.cube316.net/ ÒÔ»ñÈ¡TinyMCEµÄÖÐÎÄÖ§³Ö + +tinyMCE.addToLang('',{ +print_desc : '´òÓ¡' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/zh_tw.js b/webcit/tiny_mce/plugins/print/langs/zh_tw.js new file mode 100644 index 000000000..6dc26a60d --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/zh_tw.js @@ -0,0 +1,6 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +print_desc : '¦C¦L' +}); diff --git a/webcit/tiny_mce/plugins/print/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/print/langs/zh_tw_utf8.js new file mode 100644 index 000000000..c0615a738 --- /dev/null +++ b/webcit/tiny_mce/plugins/print/langs/zh_tw_utf8.js @@ -0,0 +1,6 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +print_desc : '列印' +}); diff --git a/webcit/tiny_mce/plugins/print/readme.txt b/webcit/tiny_mce/plugins/print/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/print/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/readme.txt b/webcit/tiny_mce/plugins/readme.txt new file mode 100644 index 000000000..b694fdb6b --- /dev/null +++ b/webcit/tiny_mce/plugins/readme.txt @@ -0,0 +1 @@ +This is the location you place TinyMCE plugins. diff --git a/webcit/tiny_mce/plugins/save/editor_plugin.js b/webcit/tiny_mce/plugins/save/editor_plugin.js new file mode 100644 index 000000000..61153794d --- /dev/null +++ b/webcit/tiny_mce/plugins/save/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('save','en,sv,zh_cn,cs,fa,fr_ca,fr,de,pl,pt_br,nl,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,fi,da,es,cy,is,zh_tw,zh_tw_utf8,sk');function TinyMCE_save_getInfo(){return{longname:'Save',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_save.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_save_getControlHTML(control_name){switch(control_name){case "save":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSave\');return false;';return '';}return "";}function TinyMCE_save_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceSave":var formObj=tinyMCE.selectedInstance.formElement.form;if(formObj){tinyMCE.triggerSave();for(var i=0;i'; + } + + return ""; +} + +/** + * Executes the save command. + */ +function TinyMCE_save_execCommand(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mceSave": + var formObj = tinyMCE.selectedInstance.formElement.form; + + if (formObj) { + tinyMCE.triggerSave(); + + // Disable all UI form elements that TinyMCE created + for (var i=0; iy!E|{0<7#0>aHWEL6BndDU8;y+&e4jmm66%_}QC6xvn4h#bW3={_x jpoxPV4gmok9t#w=ts@#{Ko1AM7r_@1E5*jg#vuSZ^a*OP literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/save/langs/cs.js b/webcit/tiny_mce/plugins/save/langs/cs.js new file mode 100644 index 000000000..0f7d2b587 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/cs.js @@ -0,0 +1,11 @@ +/** + * Czech lang variables + * encoding: utf-8 + * + * $Id: cs.js,v 1.4 2005/10/18 13:59:43 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +save_desc : 'Uložit' +}); + diff --git a/webcit/tiny_mce/plugins/save/langs/cy.js b/webcit/tiny_mce/plugins/save/langs/cy.js new file mode 100644 index 000000000..9bb3cdcce --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/cy.js @@ -0,0 +1,5 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +save_desc : 'Cadw' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/da.js b/webcit/tiny_mce/plugins/save/langs/da.js new file mode 100644 index 000000000..a0bad1f74 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/da.js @@ -0,0 +1,5 @@ +// DK lang variables contributed by Jan Moelgaard + +tinyMCE.addToLang('',{ +save_desc : 'Gem' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/de.js b/webcit/tiny_mce/plugins/save/langs/de.js new file mode 100644 index 000000000..b10979755 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/de.js @@ -0,0 +1,5 @@ +// DE lang variables + +tinyMCE.addToLang('',{ +save_desc : 'Speichern' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/en.js b/webcit/tiny_mce/plugins/save/langs/en.js new file mode 100644 index 000000000..2c56b4b88 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/en.js @@ -0,0 +1,5 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +save_desc : 'Save' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/es.js b/webcit/tiny_mce/plugins/save/langs/es.js new file mode 100644 index 000000000..42d76af04 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/es.js @@ -0,0 +1,7 @@ +// ES lang variables by Alvaro Velasco and Adolfo Sanz De Diego (asanzdiego) +// Last Updated : October 2005 +// TinyMCE Version : 2.0RC3 + +tinyMCE.addToLang('',{ +save_desc : 'Salvar' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/fa.js b/webcit/tiny_mce/plugins/save/langs/fa.js new file mode 100644 index 000000000..e99e4362a --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/fa.js @@ -0,0 +1,11 @@ +// IR lang variables +// Persian (Farsi) language pack (for IRAN) +// By: Morteza Zafari +// Lost@LostLord.com +// http://www.LostLord.com + +tinyMCE.addToLang('',{ +dir : 'rtl', +save_desc : '???' +}); + \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/save/langs/fi.js b/webcit/tiny_mce/plugins/save/langs/fi.js new file mode 100644 index 000000000..fbffbe3ef --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/fi.js @@ -0,0 +1,5 @@ +// FI lang variables by Tuomo Aura, Ateco.fi + +tinyMCE.addToLang('',{ +save_desc : 'Tallenna' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/fr.js b/webcit/tiny_mce/plugins/save/langs/fr.js new file mode 100644 index 000000000..20433454f --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/fr.js @@ -0,0 +1,6 @@ +// French lang variables by Laurent Dran +// Modifié par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('',{ +save_desc : 'Enregistrer' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/fr_ca.js b/webcit/tiny_mce/plugins/save/langs/fr_ca.js new file mode 100644 index 000000000..4d6e912a9 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/fr_ca.js @@ -0,0 +1,6 @@ +// Canadian French lang variables by Virtuelcom last modification: 2005-06-15 + +tinyMCE.addToLang('',{ +save_desc : 'Enregistrer' +}); +, \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/save/langs/he.js b/webcit/tiny_mce/plugins/save/langs/he.js new file mode 100644 index 000000000..fb08bb8f9 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/he.js @@ -0,0 +1,5 @@ +// HE lang variables by Liron Newman, http://eesh.net + +tinyMCE.addToLang('',{ +save_desc : 'ùîåø' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/hu.js b/webcit/tiny_mce/plugins/save/langs/hu.js new file mode 100644 index 000000000..54b152a6e --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/hu.js @@ -0,0 +1,5 @@ +// HU lang variables + +tinyMCE.addToLang('',{ +save_desc : 'Mentés' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/is.js b/webcit/tiny_mce/plugins/save/langs/is.js new file mode 100644 index 000000000..21ae8ce27 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/is.js @@ -0,0 +1,5 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('',{ +save_desc : 'Vista' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/nb.js b/webcit/tiny_mce/plugins/save/langs/nb.js new file mode 100644 index 000000000..c599d94a3 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/nb.js @@ -0,0 +1,5 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('save',{ +desc : 'Lagre' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/nl.js b/webcit/tiny_mce/plugins/save/langs/nl.js new file mode 100644 index 000000000..7368988f4 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/nl.js @@ -0,0 +1,5 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +save_desc : 'Opslaan' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/nn.js b/webcit/tiny_mce/plugins/save/langs/nn.js new file mode 100644 index 000000000..b6bc7ecf5 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/nn.js @@ -0,0 +1,5 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('save',{ +desc : 'Lagre' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/pl.js b/webcit/tiny_mce/plugins/save/langs/pl.js new file mode 100644 index 000000000..96c1a7fc4 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/pl.js @@ -0,0 +1,5 @@ +// PL lang variables + +tinyMCE.addToLang('',{ +save_desc : 'Zachowaj' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/pt_br.js b/webcit/tiny_mce/plugins/save/langs/pt_br.js new file mode 100644 index 000000000..c96f55805 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/pt_br.js @@ -0,0 +1,13 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : ???? + * Revision and modifications: + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('',{ +save_desc : 'Salvar' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/ru.js b/webcit/tiny_mce/plugins/save/langs/ru.js new file mode 100644 index 000000000..c3f2c97cf --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/ru.js @@ -0,0 +1,5 @@ +// RU lang variables cp1251 + +tinyMCE.addToLang('',{ +save_desc : 'Ñîõðàíèòü' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/save/langs/ru_KOI8-R.js new file mode 100644 index 000000000..fbd0459b3 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/ru_KOI8-R.js @@ -0,0 +1,5 @@ +// RU lang variables KOI8-R + +tinyMCE.addToLang('',{ +save_desc : 'óÏÈÒÁÎÉÔØ' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/save/langs/ru_UTF-8.js new file mode 100644 index 000000000..67600d714 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/ru_UTF-8.js @@ -0,0 +1,5 @@ +// RU lang variables UTF-8 + +tinyMCE.addToLang('',{ +save_desc : 'Сохранить' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/sk.js b/webcit/tiny_mce/plugins/save/langs/sk.js new file mode 100644 index 000000000..7218863a4 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/sk.js @@ -0,0 +1,13 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +save_desc : 'UložiÅ¥' +}); + diff --git a/webcit/tiny_mce/plugins/save/langs/sv.js b/webcit/tiny_mce/plugins/save/langs/sv.js new file mode 100644 index 000000000..3ddfb1f79 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/sv.js @@ -0,0 +1,5 @@ +// SV lang variables + +tinyMCE.addToLang('save',{ +desc : 'Spara' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/zh_cn.js b/webcit/tiny_mce/plugins/save/langs/zh_cn.js new file mode 100644 index 000000000..e71cb85dd --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/zh_cn.js @@ -0,0 +1,7 @@ +// Simplified Chinese lang variables contributed by cube316 (cube316@gmail.com) +//Çë·ÃÎÊ http://www.cube316.net/ ÒÔ»ñÈ¡TinyMCEµÄÖÐÎÄÖ§³Ö + +tinyMCE.addToLang('',{ +save_desc : '±£´æ' +}); + \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/save/langs/zh_tw.js b/webcit/tiny_mce/plugins/save/langs/zh_tw.js new file mode 100644 index 000000000..e7d9594a2 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/zh_tw.js @@ -0,0 +1,6 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +save_desc : '¦sÀÉ' +}); diff --git a/webcit/tiny_mce/plugins/save/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/save/langs/zh_tw_utf8.js new file mode 100644 index 000000000..7a692a7c3 --- /dev/null +++ b/webcit/tiny_mce/plugins/save/langs/zh_tw_utf8.js @@ -0,0 +1,6 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +save_desc : '存檔' +}); diff --git a/webcit/tiny_mce/plugins/save/readme.txt b/webcit/tiny_mce/plugins/save/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/save/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/searchreplace/editor_plugin.js b/webcit/tiny_mce/plugins/searchreplace/editor_plugin.js new file mode 100644 index 000000000..94551162c --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('searchreplace','en,sv,zh_cn,fa,fr_ca,fr,de,pl,pt_br,cs,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,fi,cy,es,is,zh_tw,zh_tw_utf8,sk');function TinyMCE_searchreplace_getInfo(){return{longname:'Search/Replace',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_searchreplace.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_searchreplace_getControlHTML(control_name){switch(control_name){case "search":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSearch\',true);return false;';return '';case "replace":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSearchReplace\',true);return false;';return '';}return "";}function TinyMCE_searchreplace_execCommand(editor_id,element,command,user_interface,value){function defValue(key,default_value){value[key]=typeof(value[key])=="undefined"?default_value:value[key];}function replaceSel(search_str,str){if(!tinyMCE.isMSIE){var sel=instance.contentWindow.getSelection();var rng=sel.getRangeAt(0);}else{var rng=instance.contentWindow.document.selection.createRange();}if(!tinyMCE.isMSIE){var doc=instance.contentWindow.document;if(str.indexOf(search_str)==-1){rng.deleteContents();rng.insertNode(rng.createContextualFragment(str));rng.collapse(false);}else{doc.execCommand("insertimage",false,"#mce_temp_url#");var elm=tinyMCE.getElementByAttributeValue(doc.body,"img","src","#mce_temp_url#");elm.parentNode.replaceChild(doc.createTextNode(str),elm);}}else{if(rng.item)rng.item(0).outerHTML=str;else rng.pasteHTML(str);}}var instance=tinyMCE.getInstanceById(editor_id);if(!value)value=new Array();defValue("editor_id",editor_id);defValue("searchstring","");defValue("replacestring",null);defValue("replacemode","none");defValue("casesensitive",false);defValue("backwards",false);defValue("wrap",false);defValue("wholeword",false);defValue("inline","yes");switch(command){case "mceResetSearch":tinyMCE.lastSearchRng=null;return true;case "mceSearch":if(user_interface){var template=new Array();if(value['replacestring']!=null){template['file']='../../plugins/searchreplace/replace.htm';template['width']=320;template['height']=120+(tinyMCE.isNS7?20:0);template['width']+=tinyMCE.getLang('lang_searchreplace_replace_delta_width',0);template['height']+=tinyMCE.getLang('lang_searchreplace_replace_delta_height',0);}else{template['file']='../../plugins/searchreplace/search.htm';template['width']=310;template['height']=105+(tinyMCE.isNS7?25:0);template['width']+=tinyMCE.getLang('lang_searchreplace_search_delta_width',0);template['height']+=tinyMCE.getLang('lang_searchreplace_replace_delta_height',0);}tinyMCE.openWindow(template,value);}else{var win=tinyMCE.getInstanceById(editor_id).contentWindow;var doc=tinyMCE.getInstanceById(editor_id).contentWindow.document;var body=tinyMCE.getInstanceById(editor_id).contentWindow.document.body;if(body.innerHTML==""){alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true;}if(value['replacemode']=="current"){replaceSel(value['string'],value['replacestring']);value['replacemode']="none";tinyMCE.execInstanceCommand(editor_id,'mceSearch',user_interface,value,false);return true;}if(tinyMCE.isMSIE){var rng=tinyMCE.lastSearchRng?tinyMCE.lastSearchRng:doc.selection.createRange();var flags=0;if(value['wholeword'])flags=flags|2;if(value['casesensitive'])flags=flags|4;if(!rng.findText){alert('This operation is currently not supported by this browser.');return true;}if(value['replacemode']=="all"){while(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select();rng.collapse(false);replaceSel(value['string'],value['replacestring']);}alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));return true;}if(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select();rng.collapse(value['backwards']);tinyMCE.lastSearchRng=rng;}else alert(tinyMCE.getLang('lang_searchreplace_notfound'));}else{if(value['replacemode']=="all"){while(win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))replaceSel(value['string'],value['replacestring']);alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));return true;}if(!win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))alert(tinyMCE.getLang('lang_searchreplace_notfound'));}}return true;case "mceSearchReplace":value['replacestring']="";tinyMCE.execInstanceCommand(editor_id,'mceSearch',user_interface,value,false);return true;}return false;}function TinyMCE_searchreplace_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){return true;} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/searchreplace/editor_plugin_src.js b/webcit/tiny_mce/plugins/searchreplace/editor_plugin_src.js new file mode 100644 index 000000000..7a7dde7a8 --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/editor_plugin_src.js @@ -0,0 +1,195 @@ +/* Import theme specific language pack */ +tinyMCE.importPluginLanguagePack('searchreplace', 'en,sv,zh_cn,fa,fr_ca,fr,de,pl,pt_br,cs,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,fi,cy,es,is,zh_tw,zh_tw_utf8,sk'); + +function TinyMCE_searchreplace_getInfo() { + return { + longname : 'Search/Replace', + author : 'Moxiecode Systems', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_searchreplace.html', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; +}; + +function TinyMCE_searchreplace_getControlHTML(control_name) { + switch (control_name) { + case "search": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSearch\',true);return false;'; + return ''; + + case "replace": + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSearchReplace\',true);return false;'; + return ''; + } + + return ""; +} + +/** + * Executes the search/replace commands. + */ +function TinyMCE_searchreplace_execCommand(editor_id, element, command, user_interface, value) { + function defValue(key, default_value) { + value[key] = typeof(value[key]) == "undefined" ? default_value : value[key]; + } + + function replaceSel(search_str, str) { + // Get current selection + if (!tinyMCE.isMSIE) { + var sel = instance.contentWindow.getSelection(); + var rng = sel.getRangeAt(0); + } else { + var rng = instance.contentWindow.document.selection.createRange(); + } + + // Replace current one + if (!tinyMCE.isMSIE) { + var doc = instance.contentWindow.document; + + // This way works when the replace doesn't contain the search string + if (str.indexOf(search_str) == -1) { + rng.deleteContents(); + rng.insertNode(rng.createContextualFragment(str)); + rng.collapse(false); + } else { + // Insert content ugly way! Needed to move selection to after replace item + doc.execCommand("insertimage", false, "#mce_temp_url#"); + var elm = tinyMCE.getElementByAttributeValue(doc.body, "img", "src", "#mce_temp_url#"); + elm.parentNode.replaceChild(doc.createTextNode(str), elm); + } + } else { + if (rng.item) + rng.item(0).outerHTML = str; + else + rng.pasteHTML(str); + } + } + + var instance = tinyMCE.getInstanceById(editor_id); + + if (!value) + value = new Array(); + + // Setup defualt values + defValue("editor_id", editor_id); + defValue("searchstring", ""); + defValue("replacestring", null); + defValue("replacemode", "none"); + defValue("casesensitive", false); + defValue("backwards", false); + defValue("wrap", false); + defValue("wholeword", false); + defValue("inline", "yes"); + + // Handle commands + switch (command) { + case "mceResetSearch": + tinyMCE.lastSearchRng = null; + return true; + + case "mceSearch": + if (user_interface) { + // Open search dialog + var template = new Array(); + + if (value['replacestring'] != null) { + template['file'] = '../../plugins/searchreplace/replace.htm'; // Relative to theme + template['width'] = 320; + template['height'] = 120 + (tinyMCE.isNS7 ? 20 : 0); + template['width'] += tinyMCE.getLang('lang_searchreplace_replace_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_searchreplace_replace_delta_height', 0); + } else { + template['file'] = '../../plugins/searchreplace/search.htm'; // Relative to theme + template['width'] = 310; + template['height'] = 105 + (tinyMCE.isNS7 ? 25 : 0); + template['width'] += tinyMCE.getLang('lang_searchreplace_search_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_searchreplace_replace_delta_height', 0); + } + + tinyMCE.openWindow(template, value); + } else { + var win = tinyMCE.getInstanceById(editor_id).contentWindow; + var doc = tinyMCE.getInstanceById(editor_id).contentWindow.document; + var body = tinyMCE.getInstanceById(editor_id).contentWindow.document.body; + + // Whats the point + if (body.innerHTML == "") { + alert(tinyMCE.getLang('lang_searchreplace_notfound')); + return true; + } + + // Handle replace current + if (value['replacemode'] == "current") { + replaceSel(value['string'], value['replacestring']); + + // Search next one + value['replacemode'] = "none"; + tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value, false); + + return true; + } + + if (tinyMCE.isMSIE) { + var rng = tinyMCE.lastSearchRng ? tinyMCE.lastSearchRng : doc.selection.createRange(); + var flags = 0; + + if (value['wholeword']) + flags = flags | 2; + + if (value['casesensitive']) + flags = flags | 4; + + if (!rng.findText) { + alert('This operation is currently not supported by this browser.'); + return true; + } + + // Handle replace all mode + if (value['replacemode'] == "all") { + while (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) { + rng.scrollIntoView(); + rng.select(); + rng.collapse(false); + replaceSel(value['string'], value['replacestring']); + } + + alert(tinyMCE.getLang('lang_searchreplace_allreplaced')); + return true; + } + + if (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) { + rng.scrollIntoView(); + rng.select(); + rng.collapse(value['backwards']); + tinyMCE.lastSearchRng = rng; + } else + alert(tinyMCE.getLang('lang_searchreplace_notfound')); + } else { + if (value['replacemode'] == "all") { + while (win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false)) + replaceSel(value['string'], value['replacestring']); + + alert(tinyMCE.getLang('lang_searchreplace_allreplaced')); + return true; + } + + if (!win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false)) + alert(tinyMCE.getLang('lang_searchreplace_notfound')); + } + } + return true; + + case "mceSearchReplace": + value['replacestring'] = ""; + + tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value, false); + return true; + } + + // Pass to next handler in chain + return false; +} + +function TinyMCE_searchreplace_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + return true; +} diff --git a/webcit/tiny_mce/plugins/searchreplace/images/replace.gif b/webcit/tiny_mce/plugins/searchreplace/images/replace.gif new file mode 100644 index 0000000000000000000000000000000000000000..784c73e2a9bb6cf369146a5ea6b1300262376eed GIT binary patch literal 125 zcmZ?wbhEHb6k!ly*u=`<>+5Tf@nG4qWeF2LOxW<@_Kk}SV4(Pug^_`QjX?**1F23Thj{dMSt5;y`fuDmH}Uz$g$9N~Xo|, + * Carlos C Soto (eclipxe) + * Last Updated : October 17, 2005 + * TinyMCE Version : 2.0RC3 + */ + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Buscar', +searchreplace_searchnext_desc : 'Buscar de nuevo', +searchreplace_replace_desc : 'Buscar/Replazar', +searchreplace_notfound : 'La búsqueda ha terminado. No se ha encontrado el elemento buscado.', +searchreplace_search_title : 'Buscar', +searchreplace_replace_title : 'Buscar/Replazar', +searchreplace_allreplaced : 'Todas las ocurrencias del elemento buscado han sido remplazadas.', +searchreplace_findwhat : 'Buscar', +searchreplace_replacewith : 'Replazar con', +searchreplace_direction : 'Dirección', +searchreplace_up : 'Arriba', +searchreplace_down : 'Abajo', +searchreplace_case : 'Búsqueda exacta (mayúsculas y minúsculas)', +searchreplace_findnext : 'Buscar siguiente', +searchreplace_replace : 'Replazar', +searchreplace_replaceall : 'Replazar todo', +searchreplace_cancel : 'Cancelar', +searchreplace_replace_delta_width : 70 +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/fa.js b/webcit/tiny_mce/plugins/searchreplace/langs/fa.js new file mode 100644 index 000000000..4aa5cc852 --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/fa.js @@ -0,0 +1,26 @@ +// IR lang variables +// Persian (Farsi) language pack (for IRAN) +// By: Morteza Zafari +// Lost@LostLord.com +// http://www.LostLord.com + +tinyMCE.addToLang('',{ +dir : 'rtl', +searchreplace_search_desc : '?????', +searchreplace_searchnext_desc : '?????? ????', +searchreplace_replace_desc : '?????/????????', +searchreplace_notfound : '????? ????? ????. ??? ????? ???? ???.', +searchreplace_search_title : '?????', +searchreplace_replace_title : '?????/????????', +searchreplace_allreplaced : '??? ????? ??????? ?????.', +searchreplace_findwhat : '????? ?? ?????', +searchreplace_replacewith : '???????? ??', +searchreplace_direction : '??? ?????', +searchreplace_up : '?? ??? ????', +searchreplace_down : '?? ??? ?????', +searchreplace_case : '????? ???? ???? ? ????', +searchreplace_findnext : '????-????', +searchreplace_replace : '???????-??', +searchreplace_replaceall : '????????-???', +searchreplace_cancel : '??????' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/fi.js b/webcit/tiny_mce/plugins/searchreplace/langs/fi.js new file mode 100644 index 000000000..2462e3e3b --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/fi.js @@ -0,0 +1,21 @@ +// FI lang variables by Tuomo Aura, Ateco.fi + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Etsi', +searchreplace_searchnext_desc : 'Etsi uudelleen', +searchreplace_replace_desc : 'Etsi/Korvaa', +searchreplace_notfound : 'Haku on päättynyt. Haettua merkkijonoa ei löytynyt.', +searchreplace_search_title : 'Etsi', +searchreplace_replace_title : 'Etsi/Korvaa', +searchreplace_allreplaced : 'Kaikki esiintyneet hakutermit korvattiin.', +searchreplace_findwhat : 'Etsittävä', +searchreplace_replacewith : 'Korvaava', +searchreplace_direction : 'Suunta', +searchreplace_up : 'Ylös', +searchreplace_down : 'Alas', +searchreplace_case : 'Sama kirjainkoko', +searchreplace_findnext : 'Etsi seuraava', +searchreplace_replace : 'Korvaa', +searchreplace_replaceall : 'Korvaa kaikki', +searchreplace_cancel : 'Peruuta' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/fr.js b/webcit/tiny_mce/plugins/searchreplace/langs/fr.js new file mode 100644 index 000000000..2aa3d110e --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/fr.js @@ -0,0 +1,22 @@ +// Franch lang variables by Laurent Dran +// Modifié par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Rehercher', +searchreplace_searchnext_desc : 'Rehercher suivant', +searchreplace_replace_desc : 'Rechercher/Remplacer', +searchreplace_notfound : 'Recherche complétée. La fin du document a été atteinte.', +searchreplace_search_title : 'Rechercher', +searchreplace_replace_title : 'Rechercher/Remplacer', +searchreplace_allreplaced : 'Action terminée avec succès. Les remplacements\nont été faits dans l\'ensemble du document.', +searchreplace_findwhat : 'Trouver le mot', +searchreplace_replacewith : 'Remplacer avec', +searchreplace_direction : 'Direction', +searchreplace_up : 'Vers le haut', +searchreplace_down : 'Vers le bas', +searchreplace_case : 'Respecter la casse', +searchreplace_findnext : 'Suivant', +searchreplace_replace : 'Remplacer', +searchreplace_replaceall : 'Remplacer tout', +searchreplace_cancel : 'Annuler' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/fr_ca.js b/webcit/tiny_mce/plugins/searchreplace/langs/fr_ca.js new file mode 100644 index 000000000..09485ca09 --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/fr_ca.js @@ -0,0 +1,21 @@ +// Canadian French lang variables by Virtuelcom last modification: 2005-06-15 + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Chercher', +searchreplace_searchnext_desc : 'Chercher suivant', +searchreplace_replace_desc : 'Chercher/Remplacer', +searchreplace_notfound : 'La recherche est terminée. Aucune occurence trouvée.', +searchreplace_search_title : 'Chercher', +searchreplace_replace_title : 'Chercher/Remplacer', +searchreplace_allreplaced : 'Toutes les occurences ont été remplacées.', +searchreplace_findwhat : 'Chercher quoi', +searchreplace_replacewith : 'Remplacer par', +searchreplace_direction : 'Direction', +searchreplace_up : 'Monter', +searchreplace_down : 'Descendre', +searchreplace_case : 'Sensible à la case', +searchreplace_findnext : 'Chercher ,suivant', +searchreplace_replace : 'Remplacer', +searchreplace_replaceall : 'Remplacer ,tous', +searchreplace_cancel : 'Annuler' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/he.js b/webcit/tiny_mce/plugins/searchreplace/langs/he.js new file mode 100644 index 000000000..fdac48d0e --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/he.js @@ -0,0 +1,21 @@ +// HE lang variables by Liron Newman, http://eesh.net + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'çôù', +searchreplace_searchnext_desc : 'çôù ùåá', +searchreplace_replace_desc : 'çôù/äçìó', +searchreplace_notfound : 'äçéôåù äåùìí. îçøåæú äçéôåù ìà ðîöàä.', +searchreplace_search_title : 'çôù', +searchreplace_replace_title : 'çôù/äçìó', +searchreplace_allreplaced : 'îçøåæú äçéôåù äåçìôä áëì î÷åí áå äéà ðîöàä.', +searchreplace_findwhat : 'îä ìçôù', +searchreplace_replacewith : 'ìäçìéó á-', +searchreplace_direction : 'ëéååï', +searchreplace_up : 'ìîòìä', +searchreplace_down : 'ìîèä', +searchreplace_case : 'äúàí âåãì àåúéåú', +searchreplace_findnext : 'îöà àú äáà', +searchreplace_replace : 'äçìó', +searchreplace_replaceall : 'äçìó äëì', +searchreplace_cancel : 'áèì' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/hu.js b/webcit/tiny_mce/plugins/searchreplace/langs/hu.js new file mode 100644 index 000000000..0b4690d7a --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/hu.js @@ -0,0 +1,21 @@ +// HU lang variables + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Keresés', +searchreplace_searchnext_desc : 'Újra keresés', +searchreplace_replace_desc : 'Keres/Cserél', +searchreplace_notfound : 'A keresés elkészült. A keresési szöveg nem található.', +searchreplace_search_title : 'Keres', +searchreplace_replace_title : 'Keres/Cserél', +searchreplace_allreplaced : 'A kereséséi szöveg minden elõfordulása cserélve lett.', +searchreplace_findwhat : 'Mit keres', +searchreplace_replacewith : 'Mire cserél', +searchreplace_direction : 'Hatókör', +searchreplace_up : 'Fel', +searchreplace_down : 'Le', +searchreplace_case : 'Teljes szó', +searchreplace_findnext : 'Következõt keres', +searchreplace_replace : 'Cserél', +searchreplace_replaceall : 'Mindent cserél', +searchreplace_cancel : 'Mégse' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/is.js b/webcit/tiny_mce/plugins/searchreplace/langs/is.js new file mode 100644 index 000000000..d7ab67241 --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/is.js @@ -0,0 +1,22 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Finna', +searchreplace_searchnext_desc : 'Finna aftur', +searchreplace_replace_desc : 'Finna/skipta', +searchreplace_notfound : 'Leit er lokið. Leitarorð fannst ekki.', +searchreplace_search_title : 'Finna', +searchreplace_replace_title : 'Finna/skipta', +searchreplace_allreplaced : 'Skipt var um öll tilvik.', +searchreplace_findwhat : 'Finna hvar', +searchreplace_replacewith : 'Skipta út fyrir ', +searchreplace_direction : 'Átt', +searchreplace_up : 'Upp', +searchreplace_down : 'Niður', +searchreplace_case : 'Passa há-/lágstafi', +searchreplace_findnext : 'Finna næst', +searchreplace_replace : 'Skipta', +searchreplace_replaceall : 'Skipta öllum', +searchreplace_cancel : 'Hætta við', +searchreplace_replace_delta_width : 30 +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/nb.js b/webcit/tiny_mce/plugins/searchreplace/langs/nb.js new file mode 100644 index 000000000..91109471d --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/nb.js @@ -0,0 +1,21 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Søk', +searchreplace_searchnext_desc : 'Søk igjen', +searchreplace_replace_desc : 'Søk/Erstatt', +searchreplace_notfound : 'Søkingen avsluttet. Fant ikke søkestrengen.', +searchreplace_search_title : 'Søk', +searchreplace_replace_title : 'Søk/Erstatt', +searchreplace_allreplaced : 'Alle treff på søkestrengen erstattes', +searchreplace_findwhat : 'Søk på', +searchreplace_replacewith : 'Erstatt med', +searchreplace_direction : 'Søkeretning', +searchreplace_up : 'Oppover', +searchreplace_down : 'Nedover', +searchreplace_case : 'Skill mellom store og små tegn', +searchreplace_findnext : 'Neste søk', +searchreplace_replace : 'Erstatt', +searchreplace_replaceall : 'Erstatt alle', +searchreplace_cancel : 'Avbryt' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/nl.js b/webcit/tiny_mce/plugins/searchreplace/langs/nl.js new file mode 100644 index 000000000..b3fe53760 --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/nl.js @@ -0,0 +1,21 @@ +// NL lang variables + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Zoeken', +searchreplace_searchnext_desc : 'Opnieuw zoeken', +searchreplace_replace_desc : 'Zoeken/Vervangen', +searchreplace_notfound : 'Het doorzoeken van document is voltooid. De gezochte tekst is niet gevonden.', +searchreplace_search_title : 'Zoeken', +searchreplace_replace_title : 'Zoeken/Vervangen', +searchreplace_allreplaced : 'Alle zoekargumenten werden vervangen.', +searchreplace_findwhat : 'Zoeken naar', +searchreplace_replacewith : 'Vervangen door', +searchreplace_direction : 'Richting', +searchreplace_up : 'Omhoog', +searchreplace_down : 'Omlaag', +searchreplace_case : 'Identieke hoofdletters/kleine letters', +searchreplace_findnext : 'Volgende zoeken', +searchreplace_replace : 'Vervangen', +searchreplace_replaceall : 'Alles vervangen', +searchreplace_cancel : 'Annuleren' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/nn.js b/webcit/tiny_mce/plugins/searchreplace/langs/nn.js new file mode 100644 index 000000000..626e940ac --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/nn.js @@ -0,0 +1,21 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Søk', +searchreplace_searchnext_desc : 'Søk igjen', +searchreplace_replace_desc : 'Søk/Erstatt', +searchreplace_notfound : 'Søkingen avsluttet. Fant ikkje søkestrengen.', +searchreplace_search_title : 'Søk', +searchreplace_replace_title : 'Søk/Erstatt', +searchreplace_allreplaced : 'Alle treff på søkestrengen erstattes', +searchreplace_findwhat : 'Søk på', +searchreplace_replacewith : 'Erstatt med', +searchreplace_direction : 'Søkeretning', +searchreplace_up : 'Oppover', +searchreplace_down : 'Nedover', +searchreplace_case : 'Skill mellom store og små tegn', +searchreplace_findnext : 'Neste søk', +searchreplace_replace : 'Erstatt', +searchreplace_replaceall : 'Erstatt alle', +searchreplace_cancel : 'Avbryt' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/pl.js b/webcit/tiny_mce/plugins/searchreplace/langs/pl.js new file mode 100644 index 000000000..5f4dae2ef --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/pl.js @@ -0,0 +1,23 @@ +// PL lang variables +// fixed by Wooya +// http://www.mfusion.prv.pl + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Znajd¼', +searchreplace_searchnext_desc : 'Znajd¼ ponownie', +searchreplace_replace_desc : 'Znajd¼/Zast±p', +searchreplace_notfound : 'Ukoñczono wyszukiwanie. Poszukiwana fraza nie zosta³a odnaleziona.', +searchreplace_search_title : 'Znajd¼', +searchreplace_replace_title : 'Znajd¼/Zast±p', +searchreplace_allreplaced : 'Wszystkie wyst±pienia poszukiwanej frazy zosta³y zast±pione. ', +searchreplace_findwhat : 'Znajd¼', +searchreplace_replacewith : 'Zast±p', +searchreplace_direction : 'Kierunek', +searchreplace_up : 'Do góry', +searchreplace_down : 'Do do³u', +searchreplace_case : 'Wielko¶æ liter', +searchreplace_findnext : 'Znajd¼ nastêpny', +searchreplace_replace : 'Zast±p', +searchreplace_replaceall : 'Zast±p wszystkie', +searchreplace_cancel : 'Wyjd¼' +}); \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/pt_br.js b/webcit/tiny_mce/plugins/searchreplace/langs/pt_br.js new file mode 100644 index 000000000..d30fd1cb2 --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/pt_br.js @@ -0,0 +1,29 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : ???? + * Revision and modifications: + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Procurar', +searchreplace_searchnext_desc : 'Procurar novamente', +searchreplace_replace_desc : 'Procurar/Substituir', +searchreplace_notfound : 'A procura foi concluída. A expressão procurada não foi encontrada.', +searchreplace_search_title : 'Procurar', +searchreplace_replace_title : 'Procurar/Substituir', +searchreplace_allreplaced : 'Todas as ocorrências encontradas foram substituídas.', +searchreplace_findwhat : 'Procurar por', +searchreplace_replacewith : 'Substituir com', +searchreplace_direction : 'Direção', +searchreplace_up : 'Acima', +searchreplace_down : 'Abaixo', +searchreplace_case : 'Procurar exatamente', +searchreplace_findnext : 'Procurar ,próxima', +searchreplace_replace : 'Substituir', +searchreplace_replaceall : 'Substituir ,tudo', +searchreplace_cancel : 'Cancelar' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/ru.js b/webcit/tiny_mce/plugins/searchreplace/langs/ru.js new file mode 100644 index 000000000..22fbd597e --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/ru.js @@ -0,0 +1,22 @@ +// RU cp1251 lang variables + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Íàéòè', +searchreplace_searchnext_desc : 'Íàéòè îïÿòü', +searchreplace_replace_desc : 'Íàéòè/Çàìåíèòü', +searchreplace_notfound : 'Ïîèñê çàâåðø¸í. Èñêîìîå âûðàæåíèå íå íàéäåíî.', +searchreplace_search_title : 'Íàéòè', +searchreplace_replace_title : 'Íàéòè/Çàìåíèòü', +searchreplace_allreplaced : 'Çàìåíà áûëà âûïîëíåíà âî âñåõ ñëó÷àÿõ ñîâïàäåíèÿ èñêîìîãî âûðàæåíèÿ.', +searchreplace_findwhat : 'Íàéòè ÷òî', +searchreplace_replacewith : 'Çàìåíèòü ÷åì', +searchreplace_direction : 'Íàïðàâëåíèå', +searchreplace_up : 'Ââåðõ', +searchreplace_down : 'Âíèç', +searchreplace_case : 'Ñ ó÷¸òîì ðåãèñòðà', +searchreplace_findnext : 'Íàéòè ñëåäóþùåå', +searchreplace_replace : 'Çàìåíèòü', +searchreplace_replaceall : 'Çàìåíèòü âåçäå', +searchreplace_cancel : 'Îòìåíèòü', +searchreplace_replace_delta_width : 150 +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/searchreplace/langs/ru_KOI8-R.js new file mode 100644 index 000000000..01b0ac361 --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/ru_KOI8-R.js @@ -0,0 +1,21 @@ +// RU KOI8-R lang variables + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'îÁÊÔÉ', +searchreplace_searchnext_desc : 'îÁÊÔÉ ÏÐÑÔØ', +searchreplace_replace_desc : 'îÁÊÔÉ/úÁÍÅÎÉÔØ', +searchreplace_notfound : 'ðÏÉÓË ÚÁ×ÅÒÛ£Î. éÓËÏÍÏÅ ×ÙÒÁÖÅÎÉÅ ÎÅ ÎÁÊÄÅÎÏ.', +searchreplace_search_title : 'îÁÊÔÉ', +searchreplace_replace_title : 'îÁÊÔÉ/úÁÍÅÎÉÔØ', +searchreplace_allreplaced : 'úÁÍÅÎÁ ÂÙÌÁ ×ÙÐÏÌÎÅÎÁ ×Ï ×ÓÅÈ ÓÌÕÞÁÑÈ ÓÏ×ÐÁÄÅÎÉÑ ÉÓËÏÍÏÇÏ ×ÙÒÁÖÅÎÉÑ.', +searchreplace_findwhat : 'îÁÊÔÉ ÞÔÏ', +searchreplace_replacewith : 'úÁÍÅÎÉÔØ ÞÅÍ', +searchreplace_direction : 'îÁÐÒÁ×ÌÅÎÉÅ', +searchreplace_up : '÷×ÅÒÈ', +searchreplace_down : '÷ÎÉÚ', +searchreplace_case : 'ó ÕÞ£ÔÏÍ ÒÅÇÉÓÔÒÁ', +searchreplace_findnext : 'îÁÊÔÉ ÓÌÅÄÕÀÝÅÅ', +searchreplace_replace : 'úÁÍÅÎÉÔØ', +searchreplace_replaceall : 'úÁÍÅÎÉÔØ ×ÅÚÄÅ', +searchreplace_cancel : 'ïÔÍÅÎÉÔØ' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/searchreplace/langs/ru_UTF-8.js new file mode 100644 index 000000000..cf78f42b0 --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/ru_UTF-8.js @@ -0,0 +1,21 @@ +// RU UTF-8 lang variables + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Найти', +searchreplace_searchnext_desc : 'Найти опять', +searchreplace_replace_desc : 'Найти/Заменить', +searchreplace_notfound : 'Поиск завершён. Искомое выражение не найдено.', +searchreplace_search_title : 'Найти', +searchreplace_replace_title : 'Найти/Заменить', +searchreplace_allreplaced : 'Замена была выполнена во всех случаях совпадения искомого выражения.', +searchreplace_findwhat : 'Найти что', +searchreplace_replacewith : 'Заменить чем', +searchreplace_direction : 'Направление', +searchreplace_up : 'Вверх', +searchreplace_down : 'Вниз', +searchreplace_case : 'С учётом регистра', +searchreplace_findnext : 'Найти ÑÐ»ÐµÐ´ÑƒÑŽÑ‰ÐµÐµ', +searchreplace_replace : 'Заменить', +searchreplace_replaceall : 'Заменить Ð²ÐµÐ·Ð´Ðµ', +searchreplace_cancel : 'Отменить' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/sk.js b/webcit/tiny_mce/plugins/searchreplace/langs/sk.js new file mode 100644 index 000000000..87ade05ce --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/sk.js @@ -0,0 +1,29 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Nájdi', +searchreplace_searchnext_desc : 'Nájdi znova', +searchreplace_replace_desc : 'Nájdi/NahradiÅ¥', +searchreplace_notfound : 'Vyhľadávanie ukončené. ReÅ¥azec nemusel byÅ¥ nájdený.', +searchreplace_search_title : 'Nájdi', +searchreplace_replace_title : 'Nájdi/NahradiÅ¥', +searchreplace_allreplaced : 'VÅ¡etky výskyty reÅ¥azca boly zmenené.', +searchreplace_findwhat : 'NájsÅ¥', +searchreplace_replacewith : 'NahradiÅ¥', +searchreplace_direction : 'Smer', +searchreplace_up : 'Nahor', +searchreplace_down : 'Dole', +searchreplace_case : 'Presná shoda', +searchreplace_findnext : 'Nájdi Äalší', +searchreplace_replace : 'NahradiÅ¥', +searchreplace_replaceall : 'NahradiÅ¥ vÅ¡etko', +searchreplace_cancel : 'ZruÅ¡iÅ¥' +}); + diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/sv.js b/webcit/tiny_mce/plugins/searchreplace/langs/sv.js new file mode 100644 index 000000000..f69f44af9 --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/sv.js @@ -0,0 +1,21 @@ +// SE lang variables + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Sök', +searchreplace_searchnext_desc : 'Sök igen', +searchreplace_replace_desc : 'Sök/Ersätt', +searchreplace_notfound : 'Sökningen är slutförd. Söksträngen kunde inte hittas.', +searchreplace_search_title : 'Sök', +searchreplace_replace_title : 'Sök/Ersätt', +searchreplace_allreplaced : 'Alla träffar på söksträngen ersattes', +searchreplace_findwhat : 'Sök på', +searchreplace_replacewith : 'Ersätt med', +searchreplace_direction : 'Sökriktning', +searchreplace_up : 'Uppåt', +searchreplace_down : 'Neråt', +searchreplace_case : 'Matcha gemener/VERSALER', +searchreplace_findnext : 'Sök nästa', +searchreplace_replace : 'Ersätt', +searchreplace_replaceall : 'Ersätt alla', +searchreplace_cancel : 'Avbryt' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/zh_cn.js b/webcit/tiny_mce/plugins/searchreplace/langs/zh_cn.js new file mode 100644 index 000000000..28be76c7e --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/zh_cn.js @@ -0,0 +1,21 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('',{ +searchreplace_search_desc : '²éÕÒ', +searchreplace_searchnext_desc : 'ÔٴβéÕÒ', +searchreplace_replace_desc : '²éÕÒ/Ìæ»»', +searchreplace_notfound : 'ËÑË÷Íê±Ï£¬Ã»ÓÐÕÒµ½Òª²éÕÒµÄ×Ö·û´®¡£', +searchreplace_search_title : '²éÕÒ', +searchreplace_replace_title : '²éÕÒ/Ìæ»»', +searchreplace_allreplaced : 'ËùÓзûºÏÌõ¼þµÄ×Ö·û´®ÒÑÌæ»»Íê±Ï¡£', +searchreplace_findwhat : '²éÕÒ', +searchreplace_replacewith : 'Ì滻Ϊ', +searchreplace_direction : '·½Ïò', +searchreplace_up : 'ÏòÉÏ', +searchreplace_down : 'ÏòÏÂ', +searchreplace_case : 'Æ¥Åä´óСд', +searchreplace_findnext : '²éÕÒÏÂÒ»¸ö', +searchreplace_replace : 'Ìæ»»', +searchreplace_replaceall : 'È«²¿Ìæ»»', +searchreplace_cancel : 'È¡Ïû' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/zh_tw.js b/webcit/tiny_mce/plugins/searchreplace/langs/zh_tw.js new file mode 100644 index 000000000..282046304 --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/zh_tw.js @@ -0,0 +1,22 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +searchreplace_search_desc : '¬d¸ß', +searchreplace_searchnext_desc : '¦A¦¸¬d¸ß', +searchreplace_replace_desc : '¬d¸ß©Î´À´«', +searchreplace_notfound : '¤w§¹¦¨¬d¸ß¡C¨S§ä¨ì«ü©wªº¦r¦ê¡C', +searchreplace_search_title : '¬d¸ß', +searchreplace_replace_title : '¬d¸ß©Î´À´«', +searchreplace_allreplaced : '©Ò¦³§ä¨ìªº¦r¦ê¤w§¹¦¨´À´«', +searchreplace_findwhat : '§ä¤°»ò', +searchreplace_replacewith : '´À´«¦¨', +searchreplace_direction : '¤è¦V', +searchreplace_up : '©¹¤W', +searchreplace_down : '¦V¤U', +searchreplace_case : '¬Û²Åµ²ªG', +searchreplace_findnext : '¬d¸ß¤U­Ó', +searchreplace_replace : '´À´«', +searchreplace_replaceall : '¥þ³¡´À´«', +searchreplace_cancel : '¨ú®ø' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/searchreplace/langs/zh_tw_utf8.js new file mode 100644 index 000000000..91376f359 --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/langs/zh_tw_utf8.js @@ -0,0 +1,22 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +searchreplace_search_desc : '查詢', +searchreplace_searchnext_desc : '再次查詢', +searchreplace_replace_desc : '查詢或替換', +searchreplace_notfound : '已完成查詢。沒找到指定的字串。', +searchreplace_search_title : '查詢', +searchreplace_replace_title : '查詢或替換', +searchreplace_allreplaced : '所有找到的字串已完成替換', +searchreplace_findwhat : '找什麼', +searchreplace_replacewith : '替換成', +searchreplace_direction : '方向', +searchreplace_up : '往上', +searchreplace_down : '向下', +searchreplace_case : '相符結果', +searchreplace_findnext : '查詢下個', +searchreplace_replace : '替換', +searchreplace_replaceall : '全部替換', +searchreplace_cancel : '取消' +}); diff --git a/webcit/tiny_mce/plugins/searchreplace/readme.txt b/webcit/tiny_mce/plugins/searchreplace/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/searchreplace/replace.htm b/webcit/tiny_mce/plugins/searchreplace/replace.htm new file mode 100644 index 000000000..e724640f7 --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/replace.htm @@ -0,0 +1,49 @@ + + + {$lang_searchreplace_replace_title} + + + + + +
    + + + + + + + + + + + + + + + +
    + + + + + + + +
    + + + + +
    + + + + + + + +
    +
    + + diff --git a/webcit/tiny_mce/plugins/searchreplace/search.htm b/webcit/tiny_mce/plugins/searchreplace/search.htm new file mode 100644 index 000000000..fe9055ed5 --- /dev/null +++ b/webcit/tiny_mce/plugins/searchreplace/search.htm @@ -0,0 +1,42 @@ + + + {$lang_searchreplace_search_title} + + + + + +
    + + + + + + + + + + +
     
    + + + + + + + +
    + + + + +
    + + + + + +
    +
    + + diff --git a/webcit/tiny_mce/plugins/table/cell.htm b/webcit/tiny_mce/plugins/table/cell.htm new file mode 100644 index 000000000..699b3b902 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/cell.htm @@ -0,0 +1,182 @@ + + + {$lang_table_cell_title} + + + + + + + + +
    + + +
    +
    +
    + {$lang_table_general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + +
    +
    +
    + +
    +
    + {$lang_table_advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + +
     
    +
    + + + + + +
     
    +
    + + + + + +
     
    +
    +
    +
    +
    + +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + + diff --git a/webcit/tiny_mce/plugins/table/css/cell.css b/webcit/tiny_mce/plugins/table/css/cell.css new file mode 100644 index 000000000..a067ecdfe --- /dev/null +++ b/webcit/tiny_mce/plugins/table/css/cell.css @@ -0,0 +1,17 @@ +/* CSS file for cell dialog in the table plugin */ + +.panel_wrapper div.current { + height: 200px; +} + +.advfield { + width: 200px; +} + +#action { + margin-bottom: 3px; +} + +#class { + width: 150px; +} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/table/css/row.css b/webcit/tiny_mce/plugins/table/css/row.css new file mode 100644 index 000000000..1f7755daf --- /dev/null +++ b/webcit/tiny_mce/plugins/table/css/row.css @@ -0,0 +1,25 @@ +/* CSS file for row dialog in the table plugin */ + +.panel_wrapper div.current { + height: 200px; +} + +.advfield { + width: 200px; +} + +#action { + margin-bottom: 3px; +} + +#rowtype,#align,#valign,#class,#height { + width: 150px; +} + +#height { + width: 50px; +} + +.col2 { + padding-left: 20px; +} diff --git a/webcit/tiny_mce/plugins/table/css/table.css b/webcit/tiny_mce/plugins/table/css/table.css new file mode 100644 index 000000000..804f766ee --- /dev/null +++ b/webcit/tiny_mce/plugins/table/css/table.css @@ -0,0 +1,13 @@ +/* CSS file for table dialog in the table plugin */ + +.panel_wrapper div.current { + height: 220px; +} + +.advfield { + width: 200px; +} + +#class { + width: 150px; +} diff --git a/webcit/tiny_mce/plugins/table/editor_plugin.js b/webcit/tiny_mce/plugins/table/editor_plugin.js new file mode 100644 index 000000000..7f531e4be --- /dev/null +++ b/webcit/tiny_mce/plugins/table/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('table','en,ar,cs,da,de,el,es,fi,fr_ca,hu,it,ja,ko,nl,nb,pl,pt,pt_br,sv,tw,zh_cn,fr,de,he,nb,ru,ru_KOI8-R,ru_UTF-8,nn,cy,is,zh_tw,zh_tw_utf8,sk');function TinyMCE_table_getInfo(){return{longname:'Tables',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_table.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_table_initInstance(inst){if(tinyMCE.isGecko){var doc=inst.getDoc();tinyMCE.addEvent(doc,"mouseup",TinyMCE_table_mouseDownHandler);}inst.tableRowClipboard=null;}function TinyMCE_table_mouseDownHandler(e){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var focusElm=tinyMCE.selectedInstance.getFocusElement();if(elm.nodeName=="BODY"&&(focusElm.nodeName=="TD"||focusElm.nodeName=="TH"||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TD")||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TH"))){window.setTimeout(function(){var tableElm=tinyMCE.getParentElement(focusElm,"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);},10);}}function TinyMCE_table_getControlHTML(control_name){var controls=new Array(['table','table.gif','{$lang_table_desc}','mceInsertTable',true],['delete_col','table_delete_col.gif','{$lang_table_delete_col_desc}','mceTableDeleteCol'],['delete_row','table_delete_row.gif','{$lang_table_delete_row_desc}','mceTableDeleteRow'],['col_after','table_insert_col_after.gif','{$lang_table_col_after_desc}','mceTableInsertColAfter'],['col_before','table_insert_col_before.gif','{$lang_table_col_before_desc}','mceTableInsertColBefore'],['row_after','table_insert_row_after.gif','{$lang_table_row_after_desc}','mceTableInsertRowAfter'],['row_before','table_insert_row_before.gif','{$lang_table_row_before_desc}','mceTableInsertRowBefore'],['row_props','table_row_props.gif','{$lang_table_row_desc}','mceTableRowProps',true],['cell_props','table_cell_props.gif','{$lang_table_cell_desc}','mceTableCellProps',true],['split_cells','table_split_cells.gif','{$lang_table_split_cells_desc}','mceTableSplitCells',true],['merge_cells','table_merge_cells.gif','{$lang_table_merge_cells_desc}','mceTableMergeCells',true]);for(var i=0;i4?but[4]:false)+(but.length>5?', \''+but[5]+'\'':'')+');return false;';if(but[0]==control_name&&(tinyMCE.isMSIE||!tinyMCE.settings['button_tile_map']))return '';else if(but[0]==control_name)return '';}if(control_name=="tablecontrols"){var html="";html+=tinyMCE.getControlHTML("table");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_props");html+=tinyMCE.getControlHTML("cell_props");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_before");html+=tinyMCE.getControlHTML("row_after");html+=tinyMCE.getControlHTML("delete_row");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("col_before");html+=tinyMCE.getControlHTML("col_after");html+=tinyMCE.getControlHTML("delete_col");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("split_cells");html+=tinyMCE.getControlHTML("merge_cells");return html;}return "";}function TinyMCE_table_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceInsertTable":case "mceTableRowProps":case "mceTableCellProps":case "mceTableSplitCells":case "mceTableMergeCells":case "mceTableInsertRowBefore":case "mceTableInsertRowAfter":case "mceTableDeleteRow":case "mceTableInsertColBefore":case "mceTableInsertColAfter":case "mceTableDeleteCol":case "mceTableCutRow":case "mceTableCopyRow":case "mceTablePasteRowBefore":case "mceTablePasteRowAfter":case "mceTableDelete":var inst=tinyMCE.getInstanceById(editor_id);inst.execCommand('mceBeginUndoLevel');TinyMCE_table_doExecCommand(editor_id,element,command,user_interface,value);inst.execCommand('mceEndUndoLevel');return true;}return false;}function TinyMCE_table_doExecCommand(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();var trElm=tinyMCE.getParentElement(focusElm,"tr");var tdElm=tinyMCE.getParentElement(focusElm,"td,th");var tableElm=tinyMCE.getParentElement(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i0&&inArray(ar[i],v))return true;if(ar[i]==v)return true;}return false;}function makeTD(){var newTD=doc.createElement("td");newTD.innerHTML=" ";}function getColRowSpan(td){var colspan=tinyMCE.getAttrib(td,"colspan");var rowspan=tinyMCE.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan};}function getCellPos(grid,td){for(var y=0;y1){for(var i=x;i1)td.rowSpan=sd.rowspan+1;lastElm=td;}deleteMarked(tableElm);}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node;}return null;}function nextElm(node,names){var namesAr=names.split(',');while((node=node.nextSibling)!=null){for(var i=0;i1){do{var nexttd=nextElm(td,"TD,TH");if(td._delete)td.parentNode.removeChild(td);}while((td=nexttd)!=null);}}while((tr=next)!=null);}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD);}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm.rowSpan=sd.rowspan-1;}else{trElm=tdElm.parentNode;if(trElm.parentNode)trElm._delete=true;}lastTDElm=tdElm;}}deleteMarked(tableElm);cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;inst.selectNode(getCell(grid,cpos.rowindex,0),true,true);break;case "mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML=" ";newTD.rowSpan=tdElm.rowSpan;tdElm.parentNode.insertBefore(newTD,tdElm);}else tdElm.colSpan++;lastTDElm=tdElm;}}break;case "mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML=" ";newTD.rowSpan=tdElm.rowSpan;var nextTD=nextElm(tdElm,"TD,TH");if(nextTD==null)tdElm.parentNode.appendChild(newTD);else nextTD.parentNode.insertBefore(newTD,nextTD);}else tdElm.colSpan++;lastTDElm=tdElm;}}break;case "mceTableDeleteCol":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;if(grid.length>1&&grid[0].length<=1){tableElm.parentNode.removeChild(tableElm);return true;}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm);}lastTDElm=tdElm;}}cpos.cellindex--;if(cpos.cellindex<0)cpos.cellindex=0;inst.selectNode(getCell(grid,0,cpos.cellindex),true,true);break;case "mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i1)addRows(newTD,trElm,rowspan);}addRows(tdElm,trElm,rowspan);}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");break;case "mceTableMergeCells":var rows=new Array();var sel=inst.getSel();var grid=getTableGrid(tableElm);if(tinyMCE.isMSIE||sel.rangeCount==1){if(user_interface){var template=new Array();var sp=getColRowSpan(tdElm);template['file']='../../plugins/table/merge_cells.htm';template['width']=250;template['height']=105+(tinyMCE.isNS7?25:0);template['width']+=tinyMCE.getLang('lang_table_merge_cells_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_merge_cells_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:"update",numcols:sp.colspan,numrows:sp.rowspan});return true;}else{var numRows=parseInt(value['numrows']);var numCols=parseInt(value['numcols']);var cpos=getCellPos(grid,tdElm);if((""+numRows)=="NaN")numRows=1;if((""+numCols)=="NaN")numCols=1;var tRows=tableElm.rows;for(var y=cpos.rowindex;y0)rows[rows.length]=rowCells;}}}else{var cells=new Array();var sel=inst.getSel();var lastTR=null;var curRow=null;var x1=-1,y1=-1,x2,y2;if(sel.rangeCount<2)return true;for(var i=0;i0)rows[rows.length]=rowCells;}var curRow=new Array();var lastTR=null;for(var y=0;ycolSpan)colSpan=rowColSpan;lastRowSpan=-1;}var lastColSpan=-1;for(var x=0;xrowSpan)rowSpan=colRowSpan;lastColSpan=-1;}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.rowSpan>1)cellElm.rowSpan--;lastCell=cellElm;}if(tdElm.rowSpan>1)tdElm.rowSpan--;}}}}break;}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);tinyMCE.triggerNodeChange();inst.repaint();}return true;}return false;}function TinyMCE_table_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var colspan="1",rowspan="1";var inst=tinyMCE.getInstanceById(editor_id);tinyMCE.switchClassSticky(editor_id+'_table','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_row_props','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_cell_props','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_row_before','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_row_after','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_delete_row','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_col_before','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_col_after','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_delete_col','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_split_cells','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_merge_cells','mceButtonDisabled',true);if(tinyMCE.getParentElement(node,"tr"))tinyMCE.switchClassSticky(editor_id+'_row_props','mceButtonSelected',false);if(tdElm=tinyMCE.getParentElement(node,"td,th")){tinyMCE.switchClassSticky(editor_id+'_cell_props','mceButtonSelected',false);tinyMCE.switchClassSticky(editor_id+'_row_before','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_row_after','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_delete_row','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_col_before','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_col_after','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_delete_col','mceButtonNormal',false);colspan=tinyMCE.getAttrib(tdElm,"colspan");rowspan=tinyMCE.getAttrib(tdElm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;if(colspan!="1"||rowspan!="1")tinyMCE.switchClassSticky(editor_id+'_split_cells','mceButtonNormal',false);}if(tinyMCE.getParentElement(node,"table")){tinyMCE.switchClassSticky(editor_id+'_table','mceButtonSelected');tinyMCE.switchClassSticky(editor_id+'_merge_cells','mceButtonNormal',false);}} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/table/editor_plugin_src.js b/webcit/tiny_mce/plugins/table/editor_plugin_src.js new file mode 100644 index 000000000..fe7763909 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/editor_plugin_src.js @@ -0,0 +1,1041 @@ +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('table', 'en,ar,cs,da,de,el,es,fi,fr_ca,hu,it,ja,ko,nl,nb,pl,pt,pt_br,sv,tw,zh_cn,fr,de,he,nb,ru,ru_KOI8-R,ru_UTF-8,nn,cy,is,zh_tw,zh_tw_utf8,sk'); + +function TinyMCE_table_getInfo() { + return { + longname : 'Tables', + author : 'Moxiecode Systems', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_table.html', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; +}; + +function TinyMCE_table_initInstance(inst) { + if (tinyMCE.isGecko) { + var doc = inst.getDoc(); + tinyMCE.addEvent(doc, "mouseup", TinyMCE_table_mouseDownHandler); + } + + inst.tableRowClipboard = null; +} + +function TinyMCE_table_mouseDownHandler(e) { + var elm = tinyMCE.isMSIE ? event.srcElement : e.target; + var focusElm = tinyMCE.selectedInstance.getFocusElement(); + + // If press on special Mozilla create TD/TR thingie + if (elm.nodeName == "BODY" && (focusElm.nodeName == "TD" || focusElm.nodeName == "TH" || (focusElm.parentNode && focusElm.parentNode.nodeName == "TD") ||(focusElm.parentNode && focusElm.parentNode.nodeName == "TH") )) { + window.setTimeout(function() { + var tableElm = tinyMCE.getParentElement(focusElm, "table"); + tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance); + }, 10); + } +} + +/** + * Returns the HTML contents of the table control. + */ +function TinyMCE_table_getControlHTML(control_name) { + var controls = new Array( + ['table', 'table.gif', '{$lang_table_desc}', 'mceInsertTable', true], + ['delete_col', 'table_delete_col.gif', '{$lang_table_delete_col_desc}', 'mceTableDeleteCol'], + ['delete_row', 'table_delete_row.gif', '{$lang_table_delete_row_desc}', 'mceTableDeleteRow'], + ['col_after', 'table_insert_col_after.gif', '{$lang_table_col_after_desc}', 'mceTableInsertColAfter'], + ['col_before', 'table_insert_col_before.gif', '{$lang_table_col_before_desc}', 'mceTableInsertColBefore'], + ['row_after', 'table_insert_row_after.gif', '{$lang_table_row_after_desc}', 'mceTableInsertRowAfter'], + ['row_before', 'table_insert_row_before.gif', '{$lang_table_row_before_desc}', 'mceTableInsertRowBefore'], + ['row_props', 'table_row_props.gif', '{$lang_table_row_desc}', 'mceTableRowProps', true], + ['cell_props', 'table_cell_props.gif', '{$lang_table_cell_desc}', 'mceTableCellProps', true], + ['split_cells', 'table_split_cells.gif', '{$lang_table_split_cells_desc}', 'mceTableSplitCells', true], + ['merge_cells', 'table_merge_cells.gif', '{$lang_table_merge_cells_desc}', 'mceTableMergeCells', true]); + + // Render table control + for (var i=0; i 4 ? but[4] : false) + (but.length > 5 ? ', \'' + but[5] + '\'' : '') + ');return false;'; + + if (but[0] == control_name && (tinyMCE.isMSIE || !tinyMCE.settings['button_tile_map'])) + return ''; + else if (but[0] == control_name) + return ''; + } + + // Special tablecontrols + if (control_name == "tablecontrols") { + var html = ""; + + html += tinyMCE.getControlHTML("table"); + html += tinyMCE.getControlHTML("separator"); + html += tinyMCE.getControlHTML("row_props"); + html += tinyMCE.getControlHTML("cell_props"); + html += tinyMCE.getControlHTML("separator"); + html += tinyMCE.getControlHTML("row_before"); + html += tinyMCE.getControlHTML("row_after"); + html += tinyMCE.getControlHTML("delete_row"); + html += tinyMCE.getControlHTML("separator"); + html += tinyMCE.getControlHTML("col_before"); + html += tinyMCE.getControlHTML("col_after"); + html += tinyMCE.getControlHTML("delete_col"); + html += tinyMCE.getControlHTML("separator"); + html += tinyMCE.getControlHTML("split_cells"); + html += tinyMCE.getControlHTML("merge_cells"); + + return html; + } + + return ""; +} + +/** + * Executes the table commands. + */ +function TinyMCE_table_execCommand(editor_id, element, command, user_interface, value) { + // Is table command + switch (command) { + case "mceInsertTable": + case "mceTableRowProps": + case "mceTableCellProps": + case "mceTableSplitCells": + case "mceTableMergeCells": + case "mceTableInsertRowBefore": + case "mceTableInsertRowAfter": + case "mceTableDeleteRow": + case "mceTableInsertColBefore": + case "mceTableInsertColAfter": + case "mceTableDeleteCol": + case "mceTableCutRow": + case "mceTableCopyRow": + case "mceTablePasteRowBefore": + case "mceTablePasteRowAfter": + case "mceTableDelete": + var inst = tinyMCE.getInstanceById(editor_id); + + inst.execCommand('mceBeginUndoLevel'); + TinyMCE_table_doExecCommand(editor_id, element, command, user_interface, value); + inst.execCommand('mceEndUndoLevel'); + + return true; + } + + // Pass to next handler in chain + return false; +} + +/** + * Executes the table commands. + */ +function TinyMCE_table_doExecCommand(editor_id, element, command, user_interface, value) { + var inst = tinyMCE.getInstanceById(editor_id); + var focusElm = inst.getFocusElement(); + var trElm = tinyMCE.getParentElement(focusElm, "tr"); + var tdElm = tinyMCE.getParentElement(focusElm, "td,th"); + var tableElm = tinyMCE.getParentElement(focusElm, "table"); + var doc = inst.contentWindow.document; + var tableBorder = tableElm ? tableElm.getAttribute("border") : ""; + + // Get first TD if no TD found + if (trElm && tdElm == null) + tdElm = trElm.cells[0]; + + // ------- Inner functions --------- + function inArray(ar, v) { + for (var i=0; i 0 && inArray(ar[i], v)) + return true; + + // Found value + if (ar[i] == v) + return true; + } + + return false; + } + + function makeTD() { + var newTD = doc.createElement("td"); + newTD.innerHTML = " "; + } + + function getColRowSpan(td) { + var colspan = tinyMCE.getAttrib(td, "colspan"); + var rowspan = tinyMCE.getAttrib(td, "rowspan"); + + colspan = colspan == "" ? 1 : parseInt(colspan); + rowspan = rowspan == "" ? 1 : parseInt(rowspan); + + return {colspan : colspan, rowspan : rowspan}; + } + + function getCellPos(grid, td) { + for (var y=0; y 1) { // Remove due to colspan + for (var i=x; i 1) + td.rowSpan = sd.rowspan + 1; + + lastElm = td; + } + + deleteMarked(tableElm); + } + } + + function prevElm(node, name) { + while ((node = node.previousSibling) != null) { + if (node.nodeName == name) + return node; + } + + return null; + } + + function nextElm(node, names) { + var namesAr = names.split(','); + + while ((node = node.nextSibling) != null) { + for (var i=0; i 1) { + do { + var nexttd = nextElm(td, "TD,TH"); + + if (td._delete) + td.parentNode.removeChild(td); + } while ((td = nexttd) != null); + } + } while ((tr = next) != null); + } + + function addRows(td_elm, tr_elm, rowspan) { + // Add rows + td_elm.rowSpan = 1; + var trNext = nextElm(tr_elm, "TR"); + for (var i=1; i 1) { + var newTD = cells[x].cloneNode(true); + var sd = getColRowSpan(cells[x]); + + newTD.rowSpan = sd.rowspan - 1; + + var nextTD = nextTR.cells[x]; + + if (nextTD == null) + nextTR.appendChild(newTD); + else + nextTR.insertBefore(newTD, nextTD); + } + } + + // Delete cells + var lastTDElm = null; + for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) { + if (tdElm != lastTDElm) { + var sd = getColRowSpan(tdElm); + + if (sd.rowspan > 1) { + tdElm.rowSpan = sd.rowspan - 1; + } else { + trElm = tdElm.parentNode; + + if (trElm.parentNode) + trElm._delete = true; + } + + lastTDElm = tdElm; + } + } + + deleteMarked(tableElm); + + cpos.rowindex--; + if (cpos.rowindex < 0) + cpos.rowindex = 0; + + inst.selectNode(getCell(grid, cpos.rowindex, 0), true, true); + break; + + case "mceTableInsertColBefore": + if (!trElm || !tdElm) + return true; + + var grid = getTableGrid(tableElm); + var cpos = getCellPos(grid, tdElm); + var lastTDElm = null; + + for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) { + if (tdElm != lastTDElm) { + var sd = getColRowSpan(tdElm); + + if (sd['colspan'] == 1) { + var newTD = doc.createElement(tdElm.nodeName); + + newTD.innerHTML = " "; + newTD.rowSpan = tdElm.rowSpan; + + tdElm.parentNode.insertBefore(newTD, tdElm); + } else + tdElm.colSpan++; + + lastTDElm = tdElm; + } + } + break; + + case "mceTableInsertColAfter": + if (!trElm || !tdElm) + return true; + + var grid = getTableGrid(tableElm); + var cpos = getCellPos(grid, tdElm); + var lastTDElm = null; + + for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) { + if (tdElm != lastTDElm) { + var sd = getColRowSpan(tdElm); + + if (sd['colspan'] == 1) { + var newTD = doc.createElement(tdElm.nodeName); + + newTD.innerHTML = " "; + newTD.rowSpan = tdElm.rowSpan; + + var nextTD = nextElm(tdElm, "TD,TH"); + if (nextTD == null) + tdElm.parentNode.appendChild(newTD); + else + nextTD.parentNode.insertBefore(newTD, nextTD); + } else + tdElm.colSpan++; + + lastTDElm = tdElm; + } + } + break; + + case "mceTableDeleteCol": + if (!trElm || !tdElm) + return true; + + var grid = getTableGrid(tableElm); + var cpos = getCellPos(grid, tdElm); + var lastTDElm = null; + + // Only one col, remove whole table + if (grid.length > 1 && grid[0].length <= 1) { + tableElm.parentNode.removeChild(tableElm); + return true; + } + + // Delete cells + for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) { + if (tdElm != lastTDElm) { + var sd = getColRowSpan(tdElm); + + if (sd['colspan'] > 1) + tdElm.colSpan = sd['colspan'] - 1; + else { + if (tdElm.parentNode) + tdElm.parentNode.removeChild(tdElm); + } + + lastTDElm = tdElm; + } + } + + cpos.cellindex--; + if (cpos.cellindex < 0) + cpos.cellindex = 0; + + inst.selectNode(getCell(grid, 0, cpos.cellindex), true, true); + break; + + case "mceTableSplitCells": + if (!trElm || !tdElm) + return true; + + var spandata = getColRowSpan(tdElm); + + var colspan = spandata["colspan"]; + var rowspan = spandata["rowspan"]; + + // Needs splitting + if (colspan > 1 || rowspan > 1) { + // Generate cols + tdElm.colSpan = 1; + for (var i=1; i 1) + addRows(newTD, trElm, rowspan); + } + + addRows(tdElm, trElm, rowspan); + } + + // Apply visual aids + tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); + break; + + case "mceTableMergeCells": + var rows = new Array(); + var sel = inst.getSel(); + var grid = getTableGrid(tableElm); + + if (tinyMCE.isMSIE || sel.rangeCount == 1) { + if (user_interface) { + // Setup template + var template = new Array(); + var sp = getColRowSpan(tdElm); + + template['file'] = '../../plugins/table/merge_cells.htm'; + template['width'] = 250; + template['height'] = 105 + (tinyMCE.isNS7 ? 25 : 0); + + // Language specific width and height addons + template['width'] += tinyMCE.getLang('lang_table_merge_cells_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_table_merge_cells_delta_height', 0); + + // Open window + tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes", action : "update", numcols : sp.colspan, numrows : sp.rowspan}); + + return true; + } else { + var numRows = parseInt(value['numrows']); + var numCols = parseInt(value['numcols']); + var cpos = getCellPos(grid, tdElm); + + if (("" + numRows) == "NaN") + numRows = 1; + + if (("" + numCols) == "NaN") + numCols = 1; + + // Get rows and cells + var tRows = tableElm.rows; + for (var y=cpos.rowindex; y 0) + rows[rows.length] = rowCells; + } + + //return true; + } + } else { + var cells = new Array(); + var sel = inst.getSel(); + var lastTR = null; + var curRow = null; + var x1 = -1, y1 = -1, x2, y2; + + // Only one cell selected, whats the point? + if (sel.rangeCount < 2) + return true; + + // Get all selected cells + for (var i=0; i 0) + rows[rows.length] = rowCells; + } + + // Find selected cells in grid and box + var curRow = new Array(); + var lastTR = null; + for (var y=0; y colSpan) + colSpan = rowColSpan; + + lastRowSpan = -1; + } + + // Validate vertical and get total rowspan + var lastColSpan = -1; + for (var x=0; x rowSpan) + rowSpan = colRowSpan; + + lastColSpan = -1; + } + + // Setup td + tdElm = rows[0][0]; + tdElm.rowSpan = rowSpan; + tdElm.colSpan = colSpan; + + // Merge cells + for (var y=0; y 0)) + tdElm.innerHTML += html; + + // Not current cell + if (rows[y][x] != tdElm && !rows[y][x]._deleted) { + var cpos = getCellPos(grid, rows[y][x]); + var tr = rows[y][x].parentNode; + + tr.removeChild(rows[y][x]); + rows[y][x]._deleted = true; + + // Empty TR, remove it + if (!tr.hasChildNodes()) { + tr.parentNode.removeChild(tr); + + var lastCell = null; + for (var x=0; cellElm = getCell(grid, cpos.rowindex, x); x++) { + if (cellElm != lastCell && cellElm.rowSpan > 1) + cellElm.rowSpan--; + + lastCell = cellElm; + } + + if (tdElm.rowSpan > 1) + tdElm.rowSpan--; + } + } + } + } + + break; + } + + tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); + tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance); + tinyMCE.triggerNodeChange(); + inst.repaint(); + } + + return true; + } + + // Pass to next handler in chain + return false; +} + +function TinyMCE_table_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + var colspan = "1", rowspan = "1"; + + var inst = tinyMCE.getInstanceById(editor_id); + + // Reset table controls + tinyMCE.switchClassSticky(editor_id + '_table', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_row_props', 'mceButtonDisabled', true); + tinyMCE.switchClassSticky(editor_id + '_cell_props', 'mceButtonDisabled', true); + tinyMCE.switchClassSticky(editor_id + '_row_before', 'mceButtonDisabled', true); + tinyMCE.switchClassSticky(editor_id + '_row_after', 'mceButtonDisabled', true); + tinyMCE.switchClassSticky(editor_id + '_delete_row', 'mceButtonDisabled', true); + tinyMCE.switchClassSticky(editor_id + '_col_before', 'mceButtonDisabled', true); + tinyMCE.switchClassSticky(editor_id + '_col_after', 'mceButtonDisabled', true); + tinyMCE.switchClassSticky(editor_id + '_delete_col', 'mceButtonDisabled', true); + tinyMCE.switchClassSticky(editor_id + '_split_cells', 'mceButtonDisabled', true); + tinyMCE.switchClassSticky(editor_id + '_merge_cells', 'mceButtonDisabled', true); + + // Within a tr element + if (tinyMCE.getParentElement(node, "tr")) + tinyMCE.switchClassSticky(editor_id + '_row_props', 'mceButtonSelected', false); + + // Within a td element + if (tdElm = tinyMCE.getParentElement(node, "td,th")) { + tinyMCE.switchClassSticky(editor_id + '_cell_props', 'mceButtonSelected', false); + tinyMCE.switchClassSticky(editor_id + '_row_before', 'mceButtonNormal', false); + tinyMCE.switchClassSticky(editor_id + '_row_after', 'mceButtonNormal', false); + tinyMCE.switchClassSticky(editor_id + '_delete_row', 'mceButtonNormal', false); + tinyMCE.switchClassSticky(editor_id + '_col_before', 'mceButtonNormal', false); + tinyMCE.switchClassSticky(editor_id + '_col_after', 'mceButtonNormal', false); + tinyMCE.switchClassSticky(editor_id + '_delete_col', 'mceButtonNormal', false); + + colspan = tinyMCE.getAttrib(tdElm, "colspan"); + rowspan = tinyMCE.getAttrib(tdElm, "rowspan"); + + colspan = colspan == "" ? "1" : colspan; + rowspan = rowspan == "" ? "1" : rowspan; + + if (colspan != "1" || rowspan != "1") + tinyMCE.switchClassSticky(editor_id + '_split_cells', 'mceButtonNormal', false); + } + + // Within table + if (tinyMCE.getParentElement(node, "table")) { + tinyMCE.switchClassSticky(editor_id + '_table', 'mceButtonSelected'); + tinyMCE.switchClassSticky(editor_id + '_merge_cells', 'mceButtonNormal', false); + } +} diff --git a/webcit/tiny_mce/plugins/table/images/buttons.gif b/webcit/tiny_mce/plugins/table/images/buttons.gif new file mode 100644 index 0000000000000000000000000000000000000000..bfc1568bec918f0cf2bde452fef29209a1e61525 GIT binary patch literal 1356 zcmV-S1+)4`Nk%w1VcY-|0OcA00s;bJdYt0o;zD}j5-wV@rB|ZD`$A%pt)rr{m{M|^ z?4q;6^5T-Ra$LmEvd;aJx&CE;vtx3ExVyl2kFwauX!7^|v%b=Tul`br@G?qb*N1K5 z@BTtna-z1<($(ams=|Vr!lJtJa)6VPqOuYa5>jS@f~xXTaihYrdV-Ro)X>XflI}8A zjQ{`uA^8LW002J#EC2ui0Nel+000L6z@KnPEEEW}ShMmH zLSse*1u6y*D>iMKi)UoZGCNB|=E|2jXvR$WmSxy!L4NqlWbwjvnpUz7e`~d0{f+^@}fWQTQ*$^9hNYD^L2ZJb) zODGn3g~M~-J&~ai8#;miOJe~<5#AFE!0^C{C_cag4-cTAS~w;?FwKfBzW757|J6qy z2nJxV(_!_bBm#i-2?!(+C88(*0va?|qY^YI(1sGgRA?bsBTOWbhFfyjr4tQ3^u&jc zIT1rLXr`IW0=D3o(mKir&={LVxG92g#2M#<2Z-1i;7B3JQYT9fXfT2c0La+_ok`Hp z0|gXN2TKSzC?KT@m@?QQ6PpgvsS=)j)LGLeCrsK#JR1}wpeLt`AMS_G>#;THf$ zK7^1$1&GiZ0Db~?w5ut!YA^w7u*%wKVxl4uYN$36QG#VR5VixePfSZgwcBCqL}igo zCd9K()BwW-6QH2~E*z_5V2iovPSdU_HHe@aj|Sx6kq;>-AOa%w-W#m0{qkA_yy>pX zE;rN(@o5r@pp!%mjkT}>#SS%GRK*u_%&9L`3PVI@anvB*5=NzjLM{s^a)P@?q^!Zp zb2*n{-~KVbcY!SYp;z>-j#Ir7xiUj4jtk6mGB;Ip^^U`N6#0a4} zUa^=?to_g2~h3+KzIM(yqDEw{v33+VWCfYLcq*{{H^LvU=X>{iCqL z#mds6qN19*_y7O^A^8LW0018VEC2ui02BZe000G?;3tk`X`X1B5)?(KB@00mJQCSN zE9B*0hM>X2$p{t>MWmN#dOXbs;)npedOjg>x~OhU6O8zQIdH3l0a%P7cOqTD;bAdt z9{7i*gQ;>J6LlpUY-9lzat#_A1ttt^9EFODjU@vQ92^px5)&Jr43#7UY!VHM8yXcA lp(dna6O$XO2?L@dmz|!U8w?Bswyp)k#Kpum$jK!k06V*Ud_@2N literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/table/images/table_cell_props.gif b/webcit/tiny_mce/plugins/table/images/table_cell_props.gif new file mode 100644 index 0000000000000000000000000000000000000000..bee7ed652f83476471ca0c0cfa5f2b72c6f98fc8 GIT binary patch literal 189 zcmV;u07CyqNk%w1VH5xq0K*6XGD>2SrMS}4+=8g`!qMXL>f*A!(w4mb{r>)O6%hbCQiN7b literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/table/images/table_delete.gif b/webcit/tiny_mce/plugins/table/images/table_delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..2a00e6ad66aa907381ff742dfcb6aa2e2ec3df17 GIT binary patch literal 372 zcmZ?wbhEHb6k!lyxXJ(m|NsC0^y%lMRiD=FywtS()2v-TmLL0b@8#d4r!Jkk_37m0 zM~gQcGWJTIwCYe$T-JmI8#W!fv~uABRt5$QCMID*=gj%{@86?GkAPN#oj^XJ z_>+Z^fkBHw2V?}uPYi4m9i|p|=t%XSSWnQADz=v_wHnRY+F7p1ZrJmz#y(t)Zk*lZk_e*Nv}? zvvK;2S*`-yoScFy1X+02@GWu?C=+Cw&cngQwa#s0G0Os;9qa<@otLayy@rR6PvG!w R-U}BmUG%+r&B>9$8UT)8gMR=3 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/table/images/table_delete_col.gif b/webcit/tiny_mce/plugins/table/images/table_delete_col.gif new file mode 100644 index 0000000000000000000000000000000000000000..91f53af02aacbe33b04f782efb164560887d3bfe GIT binary patch literal 163 zcmV;U09^k^Nk%w1VH5xq0K*Fa0s;azZ{ony{xV8pTyKn*qO$Jn>V2Z^b%c^$j^>)S z^85Syjgq3Ovcf`IasU7TA^8LW000jFEC2ui02BZe000C~@X1N5y*TU5Yg=F;j03m~ z*9S7AQZ5E+6`;WiE*xJ4;S4OrVLD zq^HC5lAo_~pYs0x{r~^~A^8LW000jFEC2ui02BZe000D7@X1N5y*TU5>G|Nna879^ z3V9~RxRnWO7y-xJIHT+-78`=#Vo@mc9)Jo^FeDZl1O#9@r7(*PC}E43Bq@Wics$6M ZU5s;*CQxUf_d3_{csz*D~813(lGjTD@2z{n9^mxAJO7)Ys5OF}UnY`dU@qbmky T#N$E3kp`{PZ$%b~i~s;TfG0;) literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/table/images/table_insert_row_after.gif b/webcit/tiny_mce/plugins/table/images/table_insert_row_after.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9c14466138007454958671320914d9a7d8a6db5 GIT binary patch literal 163 zcmV;U09^k^Nk%w1VH5xq0K*Od0s;b3hwZ}J{xV8pU2lbto3eVM^5XCQa(@5FN<(eWPqQV3Ig1XGua#QiUNM~QhRb*u41x>1^iLw6v{&bt_E>x1D!Tyq@xq`0#T6LwOvdL|b z(z4F}lDPhYn!-Y4ng9R*A^8LW000jFEC2ui02BZe000DY@X1N5y*TU5Y5HK87$oTl zLW8cziUMcq3atxINz(*;fcy>zVR(}yP=SSVxhOap#m7;QWHz6J=oGb%7 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/table/images/table_row_props.gif b/webcit/tiny_mce/plugins/table/images/table_row_props.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5c7cc37aaded685d68a6f1d0f5f204415258489 GIT binary patch literal 187 zcmV;s07U;sNk%w1VH5xq0K*CZGD>2SrMS}5-GZj_!qMXH@&2N=(w4mbqOihJVuJnt z{^sQ3lB)8xz|uleasU7TA^8LW000jFEC2ui02BZe000DN@X1N5y*TU5EBnkKj-9KxjG%0%ik9LBwDPfF*DxWw(Ncc#J3` p0@_Nzrf3x2h<5?KWxL^Wx|%>X2mX2#XaIzThJ+o7ii;Hy06QxAQu6=+ literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/table/images/table_split_cells.gif b/webcit/tiny_mce/plugins/table/images/table_split_cells.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ccb1b5f89d35619c9fe7a81957305c93f3ed8fc GIT binary patch literal 210 zcmV;@04@JVNk%w1VH5xq0K)FI0=7!2VKkqmrb#i?scsvdKbY znlMRZVtuQCnZ&Zr{r~^~A^8LW000jFEC2ui02BZe000Dk@X1N5y*TU5Y5HK893<%p zLW8c%iY{mB3dRgiNz(*8!x#pIfU#7qN5Q2I~2E2l>h($ literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/plugins/table/jscripts/cell.js b/webcit/tiny_mce/plugins/table/jscripts/cell.js new file mode 100644 index 000000000..436eaad17 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/jscripts/cell.js @@ -0,0 +1,249 @@ +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); + document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor') + + var inst = tinyMCE.selectedInstance; + var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th"); + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(tinyMCE.getAttrib(tdElm, "style")); + + // Get table cell data + var celltype = tdElm.nodeName.toLowerCase(); + var align = tinyMCE.getAttrib(tdElm, 'align'); + var valign = tinyMCE.getAttrib(tdElm, 'valign'); + var width = trimSize(getStyle(tdElm, 'width', 'width')); + var height = trimSize(getStyle(tdElm, 'height', 'height')); + var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor')); + var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor')); + var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tdElm, 'class'), false); + var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");; + var id = tinyMCE.getAttrib(tdElm, 'id'); + var lang = tinyMCE.getAttrib(tdElm, 'lang'); + var dir = tinyMCE.getAttrib(tdElm, 'dir'); + var scope = tinyMCE.getAttrib(tdElm, 'scope'); + + // Setup form + addClassesToList('class', 'table_cell_styles'); + formObj.bordercolor.value = bordercolor; + formObj.bgcolor.value = bgcolor; + formObj.backgroundimage.value = backgroundimage; + formObj.width.value = width; + formObj.height.value = height; + formObj.id.value = id; + formObj.lang.value = lang; + formObj.style.value = tinyMCE.serializeStyle(st); + selectByValue(formObj, 'align', align); + selectByValue(formObj, 'valign', valign); + selectByValue(formObj, 'class', className); + selectByValue(formObj, 'celltype', celltype); + selectByValue(formObj, 'dir', dir); + selectByValue(formObj, 'scope', scope); + + // Resize some elements + if (isVisible('backgroundimagebrowser')) + document.getElementById('backgroundimage').style.width = '180px'; + + updateColor('bordercolor_pick', 'bordercolor'); + updateColor('bgcolor_pick', 'bgcolor'); +} + +function updateAction() { + tinyMCEPopup.restoreSelection(); + + var inst = tinyMCE.selectedInstance; + var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th"); + var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr"); + var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); + var formObj = document.forms[0]; + + inst.execCommand('mceBeginUndoLevel'); + + switch (getSelectValue(formObj, 'action')) { + case "cell": + var celltype = getSelectValue(formObj, 'celltype'); + var scope = getSelectValue(formObj, 'scope'); + + if (tinyMCE.getParam("accessibility_warnings")) { + if (celltype == "th" && scope == "") + var answer = confirm(tinyMCE.getLang('lang_table_missing_scope', '', true)); + else + var answer = true; + + if (!answer) + return; + } + + updateCell(tdElm); + break; + + case "row": + var cell = trElm.firstChild; + + if (cell.nodeName != "TD" && cell.nodeName != "TH") + cell = nextCell(cell); + + do { + cell = updateCell(cell, true); + } while ((cell = nextCell(cell)) != null); + + break; + + case "all": + var rows = tableElm.getElementsByTagName("tr"); + + for (var i=0; i/g, '&gr;'); + + return ' ' + attrib + '="' + value + '"'; +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); + document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); + + var cols = 2, rows = 2, border = 0, cellpadding = "", cellspacing = ""; + var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = ""; + var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = ""; + var inst = tinyMCE.selectedInstance; + var formObj = document.forms[0]; + var elm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); + + tinyMCE.tableElm = elm; + action = tinyMCE.getWindowArg('action'); + if (action == null) + action = tinyMCE.tableElm ? "update" : "insert"; + + if (tinyMCE.tableElm && action != "insert") { + var rowsAr = tinyMCE.tableElm.rows; + var cols = 0; + for (var i=0; i cols) + cols = rowsAr[i].cells.length; + + cols = cols; + rows = rowsAr.length; + + st = tinyMCE.parseStyle(tinyMCE.getAttrib(tinyMCE.tableElm, "style")); + border = trimSize(getStyle(elm, 'border', 'borderWidth')); + cellpadding = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellpadding', ""); + cellspacing = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellspacing', ""); + width = trimSize(getStyle(elm, 'width', 'width')); + height = trimSize(getStyle(elm, 'height', 'height')); + bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor')); + bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor')); + align = tinyMCE.getAttrib(tinyMCE.tableElm, 'align', align); + className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tinyMCE.tableElm, 'class'), false); + id = tinyMCE.getAttrib(tinyMCE.tableElm, 'id'); + summary = tinyMCE.getAttrib(tinyMCE.tableElm, 'summary'); + style = tinyMCE.serializeStyle(st); + dir = tinyMCE.getAttrib(tinyMCE.tableElm, 'dir'); + lang = tinyMCE.getAttrib(tinyMCE.tableElm, 'lang'); + background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + + orgTableWidth = width; + orgTableHeight = height; + + action = "update"; + } + + addClassesToList('class', "table_styles"); + + // Update form + selectByValue(formObj, 'align', align); + selectByValue(formObj, 'class', className); + formObj.cols.value = cols; + formObj.rows.value = rows; + formObj.border.value = border; + formObj.cellpadding.value = cellpadding; + formObj.cellspacing.value = cellspacing; + formObj.width.value = width; + formObj.height.value = height; + formObj.bordercolor.value = bordercolor; + formObj.bgcolor.value = bgcolor; + formObj.id.value = id; + formObj.summary.value = summary; + formObj.style.value = style; + formObj.dir.value = dir; + formObj.lang.value = lang; + formObj.backgroundimage.value = background; + formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); + + updateColor('bordercolor_pick', 'bordercolor'); + updateColor('bgcolor_pick', 'bgcolor'); + + // Resize some elements + if (isVisible('backgroundimagebrowser')) + document.getElementById('backgroundimage').style.width = '180px'; + + // Disable some fields in update mode + if (action == "update") { + formObj.cols.disabled = true; + formObj.rows.disabled = true; + } +} + +function changedSize() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + var width = formObj.width.value; + if (width != "") + st['width'] = tinyMCE.getParam("inline_styles") ? getCSSSize(width) : ""; + else + st['width'] = ""; + + var height = formObj.height.value; + if (height != "") + st['height'] = getCSSSize(height); + else + st['height'] = ""; + + formObj.style.value = tinyMCE.serializeStyle(st); +} + +function changedBackgroundImage() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + st['background-image'] = "url('" + formObj.backgroundimage.value + "')"; + + formObj.style.value = tinyMCE.serializeStyle(st); +} + +function changedBorder() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + // Update border width if the element has a color + if (formObj.border.value != "" && formObj.bordercolor.value != "") + st['border-width'] = formObj.border.value + "px"; + + formObj.style.value = tinyMCE.serializeStyle(st); +} + +function changedColor() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + st['background-color'] = formObj.bgcolor.value; + + if (formObj.bordercolor.value != "") { + st['border-color'] = formObj.bordercolor.value; + + // Add border-width if it's missing + if (!st['border-width']) + st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px"; + } + + formObj.style.value = tinyMCE.serializeStyle(st); +} + +function changedStyle() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + if (st['background-image']) + formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + else + formObj.backgroundimage.value = ''; + + if (st['width']) + formObj.width.value = trimSize(st['width']); + + if (st['height']) + formObj.height.value = trimSize(st['height']); + + if (st['background-color']) { + formObj.bgcolor.value = st['background-color']; + updateColor('bgcolor_pick','bgcolor'); + } + + if (st['border-color']) { + formObj.bordercolor.value = st['border-color']; + updateColor('bordercolor_pick','bordercolor'); + } +} diff --git a/webcit/tiny_mce/plugins/table/langs/ar.js b/webcit/tiny_mce/plugins/table/langs/ar.js new file mode 100644 index 000000000..478ece66f --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/ar.js @@ -0,0 +1,43 @@ +// Arabic lang variables + +tinyMCE.addToLang('',{ +table_desc : 'إدراج/تحرير جدول', +table_insert_row_before_desc : 'Insert row before', +table_insert_row_after_desc : 'Insert row after', +table_delete_row_desc : 'حذف صفوف', +table_insert_col_before_desc : 'Insert column before', +table_insert_col_after_desc : 'Insert column after', +table_delete_col_desc : 'حذف أعمدة', +insert_table_title : 'إدراج/تحرير جدول', +insert_table_width : 'العرض', +insert_table_height : 'الارتفاع', +insert_table_cols : 'أعمدة', +insert_table_rows : 'صفوف', +insert_table_cellspacing : 'تباعد الخلايا', +insert_table_cellpadding : 'المسافة البادئة', +insert_table_border : 'سمك الحدود', +insert_table_align : 'المحاذاة', +insert_table_align_default : 'Default', +insert_table_align_left : 'يسار', +insert_table_align_right : 'يمين', +insert_table_align_middle : 'وسط', +insert_table_class : 'Class', +table_row_title : 'Table row properties', +table_cell_title : 'Table cell properties', +table_row_desc : 'Table row properties', +table_cell_desc : 'Table cell properties', +insert_table_valign : 'Vertical alignment', +insert_table_align_top : 'Top', +insert_table_align_bottom : 'Bottom', +table_props_desc : 'Table properties', +table_bordercolor : 'Border color', +table_bgcolor : 'Bg color', +table_merge_cells_title : 'Merge table cells', +table_split_cells_desc : 'Split table cells', +table_merge_cells_desc : 'Merge table cells', +table_cut_row_desc : 'Cut table row', +table_copy_row_desc : 'Copy table row', +table_paste_row_before_desc : 'Paste table row before', +table_paste_row_after_desc : 'Paste table row after', +table_insert_desc : 'Insert a new table' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/cs.js b/webcit/tiny_mce/plugins/table/langs/cs.js new file mode 100644 index 000000000..81979bb55 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/cs.js @@ -0,0 +1,49 @@ +/** + * Czech lang variables + * encoding: utf-8 + * + * $Id: cs.js,v 1.10 2005/10/18 13:59:43 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +table_desc : 'Vložit novou tabulku', +table_insert_row_before_desc : 'Vložit řádek před', +table_insert_row_after_desc : 'Vložit řádek po', +table_delete_row_desc : 'Smazat řádek', +table_insert_col_before_desc : 'Vložit sloupec před', +table_insert_col_after_desc : 'Vložit sloupec po', +table_delete_col_desc : 'Odstranit sloupec', +insert_table_title : 'Vložit/upravit tabulku', +insert_table_width : 'Šířka', +insert_table_height : 'Výška', +insert_table_cols : 'Sloupce', +insert_table_rows : 'Řádky', +insert_table_cellspacing : 'Vnější okraj buněk', +insert_table_cellpadding : 'Vnitřní okraj buněk', +insert_table_border : 'Rámeček', +insert_table_align : 'Zarovnání', +insert_table_align_default : 'Výchozí', +insert_table_align_left : 'Vlevo', +insert_table_align_right : 'Vpravo', +insert_table_align_middle : 'Na střed', +insert_table_class : 'Třída', +table_row_title : 'Vlastnosti řádku', +table_cell_title : 'Vlastnosti buňky', +table_row_desc : 'Vlastnosti řádku', +table_cell_desc : 'Vlastnosti řádku', +insert_table_valign : 'Vertikální zarovnání', +insert_table_align_top : 'Nahoru', +insert_table_align_bottom : 'Dolů', +table_props_desc : 'Vlastnosti tabulky', +table_bordercolor : 'Barva rámečku', +table_bgcolor : 'Barva pozadí', +table_merge_cells_title : 'Sloučit buňky', +table_split_cells_desc : 'Rozdělit buňky', +table_merge_cells_desc : 'Sloučit buňky', +table_cut_row_desc : 'Vyjmout řádek', +table_copy_row_desc : 'Kopírovat řádek', +table_paste_row_before_desc : 'Vložit řádek před', +table_paste_row_after_desc : 'Vložit řádek za', +table_insert_desc : 'Vložit tabulku' +}); + diff --git a/webcit/tiny_mce/plugins/table/langs/cy.js b/webcit/tiny_mce/plugins/table/langs/cy.js new file mode 100644 index 000000000..8b54687ef --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/cy.js @@ -0,0 +1,76 @@ +// UK lang variables + +tinyMCE.addToLang('table',{ +general_tab : 'Cyffredinol', +advanced_tab : 'Uwch', +general_props : 'Priodoleddau cyffredinol', +advanced_props : 'Priodoleddau uwch', +desc : 'Mewnosod tabl newydd', +row_before_desc : 'Mewnosod rhes cyn', +row_after_desc : 'Mewnosod rhes ar ôl', +delete_row_desc : 'Dileu rhes', +col_before_desc : 'Mewnosod colofn cyn', +col_after_desc : 'Mewnosod colofn ar ôl', +delete_col_desc : 'Dileu colofn', +rowtype : 'Rhan tabl y rhes', +title : 'Mewnosod/golygu tabl', +width : 'Lled', +height : 'Uchder', +cols : 'Colofnau', +rows : 'Rhesi', +cellspacing : 'Bylchu celloedd', +cellpadding : 'Padio celliodd', +border : 'Ffin', +align : 'Unioni', +align_default : 'Arferol', +align_left : 'Chwith', +align_right : 'Dde', +align_middle : 'Canol', +row_title : 'Priodoleddau rhes tabl', +cell_title : 'Priodoleddau cell tabl', +cell_type : 'Math cell', +row_desc : 'Priodoleddau rhes tabl', +cell_desc : 'Priodoleddau cell tabl', +valign : 'Unioni fertigol', +align_top : 'Brig', +align_bottom : 'Gwaelod', +props_desc : 'Priodoleddau tabl', +bordercolor : 'Lliw ffin', +bgcolor : 'Lliw cefndir', +merge_cells_title : 'Uno celloedd tabl', +split_cells_desc : 'Rhannu celloedd tabl', +merge_cells_desc : 'Uno celloedd tabl', +cut_row_desc : 'Torri rhes tabl', +copy_row_desc : 'Copïo rhes tabl', +paste_row_before_desc : 'Gludo rhes tabl cyn', +paste_row_after_desc : 'Gludo rhes tabl ar ôl', +id : 'Id', +style: 'Arddull', +langdir : 'Cyfeiriad iaith', +langcode : 'Côd iaith', +mime : 'Math MIME y targed', +ltr : 'Chwith i\'r dde', +rtl : 'Dde i\'r chwith', +bgimage : 'Delwedd cefndir', +summary : 'Crynodeb', +td : "Data", +th : "Pennawd", +cell_cell : 'Diweddaru\'r gell bresennoll', +cell_row : 'Diweddaru holl gelloedd y rhes', +cell_all : 'Diweddaru holl gelloedd y tabl', +row_row : 'Diweddaru\'r rhes presennol', +row_odd : 'Diweddaru rhesi odrif y tabl', +row_even : 'Diweddaru rhesi eilrif y tabl', +row_all : 'Diweddaru holl rhesi\'r tabl', +thead : 'Pennawd Tabl', +tbody : 'Corff Tabl', +tfoot : 'Troedyn Tabl', +del : 'Dileu tabl', +scope : 'Maes', +row : 'Rhes', +col : 'Colofn', +rowgroup : 'Grŵp Rhesi', +colgroup : 'Grŵp Colofnau', +missing_scope: 'Wyt ti\'n sicr eisiau parhau heb gynnwys maes ar gyfer y cell pennawd tabl hwn? Heb un, gallai fod yn anodd i rai defnyddwyr gydag anableddau ddeall cynnwys neu ddata y tabl.', +cellprops_delta_width : 50 +}); diff --git a/webcit/tiny_mce/plugins/table/langs/da.js b/webcit/tiny_mce/plugins/table/langs/da.js new file mode 100644 index 000000000..5cef2e857 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/da.js @@ -0,0 +1,69 @@ +// DK lang variables contributed by Jan Moelgaard + +tinyMCE.addToLang('table',{ +general_tab : 'Generelt', +advanced_tab : 'Avanceret', +general_props : 'Generelle egenskaber', +advanced_props : 'Avancerede egenskaber', +desc : 'Indsætter ny tabel', +row_before_desc : 'Indsæt række foran', +row_after_desc : 'Indsæt række efter', +delete_row_desc : 'Slet række', +col_before_desc : 'Indsæt kolonne foran', +col_after_desc : 'Indsæt kolonner efter', +delete_col_desc : 'Fjern kolonne', +rowtype : 'Række i tabeldelen', +title : 'Indsæt eller rediger tabel', +width : 'Bredde', +height : 'Højde', +cols : 'Kolonner', +rows : 'Rækker', +cellspacing : 'Cellemargin', +cellpadding : 'Indvendig margin', +border : 'Kant', +align : 'Justering', +align_default : 'Standard', +align_left : 'Venstre', +align_right : 'Højre', +align_middle : 'Centreret', +row_title : 'Rækkeegenskaber', +cell_title : 'Celleegenskaber', +cell_type : 'Celletype', +row_desc : 'Rækkeegenskaber', +cell_desc : 'Celleegenskaber', +valign : 'Vertikal justering', +align_top : 'Top', +align_bottom : 'Bund', +props_desc : 'Tabelegenskaber', +bordercolor : 'Kantfarve', +bgcolor : 'Baaggrundfarve', +merge_cells_title : 'Flet celler', +split_cells_desc : 'Del celler', +merge_cells_desc : 'Flet celler', +cut_row_desc : 'Del kolonne', +copy_row_desc : 'Kopier kolonne', +paste_row_before_desc : 'Indsæt kolonne foran', +paste_row_after_desc : 'Indsæt kolonne efter', +id : 'Tabel-Id', +style: 'Style', +langdir : 'Tekstretning', +langcode : 'Sprogkode', +mime : 'Target MIME type', +ltr : 'Venstre til højre', +rtl : 'Højre til venstre', +bgimage : 'Baggrundbillede', +summary : 'Opsummering', +td : "Data", +th : "Overskrift", +cell_cell : 'Opdater aktuel celle', +cell_row : 'Opdater alle celler i kolonnen', +cell_all : 'Opdater alle celler i tabellen', +row_row : 'Opdater aktuel kolonne', +row_odd : 'Opdater ulige kolonner i tabellen', +row_even : 'Opdater lige kolonner i tabellen', +row_all : 'Opdater alle kolonner i tabellen', +thead : 'Tabeloverskrift', +tbody : 'Tabelindhold', +tfoot : 'Tabelfodnote', +del : 'Slet tabel' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/de.js b/webcit/tiny_mce/plugins/table/langs/de.js new file mode 100644 index 000000000..5465f4a24 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/de.js @@ -0,0 +1,76 @@ +// DE lang variables + +tinyMCE.addToLang('table',{ +general_tab : 'Allgemein', +advanced_tab : 'Erweitert', +general_props : 'Allgemeine Eigenschaften', +advanced_props : 'Erweiterte Eigenschaften', +desc : 'Neue Tabelle einfügen', +row_before_desc : 'Zeile oberhalb einfügen', +row_after_desc : 'Zeile unterhalb einfügen', +delete_row_desc : 'Zeile löschen', +col_before_desc : 'Spalte nach links einfügen', +col_after_desc : 'Spalte nach rechts einfügen', +delete_col_desc : 'Spalte löschen', +rowtype : 'Zeile in Tabellen-Teil', +title : 'Tabelle hinzufügen/bearbeiten', +width : 'Breite', +height : 'Höhe', +cols : 'Spalten', +rows : 'Zeilen', +cellspacing : 'Zellenabstand', +cellpadding : 'Zellenauffüllung', +border : 'Rahmen', +align : 'Ausrichtung', +align_default : 'Standard', +align_left : 'Links', +align_right : 'Rechts', +align_middle : 'Zentriert', +row_title : 'Zeileneigenschaften', +cell_title : 'Zelleneigenschaften', +cell_type : 'Zellentyp', +row_desc : 'Zeileneigenschaften', +cell_desc : 'Zelleneigenschaften', +valign : 'Vertikale Ausrichtung', +align_top : 'Oben', +align_bottom : 'Unten', +props_desc : 'Tabelleneigenschaften', +bordercolor : 'Rahmenfarbe', +bgcolor : 'Hintergrundfarbe', +merge_cells_title : 'Zellen zusammenfügen', +split_cells_desc : 'Zelle teilen', +merge_cells_desc : 'Zellen zusammenfügen', +cut_row_desc : 'Zeile ausschneiden', +copy_row_desc : 'Zeile kopieren', +paste_row_before_desc : 'Zeile oberhalb einfügen', +paste_row_after_desc : 'Zeile unterhalb einfügen', +id : 'ID', +style: 'CSS-Stil', +langdir : 'Sprachrichtung', +langcode : 'Sprachcode', +mime : 'MIME-Typ', +ltr : 'Von links nach rechts', +rtl : 'Von rechts nach links', +bgimage : 'Hintergrundfarbe', +summary : 'Zusammenfassung', +td : "Daten", +th : "Kopfzeile", +cell_cell : 'Diese Zelle aktualisieren', +cell_row : 'Alle Zellen in dieser Zeile aktualisieren', +cell_all : 'Alle Zellen in dieser Tabelle aktualisieren', +row_row : 'Diese Zeile aktualisieren', +row_odd : 'Ungerade Zeilen aktualisieren', +row_even : 'Gerade Zeilen aktualisieren', +row_all : 'Alle Zeilen in dieser Tabelle aktualisieren', +thead : 'Tabellenkopf', +tbody : 'Tabellenkörper', +tfoot : 'Tabellenfuß', +del : 'Tabelle löschen', +scope : 'Scope', +row : 'Row', +col : 'Col', +rowgroup : 'Row Group', +colgroup : 'Col Group', +missing_scope: 'Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.', +table_delta_width : 45 +}); diff --git a/webcit/tiny_mce/plugins/table/langs/el.js b/webcit/tiny_mce/plugins/table/langs/el.js new file mode 100644 index 000000000..7b329245f --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/el.js @@ -0,0 +1,43 @@ +// Greek lang variables by Jacaranda Bill + +tinyMCE.addToLang('',{ +table_desc : 'ÅéóáãùãÞ ðßíáêá', +table_insert_row_before_desc : 'ÅéóáãùãÞ ãñáììÞò åðÜíù', +table_insert_row_after_desc : 'ÅéóáãùãÞ ãñáììÞò êÜôù', +table_delete_row_desc : 'ÄéáãñáöÞ ãñáììÞò', +table_insert_col_before_desc : 'ÅéóáãùãÞ óôÞëçò áñéóôåñÜ', +table_insert_col_after_desc : 'ÅéóáãùãÞ óôÞëçò äåîéÜ', +table_delete_col_desc : 'ÄéáãñáöÞ óôÞëçò', +insert_table_title : 'ÅéóáãùãÞ/Äéüñèùóç ðßíáêá', +insert_table_width : 'ÐëÜôïò', +insert_table_height : '¾øïò', +insert_table_cols : 'ÓôÞëåò', +insert_table_rows : 'ÃñáììÝò', +insert_table_cellspacing : 'ÄéÜóôé÷ï', +insert_table_cellpadding : 'ÃÝìéóìá', +insert_table_border : 'Ðåñßãñáììá', +insert_table_align : 'Óôïß÷éóç', +insert_table_align_default : 'Ðñïêáè.', +insert_table_align_left : 'ÁñéóôåñÜ', +insert_table_align_right : 'ÄåîéÜ', +insert_table_align_middle : 'Óôï êÝíôñï', +insert_table_class : 'ÊëÜóç', +table_row_title : 'Table row properties', +table_cell_title : 'Table cell properties', +table_row_desc : 'Table row properties', +table_cell_desc : 'Table cell properties', +insert_table_valign : 'Vertical alignment', +insert_table_align_top : 'Top', +insert_table_align_bottom : 'Bottom', +table_props_desc : 'Table properties', +table_bordercolor : 'Border color', +table_bgcolor : 'Bg color', +table_merge_cells_title : 'Merge table cells', +table_split_cells_desc : 'Split table cells', +table_merge_cells_desc : 'Merge table cells', +table_cut_row_desc : 'Cut table row', +table_copy_row_desc : 'Copy table row', +table_paste_row_before_desc : 'Paste table row before', +table_paste_row_after_desc : 'Paste table row after', +table_insert_desc : 'Insert a new table' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/en.js b/webcit/tiny_mce/plugins/table/langs/en.js new file mode 100644 index 000000000..b0f125c83 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/en.js @@ -0,0 +1,75 @@ +// UK lang variables + +tinyMCE.addToLang('table',{ +general_tab : 'General', +advanced_tab : 'Advanced', +general_props : 'General properties', +advanced_props : 'Advanced properties', +desc : 'Inserts a new table', +row_before_desc : 'Insert row before', +row_after_desc : 'Insert row after', +delete_row_desc : 'Delete row', +col_before_desc : 'Insert column before', +col_after_desc : 'Insert column after', +delete_col_desc : 'Remove column', +rowtype : 'Row in table part', +title : 'Insert/Modify table', +width : 'Width', +height : 'Height', +cols : 'Columns', +rows : 'Rows', +cellspacing : 'Cellspacing', +cellpadding : 'Cellpadding', +border : 'Border', +align : 'Alignment', +align_default : 'Default', +align_left : 'Left', +align_right : 'Right', +align_middle : 'Center', +row_title : 'Table row properties', +cell_title : 'Table cell properties', +cell_type : 'Cell type', +row_desc : 'Table row properties', +cell_desc : 'Table cell properties', +valign : 'Vertical alignment', +align_top : 'Top', +align_bottom : 'Bottom', +props_desc : 'Table properties', +bordercolor : 'Border color', +bgcolor : 'Background color', +merge_cells_title : 'Merge table cells', +split_cells_desc : 'Split table cells', +merge_cells_desc : 'Merge table cells', +cut_row_desc : 'Cut table row', +copy_row_desc : 'Copy table row', +paste_row_before_desc : 'Paste table row before', +paste_row_after_desc : 'Paste table row after', +id : 'Id', +style: 'Style', +langdir : 'Language direction', +langcode : 'Language code', +mime : 'Target MIME type', +ltr : 'Left to right', +rtl : 'Right to left', +bgimage : 'Background image', +summary : 'Summary', +td : "Data", +th : "Header", +cell_cell : 'Update current cell', +cell_row : 'Update all cells in row', +cell_all : 'Update all cells in table', +row_row : 'Update current row', +row_odd : 'Update odd rows in table', +row_even : 'Update even rows in table', +row_all : 'Update all rows in table', +thead : 'Table Head', +tbody : 'Table Body', +tfoot : 'Table Foot', +del : 'Delete table', +scope : 'Scope', +row : 'Row', +col : 'Col', +rowgroup : 'Row Group', +colgroup : 'Col Group', +missing_scope: 'Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/es.js b/webcit/tiny_mce/plugins/table/langs/es.js new file mode 100644 index 000000000..8efb025b8 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/es.js @@ -0,0 +1,84 @@ +/** + * ES lang variables + * + * Authors : Alvaro Velasco, + * Adolfo Sanz De Diego (asanzdiego) , + * Carlos C Soto (eclipxe) + * Last Updated : October 17, 2005 + * TinyMCE Version : 2.0RC3 + */ + +tinyMCE.addToLang('table',{ +general_tab : 'General', +advanced_tab : 'Avanzado', +general_props : 'Propiedades generales', +advanced_props : 'Propiedades avanzadas', +desc : 'Insertar/Modificar tabla', +row_before_desc : 'Insertar una fila antes', +row_after_desc : 'Insert una fila después', +delete_row_desc : 'Eliminar fila', +col_before_desc : 'Insertar una columna antes', +col_after_desc : 'Insertar una columna después', +delete_col_desc : 'Eliminar columna', +rowtype : 'File en parte de tabla', +title : 'Insertar/Modificar tabla', +width : 'Ancho', +height : 'ALto', +cols : 'Columnas', +rows : 'Filas', +cellspacing : 'Espacio entre celdas', +cellpadding : 'Borde interior de las celdas', +border : 'Borde', +align : 'Alineación horizontal', +align_default : 'Defecto', +align_left : 'Izquierda', +align_right : 'Derecha', +align_middle : 'Centrado', +row_title : 'Propiedades de la fila', +cell_title : 'Propiedades de la celda', +cell_type : 'Tipo de celda', +row_desc : 'Propiedades de la fila', +cell_desc : 'Propiedades de la celda', +valign : 'Alineación vertical', +align_top : 'Arriba', +align_bottom : 'Abajo', +props_desc : 'Propiedades de la tabla', +bordercolor : 'Color del borde', +bgcolor : 'Color del fondo', +merge_cells_title : 'Combinar celdas', +split_cells_desc : 'Dividir celdas', +merge_cells_desc : 'Combinar celdas', +cut_row_desc : 'Cortar fila', +copy_row_desc : 'Copiar fila', +paste_row_before_desc : 'Pegar fila antes', +paste_row_after_desc : 'Pegar fila después', +id : 'Id', +style: 'Estilo', +langdir : 'Dirección del texto', +langcode : 'Código del idioma', +mime : 'Tipo MIME del target', +ltr : 'De izquierda a derecha', +rtl : 'De derecha a izquierda', +bgimage : 'Imagen de fondo', +summary : 'Resumen', +td : "Datos", +th : "Cabecera", +cell_cell : 'Actualizar la celda actual', +cell_row : 'Actualizar todas las celdas de la fila', +cell_all : 'Actualizar todas las celdas de la tabla', +row_row : 'Actualizar la fila actual', +row_odd : 'Actualizar las filas impares de la tabla', +row_even : 'Actualizar las filas pares de la tabla', +row_all : 'Actualizar todas las filas de la tabla', +thead : 'Cabecera de la tabla', +tbody : 'Cuerpo de la tabla', +tfoot : 'Pie de la tabla', +del : 'Eliminar tabla', +scope : 'Alcance', +row : 'Fila', +col : 'Columna', +rowgroup : 'Grupo de filas', +colgroup : 'Grupo de columnas', +missing_scope: '¿Estás seguro que quieres continuar sin especificar el alcance para esta celda de tipo cabecera? Sin ello, puede dificultar a algunos usuarios con discapacidades el poder entender el contenido o los datos mostrados en la tabla.', +cellprops_delta_width : 55 +}); diff --git a/webcit/tiny_mce/plugins/table/langs/fa.js b/webcit/tiny_mce/plugins/table/langs/fa.js new file mode 100644 index 000000000..101519fc4 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/fa.js @@ -0,0 +1,47 @@ +// IR lang variables +// Persian (Farsi) language pack (for IRAN) +// By: Morteza Zafari +// Lost@LostLord.com +// http://www.LostLord.com + +tinyMCE.addToLang('',{ +table_desc : '??? ???? ????', +table_insert_row_before_desc : '??? ??? ???? ??? ?? ??? ????', +table_insert_row_after_desc : '??? ??? ???? ?? ?? ??? ????', +table_delete_row_desc : '??? ???', +table_insert_col_before_desc : '??? ???? ???? ??? ?? ???? ????', +table_insert_col_after_desc : '??? ???? ???? ?? ?? ???? ????', +table_delete_col_desc : '??? ????', +insert_table_title : '??? ? ?????? ????', +insert_table_width : '???', +insert_table_height : '??????', +insert_table_cols : '????? ??????', +insert_table_rows : '????? ?????', +insert_table_cellspacing : '????? ?? ???? ????', +insert_table_cellpadding : '????? ??? ?? ?????? ????', +insert_table_border : '?????', +insert_table_align : '??? ???? ????', +insert_table_align_default : '??? ???', +insert_table_align_left : '??', +insert_table_align_right : '????', +insert_table_align_middle : '???', +insert_table_class : '????', +table_row_title : 'Table row properties', +table_cell_title : 'Table cell properties', +table_row_desc : 'Table row properties', +table_cell_desc : 'Table cell properties', +insert_table_valign : 'Vertical alignment', +insert_table_align_top : 'Top', +insert_table_align_bottom : 'Bottom', +table_props_desc : 'Table properties', +table_bordercolor : 'Border color', +table_bgcolor : 'Bg color', +table_merge_cells_title : 'Merge table cells', +table_split_cells_desc : 'Split table cells', +table_merge_cells_desc : 'Merge table cells', +table_cut_row_desc : 'Cut table row', +table_copy_row_desc : 'Copy table row', +table_paste_row_before_desc : 'Paste table row before', +table_paste_row_after_desc : 'Paste table row after', +table_insert_desc : 'Insert a new table' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/fi.js b/webcit/tiny_mce/plugins/table/langs/fi.js new file mode 100644 index 000000000..1c144e366 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/fi.js @@ -0,0 +1,77 @@ +// FI lang variables by Urho Konttori from Absolutions +// Updated by Tuomo Aura, Ateco.fi + +tinyMCE.addToLang('table',{ +general_tab : 'Yleiset', +advanced_tab : 'Edistyneemmät', +general_props : 'Yleisasetukset', +advanced_props : 'Edistyneemmät asetukset', +desc : 'Lisää uusi taulukko', +row_before_desc : 'Lisää rivi edelle', +row_after_desc : 'Lisää rivi jälkeen', +delete_row_desc : 'Poista rivi', +col_before_desc : 'Lisää sarake edelle', +col_after_desc : 'Lisää sarake jälkeen', +delete_col_desc : 'Poista sarake', +rowtype : 'Row in table part', +title : 'Lisää/Muokkaa taulukkoa', +width : 'Leveys', +height : 'Korkeus', +cols : 'Saraketta', +rows : 'Riviä', +cellspacing : 'Cellspacing', +cellpadding : 'Cellpadding', +border : 'Reuna', +align : 'Asettelu', +align_default : 'Oletus', +align_left : 'Vasen', +align_right : 'Oikea', +align_middle : 'Keskelle', +row_title : 'Rivin ominaisuudet', +cell_title : 'Sarakkeen ominaisuudet', +cell_type : 'Solun tyyppi', +row_desc : 'Rivin ominaisuudet', +cell_desc : 'Solun ominaisuudet', +valign : 'Pystysuora asettelu', +align_top : 'Yläreuna', +align_bottom : 'Alareuna', +props_desc : 'Taulukon ominaisuudet', +bordercolor : 'Reunan väri', +bgcolor : 'Taustaväri', +merge_cells_title : 'Yhdistä taulukon solut', +split_cells_desc : 'Erota taulukon solut', +merge_cells_desc : 'Yhdistä taulukon solut', +cut_row_desc : 'Leikkaa taulukon rivi', +copy_row_desc : 'Kopioi taulukon rivi', +paste_row_before_desc : 'Liitä taulukon rivi edelle', +paste_row_after_desc : 'Liitä taulukon rivi jälkeen', +id : 'Id', +style: 'Tyyli', +langdir : 'Kielen suunta', +langcode : 'Kielikoodi', +mime : 'Kohteen MIME-tyyppi', +ltr : 'Vasemmalta oikealle', +rtl : 'Oikealta vasemmalle', +bgimage : 'Taustakuva', +summary : 'Yhteenveto', +td : "Data", +th : "Otsikko", +cell_cell : 'Päivitä kyseinen solu', +cell_row : 'Päivitä kaikki solut rivissä', +cell_all : 'Päivitä kaikki solut taulukossa', +row_row : 'Päivitä kyseinen rivi', +row_odd : 'Päivitä parittomat rivit', +row_even : 'Päivitä parilliset rivit', +row_all : 'Päivitä kaikki rivit', +thead : 'Table Head', +tbody : 'Table Body', +tfoot : 'Table Foot', +del : 'Poista taulukko', +scope : 'Scope', +row : 'Rivi', +col : 'Sarake', +rowgroup : 'Riviryhmä', +colgroup : 'Sarakeryhmä', +missing_scope: 'Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.', +cellprops_delta_width : 50 +}); diff --git a/webcit/tiny_mce/plugins/table/langs/fr.js b/webcit/tiny_mce/plugins/table/langs/fr.js new file mode 100644 index 000000000..f788aac26 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/fr.js @@ -0,0 +1,77 @@ +// French lang variables by Laurent Dran +// Modifié par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('table',{ +general_tab : 'Général', +advanced_tab : 'Avancé', +general_props : 'Propriétés générales', +advanced_props : 'Propriétés avancées', +desc : 'Insérer/Modifier un tableau', +row_before_desc : 'Insérer une rangée avant', +row_after_desc : 'Insérer une rangée après', +delete_row_desc : 'Effacer la rangée', +col_before_desc : 'Insérer une colonne avant', +col_after_desc : 'Insérer une colonne après', +delete_col_desc : 'Effacer la colonne', +rowtype : 'Type de rangée', +title : 'Gestionnaire de tableau', +width : 'Largeur', +height : 'Hauteur', +cols : 'Colonnes', +rows : 'Rangées', +cellspacing : 'Entre les cellules', +cellpadding : 'Marges intérieures', +border : 'Bordures', +align : 'Alignement horizontal', +align_default : 'Par défault', +align_left : 'À gauche', +align_right : 'À droite', +align_middle : 'Centré', +row_title : 'Propriétés des rangées', +cell_title : 'Propriétés des cellules', +cell_type : 'Type', +row_desc : 'Propriétés des rangées', +cell_desc : 'Propriétés des cellules', +valign : 'Alignement vertical', +align_top : 'Haut', +align_bottom : 'Bas', +props_desc : 'Propriétés du tableau', +bordercolor : 'Couleur des bordures', +bgcolor : 'Couleur d\'arrière-plan', +merge_cells_title : 'Fusionner les cellules', +split_cells_desc : 'Scinder les cellules', +merge_cells_desc : 'Fusionner les cellules', +cut_row_desc : 'Éliminer la rangée', +copy_row_desc : 'Copier la rangée', +paste_row_before_desc : 'Coller la rangée avant', +paste_row_after_desc : 'Coller la rangée après', +id : 'Id', +style: 'Style en ligne', +langdir : 'Sens d\'écriture', +langcode : 'Code de langue', +mime : 'Type MIME de la cible', +ltr : 'Vers la droite', +rtl : 'Vers la gauche', +bgimage : 'Image d\'arrière-plan', +summary : 'Descriptif', +td : "Donnée", +th : "En-tête", +cell_cell : 'Appliquer à la cellule', +cell_row : 'Appliquer à toute la rangée', +cell_all : 'Appliquer à tout le tableau', +row_row : 'Appliquer à la rangée', +row_odd : 'Appliquer aux rangées pair', +row_even : 'Appliquer aux rangées impair', +row_all : 'Appliquer à toutes les rangées', +thead : 'En-tête', +tbody : 'Corps', +tfoot : 'Pied', +del : 'Effacer le tableau', +scope : 'Attribut scope', +row : 'Rangée', +col : 'Colonne', +rowgroup : 'Groupe de rangées', +colgroup : 'Groupe de colonnes', +missing_scope: 'Les attributs scope rendraient votre tableau de données plus\naccessible à certains groupes d\'utilisateurs.\n\nÊtes-vous sûr de ne pas vouloir spécifier\nd\'attribut scope aux cellules d\'en-tête ?\n\n', +cellprops_delta_width : 50 +}); diff --git a/webcit/tiny_mce/plugins/table/langs/fr_ca.js b/webcit/tiny_mce/plugins/table/langs/fr_ca.js new file mode 100644 index 000000000..282034c05 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/fr_ca.js @@ -0,0 +1,43 @@ +// Canadian French lang variables by Virtuelcom last modification: 2005-06-15 + +tinyMCE.addToLang('',{ +table_desc : 'Insérer un nouveau tableau', +table_insert_row_before_desc : 'Insérer une ligne avant', +table_insert_row_after_desc : 'Insérer une ligne après', +table_delete_row_desc : 'Supprimer la ligne', +table_insert_col_before_desc : 'Insérer une colonne avant', +table_insert_col_after_desc : 'Insérer une colonne après', +table_delete_col_desc : 'Supprimer la colonne', +insert_table_title : 'Insérer/Modifier le tableau', +insert_table_width : 'Largeur', +insert_table_height : 'Hauteur', +insert_table_cols : 'Colonnes', +insert_table_rows : 'Lignes', +insert_table_cellspacing : 'Cellspacing', +insert_table_cellpadding : 'Cellpadding', +insert_table_border : 'Bordure', +insert_table_align : 'Alignement', +insert_table_align_default : 'Défaut', +insert_table_align_left : 'Gauche', +insert_table_align_right : 'Droit', +insert_table_align_middle : 'Milieu', +insert_table_class_name : 'Classe CSS', +table_row_title : 'Propriétés de ligne', +table_cell_title : 'Propriétés de cellule', +table_row_desc : 'Propriétés de ligne', +table_cell_desc : 'Propriétés de cellule', +insert_table_valign : 'Alignement vertical', +insert_table_align_top : 'Haut', +insert_table_align_bottom : 'Bas', +table_props_desc : 'Table properties', +table_bordercolor : 'Border color', +table_bgcolor : 'Bg color', +table_merge_cells_title : 'Merge table cells', +table_split_cells_desc : 'Split table cells', +table_merge_cells_desc : 'Merge table cells', +table_cut_row_desc : 'Cut table row', +table_copy_row_desc : 'Copy table row', +table_paste_row_before_desc : 'Paste table row before', +table_paste_row_after_desc : 'Paste table row after', +table_insert_desc : 'Insert a new table' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/he.js b/webcit/tiny_mce/plugins/table/langs/he.js new file mode 100644 index 000000000..a68f6c077 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/he.js @@ -0,0 +1,75 @@ +// HE lang variables + +tinyMCE.addToLang('table',{ +general_tab : 'ëììé', +advanced_tab : 'îú÷ãí', +general_props : 'îàôééðéí ëììééí', +advanced_props : 'îàôééðéí îú÷ãîéí', +desc : 'îëðéñ èáìä çãùä', +row_before_desc : 'äëðñ ùåøä ìôðé', +row_after_desc : 'äëðñ ùåøä àçøé', +delete_row_desc : 'îç÷ ùåøä', +col_before_desc : 'äëðñ èåø ìôðé', +col_after_desc : 'äëðñ èåø àçøé', +delete_col_desc : 'îç÷ èåø', +rowtype : 'ùåøä áçì÷ ùì äèáìä', +title : 'äëðñ/ùðä èáìä', +width : 'øåçá', +height : 'âåáä', +cols : 'èåøéí', +rows : 'ùåøåú', +cellspacing : 'øéååç áéï úàéí', +cellpadding : 'øéôåã úàéí', +border : 'âáåì', +align : 'éùåø', +align_default : 'áøéøú îçãì', +align_left : 'ùîàì', +align_right : 'éîéï', +align_middle : 'îøëæ', +row_title : 'îàôééðé ùåøä áèáìä', +cell_title : 'îàôééðé úà áèáìä', +cell_type : 'ñåâ úà', +row_desc : 'îàôééðé ùåøä áèáìä', +cell_desc : 'îàôééðé úà áèáìä', +valign : 'éùåø àðëé', +align_top : 'ìîòìä', +align_bottom : 'ìîèä', +props_desc : 'îàôééðé èáìä', +bordercolor : 'öáò âáåì', +bgcolor : 'öáò ø÷ò', +merge_cells_title : 'îæâ úàéí áèáìä', +split_cells_desc : 'ôöì úàéí áèáìä', +merge_cells_desc : 'îæâ úàéí áèáìä', +cut_row_desc : 'âæåø ùåøä îäèáìä', +copy_row_desc : 'äòú÷ ùåøä îäèáìä', +paste_row_before_desc : 'äãá÷ ùåøä ìôðé', +paste_row_after_desc : 'äãá÷ ùåøä àçøé', +id : 'Id', +style: 'ñâðåï', +langdir : 'ëéååï ùôä', +langcode : '÷åã ùôä', +mime : 'ñåâ MIME ùì äéòã', +ltr : 'ùîàì ìéîéï', +rtl : 'éîéï ìùîàì', +bgimage : 'úîåðú ø÷ò', +summary : 'ñéëåí', +td : "îéãò", +th : "ëåúøú", +cell_cell : 'òãëï úà ðåëçé', +cell_row : 'òãëï àú ëì äúàéí áùåøä', +cell_all : 'òãëï àú ëì äúàéí áèáìä', +row_row : 'òãëï ùåøä ðåëçéú', +row_odd : 'òãëï ùåøåú àé-æåâéåú áèáìä', +row_even : 'òãëï ùåøåú æåâéåú áèáìä', +row_all : 'òãëï àú ëì äùåøåú áèáìä', +thead : 'ëåúøú äèáìä', +tbody : 'âåó äèáìä', +tfoot : 'ñéëåí äèáìä', +del : 'îç÷ èáìä', +scope : 'úçåí', +row : 'ùåøä', +col : 'èåø', +rowgroup : '÷áåöú ùåøåú', +colgroup : '÷áåöú èåøéí', +missing_scope: 'äàí àúä áèåç ùáøöåðê ìäîùéê îáìé ìöééï àú úçåí äëåúøú ùì äèáìä? áìé ëåúøú îåâãøú, éúëï ëé îùúîùéí áòìé îåâáìåéåú éú÷ùå ìäáéï àú äúåëï àå äîéãò äîåöâéí áèáìä.' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/hu.js b/webcit/tiny_mce/plugins/table/langs/hu.js new file mode 100644 index 000000000..a649eb72b --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/hu.js @@ -0,0 +1,75 @@ +// HU lang variables + +tinyMCE.addToLang('table',{ +general_tab : 'Általános', +advanced_tab : 'Haladó', +general_props : 'Általános beállítások', +advanced_props : 'Haladó beállítások', +desc : 'Új táblázat beszúrása', +row_before_desc : 'Sor beszúrása elé', +row_after_desc : 'Sor beszúrása mögé', +delete_row_desc : 'Sor törlése', +col_before_desc : 'Oszlop beszúrása elé', +col_after_desc : 'Oszlop beszúrása mögé', +delete_col_desc : 'Oszlop törlése', +rowtype : 'Sor a táblázatrészben', +title : 'Táblázat beszúrása/módosítása', +width : 'Hosszúság', +height : 'Szélesség', +cols : 'Oszlopok', +rows : 'Sorok', +cellspacing : 'Cellaköz', +cellpadding : 'Cellakitöltés', +border : 'Keret', +align : 'Elhelyezkedés', +align_default : 'alapértelmezett', +align_left : 'Bal', +align_right : 'Jobb', +align_middle : 'Közép', +row_title : 'Táblázat sor tulajdonságai', +cell_title : 'Táblázat cella tulajdonságai', +cell_type : 'Cella típus', +row_desc : 'Táblázat sor tulajdonságai', +cell_desc : 'Táblázat cella tulajdonságai', +valign : 'Függõleges elhelyezkedés', +align_top : 'Felül', +align_bottom : 'Alul', +props_desc : 'Táblázat tulajdonságai', +bordercolor : 'Keret szín', +bgcolor : 'Háttér szín', +merge_cells_title : 'Tábla celláinak egyesítése', +split_cells_desc : 'Tábla celláinak felosztása', +merge_cells_desc : 'Tábla celláinak egyesítése', +cut_row_desc : 'Táblázat sor kivágása', +copy_row_desc : 'Táblázat sor másolása', +paste_row_before_desc : 'Táblázat sor beillesztése elé', +paste_row_after_desc : 'Táblázat sor beillesztése mögé', +id : 'Azonodító', +style: 'Stílus', +langdir : 'Szövegpozíció', +langcode : 'Szöveg kód', +mime : 'Cél MIME típus', +ltr : 'Balról jobbra', +rtl : 'Jobbról balra', +bgimage : 'Háttérkép', +summary : 'Összefoglaló', +td : "Adat", +th : "Fejléc", +cell_cell : 'Aktuális cella frissítése', +cell_row : 'Minden cella frissítése a sorban', +cell_all : 'Minden cella frissítése a táblában', +row_row : 'Aktuális sor frissítése', +row_odd : 'Páratlan sorok frissítése a táblában', +row_even : 'páros sorok frissítése a táblában', +row_all : 'Minden sor frissítése a táblában', +thead : 'Táblázat fejléc', +tbody : 'Táblázat test', +tfoot : 'Tálázat lábléc', +del : 'Tábla törlése', +scope : 'Scope', +row : 'Row', +col : 'Col', +rowgroup : 'Row Group', +colgroup : 'Col Group', +missing_scope: 'Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/is.js b/webcit/tiny_mce/plugins/table/langs/is.js new file mode 100644 index 000000000..9b23d65c0 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/is.js @@ -0,0 +1,76 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('table',{ +general_tab : 'Almennt', +advanced_tab : 'Sértækt', +general_props : 'Almennar stillingar', +advanced_props : 'Sértækar stillingar', +desc : 'Setja inn nýja töflu', +row_before_desc : 'Bæta röð við fyrir framan', +row_after_desc : 'Bæta röð við fyrir aftan', +delete_row_desc : 'Eyða röð', +col_before_desc : 'Bæta dálk við fyrir framan', +col_after_desc : 'Bæta dálk við fyrir aftan', +delete_col_desc : 'Eyða dálki', +rowtype : 'Röð í töfluhluta', +title : 'Bæta við/breyta töflu', +width : 'Breidd', +height : 'Hæð', +cols : 'Dálkar', +rows : 'Raðir', +cellspacing : 'Reitabil', +cellpadding : 'Reitabólstrun', +border : 'Rammi', +align : 'Textastilling', +align_default : 'Sjálfgild', +align_left : 'Vinstri', +align_right : 'Hægri', +align_middle : 'Miðja', +row_title : 'Stillingar töfluraðar', +cell_title : 'Stillingar töfludálks', +cell_type : 'Reitartegund', +row_desc : 'Stillingar töfluraðar', +cell_desc : 'Stillingar töflureits', +valign : 'Lóðrétt stilling', +align_top : 'Efst', +align_bottom : 'Neðst', +props_desc : 'Stillingar töflu', +bordercolor : 'Rammalitur', +bgcolor : 'Bakgrunnslitur', +merge_cells_title : 'Sameina töflureiti', +split_cells_desc : 'Tvístra töflureitum', +merge_cells_desc : 'Sameina töflureiti', +cut_row_desc : 'Klippa töfluröð', +copy_row_desc : 'Afrita töfluröð', +paste_row_before_desc : 'Skeyta töfluröð fyrir ofan', +paste_row_after_desc : 'Skeyta töfluröð fyrir neðan', +id : 'Id', +style: 'Stíll', +langdir : 'Ritháttur tungumáls', +langcode : 'Tungumálskenni', +mime : 'MIME-tegund tengils', +ltr : 'Vinstri til hægri', +rtl : 'Hægri til vinstri', +bgimage : 'Bakgrunnsmynd', +summary : 'Samantekt', +td : "Gögn", +th : "Haus", +cell_cell : 'Uppfæra núverandi reit', +cell_row : 'Uppfæra alla reiti í röðinni', +cell_all : 'Uppfæra alla reiti töflunnar', +row_row : 'Uppfæra núverandi röð', +row_odd : 'Uppfæra oddatöluraðir', +row_even : 'Uppfæra jafntöluraðir', +row_all : 'Uppfæra allar raðir', +thead : 'Haus töflu', +tbody : 'Meginmál töflu', +tfoot : 'Fótur töflu', +del : 'Eyða töflu', +scope : 'Gildissvið', +row : 'Röð', +col : 'Dálkur', +rowgroup : 'Raðahópur', +colgroup : 'Dálkahópur', +missing_scope: 'Viltu halda áfram án þess að tilgreina gildissvið fyrir haus töflu? Án þess gæti það valdið sumum notendum, til dæmis sjónskertum, vandkvæðum við að skilja innihald töflunnar.', +cellprops_delta_width : 55 +}); diff --git a/webcit/tiny_mce/plugins/table/langs/it.js b/webcit/tiny_mce/plugins/table/langs/it.js new file mode 100644 index 000000000..b9166adc6 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/it.js @@ -0,0 +1,43 @@ +// Variabili di lingua IT - fabrix.xm@lombardiacom.it + +tinyMCE.addToLang('',{ +table_desc : 'Inserisci una nuova tabella', +table_insert_row_before_desc : 'Inserisci una riga prima', +table_insert_row_after_desc : 'Inserisci una riga dopo', +table_delete_row_desc : 'Cancella riga', +table_insert_col_before_desc : 'Inserisci colonna prima', +table_insert_col_after_desc : 'Inserisci colonna dopo', +table_delete_col_desc : 'Rimuovi colonna', +insert_table_title : 'Inserisci/modifica tabella', +insert_table_width : 'Larghezza', +insert_table_height : 'Altezza', +insert_table_cols : 'Colonne', +insert_table_rows : 'Righe', +insert_table_cellspacing : 'Cellspacing', +insert_table_cellpadding : 'Cellpadding', +insert_table_border : 'Bordo', +insert_table_align : 'Allineamento', +insert_table_align_default : 'Default', +insert_table_align_left : 'Sinistra', +insert_table_align_right : 'Destra', +insert_table_align_middle : 'Centro', +insert_table_class : 'Classe', +table_row_title : 'Proprietà della riga', +table_cell_title : 'Proprietà della cella', +table_row_desc : 'Proprietà della riga', +table_cell_desc : 'Proprietà della cella', +insert_table_valign : 'Allineamento verticale', +insert_table_align_top : 'In alto', +insert_table_align_bottom : 'In basso', +table_props_desc : 'Proprietà della tabella', +table_bordercolor : 'Colore bordo', +table_bgcolor : 'Colore sfondo', +table_merge_cells_title : 'Unisci celle', +table_split_cells_desc : 'Dividi celle', +table_merge_cells_desc : 'Unisci le celle', +table_cut_row_desc : 'Taglia riga', +table_copy_row_desc : 'Copia riga', +table_paste_row_before_desc : 'Incolla riga prima', +table_paste_row_after_desc : 'Incolla riga dopo', +table_insert_desc : 'Inserisci una nuova tabella' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/ja.js b/webcit/tiny_mce/plugins/table/langs/ja.js new file mode 100644 index 000000000..17e308883 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/ja.js @@ -0,0 +1,43 @@ +// JP lang variables + +tinyMCE.addToLang('',{ +table_desc : '$B%F!<%V%k(B', +table_insert_row_before_desc : '$B9TA^F~(B($BA0(B)', +table_insert_row_after_desc : '$B9TA^F~(B($B8e(B)', +table_delete_row_desc : '$B9T:o=|(B', +table_insert_col_before_desc : '$BNsA^F~(B($BA0(B)', +table_insert_col_after_desc : '$BNsA^F~(B($B8e(B)', +table_delete_col_desc : '$BNs:o=|(B', +insert_table_title : '$B%F!<%V%k$NA^F~(B/$BJT=8(B', +insert_table_cols : '$BNs?t(B', +insert_table_rows : '$B9T?t(B', +insert_table_cellspacing : '$B%;%kM>Gr(B', +insert_table_cellpadding : '$B%;%k5M$a(B', +insert_table_align : '$B0LCVD4@0(B', +insert_table_align_default : '$B0EL[(B', +insert_table_align_left : '$B:85M$a(B', +insert_table_align_right : '$B1&5M$a(B', +insert_table_align_middle : '$BCf1{4s$;(B', +insert_table_width : '$BI}(B', +insert_table_height : '$B9b$5(B', +insert_table_border : '$B6-3&@~(B', +insert_table_class : '$B%/%i%9(B', +table_row_title : 'Table row properties', +table_cell_title : 'Table cell properties', +table_row_desc : 'Table row properties', +table_cell_desc : 'Table cell properties', +insert_table_valign : 'Vertical alignment', +insert_table_align_top : 'Top', +insert_table_align_bottom : 'Bottom', +table_props_desc : 'Table properties', +table_bordercolor : 'Border color', +table_bgcolor : 'Bg color', +table_merge_cells_title : 'Merge table cells', +table_split_cells_desc : 'Split table cells', +table_merge_cells_desc : 'Merge table cells', +table_cut_row_desc : 'Cut table row', +table_copy_row_desc : 'Copy table row', +table_paste_row_before_desc : 'Paste table row before', +table_paste_row_after_desc : 'Paste table row after', +table_insert_desc : 'Insert a new table' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/ko.js b/webcit/tiny_mce/plugins/table/langs/ko.js new file mode 100644 index 000000000..bd8b30e90 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/ko.js @@ -0,0 +1,43 @@ +// KO lang variables + +tinyMCE.addToLang('',{ +table_desc : 'Ç¥ ³Ö±â', +table_insert_row_before_desc : '¾Õ¿¡ Çà ³Ö±â', +table_insert_row_after_desc : 'µÚ¿¡ Çà ³Ö±â', +table_delete_row_desc : 'Çà Áö¿ì±â', +table_insert_col_before_desc : '¾Õ¿¡ ¿­ ³Ö±â', +table_insert_col_after_desc : 'µÚ¿¡ ¿­ ³Ö±â', +table_delete_col_desc : '¿­ Áö¿ì±â', +insert_table_title : 'Ç¥ ³Ö±â/°íÄ¡±â', +insert_table_width : '³Êºñ', +insert_table_height : '³ôÀÌ', +insert_table_cols : 'Çà', +insert_table_rows : '¿­', +insert_table_cellspacing : '¼¿ °£°Ý', +insert_table_cellpadding : '¼¿ ¿©¹é', +insert_table_border : 'Å׵θ®', +insert_table_align : 'Á¤·Ä', +insert_table_align_default : '±âº»°ª', +insert_table_align_left : '¿ÞÂÊ', +insert_table_align_right : '¿À¸¥ÂÊ', +insert_table_align_middle : '°¡¿îµ¥', +insert_table_class : 'Ŭ·¡½º', +table_row_title : 'Table row properties', +table_cell_title : 'Table cell properties', +table_row_desc : 'Table row properties', +table_cell_desc : 'Table cell properties', +insert_table_valign : 'Vertical alignment', +insert_table_align_top : 'Top', +insert_table_align_bottom : 'Bottom', +table_props_desc : 'Table properties', +table_bordercolor : 'Border color', +table_bgcolor : 'Bg color', +table_merge_cells_title : 'Merge table cells', +table_split_cells_desc : 'Split table cells', +table_merge_cells_desc : 'Merge table cells', +table_cut_row_desc : 'Cut table row', +table_copy_row_desc : 'Copy table row', +table_paste_row_before_desc : 'Paste table row before', +table_paste_row_after_desc : 'Paste table row after', +table_insert_desc : 'Insert a new table' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/nb.js b/webcit/tiny_mce/plugins/table/langs/nb.js new file mode 100644 index 000000000..422017ea3 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/nb.js @@ -0,0 +1,75 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('table',{ +general_tab : 'Generelt', +advanced_tab : 'Avansert', +general_props : 'Generelle egenskaper', +advanced_props : 'Avanserte egenskaper', +desc : 'Opprett/endre tabell', +row_before_desc : 'Opprett rad foran', +row_after_desc : 'Opprett rad etter', +delete_row_desc : 'Fjern rad', +col_before_desc : 'Opprett kolonne foran', +col_after_desc : 'Opprett kolonne etter', +delete_col_desc : 'Fjern kolonne', +rowtype : 'Rad i tabell', +title : 'Opprett/endre tabell', +width : 'Bredde', +height : 'Høyde', +cols : 'Kolonner', +rows : 'Rader', +cellspacing : 'Celle mellomrom', +cellpadding : 'Celle fylling', +border : 'Rammebredde', +align : 'Justering', +align_default : 'Ingen', +align_left : 'Venstre', +align_right : 'Høyre', +align_middle : 'Midtstilt', +row_title : 'tabell rad egenskaper', +cell_title : 'tabell celle egenskaper', +cell_type : 'Celle type', +row_desc : 'tabell rad egenskaper', +cell_desc : 'tabell celle egenskaper', +valign : 'Vertikal justering', +align_top : 'Topp', +align_bottom : 'Bunn', +props_desc : 'tabell egenskaper', +bordercolor : 'Rammefarge', +bgcolor : 'Bakgrunnsfarge', +merge_cells_title : 'Slå sammen tabell celler', +split_cells_desc : 'Splitt tabell celler', +merge_cells_desc : 'Slå sammen tabell celler', +cut_row_desc : 'Fjern tabell rad', +copy_row_desc : 'Kopier tabell rad', +paste_row_before_desc : 'Lim inn tabell rad foran', +paste_row_after_desc : 'Lim inn tabell rad etter', +id : 'Id', +style: 'Stil', +langdir : 'Språk retning', +langcode : 'Språk kode', +mime : 'Målets MIME type', +ltr : 'Venstre mot høyre', +rtl : 'Høyre mot venstre', +bgimage : 'Bakgrunnsbilde', +summary : 'Sum', +td : "Data", +th : "Overskrift", +cell_cell : 'Oppdater valgt celle', +cell_row : 'Oppdater alle celler i raden', +cell_all : 'Oppdater alle celler i tabellen', +row_row : 'Oppdater valgt rad', +row_odd : 'Oppdater ulike rader i tabellen', +row_even : 'Oppdater like rader i tabellen', +row_all : 'Oppdater alle rader i tabellen', +thead : 'Tabell Hode', +tbody : 'Tabell Kropp', +tfoot : 'Tabell Fot', +del : 'Slett tabell', +scope : 'Hensikt', +row : 'Rad', +col : 'Kolonne', +rowgroup : 'Rad gruppe', +colgroup : 'Kolonne gruppe', +missing_scope: 'Er du sikker på at du vil fortsette uten å oppgi hensikten med denne tabellens hode celle.' +}); \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/table/langs/nl.js b/webcit/tiny_mce/plugins/table/langs/nl.js new file mode 100644 index 000000000..503388b66 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/nl.js @@ -0,0 +1,75 @@ +// NL lang variables + +tinyMCE.addToLang('table',{ +general_tab : 'Algemeen', +advanced_tab : 'Geavanceerd', +general_props : 'Algemene eigenschappen', +advanced_props : 'Geavanceerde eigenschappen', +desc : 'Nieuwe tabel invoegen', +row_before_desc : 'Rij boven invoegen', +row_after_desc : 'Rij onder invoegen', +delete_row_desc : 'Rij verwijderen', +col_before_desc : 'Kolom links invoegen', +col_after_desc : 'Kolom rechts invoegen', +delete_col_desc : 'Kolom verwijderen', +rowtype : 'Row in table part', +title : 'Tabel invoegen/bewerken', +width : 'Breedte', +height : 'Hoogte', +cols : 'Kolommen', +rows : 'Rijen', +cellspacing : 'Ruimte om cel', +cellpadding : 'Ruimte in cel', +border : 'Rand', +align : 'Uitlijning', +align_default : 'Standaard', +align_left : 'Links', +align_right : 'Rechts', +align_middle : 'Centreren', +row_title : 'Tabelrij-eigenschappen', +cell_title : 'Tabelcel-eigenschappen', +cell_type : 'Celtype', +row_desc : 'Tabelrij-eigenschappen', +cell_desc : 'Tabelcel-eigenschappen', +valign : 'Verticale uitlijning', +align_top : 'Boven', +align_bottom : 'Onder', +props_desc : 'Tabeleigenschappen', +bordercolor : 'Randkleur', +bgcolor : 'Achtergrondkleur', +merge_cells_title : 'Tabelcellen samenvoegen', +split_cells_desc : 'Tabelcellen splitsen', +merge_cells_desc : 'Tabelcellen samenvoegen', +cut_row_desc : 'Tabelrij knippen', +copy_row_desc : 'Tebelrij kopiëren', +paste_row_before_desc : 'Tabelrij boven plakken', +paste_row_after_desc : 'tabelrij onder plakken', +id : 'Id', +style: 'Stijl', +langdir : 'Taalrichting', +langcode : 'Taalcode', +mime : 'MIME type', +ltr : 'Links naar rechts', +rtl : 'Rechts naar links', +bgimage : 'Achtergrondafbeelding', +summary : 'Samenvatting', +td : "Data", +th : "Kop", +cell_cell : 'Huidige cel bijwerken', +cell_row : 'Alle cellen in rij bijwerken', +cell_all : 'Alle cellen in tabel bijwerken', +row_row : 'Huidige rij bijwerken', +row_odd : 'Oneven rijen in tabel bijwerken', +row_even : 'Even rijen in tabel bijwerken', +row_all : 'Alle rijen in tabel bijwerken', +thead : 'Tabel-kop', +tbody : 'Tabel-body', +tfoot : 'Tabel-voet', +del : 'Tabel verwijderen', +scope : 'Bereik', +row : 'Rij', +col : 'Kolom', +rowgroup : 'Rijgroep', +colgroup : 'Kolomgroep', +missing_scope: 'Zonder een bereik van een tabelkop, is het moeilijk voor mensen met een visuele handicap deze pagina te begrijpen. Weet u zeker dat u zonder bereik verder wilt gaan?' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/nn.js b/webcit/tiny_mce/plugins/table/langs/nn.js new file mode 100644 index 000000000..642ab23da --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/nn.js @@ -0,0 +1,76 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('table',{ +general_tab : 'Generelt', +advanced_tab : 'Avansert', +general_props : 'Generelle egenskaper', +advanced_props : 'Avanserte egenskaper', +desc : 'Opprett/endre tabell', +row_before_desc : 'Opprett rad foran', +row_after_desc : 'Opprett rad etter', +delete_row_desc : 'Fjern rad', +col_before_desc : 'Opprett kolonne foran', +col_after_desc : 'Opprett kolonne etter', +delete_col_desc : 'Fjern kolonne', +rowtype : 'Rad i tabell', +title : 'Opprett/endre tabell', +width : 'Bredde', +height : 'Høgde', +cols : 'Kolonner', +rows : 'Rader', +cellspacing : 'Celle mellomrom', +cellpadding : 'Celle fylling', +border : 'Rammebredde', +align : 'Justering', +align_default : 'Ingen', +align_left : 'Venstre', +align_right : 'Høgre', +align_middle : 'Midtstilt', +row_title : 'tabell rad egenskaper', +cell_title : 'tabell celle egenskaper', +cell_type : 'Celle type', +row_desc : 'tabell rad egenskaper', +cell_desc : 'tabell celle egenskaper', +valign : 'Vertikal justering', +align_top : 'Topp', +align_bottom : 'Bunn', +props_desc : 'tabell egenskaper', +bordercolor : 'Rammefarge', +bgcolor : 'Bakgrunnsfarge', +merge_cells_title : 'Slå sammen tabell celler', +split_cells_desc : 'Splitt tabell celler', +merge_cells_desc : 'Slå sammen tabell celler', +cut_row_desc : 'Fjern tabell rad', +copy_row_desc : 'Kopier tabell rad', +paste_row_before_desc : 'Lim inn tabell rad foran', +paste_row_after_desc : 'Lim inn tabell rad etter', +id : 'Id', +style: 'Stil', +langdir : 'Språk retning', +langcode : 'Språk kode', +mime : 'Målets MIME type', +ltr : 'Venstre mot høgre', +rtl : 'Høgre mot venstre', +bgimage : 'Bakgrunnsbilde', +summary : 'Sum', +td : "Data", +th : "Overskrift", +cell_cell : 'Oppdater valgt celle', +cell_row : 'Oppdater alle celler i raden', +cell_all : 'Oppdater alle celler i tabellen', +row_row : 'Oppdater valgt rad', +row_odd : 'Oppdater ulike rader i tabellen', +row_even : 'Oppdater like rader i tabellen', +row_all : 'Oppdater alle rader i tabellen', +thead : 'Tabell Hode', +tbody : 'Tabell Kropp', +tfoot : 'Tabell Fot', +del : 'Slett tabell', +scope : 'Hensikt', +row : 'Rad', +col : 'Kolonne', +rowgroup : 'Rad gruppe', +colgroup : 'Kolonne gruppe', +missing_scope: 'Er du sikker på at du vil fortsette uten å oppgi hensikten med denne tabellens hode celle.', +cellprops_delta_width : 30 +}); \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/table/langs/pl.js b/webcit/tiny_mce/plugins/table/langs/pl.js new file mode 100644 index 000000000..b9f0050a2 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/pl.js @@ -0,0 +1,78 @@ +// PL lang variables +// fixed by Wooya +// http://www.mfusion.prv.pl + +tinyMCE.addToLang('table',{ +general_tab : 'G³ówne ustawienia', +advanced_tab : 'Zaawansowane', +general_props : 'G³ówne ustawienia', +advanced_props : 'Zaawansowane ustawienia', +desc : 'Wstawia now± tabelê', +row_before_desc : 'Wstaw wiersz przed', +row_after_desc : 'Wstaw wiersz za', +delete_row_desc : 'Usuñ wiersz', +col_before_desc : 'Wstaw kolumnê przed', +col_after_desc : 'Wstaw kolumnê za', +delete_col_desc : 'Usuñ kolumnê', +rowtype : 'Wiersz w czê¶ci tabeli', +title : 'Wstaw/Zmieñ tabelê', +width : 'Szeroko¶æ', +height : 'Wysoko¶æ', +cols : 'Kolumn', +rows : 'Wierszy', +cellspacing : 'Odstêpy miêdzy komórkami', +cellpadding : 'Margines wewn±trz komórek', +border : 'Ramka', +align : 'Wyrównanie', +align_default : 'Domy¶lne', +align_left : 'Lewo', +align_right : 'Prawo', +align_middle : '¦rodek', +row_title : 'W³a¶ciwo¶ci wiersza', +cell_title : 'W³a¶ciwo¶ci komórki', +cell_type : 'Typ komórki', +row_desc : 'W³a¶ciwo¶ci wiersza', +cell_desc : 'W³a¶ciwo¶ci komórki', +valign : 'Wyrównanie pionowe', +align_top : 'Do góry', +align_bottom : 'Do do³u', +props_desc : 'W³a¶ciwo¶ci tabeli', +bordercolor : 'Kolor ramki', +bgcolor : 'Kolor t³a', +merge_cells_title : 'Po³±cz komórki', +split_cells_desc : 'Rozdziel komórki', +merge_cells_desc : 'Po³±cz komórki', +cut_row_desc : 'Wytnij wiersz', +copy_row_desc : 'Kopiuj wiersz', +paste_row_before_desc : 'Wklej wiersz przed', +paste_row_after_desc : 'Wklej wiersz za', +id : 'Id', +style: 'Styl', +langdir : 'Kierunek tekstu', +langcode : 'Kod jêzyka', +mime : 'Docelowy typ MIME', +ltr : 'Lewy do prawego', +rtl : 'Prawy do lewego', +bgimage : 'Obrazek t³a', +summary : 'Podsumowanie', +td : "Dane", +th : "Nag³ówek", +cell_cell : 'Aktualizuj bie¿±c± komórkê', +cell_row : 'Aktualizuj wszystkie komórki w wierszu', +cell_all : 'Aktualizuj wszystkie komórki w tabeli', +row_row : 'Aktualizuj bierz±c± komórkê', +row_odd : 'Aktualizuj nieparzyste komórki w tabeli', +row_even : 'Aktualizuj parzyste komórki w tabeli', +row_all : 'Aktualizuj wszystkie komórki w tabeli', +thead : 'Nag³ówek tabeli', +tbody : 'Cia³o tabeli', +tfoot : 'Stopka tabeli', +del : 'Usuñ tabelê', +scope : 'Zasiêg', +row : 'Wiersz', +col : 'Kolumna', +rowgroup : 'Grupa wiersza', +colgroup : 'Grupa kolumny', +missing_scope: 'Czy jeste¶ pewien, ¿e chcesz kontynuowaæ bez sprecyzowania zasiêgu dla nag³ówka tej tabeli? Bez tego, niektórzy u¿ytkownicy mog± mieæ problem ze zrozumieniem zawarto¶ci tej tabeli, je¿eli maj± w³±czone jakie¶ ograniczenia w przegl±darkach.', +cellprops_delta_width : 70 +}); diff --git a/webcit/tiny_mce/plugins/table/langs/pt.js b/webcit/tiny_mce/plugins/table/langs/pt.js new file mode 100644 index 000000000..65d68c674 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/pt.js @@ -0,0 +1,84 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('table',{ +general_tab : 'Geral', +advanced_tab : 'Avançado', +general_props : 'Propriedades Gerais', +advanced_props : 'Propriedades Avançadas', +desc : 'Inserir uma nova tabela', +row_before_desc : 'Inserir uma linha antes', +row_after_desc : 'Inserir uma linha depois', +delete_row_desc : 'Apagar linha', +col_before_desc : 'Inserir uma coluna antes', +col_after_desc : 'Inserir uma coluna depois', +delete_col_desc : 'Remover coluna', +rowtype : 'Linhas na tabela parcial', +title : 'Inserir/Modificar Tabela', +width : 'Largura', +height : 'Altura', +cols : 'Colunas', +rows : 'Linhas', +cellspacing : 'Espaçamento das células', +cellpadding : 'Margem interna', +border : 'Borda', +align : 'Alinhamento', +align_default : 'Padrão', +align_left : 'Esquerda', +align_right : 'Direita', +align_middle : 'Centrado', +row_title : 'Propriedades das linha', +cell_title : 'Propriedades da célula', +cell_type : 'Tipo de célula', +row_desc : 'Propriedades das linhas', +cell_desc : 'Propriedades da célula', +valign : 'Alinhamento vertical', +align_top : 'Superior', +align_bottom : 'Inferior', +props_desc : 'Propriedades da tabela', +bordercolor : 'Côr da borda', +bgcolor : 'Côr do fundo', +merge_cells_title : 'Juntar células', +merge_cells_desc : 'Juntar células da tabela', +split_cells_title : 'Separar células', +split_cells_desc : 'Separar células', +cut_row_desc : 'Apagar linha', +copy_row_desc : 'Copiar linha', +paste_row_before_desc : 'Colar linha antes', +paste_row_after_desc : 'Colar linha depois', +id : 'Id', +style: 'Estilo', +langdir : 'Direção do texto', +langcode : 'Código do idioma', +mime : 'Tipo de MIME do objeto', +ltr : 'Esquerda para direita', +rtl : 'Direita para esquerda', +bgimage : 'Imagem de fundo', +summary : 'Sumário', +td : "Dados", +th : "Cabeçalho", +cell_cell : 'Atulizar célula atual', +cell_row : 'Atualizar todas as cédulas na linha', +cell_all : 'Atualizar todas as cédulas da tabela', +row_row : 'Atualizar linha atual', +row_odd : 'Atualizar linhas ímpares na tabela', +row_even : 'Atualizar linhas pares na tabela', +row_all : 'Atualizar todas as linhas na tabela', +thead : 'Cabeçalho da tabela', +tbody : 'Corpo da tabela', +tfoot : 'Rodapé da tabela', +del : 'Apagar tabela', +dir : 'Direção', +scope : 'Escopo', +row : 'Linha', +col : 'Coluna', +rowgroup : 'Grupo de linhas', +colgroup : 'Grupo de colunas', +missing_scope: 'Tem certeza que deseja continuar sem especificar um escopo para este célula de cabeçalho. Sem isso talvez seja difícil para alguns usuários especiais entender ou conteúdo ou visualizar a tabela.' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/pt_br.js b/webcit/tiny_mce/plugins/table/langs/pt_br.js new file mode 100644 index 000000000..4736fd648 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/pt_br.js @@ -0,0 +1,85 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('table',{ +general_tab : 'Geral', +advanced_tab : 'Avançado', +general_props : 'Propriedades Gerais', +advanced_props : 'Propriedades Avançadas', +desc : 'Inserir uma nova tabela', +row_before_desc : 'Inserir uma linha antes', +row_after_desc : 'Inserir uma linha depois', +delete_row_desc : 'Apagar linha', +col_before_desc : 'Inserir uma coluna antes', +col_after_desc : 'Inserir uma coluna depois', +delete_col_desc : 'Remover coluna', +rowtype : 'Linhas na tabela parcial', +title : 'Inserir/Modificar Tabela', +width : 'Largura', +height : 'Altura', +cols : 'Colunas', +rows : 'Linhas', +cellspacing : 'Espaçamento das células', +cellpadding : 'Margem interna', +border : 'Borda', +align : 'Alinhamento', +align_default : 'Padrão', +align_left : 'Esquerda', +align_right : 'Direita', +align_middle : 'Centrado', +row_title : 'Propriedades das linha', +cell_title : 'Propriedades da célula', +cell_type : 'Tipo de célula', +row_desc : 'Propriedades das linhas', +cell_desc : 'Propriedades da célula', +valign : 'Alinhamento vertical', +align_top : 'Superior', +align_bottom : 'Inferior', +props_desc : 'Propriedades da tabela', +bordercolor : 'Côr da borda', +bgcolor : 'Côr do fundo', +merge_cells_title : 'Juntar células', +merge_cells_desc : 'Juntar células da tabela', +split_cells_title : 'Separar células', +split_cells_desc : 'Separar células', +cut_row_desc : 'Apagar linha', +copy_row_desc : 'Copiar linha', +paste_row_before_desc : 'Colar linha antes', +paste_row_after_desc : 'Colar linha depois', +id : 'Id', +style: 'Estilo', +langdir : 'Direção do texto', +langcode : 'Código do idioma', +mime : 'Tipo de MIME do objeto', +ltr : 'Esquerda para direita', +rtl : 'Direita para esquerda', +bgimage : 'Imagem de fundo', +summary : 'Sumário', +td : "Dados", +th : "Cabeçalho", +cell_cell : 'Atulizar célula atual', +cell_row : 'Atualizar todas as cédulas na linha', +cell_all : 'Atualizar todas as cédulas da tabela', +row_row : 'Atualizar linha atual', +row_odd : 'Atualizar linhas ímpares na tabela', +row_even : 'Atualizar linhas pares na tabela', +row_all : 'Atualizar todas as linhas na tabela', +thead : 'Cabeçalho da tabela', +tbody : 'Corpo da tabela', +tfoot : 'Rodapé da tabela', +del : 'Apagar tabela', +dir : 'Direção', +scope : 'Escopo', +row : 'Linha', +col : 'Coluna', +rowgroup : 'Grupo de linhas', +colgroup : 'Grupo de colunas', +missing_scope: 'Tem certeza que deseja continuar sem especificar um escopo para este célula de cabeçalho. Sem isso talvez seja difícil para alguns usuários especiais entender ou conteúdo ou visualizar a tabela.', +cellprops_delta_width : 55 +}); diff --git a/webcit/tiny_mce/plugins/table/langs/readme.txt b/webcit/tiny_mce/plugins/table/langs/readme.txt new file mode 100644 index 000000000..ef48d2ba4 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/readme.txt @@ -0,0 +1,4 @@ +Theme specific language packs. + +The language pack codes are based on ISO-639-2 +http://www.loc.gov/standards/iso639-2/englangn.html diff --git a/webcit/tiny_mce/plugins/table/langs/ru.js b/webcit/tiny_mce/plugins/table/langs/ru.js new file mode 100644 index 000000000..e2243851e --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/ru.js @@ -0,0 +1,77 @@ +// RU cp1251 lang variables + +tinyMCE.addToLang('table',{ +general_tab : 'Îñíîâíûå', +advanced_tab : 'Ðàñøèðåííûå', +general_props : 'Îñíîâíûå ñâîéñòâà', +advanced_props : 'Ðàñøèðåííûå ñâîéñòâà', +desc : 'Âñòàâèòü íîâóþ òàáëèöó', +row_before_desc : 'Âñòàâèòü ñòðîêó ïåðåä', +row_after_desc : 'Âñòàâèòü ñòðîêó ïîñëå', +delete_row_desc : 'Óäàëèòü ñòðîêó', +col_before_desc : 'Âñòàâèòü êîëîíêó ïåðåä', +col_after_desc : 'Âñòàâèòü êîëîíêó ïîñëå', +delete_col_desc : 'Óäàëèòü êîëîíêó', +rowtype : 'Ñòðîêà â ÷àñòè òàáëèöû', +title : 'Âñòàâèòü/Èçìåíèòü òàáëèöó', +width : 'Øèðèíà', +height : 'Âûñîòà', +cols : 'Êîëîíêè', +rows : 'Ñòðîêè', +cellspacing : 'Ðàññòîÿíèå ìåæäó ÿ÷åéêàìè', +cellpadding : 'Îòñòóï â ÿ÷åéêàõ', +border : 'Ãðàíèöà', +align : 'Âûðàâíèâàíèå', +align_default : 'Ïî-óìîë÷àíèþ', +align_left : 'Âñåâî', +align_right : 'Âïðàâî', +align_middle : 'Ïî öåíòðó', +row_title : 'Ñâîéñòâà ñòðîêè òàáëèöû', +cell_title : 'Ñâîéñòâà ÿ÷åéêè òàáëèöû', +cell_type : 'Òèï ÿ÷åéêè', +row_desc : 'Ñâîéñòâà ñòðîêè òàáëèöû', +cell_desc : 'Ñâîéñòâà ÿ÷åéêè òàáëèöû', +valign : 'Âåðòèêàëüíîå âûðàâíèâàíèå', +align_top : 'Ïî âåðõó', +align_bottom : 'Ïî íèçó', +props_desc : 'Ñâîéñòâà òàáëèöû', +bordercolor : 'Öâåò ðàìêè', +bgcolor : 'Öâåò ôîíà', +merge_cells_title : 'Îáúåäèíèòü ÿ÷åéêè òàáëèöû', +split_cells_desc : 'Ðàçäåëèòü ÿ÷åéêè òàáëèöû', +merge_cells_desc : 'Îáúåäèíèòü ÿ÷åéêè òàáëèöû', +cut_row_desc : 'Âûëåçàòü ñòðîêó òàáëèöû', +copy_row_desc : 'Ñêîïèðîâàòü ñòðîêó òàáëèöû', +paste_row_before_desc : 'Âñòàâèòü ñòðîêó òàáëèöû ïåðåä', +paste_row_after_desc : 'Âñòàâèòü ñòðîêó òàáëèöû ïîñëå', +id : 'Id', +style: 'Ñòèëü', +langdir : 'Îïèñàíèå ÿçûêà', +langcode : 'Êîä ÿçûêà', +mime : 'Öåëåâîé MIME òèï', +ltr : 'Ñëåâà íàïðàâî', +rtl : 'Ñïðàâà íàëåâî', +bgimage : 'Ôîíîâîå èçîáðàæåíèå', +summary : 'Êðàòêîå îïèñàíèå', +td : "Òåëî", +th : "Çàãîëîâîê", +cell_cell : 'Îáíîâèòü òåêóùóþ ÿ÷åéêó', +cell_row : 'Îáíîâèòü òåêóùóþ ñòðîêó', +cell_all : 'Îáíîâèòü âñå ÿ÷åéêè â òàáëèöå', +row_row : 'Îáíîâèòü òåêóùóþ ñòðîêó', +row_odd : 'Update odd rows in table', +row_even : 'Update even rows in table', +row_all : 'Îáíîâèòü âñå ñòðîêè â òàáëèöå', +thead : 'Çàãîëîâîê òàáëèöû', +tbody : 'Òåëî òàáëèöû', +tfoot : 'Ôóòåð òàáëèöû', +del : 'Óäàëèòü òàáëèöó', +scope : 'Ãðàíèöû', +row : 'Ñòðîêà', +col : 'Êîëîíêà', +rowgroup : 'Ãðóïïà ñòðîê', +colgroup : 'Ãðóïïà êîëîíîê', +missing_scope: 'Âû óâåðåíû, ÷òî õîòèòå ïðîäîëæàòü íå îáîçíà÷èâ ãðàíèöû ÿ÷ååê øàïêè òàáëèöû? Áåç ýòîãî, âîçìîæíî, íåêîòîðûì ïîëüçîâàòåëÿì áóäåò çàòðóäíèòåëüíî ïîíÿòü, ÷òî çà äàííûå íàõîäÿòñÿ â òàáëèöå.', +table_delta_width : 30, +cellprops_delta_width : 130 +}); diff --git a/webcit/tiny_mce/plugins/table/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/table/langs/ru_KOI8-R.js new file mode 100644 index 000000000..62ad5dd10 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/ru_KOI8-R.js @@ -0,0 +1,75 @@ +// RU KOI8-R lang variables + +tinyMCE.addToLang('table',{ +general_tab : 'ïÓÎÏ×ÎÙÅ', +advanced_tab : 'òÁÓÛÉÒÅÎÎÙÅ', +general_props : 'ïÓÎÏ×ÎÙÅ Ó×ÏÊÓÔ×Á', +advanced_props : 'òÁÓÛÉÒÅÎÎÙÅ Ó×ÏÊÓÔ×Á', +desc : '÷ÓÔÁ×ÉÔØ ÎÏ×ÕÀ ÔÁÂÌÉÃÕ', +row_before_desc : '÷ÓÔÁ×ÉÔØ ÓÔÒÏËÕ ÐÅÒÅÄ', +row_after_desc : '÷ÓÔÁ×ÉÔØ ÓÔÒÏËÕ ÐÏÓÌÅ', +delete_row_desc : 'õÄÁÌÉÔØ ÓÔÒÏËÕ', +col_before_desc : '÷ÓÔÁ×ÉÔØ ËÏÌÏÎËÕ ÐÅÒÅÄ', +col_after_desc : '÷ÓÔÁ×ÉÔØ ËÏÌÏÎËÕ ÐÏÓÌÅ', +delete_col_desc : 'õÄÁÌÉÔØ ËÏÌÏÎËÕ', +rowtype : 'óÔÒÏËÁ × ÞÁÓÔÉ ÔÁÂÌÉÃÙ', +title : '÷ÓÔÁ×ÉÔØ/éÚÍÅÎÉÔØ ÔÁÂÌÉÃÕ', +width : 'ûÉÒÉÎÁ', +height : '÷ÙÓÏÔÁ', +cols : 'ëÏÌÏÎËÉ', +rows : 'óÔÒÏËÉ', +cellspacing : 'òÁÓÓÔÏÑÎÉÅ ÍÅÖÄÕ ÑÞÅÊËÁÍÉ', +cellpadding : 'ïÔÓÔÕÐ × ÑÞÅÊËÁÈ', +border : 'çÒÁÎÉÃÁ', +align : '÷ÙÒÁ×ÎÉ×ÁÎÉÅ', +align_default : 'ðÏ-ÕÍÏÌÞÁÎÉÀ', +align_left : '÷ÓÅ×Ï', +align_right : '÷ÐÒÁ×Ï', +align_middle : 'ðÏ ÃÅÎÔÒÕ', +row_title : 'ó×ÏÊÓÔ×Á ÓÔÒÏËÉ ÔÁÂÌÉÃÙ', +cell_title : 'ó×ÏÊÓÔ×Á ÑÞÅÊËÉ ÔÁÂÌÉÃÙ', +cell_type : 'ôÉÐ ÑÞÅÊËÉ', +row_desc : 'ó×ÏÊÓÔ×Á ÓÔÒÏËÉ ÔÁÂÌÉÃÙ', +cell_desc : 'ó×ÏÊÓÔ×Á ÑÞÅÊËÉ ÔÁÂÌÉÃÙ', +valign : '÷ÅÒÔÉËÁÌØÎÏÅ ×ÙÒÁ×ÎÉ×ÁÎÉÅ', +align_top : 'ðÏ ×ÅÒÈÕ', +align_bottom : 'ðÏ ÎÉÚÕ', +props_desc : 'ó×ÏÊÓÔ×Á ÔÁÂÌÉÃÙ', +bordercolor : 'ã×ÅÔ ÒÁÍËÉ', +bgcolor : 'ã×ÅÔ ÆÏÎÁ', +merge_cells_title : 'ïÂßÅÄÉÎÉÔØ ÑÞÅÊËÉ ÔÁÂÌÉÃÙ', +split_cells_desc : 'òÁÚÄÅÌÉÔØ ÑÞÅÊËÉ ÔÁÂÌÉÃÙ', +merge_cells_desc : 'ïÂßÅÄÉÎÉÔØ ÑÞÅÊËÉ ÔÁÂÌÉÃÙ', +cut_row_desc : '÷ÙÌÅÚÁÔØ ÓÔÒÏËÕ ÔÁÂÌÉÃÙ', +copy_row_desc : 'óËÏÐÉÒÏ×ÁÔØ ÓÔÒÏËÕ ÔÁÂÌÉÃÙ', +paste_row_before_desc : '÷ÓÔÁ×ÉÔØ ÓÔÒÏËÕ ÔÁÂÌÉÃÙ ÐÅÒÅÄ', +paste_row_after_desc : '÷ÓÔÁ×ÉÔØ ÓÔÒÏËÕ ÔÁÂÌÉÃÙ ÐÏÓÌÅ', +id : 'Id', +style: 'óÔÉÌØ', +langdir : 'ïÐÉÓÁÎÉÅ ÑÚÙËÁ', +langcode : 'ëÏÄ ÑÚÙËÁ', +mime : 'ãÅÌÅ×ÏÊ MIME ÔÉÐ', +ltr : 'óÌÅ×Á ÎÁÐÒÁ×Ï', +rtl : 'óÐÒÁ×Á ÎÁÌÅ×Ï', +bgimage : 'æÏÎÏ×ÏÅ ÉÚÏÂÒÁÖÅÎÉÅ', +summary : 'ëÒÁÔËÏÅ ÏÐÉÓÁÎÉÅ', +td : "ôÅÌÏ", +th : "úÁÇÏÌÏ×ÏË", +cell_cell : 'ïÂÎÏ×ÉÔØ ÔÅËÕÝÕÀ ÑÞÅÊËÕ', +cell_row : 'ïÂÎÏ×ÉÔØ ÔÅËÕÝÕÀ ÓÔÒÏËÕ', +cell_all : 'ïÂÎÏ×ÉÔØ ×ÓÅ ÑÞÅÊËÉ × ÔÁÂÌÉÃÅ', +row_row : 'ïÂÎÏ×ÉÔØ ÔÅËÕÝÕÀ ÓÔÒÏËÕ', +row_odd : 'Update odd rows in table', +row_even : 'Update even rows in table', +row_all : 'ïÂÎÏ×ÉÔØ ×ÓÅ ÓÔÒÏËÉ × ÔÁÂÌÉÃÅ', +thead : 'úÁÇÏÌÏ×ÏË ÔÁÂÌÉÃÙ', +tbody : 'ôÅÌÏ ÔÁÂÌÉÃÙ', +tfoot : 'æÕÔÅÒ ÔÁÂÌÉÃÙ', +del : 'õÄÁÌÉÔØ ÔÁÂÌÉÃÕ', +scope : 'çÒÁÎÉÃÙ', +row : 'óÔÒÏËÁ', +col : 'ëÏÌÏÎËÁ', +rowgroup : 'çÒÕÐÐÁ ÓÔÒÏË', +colgroup : 'çÒÕÐÐÁ ËÏÌÏÎÏË', +missing_scope: '÷Ù Õ×ÅÒÅÎÙ, ÞÔÏ ÈÏÔÉÔÅ ÐÒÏÄÏÌÖÁÔØ ÎÅ ÏÂÏÚÎÁÞÉ× ÇÒÁÎÉÃÙ ÑÞÅÅË ÛÁÐËÉ ÔÁÂÌÉÃÙ? âÅÚ ÜÔÏÇÏ, ×ÏÚÍÏÖÎÏ, ÎÅËÏÔÏÒÙÍ ÐÏÌØÚÏ×ÁÔÅÌÑÍ ÂÕÄÅÔ ÚÁÔÒÕÄÎÉÔÅÌØÎÏ ÐÏÎÑÔØ, ÞÔÏ ÚÁ ÄÁÎÎÙÅ ÎÁÈÏÄÑÔÓÑ × ÔÁÂÌÉÃÅ.' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/table/langs/ru_UTF-8.js new file mode 100644 index 000000000..f72dbab1d --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/ru_UTF-8.js @@ -0,0 +1,75 @@ +// RU UTF-8 lang variables + +tinyMCE.addToLang('table',{ +general_tab : 'Основные', +advanced_tab : 'Расширенные', +general_props : 'Основные свойства', +advanced_props : 'Расширенные свойства', +desc : 'Вставить новую таблицу', +row_before_desc : 'Вставить строку перед', +row_after_desc : 'Вставить строку после', +delete_row_desc : 'Удалить строку', +col_before_desc : 'Вставить колонку перед', +col_after_desc : 'Вставить колонку после', +delete_col_desc : 'Удалить колонку', +rowtype : 'Строка в части таблицы', +title : 'Вставить/Изменить таблицу', +width : 'Ширина', +height : 'Высота', +cols : 'Колонки', +rows : 'Строки', +cellspacing : 'Расстояние между ячейками', +cellpadding : 'Отступ в ячейках', +border : 'Граница', +align : 'Выравнивание', +align_default : 'По-умолчанию', +align_left : 'Всево', +align_right : 'Вправо', +align_middle : 'По центру', +row_title : 'Свойства строки таблицы', +cell_title : 'Свойства ячейки таблицы', +cell_type : 'Тип ячейки', +row_desc : 'Свойства строки таблицы', +cell_desc : 'Свойства ячейки таблицы', +valign : 'Вертикальное выравнивание', +align_top : 'По верху', +align_bottom : 'По низу', +props_desc : 'Свойства таблицы', +bordercolor : 'Цвет рамки', +bgcolor : 'Цвет фона', +merge_cells_title : 'Объединить ячейки таблицы', +split_cells_desc : 'Разделить ячейки таблицы', +merge_cells_desc : 'Объединить ячейки таблицы', +cut_row_desc : 'Вылезать строку таблицы', +copy_row_desc : 'Скопировать строку таблицы', +paste_row_before_desc : 'Вставить строку таблицы перед', +paste_row_after_desc : 'Вставить строку таблицы после', +id : 'Id', +style: 'Стиль', +langdir : 'Описание языка', +langcode : 'Код языка', +mime : 'Целевой MIME тип', +ltr : 'Слева направо', +rtl : 'Справа налево', +bgimage : 'Фоновое изображение', +summary : 'Краткое описание', +td : "Тело", +th : "Заголовок", +cell_cell : 'Обновить текущую ячейку', +cell_row : 'Обновить текущую строку', +cell_all : 'Обновить все ячейки в таблице', +row_row : 'Обновить текущую строку', +row_odd : 'Update odd rows in table', +row_even : 'Update even rows in table', +row_all : 'Обновить все строки в таблице', +thead : 'Заголовок таблицы', +tbody : 'Тело таблицы', +tfoot : 'Футер таблицы', +del : 'Удалить таблицу', +scope : 'Границы', +row : 'Строка', +col : 'Колонка', +rowgroup : 'Группа строк', +colgroup : 'Группа колонок', +missing_scope: 'Вы уверены, что хотите продолжать не обозначив границы ячеек шапки таблицы? Без этого, возможно, некоторым пользователям будет затруднительно понять, что за данные находятся в таблице.' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/sk.js b/webcit/tiny_mce/plugins/table/langs/sk.js new file mode 100644 index 000000000..86b0e61db --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/sk.js @@ -0,0 +1,51 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:44 spocke Exp $ + */ + +tinyMCE.addToLang('',{ +table_desc : 'VložiÅ¥ novú tabuľku', +table_insert_row_before_desc : 'VložiÅ¥ riadok pred', +table_insert_row_after_desc : 'VložiÅ¥ riadok po', +table_delete_row_desc : 'ZmazaÅ¥ riadok', +table_insert_col_before_desc : 'VložiÅ¥ stĺpec pred', +table_insert_col_after_desc : 'VložiÅ¥ stĺpec po', +table_delete_col_desc : 'OdstrániÅ¥ stĺpec', +insert_table_title : 'VložiÅ¥/upraviÅ¥ tabuľku', +insert_table_width : 'Šírka', +insert_table_height : 'Výška', +insert_table_cols : 'Stĺpce', +insert_table_rows : 'Riadky', +insert_table_cellspacing : 'Vonkajší okraj buniek', +insert_table_cellpadding : 'Vnutorný okraj buniek', +insert_table_border : 'Riadok', +insert_table_align : 'Zarovnanie', +insert_table_align_default : 'Východzie', +insert_table_align_left : 'Vľavo', +insert_table_align_right : 'Vpravo', +insert_table_align_middle : 'Na stred', +insert_table_class : 'Trieda', +table_row_title : 'Vlastnosti riadku', +table_cell_title : 'Vlastnosti bunky', +table_row_desc : 'Vlastnosti riadku', +table_cell_desc : 'Vlastnosti riadku', +insert_table_valign : 'Vertikálne zarovnávanie', +insert_table_align_top : 'Nahor', +insert_table_align_bottom : 'Dole', +table_props_desc : 'Vlastnosti tabuľky', +table_bordercolor : 'Farba rámčeku', +table_bgcolor : 'Farba pozadia', +table_merge_cells_title : 'ZlúčiÅ¥ bunky', +table_split_cells_desc : 'RozdeliÅ¥ bunky', +table_merge_cells_desc : 'ZlúčiÅ¥ bunky', +table_cut_row_desc : 'VyňaÅ¥ riadok', +table_copy_row_desc : 'KopírovaÅ¥ riadok', +table_paste_row_before_desc : 'VložiÅ¥ riadok pred', +table_paste_row_after_desc : 'VložiÅ¥ riadok za', +table_insert_desc : 'VložiÅ¥ tabuľku' +}); + diff --git a/webcit/tiny_mce/plugins/table/langs/sv.js b/webcit/tiny_mce/plugins/table/langs/sv.js new file mode 100644 index 000000000..a9f01ca91 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/sv.js @@ -0,0 +1,76 @@ +// UK lang variables + +tinyMCE.addToLang('table',{ +general_tab : 'Generella inställningar', +advanced_tab : 'Avancerade inställningar', +general_props : 'Generella inställningar', +advanced_props : 'Avancerade inställningar', +desc : 'Skapa ny tabell', +before_desc : 'Skapa rad före', +after_desc : 'Skapa rad efter', +row_before_desc : 'Skapa rad före', +row_after_desc : 'Skapa rad efter', +delete_row_desc : 'Ta bort rad', +col_before_desc : 'Skapa kolumn före', +col_after_desc : 'Skapa kolumn efter', +delete_col_desc : 'Ta bort kolumn', +rowtype : 'Rad typ', +title : 'Skapa/redigera ny tabell', +width : 'Bredd', +height : 'Höjd', +cols : 'Columner', +rows : 'Rader', +cellspacing : 'Cellmellanrum', +cellpadding : 'Cellutfyllnad', +border : 'Ram', +align : 'Justering', +align_default : 'Ingen', +align_left : 'Vänster', +align_right : 'Höger', +align_middle : 'Mitten', +row_title : 'Tabell radsinställningar', +cell_title : 'Tabell cellsinställningar', +cell_type : 'Cell typ', +row_desc : 'Tabell rads inställningar', +cell_desc : 'Tabell cells inställningar', +valign : 'Vertical justering', +align_top : 'Toppen', +align_bottom : 'Botten', +props_desc : 'Tabell inställningar', +bordercolor : 'Ram färg', +bgcolor : 'Bakgrundsfärg', +merge_cells_title : 'Sammanfoga tabell celler', +split_cells_desc : 'Delaupp tabell celler', +merge_cells_desc : 'Sammanfoga tabell celler', +cut_row_desc : 'Klipput tabell rad', +copy_row_desc : 'Kopiera tabell rad', +paste_row_before_desc : 'Klistra in tabell rad före', +paste_row_after_desc : 'Klistra in tabell rad efter', +id : 'Id', +style: 'Stil', +langdir : 'Skrift riktning', +langcode : 'Språk kåd', +ltr : 'Vänster till höger', +rtl : 'Höger till vänster', +bgimage : 'Bakgrundsbild', +summary : 'Sammanfattning', +td : "Data", +th : "Huvud", +cell_cell : 'Updatera nuvarande cell', +cell_row : 'Updatera alla celler i raden', +cell_all : 'Updatera alla celler t tabellen', +row_row : 'Updatera nuvarande rad', +row_odd : 'Updatera udda rader i tabellen', +row_even : 'Updatera jämna rader i tabellen', +row_all : 'Updatera alla rader i tabellen', +thead : 'Tabell Huvud', +tbody : 'Tabell Kropp', +tfoot : 'Tabell Fot', +del : 'Tabort tabell', +scope : 'Scope', +row : 'Rad', +col : 'Kolumn', +rowgroup : 'Rad grupp', +colgroup : 'Kolumn grupp', +missing_scope: 'Är du säker på att du vill fortsätta utan att specifisera ett scope, utan denna kan det bli svårt för handikappade att förstå tabellen.' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/tw.js b/webcit/tiny_mce/plugins/table/langs/tw.js new file mode 100644 index 000000000..847e20219 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/tw.js @@ -0,0 +1,43 @@ +// TW lang variables contributed by Jim Kou + +tinyMCE.addToLang('',{ +insert_table_align : '¹ï»ô', +insert_table_align_default : '¼Ð·Ç', +insert_table_align_left : '»ô¥ª', +insert_table_align_middle : '¸m¤¤', +insert_table_align_right : '»ô¥k', +insert_table_border : '®Ø½u', +insert_table_cellpadding : '¦rÅé»PÀx¦s®æ¶¡»Ø', +insert_table_cellspacing : 'Àx¦s®æ¶¡»Ø', +insert_table_class : '¼Ë¦¡', +insert_table_cols : '¦æ', +insert_table_height : '°ª«×', +insert_table_rows : '¦C', +insert_table_title : 'ªí®æ¼ÐÃD', +insert_table_width : '¼e«×', +table_delete_col_desc : '§R°£¤@¦æÀx¦s®æ', +table_delete_row_desc : '§R°£¤@¦CÀx¦s®æ', +table_desc : 'ªí®æ', +table_insert_col_after_desc : '·s¼W¤@¦æÀx¦s®æ(«á)', +table_insert_col_before_desc : '·s¼W¤@¦æÀx¦s®æ(«e)', +table_insert_row_after_desc : '·s¼W¤@¦CÀx¦s®æ(«á)', +table_insert_row_before_desc : '·s¼W¤@¦CÀx¦s®æ(«e)', +table_row_title : 'Table row properties', +table_cell_title : 'Table cell properties', +table_row_desc : 'Table row properties', +table_cell_desc : 'Table cell properties', +insert_table_valign : 'Vertical alignment', +insert_table_align_top : 'Top', +insert_table_align_bottom : 'Bottom', +table_props_desc : 'Table properties', +table_bordercolor : 'Border color', +table_bgcolor : 'Bg color', +table_merge_cells_title : 'Merge table cells', +table_split_cells_desc : 'Split table cells', +table_merge_cells_desc : 'Merge table cells', +table_cut_row_desc : 'Cut table row', +table_copy_row_desc : 'Copy table row', +table_paste_row_before_desc : 'Paste table row before', +table_paste_row_after_desc : 'Paste table row after', +table_insert_desc : 'Insert a new table' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/zh_cn.js b/webcit/tiny_mce/plugins/table/langs/zh_cn.js new file mode 100644 index 000000000..a3f59cfee --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/zh_cn.js @@ -0,0 +1,75 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('table',{ +general_tab : 'Ò»°ã', +advanced_tab : '¸ß¼¶', +general_props : 'Ò»°ãÊôÐÔ', +advanced_props : '¸ß¼¼ÊôÐÔ', +desc : '²åÈëÒ»¸öбí', +row_before_desc : 'ÏòÇ°²åÈëÒ»ÐÐ', +row_after_desc : 'Ïòºó²åÈëÒ»ÐÐ', +delete_row_desc : 'ɾ³ýÐÐ', +col_before_desc : 'Ïò×ó²åÈëÒ»ÁÐ', +col_after_desc : 'ÏòÓÒ²åÈëÒ»ÁÐ', +delete_col_desc : 'ɾ³ýÁÐ', +rowtype : 'ÐÐÖÖÀà', +title : '²åÈë/ÐÞ¸Ä ±í', +width : '¿í', +height : '¸ß', +cols : 'ÁÐÊý', +rows : 'ÐÐÊý', +cellspacing : 'µ¥Ôª¸ñ¿Õ¼ä', +cellpadding : 'µ¥Ôª¸ñÌî³ä', +border : '±ß¿ò', +align : '¶ÔÆë', +align_default : 'ĬÈÏ', +align_left : '¾Ó×ó', +align_right : '¾ÓÓÒ', +align_middle : '¾ÓÖÐ', +row_title : 'ÐбêÌâ', +cell_title : 'µ¥Ôª¸ñ±êÌâ', +cell_type : 'µ¥Ôª¸ñÖÖÀà', +row_desc : 'ÐÐÃèÊö', +cell_desc : 'µ¥Ôª¸ñÃèÊö', +valign : '´¹Ö±¶ÔÆë', +align_top : '¶¥¶Ë', +align_bottom : 'µ×¶Ë', +props_desc : '±íÊôÐÔ', +bordercolor : '±ß¿òÑÕÉ«', +bgcolor : '±³¾°ÑÕÉ«', +merge_cells_title : 'ºÏ²¢±íÖе¥Ôª¸ñ±êÌâ', +split_cells_desc : '·ÖÀà±íÖе¥Ôª¸ñÃèÊö', +merge_cells_desc : 'ºÏ²¢±íÖе¥Ôª¸ñÃèÊö', +cut_row_desc : '¼ôÇÐÐÐ', +copy_row_desc : '¸´ÖÆÐÐ', +paste_row_before_desc : 'ÏòÇ°Õ³ÌùÒ»ÐÐ', +paste_row_after_desc : 'ÏòºóÕ³ÌùÒ»ÐÐ', +id : '±íʶ', +style: 'Ñùʽ', +langdir : 'Êéд·½Ïò', +langcode : 'ÓïÑÔ±àÂë', +mime : 'Ä¿±ê MIME ÖÖÀà', +ltr : '´Ó×óµ½ÓÒ', +rtl : '´ÓÓÒµ½×ó', +bgimage : '±³¾°Í¼Æ¬', +summary : 'С½á', +td : "Êý¾Ý", +th : "ҳü", +cell_cell : '¸üе±Ç°µ¥Ôª¸ñ', +cell_row : '¸üÐÂÐÐÖÐËùÓе¥Ôª¸ñ', +cell_all : '¸üбíÖÐËùÓе¥Ôª¸ñ', +row_row : '¸üе±Ç°ÐÐ', +row_odd : '¸üÐÂÆæÊýÐÐ', +row_even : '¸üÐÂżÊýÐÐ', +row_all : '¸üбíÖÐËùÓÐÐÐ', +thead : '±íÍ·', +tbody : '±íÖÐ', +tfoot : '±íβ', +del : 'ɾ³ý±í', +scope : 'ÇøÓò', +row : 'ÐÐ', +col : 'ÁÐ', +rowgroup : 'Ðм¯ÍÅ', +colgroup : 'Áм¯ÍÅ', +missing_scope: 'ÄúÈ·ÈÏÒªÔÚûÓÐÉùÃ÷±à¼­ÇøÓòʱ¼ÌÐøÂð£¿Ã»ÓÐÉùÃ÷±à¼­ÇøÓò½«Ê¹ÔĶÁÕß¿´ÆðÀ´ºÜ·ÑÁ¦¡£' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/zh_tw.js b/webcit/tiny_mce/plugins/table/langs/zh_tw.js new file mode 100644 index 000000000..664d5f020 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/zh_tw.js @@ -0,0 +1,76 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('table',{ +general_tab : '¤@¯ë', +advanced_tab : '¶i¶¥', +general_props : '¤@¯ëÄÝ©Ê', +advanced_props : '¶i¶¥ÄÝ©Ê', +desc : '´¡¤J·sªí®æ', +row_before_desc : '¦b¤§«e´¡¤J¦C', +row_after_desc : '¦b¤§«á´¡¤J¦C', +delete_row_desc : '§R°£¦C', +col_before_desc : '¦b¤§«e´¡¤J¦æ', +col_after_desc : '¦b¤§«á´¡¤J¦æ', +delete_col_desc : '§R°£¦æ', +rowtype : 'ªí®æ¤¤ªº¦C', +title : '´¡¤J©Î½Õ¾ãªí®æ', +width : '¼e', +height : '°ª', +cols : '¦æ', +rows : '¦C', +cellspacing : 'Àx¦s®æ®æ½u¶¡¶Z', +cellpadding : 'Àx¦s®æ¤º¤å»P®æ½u¶¡¶Z', +border : '®Ø½u', +align : '¦ì¸m', +align_default : '¤º©w', +align_left : '¾a¥ª', +align_right : '¾a¥k', +align_middle : '¸m¤¤', +row_title : '¦CÄÝ©Ê', +cell_title : 'Àx¦s®æÄÝ©Ê', +cell_type : 'Àx¦s®æÃþ«¬', +row_desc : '¦CÄÝ©Ê', +cell_desc : 'Àx¦s®æÄÝ©Ê', +valign : '««ª½¦ì¸m', +align_top : '³»ºÝ', +align_bottom : '©³³¡', +props_desc : 'ªí®æÄÝ©Ê', +bordercolor : '®Ø½uÃC¦â', +bgcolor : '­I´ºÃC¦â', +merge_cells_title : '¦X¨ÖÀx¦s®æ', +split_cells_desc : '¤À³ÎÀx¦s®æ', +merge_cells_desc : '¦X¨ÖÀx¦s®æ', +cut_row_desc : '°Å¤U¦C', +copy_row_desc : '½Æ»s¦C', +paste_row_before_desc : '¦b¤§«e¶K¤W¦C', +paste_row_after_desc : '¦b¤§«á¶K¤W¦C', +id : '½s½X', +style: '¦¡¼Ë', +langdir : '»y¨¥¥Îªk', +langcode : '»y½X', +mime : '¹ï¶H MIME Ãþ«¬', +ltr : '¥Ñ¥ª¦Ü¥k', +rtl : '¥Ñ¥k¦Ü¥ª', +bgimage : '­I´º¹ÏÀÉ', +summary : '¤@Äý', +td : "¸ê®Æ", +th : "¼ÐÀY", +cell_cell : '§ó·s©Ò¦bªºÀx¦s®æ', +cell_row : '§ó·s¦C¤ºªºÀx¦s®æ', +cell_all : '§ó·sªí®æ¤¤ªºÀx¦s®æ', +row_row : '§ó·s©Ò¦bªº¦C', +row_odd : '§ó·sªí®æ¤¤ªº©_¼Æ¦C', +row_even : '§ó·sªí®æ¤¤ªº°¸¼Æ¦C', +row_all : '§ó·sªí®æ¤¤ªº¦C', +thead : 'ªí®æ¼ÐÀY', +tbody : 'ªí®æ¹êÅé', +tfoot : 'ªí®æ©³³¡', +del : '§R°£ªí®æ', +scope : '½d³ò', +row : '¦C', +col : '¦æ', +rowgroup : '¸s¦C', +colgroup : '¸s¦æ', +missing_scope: '½T©w­n¦b¨S¦³¹ï¦¹ªí®æ¼ÐÀY³]©w½d³ò¤UÄ~Äò°õ¦æ¶Ü¡H\n¤£¥[¥H³]©wªº¸Ü¡A¥i¯à·|¾É­P¬Y¨Ç¨Ï¥ÎªÌµLªk¶¶§QŪ¨úªí®æ¤¤ªº³¡¥÷©Î¬O¾ãÅé¸ê°T¡C' +}); diff --git a/webcit/tiny_mce/plugins/table/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/table/langs/zh_tw_utf8.js new file mode 100644 index 000000000..e56bb1e8b --- /dev/null +++ b/webcit/tiny_mce/plugins/table/langs/zh_tw_utf8.js @@ -0,0 +1,76 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('table',{ +general_tab : '一般', +advanced_tab : '進階', +general_props : '一般屬性', +advanced_props : '進階屬性', +desc : '插入新表格', +row_before_desc : '在之前插入列', +row_after_desc : '在之後插入列', +delete_row_desc : '刪除列', +col_before_desc : '在之前插入行', +col_after_desc : '在之後插入行', +delete_col_desc : '刪除行', +rowtype : '表格中的列', +title : '插入或調整表格', +width : '寬', +height : '高', +cols : '行', +rows : '列', +cellspacing : '儲存格格線間距', +cellpadding : '儲存格內文與格線間距', +border : '框線', +align : '位置', +align_default : '內定', +align_left : '靠左', +align_right : '靠右', +align_middle : '置中', +row_title : '列屬性', +cell_title : '儲存格屬性', +cell_type : '儲存格類型', +row_desc : '列屬性', +cell_desc : '儲存格屬性', +valign : '垂直位置', +align_top : '頂端', +align_bottom : '底部', +props_desc : '表格屬性', +bordercolor : '框線顏色', +bgcolor : '背景顏色', +merge_cells_title : '合併儲存格', +split_cells_desc : '分割儲存格', +merge_cells_desc : '合併儲存格', +cut_row_desc : '剪下列', +copy_row_desc : '複製列', +paste_row_before_desc : '在之前貼上列', +paste_row_after_desc : '在之後貼上列', +id : '編碼', +style: '式樣', +langdir : '語言用法', +langcode : '語碼', +mime : '對象 MIME 類型', +ltr : '由左至右', +rtl : '由右至左', +bgimage : '背景圖檔', +summary : '一覽', +td : "資料", +th : "標頭", +cell_cell : '更新所在的儲存格', +cell_row : '更新列內的儲存格', +cell_all : '更新表格中的儲存格', +row_row : '更新所在的列', +row_odd : '更新表格中的奇數列', +row_even : '更新表格中的偶數列', +row_all : '更新表格中的列', +thead : '表格標頭', +tbody : '表格實體', +tfoot : '表格底部', +del : '刪除表格', +scope : '範圍', +row : '列', +col : '行', +rowgroup : '群列', +colgroup : '群行', +missing_scope: '確定要在沒有對此表格標頭設定範圍下繼續執行嗎?\n不加以設定的話,可能會導致某些使用者無法順利讀取表格中的部份或是整體資訊。' +}); diff --git a/webcit/tiny_mce/plugins/table/merge_cells.htm b/webcit/tiny_mce/plugins/table/merge_cells.htm new file mode 100644 index 000000000..be723a9fa --- /dev/null +++ b/webcit/tiny_mce/plugins/table/merge_cells.htm @@ -0,0 +1,37 @@ + + + {$lang_table_merge_cells_title} + + + + + + +
    +
    + {$lang_table_merge_cells_title} + + + + + + + + + +
    {$lang_table_cols}: +
    {$lang_table_rows}:
    +
    + +
    +
    + +
    + +
    + +
    +
    +
    + + diff --git a/webcit/tiny_mce/plugins/table/readme.txt b/webcit/tiny_mce/plugins/table/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/table/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/plugins/table/row.htm b/webcit/tiny_mce/plugins/table/row.htm new file mode 100644 index 000000000..989e55b36 --- /dev/null +++ b/webcit/tiny_mce/plugins/table/row.htm @@ -0,0 +1,159 @@ + + + {$lang_table_row_title} + + + + + + + + +
    + + +
    +
    +
    + {$lang_table_general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + +
    + +
    +
    +
    + +
    +
    + {$lang_table_advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + +
     
    +
    + + + + + +
     
    +
    +
    +
    +
    + +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + + diff --git a/webcit/tiny_mce/plugins/table/table.htm b/webcit/tiny_mce/plugins/table/table.htm new file mode 100644 index 000000000..70d18001e --- /dev/null +++ b/webcit/tiny_mce/plugins/table/table.htm @@ -0,0 +1,155 @@ + + + {$lang_table_title} + + + + + + + + +
    + + +
    +
    +
    + {$lang_table_general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +
    + {$lang_table_advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + +
     
    +
    + + + + + +
     
    +
    + + + + + +
     
    +
    +
    +
    +
    + +
    +
    + +
    + +
    + +
    +
    +
    + + diff --git a/webcit/tiny_mce/plugins/zoom/editor_plugin.js b/webcit/tiny_mce/plugins/zoom/editor_plugin.js new file mode 100644 index 000000000..e18eaa3e9 --- /dev/null +++ b/webcit/tiny_mce/plugins/zoom/editor_plugin.js @@ -0,0 +1,6 @@ +function TinyMCE_zoom_getInfo(){return{longname:'Zoom',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_zoom.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_zoom_getControlHTML(control_name){if(!tinyMCE.isMSIE||tinyMCE.isMSIE5_0||tinyMCE.isOpera)return "";switch(control_name){case "zoom":return '';}return "";}function TinyMCE_zoom_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceZoom":tinyMCE.getInstanceById(editor_id).contentDocument.body.style.zoom=value;tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom=value;return true;}return false;} \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/zoom/editor_plugin_src.js b/webcit/tiny_mce/plugins/zoom/editor_plugin_src.js new file mode 100644 index 000000000..698d70459 --- /dev/null +++ b/webcit/tiny_mce/plugins/zoom/editor_plugin_src.js @@ -0,0 +1,47 @@ +/* Import plugin specific language pack */ + +function TinyMCE_zoom_getInfo() { + return { + longname : 'Zoom', + author : 'Moxiecode Systems', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_zoom.html', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; +}; + +/** + * Returns the HTML contents of the zoom control. + */ +function TinyMCE_zoom_getControlHTML(control_name) { + if (!tinyMCE.isMSIE || tinyMCE.isMSIE5_0 || tinyMCE.isOpera) + return ""; + + switch (control_name) { + case "zoom": + return ''; + } + + return ""; +} + +/** + * Executes the mceZoom command. + */ +function TinyMCE_zoom_execCommand(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mceZoom": + tinyMCE.getInstanceById(editor_id).contentDocument.body.style.zoom = value; + tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom = value; + return true; + } + + // Pass to next handler in chain + return false; +} diff --git a/webcit/tiny_mce/plugins/zoom/langs/es.js b/webcit/tiny_mce/plugins/zoom/langs/es.js new file mode 100644 index 000000000..3bc7aed29 --- /dev/null +++ b/webcit/tiny_mce/plugins/zoom/langs/es.js @@ -0,0 +1,3 @@ +// Español por matiasl-AR + +tinyMCELang['lang_zoom_prefix'] = 'Aumento de Tamaño'; \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/zoom/langs/fr.js b/webcit/tiny_mce/plugins/zoom/langs/fr.js new file mode 100644 index 000000000..8d48271c7 --- /dev/null +++ b/webcit/tiny_mce/plugins/zoom/langs/fr.js @@ -0,0 +1,3 @@ +// Traduit par Normand Lamoureux le 2005-11-12 + +tinyMCELang['lang_zoom_prefix'] = 'Augmenter la taille'; \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/zoom/langs/he.js b/webcit/tiny_mce/plugins/zoom/langs/he.js new file mode 100644 index 000000000..134435a3c --- /dev/null +++ b/webcit/tiny_mce/plugins/zoom/langs/he.js @@ -0,0 +1,5 @@ +// HE lang variables by Liron Newman, http://eesh.net + +tinyMCE.addToLang('',{ +zoom_prefix : 'æåí' +}); diff --git a/webcit/tiny_mce/plugins/zoom/langs/pt_br.js b/webcit/tiny_mce/plugins/zoom/langs/pt_br.js new file mode 100644 index 000000000..e36760085 --- /dev/null +++ b/webcit/tiny_mce/plugins/zoom/langs/pt_br.js @@ -0,0 +1,10 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCELang['lang_zoom_prefix'] = 'Aumentar de Tamanho'; \ No newline at end of file diff --git a/webcit/tiny_mce/plugins/zoom/langs/ru.js b/webcit/tiny_mce/plugins/zoom/langs/ru.js new file mode 100644 index 000000000..310ecbf6f --- /dev/null +++ b/webcit/tiny_mce/plugins/zoom/langs/ru.js @@ -0,0 +1,5 @@ +// RU cp1251 lang variables + +tinyMCE.addToLang('',{ +zoom_prefix : 'ìàñøòàá' +}); diff --git a/webcit/tiny_mce/plugins/zoom/langs/ru_KOI8-R.js b/webcit/tiny_mce/plugins/zoom/langs/ru_KOI8-R.js new file mode 100644 index 000000000..b285dfd08 --- /dev/null +++ b/webcit/tiny_mce/plugins/zoom/langs/ru_KOI8-R.js @@ -0,0 +1,5 @@ +// RU KOI8-R lang variables + +tinyMCE.addToLang('',{ +zoom_prefix : 'ÍÁÓÛÔÁÂ' +}); diff --git a/webcit/tiny_mce/plugins/zoom/langs/ru_UTF-8.js b/webcit/tiny_mce/plugins/zoom/langs/ru_UTF-8.js new file mode 100644 index 000000000..0c81efced --- /dev/null +++ b/webcit/tiny_mce/plugins/zoom/langs/ru_UTF-8.js @@ -0,0 +1,5 @@ +// RU UTF-8 lang variables + +tinyMCE.addToLang('',{ +zoom_prefix : 'масштаб' +}); diff --git a/webcit/tiny_mce/plugins/zoom/langs/zh_tw.js b/webcit/tiny_mce/plugins/zoom/langs/zh_tw.js new file mode 100644 index 000000000..c2300776e --- /dev/null +++ b/webcit/tiny_mce/plugins/zoom/langs/zh_tw.js @@ -0,0 +1,6 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +zoom_prefix : '©ñ¤j' +}); diff --git a/webcit/tiny_mce/plugins/zoom/langs/zh_tw_utf8.js b/webcit/tiny_mce/plugins/zoom/langs/zh_tw_utf8.js new file mode 100644 index 000000000..bd56537c2 --- /dev/null +++ b/webcit/tiny_mce/plugins/zoom/langs/zh_tw_utf8.js @@ -0,0 +1,6 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + +tinyMCE.addToLang('',{ +zoom_prefix : '放大' +}); diff --git a/webcit/tiny_mce/plugins/zoom/readme.txt b/webcit/tiny_mce/plugins/zoom/readme.txt new file mode 100644 index 000000000..4fdb78aec --- /dev/null +++ b/webcit/tiny_mce/plugins/zoom/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/webcit/tiny_mce/themes/advanced/about.htm b/webcit/tiny_mce/themes/advanced/about.htm new file mode 100644 index 000000000..d57546bbb --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/about.htm @@ -0,0 +1,53 @@ + + + {$lang_about_title} + + + + + + + + + +
    +
    +

    {$lang_about_title}

    +

    Version: {$tinymce_version} ({$tinymce_releasedate})

    +

    TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL + by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.

    +

    Copyright © 2005, Moxiecode Systems AB, All rights reserved.

    +

    For more information about this software visit the TinyMCE website.

    + +
    +
    + +
    +
    +

    {$lang_loaded_plugins}

    + +
    +
    + +

     

    +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + + diff --git a/webcit/tiny_mce/themes/advanced/anchor.htm b/webcit/tiny_mce/themes/advanced/anchor.htm new file mode 100644 index 000000000..53d7969f0 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/anchor.htm @@ -0,0 +1,33 @@ + + + {$lang_insert_anchor_title} + + + + + +
    + + + + + + + + + +
    {$lang_insert_anchor_title}
    {$lang_insert_anchor_name}:
    + +
    +
    + +
    + +
    + +
    +
    + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/charmap.htm b/webcit/tiny_mce/themes/advanced/charmap.htm new file mode 100644 index 000000000..9aed1d4b5 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/charmap.htm @@ -0,0 +1,53 @@ + + + {$lang_theme_charmap_title} + + + + + + + + + + + + + + + + + +
    {$lang_theme_charmap_title}
    + + + + + + + + + +
     
     
    +
    + + + + + + + + + + + + + + + + +
    HTML-Code
     
     
    NUM-Code
     
    +
    + + + diff --git a/webcit/tiny_mce/themes/advanced/color_picker.htm b/webcit/tiny_mce/themes/advanced/color_picker.htm new file mode 100644 index 000000000..05db9b6bf --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/color_picker.htm @@ -0,0 +1,13 @@ + + + {$lang_theme_colorpicker_title} + + + + + +
    + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/css/editor_content.css b/webcit/tiny_mce/themes/advanced/css/editor_content.css new file mode 100644 index 000000000..1b41edb8c --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/css/editor_content.css @@ -0,0 +1,55 @@ +/* This file contains the CSS data for the editable area(iframe) of TinyMCE */ +/* You can extend this CSS by adding your own CSS file with the the content_css option */ + +body { + background-color: #FFFFFF; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} + +td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +pre { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +.mceVisualAid { + border: 1px dashed #BBBBBB !important; +} + +.mceItemAnchor { + width: 12px; + line-height: 6px; + overflow: hidden; + padding-left: 12px; + background-image: url('../images/anchor_symbol.gif'); + background-position: bottom; + background-repeat: no-repeat; +} + +/* Important is needed in Gecko browsers inorder to style links */ +/* +a { + color: green !important; +} +*/ + +/* Style selection range colors in Gecko browsers */ +/* +::-moz-selection { + background-color: red; + color: green; +} +*/ diff --git a/webcit/tiny_mce/themes/advanced/css/editor_popup.css b/webcit/tiny_mce/themes/advanced/css/editor_popup.css new file mode 100644 index 000000000..14f83221a --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/css/editor_popup.css @@ -0,0 +1,319 @@ +/* This file contains the CSS data for all popups in TinyMCE */ + +body { + background-color: #F0F0EE; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; + margin: 8px; +} + +td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; +} + +input { + background: #FFFFFF; + border: 1px solid #cccccc; +} + +td, input, select, textarea { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +input, select, textarea { + border: 1px solid #808080; +} + +.input_noborder { + border: 0px solid #808080; +} + +#insert { + font-weight: bold; + width: 90px; + height: 21px; + border: 0px; + background-image: url('../images/insert_button_bg.gif'); + cursor: pointer; +} + +#cancel { + font-weight: bold; + width: 90px; + height: 21px; + border: 0px; + background-image: url('../images/cancel_button_bg.gif'); + cursor: pointer; +} + +/* Mozilla only style */ +html>body #insert, html>body #cancel { + padding-bottom: 2px; +} + +.title { + font-size: 12px; + font-weight: bold; + color: #2B6FB6; +} + +table.charmap { + border-style: solid; + border-width: 1px; + border-color: #AAAAAA; +} + +td.charmap, td.charmapOver { + color: #000000; + border-color: #AAAAAA; + border-style: solid; + border-width: 1px; + text-align: center; + font-size: 12px; +} + +td.charmapOver { + background-color: #CCCCCC; + cursor: arrow; +} + +a.charmap { + color: #000000; + text-decoration: none +} + +.wordWrapCode { + vertical-align: middle; + border: 1px none #000000; + background-color: transparent; +} + +input.radio { + border: 1px none #000000; + background-color: transparent; + vertical-align: middle; +} + +input.checkbox { + border: 1px none #000000; + background-color: transparent; + vertical-align: middle; +} + +.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected { + margin-left: 1px; +} + +.mceButtonNormal { + border-top: 1px solid; + border-left: 1px solid; + border-bottom: 1px solid; + border-right: 1px solid; + border-color: #F0F0EE; + cursor: arrow; +} + +.mceButtonOver { + border: 1px solid #0A246A; + cursor: arrow; + background-color: #B6BDD2; +} + +.mceButtonDown { + cursor: arrow; + border: 1px solid #0A246A; + background-color: #8592B5; +} + +.mceButtonDisabled { + filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); + -moz-opacity:0.3; + opacity: 0.3; + border-top: 1px solid; + border-left: 1px solid; + border-bottom: 1px solid; + border-right: 1px solid; + border-color: #F0F0EE; + cursor: arrow; +} + +.mceActionPanel { + margin-top: 5px; +} + +/* Tabs classes */ + +.tabs { + float: left; + width: 100%; + line-height: normal; + background-image: url("../images/xp/tabs_bg.gif"); +} + +.tabs ul { + margin: 0; + padding: 0px 0px 0; + list-style: none; +} + +.tabs li { + float: left; + background: url("../images/xp/tab_bg.gif") no-repeat left top; + margin: 0; + margin-left: 0px; + margin-right: 2px; + padding: 0 0 0 10px; + line-height: 18px; +} + +.tabs li.current { + background: url("../images/xp/tab_sel_bg.gif") no-repeat left top; + margin-right: 2px; +} + +.tabs span { + float: left; + display: block; + background: url("../images/xp/tab_end.gif") no-repeat right top; + padding: 0px 10px 0px 0px; +} + +.tabs .current span { + background: url("../images/xp/tab_sel_end.gif") no-repeat right top; +} + +.tabs a { + text-decoration: none; + font-family: Verdana, Arial; + font-size: 10px; +} + +.tabs a:link, .tabs a:visited, .tabs a:hover { + color: black; +} + +.tabs a:hover { +} + +.tabs .current { +} + +.tabs .current a, .tabs .current a:link, .tabs .current a:visited { +} + +.panel_wrapper div.panel { + display: none; +} + +.panel_wrapper div.current { + display: block; + width: 100%; + height: 300px; + overflow: visible; /* Should be auto but that breaks Safari */ +} + +.panel_wrapper { + border: 1px solid #919B9C; + border-top: 0px; + padding: 10px; + padding-top: 5px; + clear: both; + background-color: white; +} + +fieldset { + border: 1px solid #919B9C; + font-family: Verdana, Arial; + font-size: 10px; + padding: 0px; + margin: 0px; + padding: 4px; +} + +legend { + color: #2B6FB6; + font-weight: bold; +} + +.properties { + width: 100%; +} + +.properties .column1 { +} + +.properties .column2 { + text-align: left; +} + +a:link, a:visited { + color: black; +} + +a:hover { + color: #2B6FB6; +} + +#plugintable thead { + font-weight: bold; + background-color: #DDDDDD; +} + +#plugintable, #about #plugintable td { + border: 1px solid #919B9C; +} + +#plugintable { + width: 99%; + margin-top: 10px; +} + +#pluginscontainer { + height: 290px; + overflow: auto; +} + +/* MSIE Specific styles */ + +* html .panel_wrapper { + width: 100%; +} + +.column { + float: left; +} + +h1, h2, h3, h4 { + color: #2B6FB6; + margin: 0px; + padding: 0px; + padding-top: 5px; +} + +h3 { + font-size: 14px; +} + +/* Disables the advanced tab in the table plugin. */ +/* +#table #advanced_tab { + display: none; +} +*/ + +/* Disables the border input field and label in the table plugin. */ +/* +#table #border, #table #borderlabel { + display: none; +} +*/ diff --git a/webcit/tiny_mce/themes/advanced/css/editor_ui.css b/webcit/tiny_mce/themes/advanced/css/editor_ui.css new file mode 100644 index 000000000..77cc4b1c3 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/css/editor_ui.css @@ -0,0 +1,173 @@ +/* This file contains the CSS data for the editor UI of TinyMCE instances */ + +.mceToolbarTop a, .mceToolbarTop a:visited, .mceToolbarTop a:hover, .mceToolbarBottom a, .mceToolbarBottom a:visited, .mceToolbarBottom a:hover { + border: 0px; margin: 0px; padding: 0px; background: transparent; +} + +.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceSeparatorLine, .mceButtonDisabled, .mceButtonSelected { + border: 0px; margin: 0px; padding: 0px; background: transparent; + margin-top: 1px; + margin-left: 1px; + padding: 0px; +} + +.mceButtonNormal { + border: 1px solid #F0F0EE !important; + cursor: arrow; +} + +.mceButtonOver { + border: 1px solid #0A246A !important; + cursor: arrow; + background-color: #B6BDD2; +} + +.mceButtonDown { + cursor: arrow; + border: 1px solid #0A246A !important; + background-color: #8592B5; +} + +.mceButtonSelected { + border: 1px solid #C0C0BB !important; + cursor: arrow; +} + +.mceButtonDisabled { + filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); + -moz-opacity:0.3; + opacity: 0.3; + border: 1px solid #F0F0EE !important; + cursor: arrow; +} + +.mceSeparator { + border-top: 1px solid buttonhighlight; + border-left: 1px solid buttonhighlight; + border-bottom: 1px solid buttonshadow; + border-right: 1px solid buttonshadow; + margin-right: 2px; + margin-left: 2px; +} + +.mceSeparatorLine { + margin:2px; + margin-left: 4px; + background-color: #F0F0EE; + border-top: 1px solid buttonshadow; + border-left: 1px solid buttonshadow; + border-bottom: 1px solid buttonhighlight; + border-right: 1px solid buttonhighlight; + width: 0px; + height: 15px; +} + +.mceSelectList { + font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; + font-size: 7pt !important; + font-weight: normal; + margin-top: 3px; + padding: 0px; + display: inline; + vertical-align: top; + background-color: #F0F0EE +} + +.mceLabel, .mceLabelDisabled { + font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; + font-size: 9pt; +} + +.mceLabel { + color: #000000; +} + +.mceLabelDisabled { + cursor: text; + color: #999999; +} + +.mceEditor { + background: #F0F0EE; + border: 1px solid #cccccc; + padding: 0px; + margin: 0px; +} + +.mceEditorArea { + font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; + background: #FFFFFF; + padding: 0px; + margin: 0px; +} + +.mceToolbarTop, .mceToolbarBottom { + background: #F0F0EE; + line-height: 1px; + font-size: 1px; +} + +.mceToolbarTop { + border-bottom: 1px solid #cccccc; +} + +.mceToolbarBottom { + border-top: 1px solid #cccccc; +} + +.mceStatusbarTop, .mceStatusbarBottom, .mceStatusbar { + height: 20px; +} + +.mceStatusbarTop .mceStatusbarPathText, .mceStatusbarBottom .mceStatusbarPathText, .mceStatusbar .mceStatusbarPathText { + font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; + font-size: 9pt; + padding: 2px; + line-height: 16px; + overflow: visible; +} + +.mceStatusbarTop { + border-bottom: 1px solid #cccccc; +} + +.mceStatusbarBottom { + border-top: 1px solid #cccccc; +} + +.mceStatusbar { + border-bottom: 1px solid #cccccc; +} + +.mcePathItem, .mcePathItem:link, .mcePathItem:visited, .mcePathItem:hover { + text-decoration: none; + font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; + font-size: 9pt; + color: #000000; +} + +.mcePathItem:hover { + text-decoration: underline; +} + +.mceStatusbarPathText { + float: left; +} + +.mceStatusbarResize { + float: right; + background-image: url('../images/statusbar_resize.gif'); + background-repeat: no-repeat; + width: 11px; + height: 20px; + cursor: se-resize; +} + +.mceResizeBox { + width: 10px; + height: 10px; + display: none; + border: 1px dotted gray; + margin: 0px; + padding: 0px; +} diff --git a/webcit/tiny_mce/themes/advanced/docs/cs/about.htm b/webcit/tiny_mce/themes/advanced/docs/cs/about.htm new file mode 100644 index 000000000..f51faa9a8 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/cs/about.htm @@ -0,0 +1,31 @@ + + +O TinyMCE + + + + + + + + + + + + +
    +
    +TinyMCE je malý WYSIWYG editor pro webové prohlí¾eèe jako jsou MSIE nebo Mozilla, +kterým lze HTML obsah upravovat mnohem jednodu¹eji. Obsahuje bì¾né funkce, +je¾ lze nalézt ve vìt¹inì textových editorù, proto by jeho pou¾ívání nemìlo být slo¾ité.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/cs/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/cs/common_buttons.htm new file mode 100644 index 000000000..c096703b4 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/cs/common_buttons.htm @@ -0,0 +1,170 @@ + + +Bì¾ná tlaèítka + + + + + + + + + + + + +
    +
    +Ní¾e je krátce popsáno ka¾dé tlaèítko. + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Zkopíruje aktuálnì vybraný obsah do schránky. (Ctrl+C)
    Vyjme aktuálnì vybraný obsah do schránky. (Ctrl+X)
    Vlo¾í obsah schránky do okna editoru. (Ctrl+P)
    Ztuèní text.
    Naformátuje text kurzívou.
    Podtrhne text.
    Pøe¹krtne text.
    Zarovná vlevo.
    Zarovná na støed.
    Zarovná vpravo.
    Zarovná do bloku.
    Neøazený seznam/seznam s odrá¾ky.
    Øazený seznam/èíslovaný seznam.
    Pøedsadí/sní¾í odsazení.
    Odsadí/zvý¹í odsazení.
    Vrátí zpìt naposledy provedenou akci.
    Obnoví poslední akci.
    Vlo¾í nový odkaz, více o této funkci v èásti Vlo¾it odkaz.
    Zru¹í odkaz v aktuálním výbìru/odstranit v¹echny vybrané odkazy.
    Vlo¾í nový obrázek, více o této funkci v èásti Vlo¾it obrázek.
    Vyèistí kód/odstraní nechtìné formátování. Tato funkce se hodí kdy¾ + kopírujete obsah napøíklad z kanceláøského balíku.
    Zobrazí tuto nápovìdu.
    Otevøe editor s HTML zdrojem.
    Do aktuální pozice vlo¾í novou 2x2 tabulku.
    Pøidá øádek pøed aktuální.
    Pøidá øádek pod aktuální.
    Odstraní øádek.
    Pøidá sloupec pøed aktuální.
    Pøidá sloupec za aktuální.
    Odstraní aktuální sloupec.
    Pøidá nový vodorovný oddìlovaè.
    Odstraní z výbìru formátování.
    Vytvoøí z vybraného textu dolní index.
    Vytvoøí z vybraného textu horní index.
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/cs/images/insert_image_window.png b/webcit/tiny_mce/themes/advanced/docs/cs/images/insert_image_window.png new file mode 100644 index 0000000000000000000000000000000000000000..5d9ea983036b347646ccda7ac3f26723c4a3cf43 GIT binary patch literal 4799 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/cs/images/insert_link_window.png b/webcit/tiny_mce/themes/advanced/docs/cs/images/insert_link_window.png new file mode 100644 index 0000000000000000000000000000000000000000..94a0c2e5a4206226b83753c42c7dfe08bcb288a0 GIT binary patch literal 3833 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/cs/index.htm b/webcit/tiny_mce/themes/advanced/docs/cs/index.htm new file mode 100644 index 000000000..88c8c8f05 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/cs/index.htm @@ -0,0 +1,26 @@ + + +Nápovìda + + + + + + + + + + +
    +
    +Kliknutím na odkazy ní¾e zvolte po¾adovanou èást nápovìdy. + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/cs/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/cs/insert_image_button.htm new file mode 100644 index 000000000..360102df7 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/cs/insert_image_button.htm @@ -0,0 +1,66 @@ + + +Tlaèítko vlo¾it obrázek + + + + + + + + + + + + +
    +
    +Tlaèítko vlo¾it obrázek otevøe následující okno.
    +
    +
    +
    +Jen vlo¾te URL obrázku, který chcete pøidat a zadáte jeho popis, jen¾ bude +zobrazován jako alternativní popisek obrázku.
    +
    +Popis políèek:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    URL obrázkuURL/cesta k obrázku.
    Popis obrázkuAlternativní popis toho, co je na obrázku.
    Rozmìry©íøka/vý¹ka obrázku.
    ZarovnáníZarovnání obrázku, vhodné pro obtékání obrázku textem.
    RámeèekTlou¹»ka rámeèku.
    Vertikální okrajVertikální okraj, vhodné pro zalomení textu kolem obrázku.
    Horizontální okrajHorizontální okraj, vhodné pro zalomení textu kolem obrázku.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/cs/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/cs/insert_link_button.htm new file mode 100644 index 000000000..35080782c --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/cs/insert_link_button.htm @@ -0,0 +1,34 @@ + + +Tlaèítko vlo¾it odkaz + + + + + + + + + + + + +
    +
    +Toto tlaèítko otevøe nové okno s mo¾ností vlo¾ení/úpravy odkazu.
    +
    +
    +
    +V tomto oknì jsou dvì políèka. "URL odkazu" je adresa stránky, na +kterou odkazujeme. "Cíl" urèuje, jak má být odkazovaná stránka otevøena.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/cs/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/cs/insert_table_button.htm new file mode 100644 index 000000000..fcb63b62a --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/cs/insert_table_button.htm @@ -0,0 +1,68 @@ + + +Tlaèítko vlo¾it tabulku + + + + + + + + + + + + +
    +
    +Tlaèítko vlo¾it tabulku otevøe následující okno, v nìm¾ mù¾ete definovat novou tabulku.
    +
    +
    +
    +Popis políèek:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SloupcePoèet sloupcù v tabulce.
    ØádkyPoèet øádkù v tabulce.
    Vnitøní okraj bunìkVnitøní okraj bunìk tabulky.
    Vnìj¹í okraj bunìkVnitøní okraj bunìk tabulky.
    ZarovnáníZarovnání tabulky.
    RámeèekTlou¹»ka rámeèku tabulky.
    ©íøka©íøka tabulky v pixelech.
    Vý¹kaVý¹ka tabulky v pixelech.
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/cs/style.css b/webcit/tiny_mce/themes/advanced/docs/cs/style.css new file mode 100644 index 000000000..f988e2a7b --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/cs/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: 0; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/da/about.htm b/webcit/tiny_mce/themes/advanced/docs/da/about.htm new file mode 100644 index 000000000..fc228f8c4 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/da/about.htm @@ -0,0 +1,31 @@ + + +About TinyMCE + + + + + + + + + + + +
    +
    +TinyMCE er et kompakt WYSIWYG editeringsmodul, der kan anvendes i browsere som MS Internet +Explorer eller Mozilla. Modulet gør det muligt for dig at redigere HTML-indhold +på en mere brugervenlig måde. Den er forsynet med de samme funktioner, som man +finder i de fleste tekstbehandlingssystemer og skulle ikke være svær at anvende.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/da/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/da/common_buttons.htm new file mode 100644 index 000000000..297a22c95 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/da/common_buttons.htm @@ -0,0 +1,162 @@ + + +Common buttons + + + + + + + + + + + +
    +
    +Herunder finder du en beskrivelse af de enkelte knapper.
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Bold text iconFed tekst (Ctrl+B).
    Italic text iconKursiv (Ctrl+I).
    Underline text icon.Understregning (Ctrl+U).
    Strikethrough text icon.Gennemstregning.
    Align left icon.Juster til venstre.
    Align center icon.Centrer.
    Align right icon.Juster til højre.
    Align full icon.Lige højre margen.
    Unordered list/bullet list icon.Uordnet list med bullets.
    Ordered list/numbered list icon.Ordnet liste med tal
    Outdent/decrease indentation icon.Flyt tekst til venstre.
    Indent/increase indentation icon.Flyt tekst til højre.
    Undo the last operation.Fortryd sidste valg (Ctrl+Z).
    Redo the last operation icon.Gentag sidste valg (Ctrl+Y).
    Insert a new link icon.Indsæt nyt link - læs mere om denne funktion i afsnittet Indsættelse + af link.
    Unlinks the current selection icon.Fjern aktuelt valgte link(s).
    Insert a new anchor icon.Indsæt nyt bogmærke - læs mere om denne funktion i afsnittet om + Bogmærker.
    Insert a new image icon.Indsæt nyt billede - læs mere om denne funktion i afsnittet om + Billedbehandling.
    Cleanup code icon.Ryd op i koden / fjern uønsket formatering. Denne funktion er brugbar, + når man indsætter tekst f. eks. fra et office-produkt.
    Show help icon.Viser dette hjælpevindue.
    Source code editor icon.Åbner editoren til redigering af HTML-kode.
    Insert table icon.Indsætter en ny tabel, hvor cursoren aktuelt er anbragt.
    Adds a row above icon.Tilføjer en række over den aktuelle.
    Adds a row under icon.Tilføjer en række under den aktuelle.
    Remove row icon.Fjerner en række.
    Add column before icon.Tilføjer en kolonne før den aktuelle.
    Add column after icon.Tilføjer en kolonne efter den aktuelle.
    Remove column icon.Fjerner den aktuelle kolonne.
    Insert horizontal ruler icon.Indsætter en vandret streg
    Remove formatting icon.Fjerner al formatering fra den aktuelt valgte tekst.
    Subscript icon.Sætter det valgte som sænket skrift.
    Superscript icon.Sætter det valgte som hævet skrift.
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/da/create_accessible_content.htm b/webcit/tiny_mce/themes/advanced/docs/da/create_accessible_content.htm new file mode 100644 index 000000000..b855eb713 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/da/create_accessible_content.htm @@ -0,0 +1,76 @@ + + +Insert table button + + + + + + + + + + + +
    +

    TinyMCE kan producere HTML, der vil være tilgængeligt for alle brugere, også +dem med handicaps, som anvender forskellige hjælpeteknikker. Den kan også skabe +indhold, der er tilgængeligt for brugere, som anvender tekstbaserede browsere +eller dem, der browser uden at vise billederne frem på siderne. 

    + +

    Ting du selv kan gøre, for at gøre dine tekste tilgængelige:

    +
      +
    1. Lav en billedbeskrivelse: Blinde brugere eller andre, som +ikke er i stand til at se billeder, er helt afhængige af billedbeskrivelsen +eller alt-teksten, som erstatter selve billedet. Hvis et billede ingen betydning +har - dvs. hvis det blot fungerer som dekoration eller som et blankt område, så +lad billedbeskrivelsen stå tom.  Så vil TinyMCE indsætte et tomt alt-felt, +der vil tvinge hjælpeprogrammerne til at ignorere billedet.

    2. + +
    3. Tilføj udstrækning til en tabels overskriftsceller: I den +dialog, som gør det muligt at styre en tabels attributter, bør man angive en +overskrifts udstrækning. Det vil fungere sådan, at overskriften automatisk +knyttes til alle værdier i tabellen, hvilket gør det nemmere for blinde brugere +at forstå, hvad indholdet i den enkelte celle betyder. 

    4. + +
    5. Strukturer indholdet med fornuftige overskrifter: Vælg +standardformaterede overskrifter (som f. eks. H1-6) for at lave overskrifter til +dit indhold - går det i stedet for at lave dine egne standarder. Blinde brugere +anvender en læser, der kan genkende disse standardformater og på den måde lave +en indholdsfortegnelse over siden. På den måde kan en blind bruger lettere +bevæge sig rundt på siden og springe fra afsnit til afsnit.

    6. + +
    7. Husk at lave alternativt indhold: Lav en alternativ side +der repræsenterer ikke-HTML-formateret indhold - så som Flash, Java applets +eller indlejrede videosekvenser. Denne kan laves som et stykke statisk grafik +kombineret med en beskrivelse af billedet og en beskrivelse af det indhold, som  +ville være dukket op, hvis man havde set siden på normal vis. En alternativ +HTML-side kan også laves, hvorefter man så kan lægge et link på til den ved +siden af Falsh-referencen eller referencen til Java appletten. På denne måde +sikrer du, at indholdet også er tilgængeligt for folk, som bruger +hjælpeteknologier, som ikke er i stand til at vise eller afvikle dit indhold +eller som mangler den relevante player eller plugin.

    8. + +
    9. Kontroller tilgængeligheden: Når AChecker plugin'en er +installeret sammen med TinyMCE, kan du blot trykke på den relevante knap for at +blive adviseret om mulige tilgængelighedsproblemer.

    10. + +
    + +

    Besøg ACheckers +hjemmeside for at se yderligere informationer om, hvordan man skaber +indhold, som alle brugere kan tilgå.
    +

    + +
    + + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/da/images/insert_anchor_window.gif b/webcit/tiny_mce/themes/advanced/docs/da/images/insert_anchor_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b5f528dd57cae8e062919a66b0ff7fcf8f3bc42 GIT binary patch literal 5189 zcmV-L6uRq2Nk%w1VM+mu0QUd@H&l@lEO0qilOsNVFindaHh4i^nHDj05GrpUI(!r_ za}OzQrpoXNBx(yKYi5SIC`5!jS(O+wc1dTTm%8JFrP7M5*m|4FS$M8BQjd0*$5mBT z=;+h``|#@O>def{hpE;xP>o@MwWZ1MmAK&!C~YJ_fOC|^AUu7Ow%}WOucF57OlzZ* zw&0}4?rx62QE;bCYowvX>r85*c$vv8NQW{`j8k!_FH4CuP>z71&z->NKwX$paj0pE zye&zHq{#21$L&sRq?EVen7rhKrqiFo>V2NfQE#UjHF%J+-E@`3GEa?lmc|`9dpK2* zrOEF^Vw{Vv*__V48cJ%W#pxN@<~n zsMJnvrBH9C0A|c`lfyqtRHdBxl zFm#Qu+mEu`CPIROqtR4yshGRuX^FcMEpd*p+f{U`Cqjd5kGv^Gg(pLU88mmC!01S3 zpJ<4>VuH3?day-fos6#9fTGZuyya?&y^pcnB|w2?g}6OhmVBMeXNS5IE^=vtn#p8@xFtb?7czBwoy$gJoo$W3h^p6Mf3qq^g%B%mTzjybzvr605p*>rcFHDMBd9Qt+&3AWqElP-Sk;0I( z-5xo6E=q}UlEZhH$d{pUziytuto-k+j}!kHAxMsSGA;4JT}sxZ;L}hHsC- zGc(Nb@$mp=nVFfH004k9Gc%x*O#}o4z`(%&%$Wc)nKNe0UteD{=KnxIK!AXN)X>NP z00960|M2kcA^8LV00000EC2ui07?Oi000R80Qm_VNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGZNIt&!5MSAVZ2ANwTELlPFWFT*BcR3xlMp%jWXM1X0Dva~1XRJ|EJ6fX z)6SqV!^1$9EM216ilWLFAvnuSO_(4J%%B-8Vh9n#Mavi@FnZiDrzz5>J8v9`1BU@a zH5I9dDOzM_%CTTq_=rHIY>gaUu^v4CpmpjNCm*h!;VJa%#fx(5AbrW!t&E-%OQffv2Za)dSExbcS$tRR!gBo$Op1T)Zt(FO>~0JDV!7T_YqD$Q8p$t#yA zp$$269Fjr{Ly(ZpHxy8?2@$Or1Bf8Sl(NGfMi{|H95OUw$O=KY00a~xFreg;Og8D{ zlTbz(B|k>##MCwFWT~Z=PC+FVRaRl86<1z?B^Fs`p`{jEZowrNU3TH67hiq>CKzFc zA*L8(jzK0FWtL&48E2k>CK_p`p{5#ZuE8c7ZMNa28*jb=CmeCcA*UR3&Os*~b=G00 z9e3V=Cmwm`p{E{u?!hM?efHu1ryqa*0Vp7W1|p~+gAPI{A%zxVs3C_Qf+!-1CZeb! zi!Q<_BaJrVs3VU)0x2YsMj|QYw%m3LC6zfLwbV5vy|aN*PenCVRaa%TRaakyHC9rnq8@FUB}yjW_1FV~;-uIb@MXCdt4``k<|(+6;hu)Rq2p zAotuIywkzC4W#=eyJEioTc*5d*1IOYZtfeWzjOwCC&79i+^52THasZAhEANQ#f)bB zD94h1T&c*Imb@v-o~|6K%cRD9D$T0i+^Wv7_B<=lwho=E(Yz-8E7QV0U98l|R=q6N z&Tbv8*VKl6E!oxStrnem=UubTI^ zsV|)V$oX%b0(+FF!F(qCC&Pk1T&TpP@ra@>)+miZs$-J^nWaXSDU)$3WuIc1s9sho znW3s?tHN11J`y`w{j63(!&T9Cg*0C+Em%$?R@9C~HDz6`Sz3cu*QNzFYmF^iW{ciJ zpeK-h`0$56?4kAloF}~@VozL3fk*ec*MV`gqXQp!$2HF70FZ#GU1NfmndX%yd$GkM zg@d2`5@)AG*v}(4@JRmrw6H)qj8G9f6b}T5IgB}KW0CS0r9vhgk2KH`9>IV|N(ZWz zjS6O_npvuB#;O;1L_QvgmCry@I}v(>guPN4u$ne3s2OW&O7Mu)m=zKkO6zOY5*xP4 zM!h0N4~VeT$@GZGkAC!nAhs0Z^{Rx#2EZc}eqaYX@?5R8Ss^Ewx

    E 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/da/images/insert_image_window.gif b/webcit/tiny_mce/themes/advanced/docs/da/images/insert_image_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..cdc617eab3be256173af047822671023c41d53c7 GIT binary patch literal 7195 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 AEdT%j literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/da/images/insert_table_window.gif b/webcit/tiny_mce/themes/advanced/docs/da/images/insert_table_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..23b38145bf569162ff30de7dfec7bb8a31058700 GIT binary patch literal 10359 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/da/index.htm b/webcit/tiny_mce/themes/advanced/docs/da/index.htm new file mode 100644 index 000000000..1671fe41b --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/da/index.htm @@ -0,0 +1,28 @@ + + +Help Index + + + + + + + + + +


    +
    +Klik på et link herunder for at springe til en hjælpetekst. + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/da/insert_anchor_button.htm b/webcit/tiny_mce/themes/advanced/docs/da/insert_anchor_button.htm new file mode 100644 index 000000000..3bc9d2951 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/da/insert_anchor_button.htm @@ -0,0 +1,33 @@ + + +Insert anchor button + + + + + + + + + + + +
    +
    +Denne knap åbner et nyt vindue, som rummer bogmærkefunktionen.
    +
    +Anchor dialog/window
    +
    +Der er kun et enkelt felt i dette vindue - i det skriver du navnet på dit +bogmærke. Husk at to bogmærker ikke kan hedde det samme.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/da/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/da/insert_image_button.htm new file mode 100644 index 000000000..ed7c81f70 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/da/insert_image_button.htm @@ -0,0 +1,67 @@ + + +Insert image button + + + + + + + + + + + +
    +
    +Knappen "Indsæt billede" åbner et vindue, der ser ud som nedenfor.
    +
    +Insert image dialog/window
    +
    +Her indskriver man ganske enkelt adressen på det billede, man vil linke til samt +en billedbeskrivelse. Denne beskrivelse bliver derefter vist som den alternative +tekstbeskrivelse af billedet.
    +
    +Feltbeskrivelser:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Image URL Adressen på eller stien til billedet.
    Image description Alternativ tekstbeskrivelse af billedet.
    DimentionsBilledets bredde / højde.
    AlignmentBilledets justering - brugbar når der skal sættes tekst på plads omkring + et billede.
    BorderRamme bredde.
    VSpaceVertikal margen - brugbart når billedet skal placeres i en tekst.
    HSpaceHorisontal margen - brugbart når billedet skal placeres i en tekst.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/da/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/da/insert_link_button.htm new file mode 100644 index 000000000..3c3444173 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/da/insert_link_button.htm @@ -0,0 +1,34 @@ + + +Insert link button + + + + + + + + + + + +
    +
    +Denne knap åbner et nyt vindue, som rummer linkfunktionen.
    +
    +Insert link dialog/window
    +
    +Der er to felter i dette vindue. I det første skal man indskrive adressen på +linket - i det andet det "target", som linket skal pege på - dvs. hvordan linket +åbnes, når brugeren trykker på det.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/da/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/da/insert_table_button.htm new file mode 100644 index 000000000..9fc990141 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/da/insert_table_button.htm @@ -0,0 +1,72 @@ + + +Insert table button + + + + + + + + + + + +
    +
    +Trykker man på indsæt tabel knappen åbnes det vindue, som du kan se herunder. I +dette vindue kan du oprette nye tabeller.
    +
    +
    +
    +Feltbeskrivelser:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KolonnerAntal kolonner i tabellen.
    RækkerAntal rækker i tabellen.
    CellemarginTabellens cellemargin.
    Indvendig marginIndvendig margin i cellerne.
    JusteringTabellens justering.
    KantKantbredden i tabellen.
    BreddeTabellens bredde i pixels.
    HøjdeTabellens højde i pixels.
    KlasseStyle eller stylesheet klasse for tabellen.
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/da/style.css b/webcit/tiny_mce/themes/advanced/docs/da/style.css new file mode 100644 index 000000000..722f537a1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/da/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/de/about.htm b/webcit/tiny_mce/themes/advanced/docs/de/about.htm new file mode 100644 index 000000000..c546f3048 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/de/about.htm @@ -0,0 +1,31 @@ + + +Über TinyMCE + + + + + + + + + + + +
    +
    +TinyMCE ist ein kompakter WYSIWYG-Editor für Webbrowser wie MSIE oder Mozilla +der es Ihnen ermöglicht HTML-Inhalte auf eine benutzerfreundliche Weise zu +editieren. Es verfügt über die wichtigsten Funktionen die in den meisten +Textverarbeitungen vorkommen und sollte einfach zu benutzen sein.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/de/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/de/common_buttons.htm new file mode 100644 index 000000000..3dc058d87 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/de/common_buttons.htm @@ -0,0 +1,107 @@ + + +Allgemeine Schaltflächen + + + + + + + + + + + +
    +
    +Untenstehend eine kurze Beschreibung jeder Schaltfläche.
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Fetter Text.
    Kursiver Text.
    Unterstrichener Text.
    Durchgestrichener Text.
    Linksbündig.
    Zentriert.
    Rechtsbündig.
    Blocksatz.
    Unsortierte Liste / Punktierte Liste.
    Sortierte Liste / Nummerierte Liste.
    Einzug verkleinern.
    Einzug vergrössern.
    Letzte Aktion rückgängig machen.
    Letzte Aktion wiederholen.
    Einen neuen Hyperlink einfügen, lesen Sie mehr über diese Funktion im Kapitel Hyperlink einfügen.
    Den gegenwärtige markierten Hyperlink entfernen / Alle gegenwärtig markierten Hyperlinks entfernen.
    Ein neues Bild einfügen, lesen Sie mehr über diese Funktion im Kapitel Bild einfügen.
    unsauberen Code aufräumen / Entfernt ungewollte Formatierungen. Diese Funktion ist nützlich, + wenn Sie beispielsweise Inhalte aus einem Office Produkt kopieren.
    Zeigt diese Hilfe an.
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/de/images/insert_image_window.gif b/webcit/tiny_mce/themes/advanced/docs/de/images/insert_image_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..751de28166262c14abe87713103afce2e741864b GIT binary patch literal 4822 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/de/images/insert_link_window.gif b/webcit/tiny_mce/themes/advanced/docs/de/images/insert_link_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..14871d7d2f27d6a667ed61aa19c503df6ce3201a GIT binary patch literal 5135 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/de/index.htm b/webcit/tiny_mce/themes/advanced/docs/de/index.htm new file mode 100644 index 000000000..d0d39e1d1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/de/index.htm @@ -0,0 +1,24 @@ + + +Inhaltsverzeichnis der Hilfe + + + + + + + + + +
    +
    +Klicken Sie auf die untenstehenden Links um die verschiedenen Bereiche der Hilfe zu betrachten. + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/de/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/de/insert_image_button.htm new file mode 100644 index 000000000..7fcb2c6d1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/de/insert_image_button.htm @@ -0,0 +1,33 @@ + + +Schaltfläche Bild einfügen + + + + + + + + + + + +
    +
    +Die Schaltfläche "Bild einfügen" öffnet das unten gezeigte Fenster.
    +
    +
    +
    +Sie geben einfach die URL zu dem Bild ein, das Sie verknüpfen möchten und eine +Beschreibung des Bildes, welche dann als alternative Textbeschreibung verwendet wird. +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/de/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/de/insert_link_button.htm new file mode 100644 index 000000000..fbbd54f50 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/de/insert_link_button.htm @@ -0,0 +1,34 @@ + + +Schaltfläche Hyperlink einfügen + + + + + + + + + + + +
    +
    +Diese Schaltfläche öffnet das Fenster für die "Hyperlink einfügen / bearbeiten"-Funktion.
    +
    +
    +
    +Zwei Felder sind in diesem Fenster auszufüllen. Das Erste, "Hyperlink URL", ist für +die URL der Verknüpfung. Das "Ziel" erlaubt Ihnen auszuwählen wie die Verknüpfung +geöffnet werden soll. +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/de/style.css b/webcit/tiny_mce/themes/advanced/docs/de/style.css new file mode 100644 index 000000000..722f537a1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/de/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/en/about.htm b/webcit/tiny_mce/themes/advanced/docs/en/about.htm new file mode 100644 index 000000000..a6957a651 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/en/about.htm @@ -0,0 +1,31 @@ + + +About TinyMCE + + + + + + + + + + + +
    +
    +TinyMCE is a small WYSIWYG editor control for web browsers such as MSIE or Mozilla +that enables you to edit HTML contents in a more user friendly way. It has common +features that are found in most word processors and should not be difficult to +use.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/en/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/en/common_buttons.htm new file mode 100644 index 000000000..a3bab47d1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/en/common_buttons.htm @@ -0,0 +1,162 @@ + + +Common buttons + + + + + + + + + + + +
    +
    +Below is a short description about each button. +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Bold text iconBold text style (Ctrl+B).
    Italic text iconItalic text style (Ctrl+I).
    Underline text icon.Underline text style (Ctrl+U).
    Strikethrough text icon.Strikethrough text style.
    Align left icon.Align left.
    Align center icon.Align center.
    Align right icon.Align right.
    Align full icon.Align full.
    Unordered list/bullet list icon.Unordered list/bullet list.
    Ordered list/numbered list icon.Ordered list/numbered list
    Outdent/decrease indentation icon.Outdent/decrease indentation.
    Indent/increase indentation icon.Indent/increase indentation.
    Undo the last operation.Undo the last operation (Ctrl+Z).
    Redo the last operation icon.Redo the last operation (Ctrl+Y).
    Insert a new link icon.Insert a new link, read more about this function in the Insert + link section.
    Unlinks the current selection icon.Unlinks the current selection/removes all selected links.
    Insert a new anchor icon.Insert a new anchor, read more about this function in the Insert anchor section.
    Insert a new image icon.Insert a new image, read more about this function in the Insert + image section.
    Cleanup code icon.Cleanup code/Removes unwanted formating. This function is useful when + you copy contents from for example a office product.
    Show help icon.Shows this help window.
    Source code editor icon.Opens HTML source code editor.
    Insert table icon.Inserts a new table at the current location.
    Adds a row above icon.Adds a row above the current one.
    Adds a row under icon.Adds a row under the current one.
    Remove row icon.Removes the row.
    Add column before icon.Adds a column before the current one.
    Add column after icon.Adds a column after the current one.
    Remove column icon.Removes the current column.
    Insert horizontal ruler icon.Inserts a new horizontal ruler
    Remove formatting icon.Removes formatting from the selection.
    Subscript icon.Makes the selection to be subscript.
    Superscript icon.Makes the selection to be superscripted.
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm b/webcit/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm new file mode 100644 index 000000000..f4070a31d --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm @@ -0,0 +1,45 @@ + + +Insert table button + + + + + + + + + + + +
    +

    TinyMCE can create HTML content that will be accessible to all users, including those with disabilities using assistive technologies, as well as those using text-based browsers, or those browsing the Web with images turned off.

    + +

    Things you can do to make your content accessible:

    +
      +
    1. Include an Image Description: Blind users, or others who are unable to view images, will rely on the Image Description (or Alt text) to take the place of the image. If an image contains no meaning, such as a decoration or a spacer image, leave the Image Description empty. TinyMCE will then insert an empty Alt text attribute that will force assistive technologies to ignore the image.

    2. + +
    3. Add Scope to data table header cells: In the table cell editor dialog window, choose a Scope when creating Header cells so the column or row label in that cell becomes explicitely associated with its data cells. Table cell headers will then be announced with each data cell, making it easier for blind users using a screen reader to understand what the content of each cell represents.

    4. + +
    5. Structure content with properly nested headings: In the format selection menu choose Heading 1 to Heading 6 to represent headings in your content, rather than using other font formating options. Blind users using a screen reader can then extract the headings from the page to generate a summary of the content it contains, and use those headings to navigate quickly to subsections within the page.

    6. + +
    7. Include alternate content: Create an alternate page for non-HTML content such as Flash, Java applets, or embedded movies. This might be a static image, with a description of the image, and a description of the content that would have appeared in its place. An alternate HTML page could also be created, and a link to it included next to the non-HTML object. This will ensure that the content will be accessible to users of assistive technologies that can not view or play the content, and ensure the content will be available to those who do not have the appropriate plugin or helper application installed.

    8. + +
    9. Check accessbility: When the AChecker plugin is installed with TinyMCE, click on the Check Accessibility button to generate a report of potential accessibility problems.

    10. + +
    + +

    See the AChecker Web Site for further details about creating content that will be accessible to all users.
    +

    + +
    + + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif b/webcit/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b5f528dd57cae8e062919a66b0ff7fcf8f3bc42 GIT binary patch literal 5189 zcmV-L6uRq2Nk%w1VM+mu0QUd@H&l@lEO0qilOsNVFindaHh4i^nHDj05GrpUI(!r_ za}OzQrpoXNBx(yKYi5SIC`5!jS(O+wc1dTTm%8JFrP7M5*m|4FS$M8BQjd0*$5mBT z=;+h``|#@O>def{hpE;xP>o@MwWZ1MmAK&!C~YJ_fOC|^AUu7Ow%}WOucF57OlzZ* zw&0}4?rx62QE;bCYowvX>r85*c$vv8NQW{`j8k!_FH4CuP>z71&z->NKwX$paj0pE zye&zHq{#21$L&sRq?EVen7rhKrqiFo>V2NfQE#UjHF%J+-E@`3GEa?lmc|`9dpK2* zrOEF^Vw{Vv*__V48cJ%W#pxN@<~n zsMJnvrBH9C0A|c`lfyqtRHdBxl zFm#Qu+mEu`CPIROqtR4yshGRuX^FcMEpd*p+f{U`Cqjd5kGv^Gg(pLU88mmC!01S3 zpJ<4>VuH3?day-fos6#9fTGZuyya?&y^pcnB|w2?g}6OhmVBMeXNS5IE^=vtn#p8@xFtb?7czBwoy$gJoo$W3h^p6Mf3qq^g%B%mTzjybzvr605p*>rcFHDMBd9Qt+&3AWqElP-Sk;0I( z-5xo6E=q}UlEZhH$d{pUziytuto-k+j}!kHAxMsSGA;4JT}sxZ;L}hHsC- zGc(Nb@$mp=nVFfH004k9Gc%x*O#}o4z`(%&%$Wc)nKNe0UteD{=KnxIK!AXN)X>NP z00960|M2kcA^8LV00000EC2ui07?Oi000R80Qm_VNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGZNIt&!5MSAVZ2ANwTELlPFWFT*BcR3xlMp%jWXM1X0Dva~1XRJ|EJ6fX z)6SqV!^1$9EM216ilWLFAvnuSO_(4J%%B-8Vh9n#Mavi@FnZiDrzz5>J8v9`1BU@a zH5I9dDOzM_%CTTq_=rHIY>gaUu^v4CpmpjNCm*h!;VJa%#fx(5AbrW!t&E-%OQffv2Za)dSExbcS$tRR!gBo$Op1T)Zt(FO>~0JDV!7T_YqD$Q8p$t#yA zp$$269Fjr{Ly(ZpHxy8?2@$Or1Bf8Sl(NGfMi{|H95OUw$O=KY00a~xFreg;Og8D{ zlTbz(B|k>##MCwFWT~Z=PC+FVRaRl86<1z?B^Fs`p`{jEZowrNU3TH67hiq>CKzFc zA*L8(jzK0FWtL&48E2k>CK_p`p{5#ZuE8c7ZMNa28*jb=CmeCcA*UR3&Os*~b=G00 z9e3V=Cmwm`p{E{u?!hM?efHu1ryqa*0Vp7W1|p~+gAPI{A%zxVs3C_Qf+!-1CZeb! zi!Q<_BaJrVs3VU)0x2YsMj|QYw%m3LC6zfLwbV5vy|aN*PenCVRaa%TRaakyHC9rnq8@FUB}yjW_1FV~;-uIb@MXCdt4``k<|(+6;hu)Rq2p zAotuIywkzC4W#=eyJEioTc*5d*1IOYZtfeWzjOwCC&79i+^52THasZAhEANQ#f)bB zD94h1T&c*Imb@v-o~|6K%cRD9D$T0i+^Wv7_B<=lwho=E(Yz-8E7QV0U98l|R=q6N z&Tbv8*VKl6E!oxStrnem=UubTI^ zsV|)V$oX%b0(+FF!F(qCC&Pk1T&TpP@ra@>)+miZs$-J^nWaXSDU)$3WuIc1s9sho znW3s?tHN11J`y`w{j63(!&T9Cg*0C+Em%$?R@9C~HDz6`Sz3cu*QNzFYmF^iW{ciJ zpeK-h`0$56?4kAloF}~@VozL3fk*ec*MV`gqXQp!$2HF70FZ#GU1NfmndX%yd$GkM zg@d2`5@)AG*v}(4@JRmrw6H)qj8G9f6b}T5IgB}KW0CS0r9vhgk2KH`9>IV|N(ZWz zjS6O_npvuB#;O;1L_QvgmCry@I}v(>guPN4u$ne3s2OW&O7Mu)m=zKkO6zOY5*xP4 zM!h0N4~VeT$@GZGkAC!nAhs0Z^{Rx#2EZc}eqaYX@?5R8Ss^Ewx

    E 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif b/webcit/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..cdc617eab3be256173af047822671023c41d53c7 GIT binary patch literal 7195 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 AEdT%j literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif b/webcit/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a032c5ae8dfcf3fad7ed65c814c2b1a1e88d25d GIT binary patch literal 7094 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/en/index.htm b/webcit/tiny_mce/themes/advanced/docs/en/index.htm new file mode 100644 index 000000000..9810a93b0 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/en/index.htm @@ -0,0 +1,27 @@ + + +Help Index + + + + + + + + + +


    +
    +Click the links below to go to the different help sections. + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm b/webcit/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm new file mode 100644 index 000000000..332cbc687 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm @@ -0,0 +1,32 @@ + + +Insert anchor button + + + + + + + + + + + +
    +
    +This button opens a new window with the insert/edit anchor function.
    +
    +Anchor dialog/window
    +
    +There are one field in this window, this is where you enter the name of you anchor point. Remember the anchor name needs to be unique.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/en/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/en/insert_image_button.htm new file mode 100644 index 000000000..1529648d5 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/en/insert_image_button.htm @@ -0,0 +1,65 @@ + + +Insert image button + + + + + + + + + + + +
    +
    +The insert image button opens the window shown below.
    +
    +Insert image dialog/window
    +
    +You simply enter a URL to the image you want to link to and enter a image description, +this is then displayed as an alternative text descripton of the image on the page.
    +
    +Field descriptions:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Image URL URL/path to the image.
    Image description Alternative description of image contents.
    DimentionsImage width/height.
    AlignmentImage alignment, useful when wrapping text around images.
    BorderBorder thickness.
    VSpaceVertical space, useful when wrapping text around images.
    HSpaceHorizontal space, useful when wrapping text around images.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/en/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/en/insert_link_button.htm new file mode 100644 index 000000000..4f6445076 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/en/insert_link_button.htm @@ -0,0 +1,33 @@ + + +Insert link button + + + + + + + + + + + +
    +
    +This button opens a new window with the insert/edit link function.
    +
    +Insert link dialog/window
    +
    +There are two fields in this window the first one "Link URL" is the +URL of the link. The target enables you to select how the link is to be opened.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/en/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/en/insert_table_button.htm new file mode 100644 index 000000000..f352a0516 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/en/insert_table_button.htm @@ -0,0 +1,71 @@ + + +Insert table button + + + + + + + + + + + +
    +
    +The insert table button opens the window shown below. This action enables you to create tables.
    +
    +Image of table window
    +
    +Field descriptions:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ColumnsNumber of columns in the table.
    RowsNumber of rows in the new table.
    CellpaddingCellpadding of the table .
    CellspacingCellspacing of the table .
    AlignmentTable alignment .
    BorderBorder thinkness of table.
    WidthWidth in pixels of table .
    HeightHeight in pixels of table.
    ClassStyle or CSS class of table.
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/en/style.css b/webcit/tiny_mce/themes/advanced/docs/en/style.css new file mode 100644 index 000000000..722f537a1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/en/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/es/about.htm b/webcit/tiny_mce/themes/advanced/docs/es/about.htm new file mode 100644 index 000000000..055c8202d --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/es/about.htm @@ -0,0 +1,28 @@ + + +Acerca de TinyMCE + + + + + + + + + + + +
    +
    +TinyMCE es un editor WYSIWYG para navegadores como MSIE o Mozilla que te permite editar el contenido HTML de una manera más amigable. Tiene la mayoría de las opciones de un procesador de texto y no debería ser dificil de usar.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/es/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/es/common_buttons.htm new file mode 100644 index 000000000..458a4fd55 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/es/common_buttons.htm @@ -0,0 +1,155 @@ + + +Botones de uso común + + + + + + + + + + + +
    +
    +Pequeña descripción de cada botoón. +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Texto en negrita.
    Texto en cursiva.
    Texto subrayado.
    Texto tachado.
    Alinear a la izquierda.
    Alinear al centro.
    Alinear a la derecha.
    Alinear justificado.
    Lista desordenada/lista por puntos.
    Lista ordenada/lista numerada
    Disminuir la sangría.
    Aumentar la sangría.
    Deshacer la última operación.
    Rehacer la última operación.
    Insertar un enlace, más información en insertar enlace.
    Quita el enlace al texto seleccionado.
    Insertar un imagen, más información en insertar imagen.
    Limpiar código, esta función es útil cuando copias el código de otra página.
    Muestra esta ventana de ayuda.
    Abre el editor de HTML.
    Inserta una nueva tabla de 2x2.
    Añade una fila encima.
    Añade una fila debajo.
    Elimina una fila.
    Añade una columna antes de la actual .
    Añade una columna después de la actual.
    Elimina la columna actual.
    Inserta un separador horizontal
    Elimina el formato de la selección.
    Subíndice.
    Superíndice.
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/es/images/insert_image_window.gif b/webcit/tiny_mce/themes/advanced/docs/es/images/insert_image_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..cdc617eab3be256173af047822671023c41d53c7 GIT binary patch literal 7195 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 AEdT%j literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/es/images/insert_table_window.gif b/webcit/tiny_mce/themes/advanced/docs/es/images/insert_table_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..5e8497f75e25c308ea813ea7a24d2ce0461d579f GIT binary patch literal 6747 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 + +Índice de la ayuda + + + + + + + + + +
    +
    +Selecciona una sección para ver la ayuda. + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/es/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/es/insert_image_button.htm new file mode 100644 index 000000000..fdaa1a062 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/es/insert_image_button.htm @@ -0,0 +1,64 @@ + + +Insertar imagen + + + + + + + + + + + +
    +
    +El botón insertar imagen abre la siguiente ventana.
    +
    +
    +
    +Tu sólo tienes que escribir la URL de la imagen que quieres que aparezca y escribir una descripción de esta, esta descripción aparecera como un texto alternativo que describa la imagen.
    +
    +Descripción de los campos:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Image URL URL de la imagen.
    Image description Descripción alternativa del contenido de la imagen.
    DimentionsAltura/anchura de la imagen.
    AlignmentAlineamiento, útil cuando colocas texto alrededor de la imagen.
    BorderAnchura del borde.
    VSpaceEspacio vertical, útil cuando colocas texto alrededor de la imagen.
    HSpaceEspacio horizontal, útil cuando colocas texto alrededor de la imagen.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/es/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/es/insert_link_button.htm new file mode 100644 index 000000000..09930358f --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/es/insert_link_button.htm @@ -0,0 +1,32 @@ + + +Insertar enlaces + + + + + + + + + + + +
    +
    +Este botón abre una nueva ventana con la función insertar/editar enlace.
    +
    +
    +
    +Hay dos campos en esta ventana, el primero "Link URL" es donde hay que escribir la dirección del enlace. El segundo "Target" indica cómo se abrirá el enlace.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/es/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/es/insert_table_button.htm new file mode 100644 index 000000000..5950e480e --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/es/insert_table_button.htm @@ -0,0 +1,67 @@ + + +Insertar tabla + + + + + + + + + + + +
    +
    +El botón insertar tabla abre la siguiente ventana. Esta acci&ocaute;n te permite crear tablas.
    +
    +
    +
    +Descripción de los campos:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ColumnsNúmero de columnas.
    RowsNAúmero de filas.
    CellpaddingDesplazamiento entre celdas .
    CellspacingEspacio entre celdas .
    AlignmentAlineamiento de la tabla.
    BorderAnchura del borde de la tabla.
    WidthAnchura de la tabla en pixels .
    HeightAltura de la tabla en pixels.
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/es/style.css b/webcit/tiny_mce/themes/advanced/docs/es/style.css new file mode 100644 index 000000000..722f537a1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/es/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/fi/about.htm b/webcit/tiny_mce/themes/advanced/docs/fi/about.htm new file mode 100644 index 000000000..75df8e5ff --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fi/about.htm @@ -0,0 +1,28 @@ + + +About TinyMCE + + + + + + + + + + + +
    +
    +TinyMCE on pieni WYSIWYG sisällönmuokkausohjain webbiselaimille kuten MSIE tai Mozilla joka mahdollistaa HTML sisällön muokkauksen käyttäjäystävällisellä tavalla. Se tarjoaa yleiset tekstinkäsittelyohjelmien tarjoamat toiminnot eikä ole vaikea käyttää.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fi/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/fi/common_buttons.htm new file mode 100644 index 000000000..7d423df2d --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fi/common_buttons.htm @@ -0,0 +1,156 @@ + + +Common buttons + + + + + + + + + + + +
    +
    +Alla on lyhyt selostus kaikista toimintonapeista. +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Lihavointi.
    Kursivointi.
    Alleviivaus.
    Yliviivaus.
    vasen tasaus.
    Keskitys.
    Oikea tasaus.
    Pakotettu tasaus.
    Järjestämätön lista.
    Järjestetty lista/numeroitu lista
    Poista / vähennä sisennystä.
    Sisennä.
    Peruuta viimeinen muutos.
    Tee uudelleen viimeinen peruutettu muutos.
    Lisää linkki. Lisätietoa tästä toiminnosta lisää linkki -osiosta.
    Poista linkki valitusta tekstistä.
    Lisää kuva. Lue lisää tästä toiminnosta lisää kuva -osiosta.
    Siisti koodi. Tämä toiminto on käytännöllinen kun liität tekstiä toimistosovelluksista.
    Näyttäää tämän apuikkunan.
    Avaa HTML lähdekoodieditorin.
    Lisää tualu. Lue lisää tästä toiminnosta lisää taulu -osiosta.
    Lisää rivi valitun rivin edelle.
    Lisää rivi valitun rivin jälkeen.
    Poista valittu rivi.
    Lisää saraka valitun sarakkeen jälkeen.
    Lisää sarake valitun sarakkeen edelle.
    Poistaa valitun sarakkeen.
    Lisää vaakaviiva.
    Poista muotoilu valitusta tekstistä.
    Tekee valitusta tekstistä alamääreistä.
    Tekee valitusta tekstistä ylämääreistä.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fi/images/insert_image_window.gif b/webcit/tiny_mce/themes/advanced/docs/fi/images/insert_image_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..29dc616254731f3819dfe58cfe2210feb75202cd GIT binary patch literal 8825 zcmV->}*oeL6@bvdCi_D0}@pF%(FgihOwBeG+=>~efRk`y_rPgx7@}IWAi`w{< zl7|zns?C$N=*Vfe5)zH$>v9_|fy14fD_NJ(%+1uFm_wv@) z(v_Bq)7Ez0;DV&2mD<|a*4EU|&&{&3u(-8T_Vanx%vX|*S&ocx@7-b0&&$xUJ?h6# z|IS3`wLbpSX#T%B)X>P^-rUmB&&S5Z#zfxwW$Jbso`e zD#xaf&6IE8Sq{x~LY6oRz`niEHv_ae4|ZBpf_iw4iivMOG?$2l)tQb^LqYC(aq)wB zxNBwjlZyMJn$=uZs!Bz-e|&i+BG^w#-c?cNXkyxZdgP>`&^$S8DJghsYs$&Vk&ux5 z{QUa*`uX|!_4W1d@9*vH?dt04=;-L?=H}$&Ql!p!z8;j*h(vufSSwX4^!V8exS1|M7;hEoP%>oM^Ot`S&!-x|rUd*_$`%y9%u2DjVWv}wz&O^xo}YJ#U3o(-Gv;}wioxK^RL zbL7pj702d$`L*lVuUXs99Xt2$)vA5}w-&xUwe#qyO@)x95KrkOB7*5 zA%|EZLLPZ|V`Vom#wg=&T&4)zbjf8iopKqLc^!EXQWN2tnEJ6bfi=0u-H!}44jWy43AR3UThVu<7oK#W? zCp{pc#S~NcamXQ!oRFe#TLPDcnB1C3T(@G5NTPMwRoGpI6;^s)qIa%WXoK(Z+2Dfy z4Lazd^VtU=H2d<4ufG2ony zj4Z}vzzw)!o;Xb&=&ZvIJL{a2$27a;c5QGVykSfO4?NI-F>ioi<2T1p1I@55z0<)4 zPF1^yXm-g*oF>Mz3e=0_mkf#RL_W_9;#aG?&zm!72CUDtM*(N)0h*~WDf zOEJ9A!U-p|@KQ`Hd8i@wZ`91N&N$cDXN~GJPy=JuuEtUT1ijF5N-q!;5Q{giij(vP z9lTT5J2L>^%`D1JLdnxcR8d72T~xscwceblJ+~*0IVQQ~R%m9raWmSkyYeQ;VB_!! zOt;gKV2yQ%LmJvkLpMx-j0g1M05FVUFCGvJ6CA@v-k5>$ ziq?j2u*MOSn8YUkHc<&jY~hGokX|GX!H5mKigq>P8gI6dqV0(Z0Ln2A05ElpEdszz zUj)FK001HLu&Gh&BICNI0RZ*&i9YU;1^^CrAHxaGZ+Fwr9q|SLz4bAV0W#bl=NJt_ z?rC8FNaP&lNWev*Cy{8hlo`##K*%+)Ow(XPF;wxnPIgii#ZU(Y#0Cv*u)`aHaYi#@ zpvq==gB_-Fm6fIeg9q?p7`V(OE_v|)7@Q1N-)O@Q2l5VegyR^;Fvbu+VTxKn0f|S1 zLL;K2jWl5Ha^b?<_`YbNi%sZ^b!y|h7Sy)083Jzq3Lmk5mz&q0MjVeJv6Ptj9 zDMSGUPY^YllORMRWWXgZb?rAPL=nld0RZA?@i>aqVj{7l$nl7=8e&u=Sk(yDIgzna zicI4`)yXG9DpH?+#E)Cm3C}{}(>`z2PhRhbpM2#LuW{Y0A_qxVfEF^5it}fF{yE1* z%F(Tfj96O1T1hcJ4o>FM5Q(lK2LpHl6Oo_!?>d*7%~Gy_(4OCNe^5RAY%toMHbKdO?vrr+?vzScNI_zmcsgUe&2s zzy8&qf8Ez$7pvGl4)U)4`XfLqtzQl^&c6bitHL(SVK&OE&>zllg6ITMZ^A(qFrM)s zc0Gt1M*`6NWH^D6C~V6g9P}Pt{EdgF{ttRW)2#)S{iW*ql4N zmz!k`&sWtbUxlm7vhy8i8{uiFxhht!aW!m(4SVrV`_qp6Dv+l??(vKJ)4_%Ronyy2 zjq(s9D8uI=tIW$YU(AYcgCa5xc8)`hS3pA7fCxGudd&z(ykZ*Ki-rl2EwsN(!y0J_ z$2z1@Z#7V(0Z+EJEpBlOTV%V+4WNedNSf1jkOLgwu+k0?&2&>OxmK{sAV z%HNNF26px2*@)nTk~qSY7iWjhN%^+^hmZg!^gz`^>l8Q8fo{XtHJ%X*N$eUBde3EY90SZU5C;$tFo0I1A{26egeS1j0a-%v|9baSWiwb+1prr+NY;^OVYD56 zws2~7U-#8k=u~R@MQI=R41omz80Z&?w1JzUfgXr~8VG_R$blnhf+biuB*=ju*nuYK zf*=@!Em(ppxPd13f+BWUa}|2?QbxCTa~0qWiXaMt0DQrBgn%FjqM!&9pd#DQ4Ah_w zt+Pse@qEv44Y}0}I3xstPz=9d3*M&-y5N1b@C(Hd2x!nNHN^_+=MwEO13pA0iogm+ zU;(`~0QKhz1poveRVo5V98t9`C1X__0v+RXa~a}ZXtGA;qd@KdbU+#=H}}*p@dF_L zBS3FtPy0h*0P{DMXfO7(P!B^+2edE}lPGZ#Ic2h9Ex-nn&<96&gnb|hY|sMUB8V}- z4d)OI9^eMP=ms7T4d=iOF_106(E=IZ3$`GJ%%}^t;0qZL1KmI+J~RVuI1t6AJl+5f z;J^y;00cDCP$WgUK}EvRJ>4QM;FE}Wh9;9@dy@n=jgmm? zvMB9CVF=gbaotv7&+bq9^h0y z<0Og@Q&0lAC+&nl2U1V{#7_uAPxb>p|G^&rWl)3?FKLOE1hhbxwI*ZP9S+0-a9{_1 zkeGg82X_z$Xd@lr;s(%gTQtxC9dHcL;09lLi*B$63}67DX#fnc25vxZYN&qf2ZueC z2X9s*-k=Ctb8lUuBC?5Zyira2HdQ6_mDsRz$YC*L`6hv>E^6Y4>v2f=BbSwEH*#4= z{Ir~jl{W!XKaB_>K1iIB6d^0NL3MTw*CdGC5&_Ep5Cm=z1VOL@D{vyekuACr0m-lo z$&d`nAfLd&BKH;n60ickxB?Oo0j@cXvhoeq$bRFHcED66>zH?1qmogSEi=M*dq-YN zRz={sHo$oy6LOsoa$;_@mJo?R|CN^pREi9CC?SfMc)6D%sy=ubqVDux2jxyCCXp7o zo#&zpyxLZN!bqL5G#4$E7Yituu>&Z)T8;vcVojX zlM_A|N|u$BV*dz`apa+(S5R$vqNLcNB|4o9b({g^kYswMV(OxhNKP)gFd=H9GU`w# zHk|5`iZ`l?IGUp-vZLcAp%4m1QJRjjLXExu!lXz_piJtdi;AG?IHgqDcjZ+@SZbkK zntNQDog2!CVOl>Q3ZiwoK7Z+=d%33X)TYz7B2 z;ySM6TCV1LuITEm-M|XX^{naouJ9VK@;a~dTCetculKsH?Fy~<+OPiluK*jc0z0tg zs;|f6t^}K~3cIij+prFstp@9?{Q9sITd@{t^-0D0@SWy`mEYpr_=w`qH}gIlhFJGY1%t#wOGcbl$< zi?@aAxRLv~-%7cO%e9NEQ;mzRdE2&wMYwPKxoVrXV!O7Ui?*bzNQ7IqsLQ&bJGi1d zx~{9YtxLPJOS_?~x|h4Mnfnf#d#;^ZyMQ~ng?qYWtGcFJyUFXir)#^_8obYYys108 z%PYIqySpgcyT2>A(R;hEo4UIH>%G-GzRHWbxf{0x_`T7ayVNVZ>C3v|i@hSNy)q!L z&%7$~zUAA#{)@Y?8^7f1z3>~rw;Q_y?7Z?jzdH1_^~<)zYrP5Fyl&gS`fI_Z zJG~T~z!j{(`-{LB9JvdevGi-d5!}HS{J#qPzY`q7EbPJ(Y{3AWzZ^WmA6vo@oW99> zzQ#+zH0-`0?86!S!{PhBD15;JT)aVSxi;LeIDE29+{9As#0~7M-jK3UJjGf}u-+gJ z?Rv#q9L8ddtzG=ZV|>PFEC6MEuwb0VZal?nY{hRp$4wl^9NWfpoX3}I$0du$di=*+ z%f~kB$ADbOQ!B{fK*)ywyvRw5$cj9|`w+>JJjs+?$(DS{n4HO)yvdy0$)5blpd8Ag zoXPU)$YHz>E0M~oyvnRR8l~*TY<$YCJj=9P%Nnr{uiRWAG z=bFvjyw2==%km1&MI+Aedc4<+w&aYvuM4>5jLv_nw&AMI?Hteo4H4d)uJBAu@(j7v zOwRV~&;9(+{M^s63(@!NtpGjH7@g5{@y^8@&c}?m_k7M0ozD+Fx%&*!BK*%9z0xdQ z(CB*5I+f6li_Rkd?ZGr1(G}g$CH=fA&C)(S&@O$hFnt#vJ<~K@!~tx&IBm^2UBEhR z(LWv4?HttRI@B`V#1}2qTK&sZU9MJL)L6aMVy(riv6>PeLRD`*pQ90ja@X4 z9od$>vXd>?iGA6eeX^OYQqV2Jt{SKi$+NfQzrG461eb=u2+OQqlvi-^Oy4ssP z#aXS^x~&pyEv~kW*1H|tyj|OY4cfOY#knoq${iBD9j>3<4n}#jDLt;qz1-G~5zP&* z-q5Vr7~SLlT+ssC(9_MW)qUOOJrUXct=pZX-aXIY9o`O2-RC{u8Ij)Jy58*9-XOiu zBVE!xe62_=($c%b*KDojP2UKv5cb`z`0a-JExG(H-aNh2@g33(ZQ&Sxtp}dq9PY~T z+Th*&$cCHY63)~$eZ=ou;s89})4Jgu&fyErtst(H56-za9nv+e)6@Ob7f#_7Uac&pFO8wqR+~m_c!|&bVLSE&;T*}-{<4BIZL2l*dP2}2Y|mu!7F#iN5HN{;!SBeuN(BmX5EJ?uM0q>6|{VnU0N{-sz&AuAi=yp+4%U zPOhci4yWG4{P60q9_z9`>$G0$wtnllp6j~4>%89Uz7Fd;yXviO!~Edp+RP8Zj_6@r z?8crFNpKI)9_`Xz4?Ex-0f6i|E9{Rx#mwI9CxHSu5bolx58`eEDR2YLaqY?O=*#Zy zC@}?35byE+1!nLC@$LjpAO+~I?%6Kq=!eAw+wBek0Pa2!Okf2FZv|R_1pt5rT9EKr zPy|T8?>Gw%{tgcG%Hk7F(LesL0&ftC1o8_(@CAPmOyC75Zv|I?1^$2qSAg12Jbe{}%U-NjM!$K^&Iga@m zZm)qa_Jx1;Xdn7yZ{^9r1YF<+r?2!(kNRA|1x--*I$QN_c=aF+-aPK(CXM@F@AHRW z_(R|Op^x|-z5-kT2F4!-E8p^0VEkZU1yWE1Qy;UkkBzi%<9z$%QNF`E-u3kV3if7S z_P`JNKtJ|tzxGwm1!0i>VIT%9j|F0o{>HEG(GRoJuawpA>P1fyUN8py4-jL{eS<=Rzil6zsr zj*YbgTLq*It*%w-wByH+BiYWS%M`0uym|HR-K)0l-->Rbw)6H4@L|Lh`7LJL*zse? zktI*2T-owv%$YSaPTX05w{lP67WQ1)^l8+oRj;N9S~N(~tYy!pUEB8mY}apL8@}D! z_iy0AG3Fi|TljJ0$(4I1KAQJ(=+UK5C)s>Ab?n)-E4NPg`F8N(#i#CWeEfOz>DQM3 zuHNcC`0?e>r(fS>ef;_5yGPHSKihru+UGt2{~OOg1FH%!uK`P15U&Ok+^#!tx{;8o z2fd0AqYS&+@IvakVdb@UDg=?K4!Qc!q7=7U@kHoEB+z{;9nsWL z%`$7#Ql}4}jOfjrxa<3ob0^+)3-c9+S95u%?uPr zHUXs#(VJcb6jPfNUG%m_nWQVyN#&IEM@v)Vw5AmeeP~shJpHt`P#>*IN>a~U6G~m% zyp&KJgFO`3S&^%?$zm^pbtYMtl}XlQSvxjbWr?kpL28eiHd`XCWzk!1ZQC~7IrTG_ zzWdHq7d~=-3-udh+m&}-mAaXMM0n}dcVCk1#W!Al0~XldCG!>d;D8Ap%wU8Yo>yVG z7Q*V&k$Jz2Sw_hlI-mtQva-hx%; zcIKCAw%JRZ7nVV0aDS%m8*%U*+DTr)xUuC48ez2;NWU7<8pY&28t?C!kvo{jIQ z{D$;uDhC&qaMTc296QECa{N}a!+x?-$jLVRFUv2VF7t0TC%1Idw@$iiqOon=^{Vw{ zeRkzgSAFG@&&3@&-G3K8xy=w|;xoq|csu z?!zz5`@ysq|9r&Ahs%8Q+owx?kk}`=cXQpB4gPlIZ})clQNv&V)n%=JiTNM+=Ec7O zjt_g~Gaz+F_Z|Tz5HSDS9a9Qtk_QS(a)3dg1QR3wgP^Uif=dzGMKV~C6HcXr9y|;P zn>RwGZ18hqQWL4<#;du_WrZyKiwm;{LzT!7aDcPn5Kl!!y6ljLbn#*NfS8gC9&t^O zlj01E$iWCMaVex54qNzK5!NwND`V`qxU* zC9ewNi;xm|x5Bneu&*mlTiKadI2{)MvWZRHL1k*n)m`+&9WtP;E>B&tc2UidiHt0bqR30V%$v81sn_1 zQ*R$D6X3$uwz0L*OQstu+CsOu#jS2^10Y-Pes{Ztqb_oLrd;Ma%DIG9Eo;N8UH4*l zv+WJ9bgBE^*4kIRF)?r2&^x2`VwS$!y)SpW``zn4E4%!?ZsGDv;Qi_sx8#*CTb2u8 zGY~NelUme%c}n_iMJW9t!?vrU<4nS!XKWmYoR;c2{%~Bo?>)XT{a|&Ujv%p7}gGKmVD|``ojje->y% z>kZL~*4m;OZ8S$e+GdfK^vNh)>5tV}XPBl~H#U+pPXEl){|dFuMh)sxpX}5N+jOcA zw(5wr+SLjBG^=O*F<4*h)*8!o$9A2uUXSe8uda2hhdr@i%lg>uO7^lF*6U*^+u0S< zCN8BtZEA%o+SndgwR?GOZWl}2;12hv#$E1xog3ZsQun&$)oyo_3*Pajb}GqDZxGEJ z-_dGRJ>uyNwB|wJ0tdMNH@b0fgde=%3om%W5zdWmYy;vE*G9xGz71_;Tn!noILEb- zhBRP9f&GQ-d1Ska^8zJ`J2tLmE4eM$e(~^JfHI=tB?s z&!Itdq$geJOK18sj9zr3MF{pvaAde^;<^PT5B>|eKe&0!Anma|;# zYBxDru#pY8$2}WqfV&#(o(8+$9pq{NIo;uocfI!=@OG~_#xs8Lh;ySG_0UZ{^pFn7 zM?M|spnT;ke-3k);~bmEeCEy30nmG%2BRl^=}ljb)0cw-t6#n9TVD>>v!3;_pTP{q zVf)*YqxQSk{WyI8?|X3sU--ipM>vEZ4&)z0`O4>Q^T8p5=F33((dRAmc`NNFV{NY%B^3{)g_{ZP)#HYXTeUE!`kJO|6$JO-pZ&PxZz^N4+@2YuK;4(vdE$cKFRKoGz17PN_Hw3LLo#36;OeB zI6`?yLM2>6CRD_H!-hZoGj8oWb1%)=UtK|V}Du|UBS3`9X3#6SeWd?-Of48aY& vzXRl$M(rSLOHk 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 R-}uJ#ra5itNZTVI06Uk)tIPlZ literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/fi/images/insert_table_window.gif b/webcit/tiny_mce/themes/advanced/docs/fi/images/insert_table_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..b24364695f6bd0eb18c5687796c953dfbf5a54f1 GIT binary patch literal 8442 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 + +Apua sisällysluettelo + + + + + + + + + +
    +
    +Napsauta alla olevista linkeistä mennäksesi eri osa-alueisiin. + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fi/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/fi/insert_image_button.htm new file mode 100644 index 000000000..84628a815 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fi/insert_image_button.htm @@ -0,0 +1,65 @@ + + +Insert image button + + + + + + + + + + + +
    +
    +Lisää linkki -nappi avaa alla näkyvän ikkunan.
    +
    +
    +
    +Kirjoita haluamasi kuvan URL osoite ja lisää kuvalle selite. Selite näytetään vaihtoehtoisena selitteenä sivulla. +
    +
    +Kenttien selitykset:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Kuvan URLKuvan URL tai polku.
    Kuvan seliteVaihtoehtoinen selite kuvan sisällöstä.
    UlottuvuudetKuvan leveys ja korkeus.
    AsetteluKuvan asettelu, käytännöllinen kun halutaan tekstin rivittyvän kuvan ympärille.
    ReunaKuvaa ympäröivän reunan leveys.
    PystyväliPystyväli, käytännöllinen kun halutaan tekstin rivittyvän kuvan ympärille.
    VaakaväliVaakaväli, useful when wrapping text around images.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fi/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/fi/insert_link_button.htm new file mode 100644 index 000000000..857ef3a7b --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fi/insert_link_button.htm @@ -0,0 +1,35 @@ + + +Insert link button + + + + + + + + + + + +
    +
    +Tämä nappi avaa uuden ikkunan jossa on linkin lisäys- ja muokkaustoiminnallisuus.
    +
    +
    +
    + +Tässä ikkunassa on kaksi kenttää. Ensimmäinen kenttä, "Linkin URL", on linkin osoittama URL -osoite. +Toinen kenttä, "kohde", vaikuttaa siihen miten linkki avataan. +The target enables you to select how the link is to be opened.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fi/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/fi/insert_table_button.htm new file mode 100644 index 000000000..8891a5b98 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fi/insert_table_button.htm @@ -0,0 +1,67 @@ + + +Insert table button + + + + + + + + + + + +
    +
    +Lisää taulu -nappi avaa alla näkyvän ikkunan. Tämä toimonto mahdollistaa taulujen luonnin.
    +
    +
    +
    +Kenttien selitteet:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SarakkeetTaulussa olevien saraakkeiden määrä.
    RivitTaulussa olevien rivien määrä.
    Solun reunan ja sisällön väliTaulun sisällä olevan solun reunan ja sisällön väli.
    Solujen väliTaulun sisällä olevien solujen väli.
    AsetteluTaulun asettelu.
    ReunaReunan leveys.
    LeveysTaulun leveys pikseleinä.
    KorkeusTaulun korkeus pikseleinä.
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fi/style.css b/webcit/tiny_mce/themes/advanced/docs/fi/style.css new file mode 100644 index 000000000..722f537a1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fi/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr/about.htm b/webcit/tiny_mce/themes/advanced/docs/fr/about.htm new file mode 100644 index 000000000..51d9e57e6 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fr/about.htm @@ -0,0 +1,32 @@ + + +À propos de TinyMCE + + + + + + + + + + + +
    +
    +TinyMCE est un petit éditeur "WYSIWYG" pour page Web comme MSIE ou Mozilla qui +vous permet de manipuler du contenu HTML d'une façon plus intuitive. +Il est simple d'utilisation et possède les fonctionalités ls plus répendues que l'on peut retrouver dans +les traitements de texte. +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/fr/common_buttons.htm new file mode 100644 index 000000000..aa9c23740 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fr/common_buttons.htm @@ -0,0 +1,160 @@ + + +Outils communs + + + + + + + + + + + +
    +
    +Ci-dessous une courte description de chacuns des outils. +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Met le texte sélectionné en gras.
    Met le texte sélectionné en italique.
    Souligne le texte sélectionné.
    Barre le texte sélectionné.
    Alignement à gauche.
    Alignement au centré.
    Alignement à droite.
    Texte justifié.
    Liste à puces.
    Liste numérotée
    Réduit l'indentation.
    Augmente l'indentation.
    Annule la dernière opération.
    Refait la dernière opération annulée.
    Insère ou modifie un hyperlien. Allez à la page + Outil d'ajout d'hyperliens pour plus de détails.
    Efface les hyperliens qui sont sélectionées.
    Insère ou modifie une image. Allez à la page + Outil d'ajout d'images pour plus de détails.
    Nettoie le code et retire les paramètres non désirés. Cet outil + est très utile lorsque vous copiez du contenu provenant de logiciels + de bureatique.
    Affiche cette page d'aide.
    Ouvre un éditeur permettant de modifier le code HTML.
    Insère un nouveau tableau à la position actuelle. Allez à la page + Outil d'ajout de tableau pour plus de détails.
    Ajoute une ligne au tableau avant la ligne courante.
    Ajoute une ligne au tableau après la ligne courante.
    Supprime la ligne courante.
    Ajoute une colonne au tableau avant la colonne courante.
    Ajoute une colonne au tableau après la colonne courante.
    Supprime la colonne courante.
    Insère un séparateur horizontal.
    Supprime les formattages du texte sélectionné.
    Transforme le texte sélectionné en texte souscrit.
    Transforme le texte sélectionné en indice supérieur.
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr/images/insert_image_window.gif b/webcit/tiny_mce/themes/advanced/docs/fr/images/insert_image_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..4ee31bdf0d569b8e958d939683be68f6b97837e5 GIT binary patch literal 38920 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/fr/images/insert_table_window.gif b/webcit/tiny_mce/themes/advanced/docs/fr/images/insert_table_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a265223cc3ff0faee302da526b1573979013a72 GIT binary patch literal 32353 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 SXPqt-n + +Table des matières de l'aide + + + + + + + + + +
    +
    +Faites votre sélection parmis les thèmes suivants: + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/fr/insert_image_button.htm new file mode 100644 index 000000000..d8f38b12b --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fr/insert_image_button.htm @@ -0,0 +1,66 @@ + + +Outil d'ajout d'images + + + + + + + + + + + +
    +
    +L'outil d'ajout d'images ouvre la fenêtre ci-dessous.
    +
    +
    +
    +Vous entrez tout simplement l'adresse de l'image que vous désirez ajouter et +entrez une description facultative. La description sera affichée en texte alternatif +sur l'image lorsqu'elle sera publiée.
    +
    +Description des champs:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Adresse de l'image Adresse URL de l'image à insérer.
    Description de l'image Description alternative de l'image.
    DimensionsLargeur et Hauteur de l'image en pixel.
    AlignementAlignement de l'image. Très utile pour faire contourner le texte autour des images.
    BordureÉpaisseur en pixel de la bordure.
    VSpaceEspacement vertical. Très utile pour faire contourner le texte autour des images.
    HSpaceEspacement horizontal. Très utile pour faire contourner le texte autour des images.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/fr/insert_link_button.htm new file mode 100644 index 000000000..d691d6bc3 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fr/insert_link_button.htm @@ -0,0 +1,34 @@ + + +Outil d'ajout d'hyperliens + + + + + + + + + + + +
    +
    +L'outil d'ajout d'hyperlien ouvre la fenêtre ci-dessous.
    +
    +
    +
    +Il y a deux champs dans cette fenêtre. L'Adresse URL est l'adresse +de l'hyperlien. La destination vous permet de choisir de quelle façon +l'hyperlien sera ouvert.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/fr/insert_table_button.htm new file mode 100644 index 000000000..9ba3b7c37 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fr/insert_table_button.htm @@ -0,0 +1,71 @@ + + +Outil d'ajout de tableau + + + + + + + + + + + +
    +
    +L'outil d'ajout de tableau ouvre la fenêtre ci-dessous. Elle vous permet de créer dfes talbeaux.
    +
    +
    +
    +Description des champs:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ColonnesNombre de colonnes du tableau.
    LignesNombre de lignes du tableau.
    CellpaddingMarge à l'intérieur des cellules du tableau.
    CellspacingEspacement entre les cellules du tableau.
    AlignementAlignement du tableau.
    BordureÉpaisseur des bordures du tableau.
    LargeurLargeur en pixel du tableau.
    HauteurHauteur en pixel du tableau.
    Classe CSSNom de la classe CSS pour appliquer un style.
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr/style.css b/webcit/tiny_mce/themes/advanced/docs/fr/style.css new file mode 100644 index 000000000..722f537a1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fr/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr_ca/about.htm b/webcit/tiny_mce/themes/advanced/docs/fr_ca/about.htm new file mode 100644 index 000000000..51d9e57e6 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fr_ca/about.htm @@ -0,0 +1,32 @@ + + +À propos de TinyMCE + + + + + + + + + + + +
    +
    +TinyMCE est un petit éditeur "WYSIWYG" pour page Web comme MSIE ou Mozilla qui +vous permet de manipuler du contenu HTML d'une façon plus intuitive. +Il est simple d'utilisation et possède les fonctionalités ls plus répendues que l'on peut retrouver dans +les traitements de texte. +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr_ca/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/fr_ca/common_buttons.htm new file mode 100644 index 000000000..aa9c23740 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fr_ca/common_buttons.htm @@ -0,0 +1,160 @@ + + +Outils communs + + + + + + + + + + + +
    +
    +Ci-dessous une courte description de chacuns des outils. +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Met le texte sélectionné en gras.
    Met le texte sélectionné en italique.
    Souligne le texte sélectionné.
    Barre le texte sélectionné.
    Alignement à gauche.
    Alignement au centré.
    Alignement à droite.
    Texte justifié.
    Liste à puces.
    Liste numérotée
    Réduit l'indentation.
    Augmente l'indentation.
    Annule la dernière opération.
    Refait la dernière opération annulée.
    Insère ou modifie un hyperlien. Allez à la page + Outil d'ajout d'hyperliens pour plus de détails.
    Efface les hyperliens qui sont sélectionées.
    Insère ou modifie une image. Allez à la page + Outil d'ajout d'images pour plus de détails.
    Nettoie le code et retire les paramètres non désirés. Cet outil + est très utile lorsque vous copiez du contenu provenant de logiciels + de bureatique.
    Affiche cette page d'aide.
    Ouvre un éditeur permettant de modifier le code HTML.
    Insère un nouveau tableau à la position actuelle. Allez à la page + Outil d'ajout de tableau pour plus de détails.
    Ajoute une ligne au tableau avant la ligne courante.
    Ajoute une ligne au tableau après la ligne courante.
    Supprime la ligne courante.
    Ajoute une colonne au tableau avant la colonne courante.
    Ajoute une colonne au tableau après la colonne courante.
    Supprime la colonne courante.
    Insère un séparateur horizontal.
    Supprime les formattages du texte sélectionné.
    Transforme le texte sélectionné en texte souscrit.
    Transforme le texte sélectionné en indice supérieur.
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr_ca/images/insert_anchor_window.gif b/webcit/tiny_mce/themes/advanced/docs/fr_ca/images/insert_anchor_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..71f417908f20d86f2be4fe7ac03f26a9b6b5f9c8 GIT binary patch literal 12662 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/fr_ca/images/insert_table_window.gif b/webcit/tiny_mce/themes/advanced/docs/fr_ca/images/insert_table_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a265223cc3ff0faee302da526b1573979013a72 GIT binary patch literal 32353 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 SXPqt-n + +Table des matières de l'aide + + + + + + + + + +
    +
    +Faites votre sélection parmis les thèmes suivants: + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_anchor_button.htm b/webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_anchor_button.htm new file mode 100644 index 000000000..f63bc74ef --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_anchor_button.htm @@ -0,0 +1,32 @@ + + +Outil d'ajout d'ancres + + + + + + + + + + + +
    +
    +L'outil d'ajout d'ancres ouvre la fenêtre ci-dessous.
    +
    +
    +
    +Il y a un seul champ dans cette fenêtre, c'est le nom de cette ancre. Rappelez-vous, les noms doivent être unique dans la page.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_image_button.htm new file mode 100644 index 000000000..d8f38b12b --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_image_button.htm @@ -0,0 +1,66 @@ + + +Outil d'ajout d'images + + + + + + + + + + + +
    +
    +L'outil d'ajout d'images ouvre la fenêtre ci-dessous.
    +
    +
    +
    +Vous entrez tout simplement l'adresse de l'image que vous désirez ajouter et +entrez une description facultative. La description sera affichée en texte alternatif +sur l'image lorsqu'elle sera publiée.
    +
    +Description des champs:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Adresse de l'image Adresse URL de l'image à insérer.
    Description de l'image Description alternative de l'image.
    DimensionsLargeur et Hauteur de l'image en pixel.
    AlignementAlignement de l'image. Très utile pour faire contourner le texte autour des images.
    BordureÉpaisseur en pixel de la bordure.
    VSpaceEspacement vertical. Très utile pour faire contourner le texte autour des images.
    HSpaceEspacement horizontal. Très utile pour faire contourner le texte autour des images.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_link_button.htm new file mode 100644 index 000000000..d691d6bc3 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_link_button.htm @@ -0,0 +1,34 @@ + + +Outil d'ajout d'hyperliens + + + + + + + + + + + +
    +
    +L'outil d'ajout d'hyperlien ouvre la fenêtre ci-dessous.
    +
    +
    +
    +Il y a deux champs dans cette fenêtre. L'Adresse URL est l'adresse +de l'hyperlien. La destination vous permet de choisir de quelle façon +l'hyperlien sera ouvert.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_table_button.htm new file mode 100644 index 000000000..9ba3b7c37 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fr_ca/insert_table_button.htm @@ -0,0 +1,71 @@ + + +Outil d'ajout de tableau + + + + + + + + + + + +
    +
    +L'outil d'ajout de tableau ouvre la fenêtre ci-dessous. Elle vous permet de créer dfes talbeaux.
    +
    +
    +
    +Description des champs:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ColonnesNombre de colonnes du tableau.
    LignesNombre de lignes du tableau.
    CellpaddingMarge à l'intérieur des cellules du tableau.
    CellspacingEspacement entre les cellules du tableau.
    AlignementAlignement du tableau.
    BordureÉpaisseur des bordures du tableau.
    LargeurLargeur en pixel du tableau.
    HauteurHauteur en pixel du tableau.
    Classe CSSNom de la classe CSS pour appliquer un style.
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/fr_ca/style.css b/webcit/tiny_mce/themes/advanced/docs/fr_ca/style.css new file mode 100644 index 000000000..722f537a1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/fr_ca/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/hu/about.htm b/webcit/tiny_mce/themes/advanced/docs/hu/about.htm new file mode 100644 index 000000000..08f839176 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/hu/about.htm @@ -0,0 +1,28 @@ + + +Über TinyMCE + + + + + + + + + + + +
    +
    +A TinyMCE egy kompakt WYSIWYG-szerkesztő az MSIE-hoz és a Mozillához hasonló webböngészők számára, mely lehetőséget nyújt önnek a HTML tartalmak egyszerű szerkesztésére. A legtöbb szövegszerkesztőben elérhető funkciókat nyújtja egyszerűen kezelhető formában.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/hu/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/hu/common_buttons.htm new file mode 100644 index 000000000..e665373da --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/hu/common_buttons.htm @@ -0,0 +1,106 @@ + + +Allgemeine Schaltflächen + + + + + + + + + + + +
    +
    +Untenstehend eine kurze Beschreibung jeder Schaltfläche.
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Félkövér szöveg.
    Dõlt szöveg .
    Aláhúzott szöveg .
    Áthúzott szöveg .
    Balra igazítás .
    Középre igazítás .
    Jobbra igazíás .
    Sorkizárt.
    Felsorolás / pontozott lista.
    Felsorolás / számozott lista.
    Behúzás balra .
    behúzás jobbra .
    Utolsó parancs visszavonása .
    Utolsó parancs ismétlése .
    Új link beillesztése, bõvebb információért olvassa el a Link beillesztését.
    A kijelölt link eltávolítása / Az összes kijelölt link eltávolítása.
    Egy új kép beillesztése, bõvebb információért olvassa el a Kép beillesztését .
    Kód tisztítása / Eltávolítja a nemkívánt formázásokat. Ez a funkció akkor hasznos, ha például Office dokumentumból másol tartalmat.
    Ennek a segítségnek az elérése.
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/hu/images/insert_image_window.gif b/webcit/tiny_mce/themes/advanced/docs/hu/images/insert_image_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..a60e1fa8d8a92292e17c6fcf1877b8722c297a77 GIT binary patch literal 5486 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 Rh>G^;A)8UYmWtHn{{oZ!j5h!P literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/hu/images/insert_link_window.gif b/webcit/tiny_mce/themes/advanced/docs/hu/images/insert_link_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..e72357bb6a56444bf8e24ac27656eae74cec74ea GIT binary patch literal 5762 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/hu/index.htm b/webcit/tiny_mce/themes/advanced/docs/hu/index.htm new file mode 100644 index 000000000..43b81a2e2 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/hu/index.htm @@ -0,0 +1,24 @@ + + +Inhaltsverzeichnis der Hilfe + + + + + + + + + +
    +
    +Kattintson az alábbi linkekre a segítség különbözõ részeinek eléréséhez. + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/hu/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/hu/insert_image_button.htm new file mode 100644 index 000000000..e7860bf7e --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/hu/insert_image_button.htm @@ -0,0 +1,32 @@ + + +Schaltfläche Bild einfügen + + + + + + + + + + + +
    +
    +A Kép beillesztése gomb az alábbi ablakot nyitja meg. +
    +
    +
    +
    +Egyszerűen meg kell adni a beilleszteni kívánt kép elérésének URL-jét, valamint egy rövd leírást, mely alternatív szövegként kerül megjelenítésre (pl. nem grafikus böngészőkben).
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/hu/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/hu/insert_link_button.htm new file mode 100644 index 000000000..95b375021 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/hu/insert_link_button.htm @@ -0,0 +1,31 @@ + + +Schaltfläche Hyperlink einfügen + + + + + + + + + + + +
    +
    +A Link beillesztése gomb az alábbi ablakot nyitja meg.
    +
    +
    +
    +Két mezőt kell kitöltenie ebben az ablakban. Az első - "Link URL" - a hivatkozás URL-je. A második lehetőséget ad Önnek a hivatkoztás megjelenítésének kiválasztásához.
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/hu/style.css b/webcit/tiny_mce/themes/advanced/docs/hu/style.css new file mode 100644 index 000000000..722f537a1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/hu/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/images/table.gif b/webcit/tiny_mce/themes/advanced/docs/images/table.gif new file mode 100644 index 0000000000000000000000000000000000000000..f8a00544a9980d38c44d5fe8e9a8457be8339834 GIT binary patch literal 1018 zcmeH`!D|yi6vijCX;K?;HK|5XNfs0Yg$)+cs)rOqvff5dHHc2Uv)oRl&oNM zL_v>pGsp4dsvwhU>0X4Xh+Wac9CC=o!gvw&;JEQG@DJ$6$B*y9ySxux{Y-6ku9*Wl z&;cV^mgTqzF2D-Ju^=LJ*5Me*7UC50Cy+D9dr10NaI7en0;v!yiHT1LWt4Ho80`td zH0fy?J20##7#A#vDOn&n7d(iA=0Y-IcxbrPf)f!?@szE;c^>s&MB!_#s1QkQn7rM&uZWEuIkdp$R4&n$wy)0vxLV{8?)r-!}Ci)!@%sw>sSn!}>!G{SeK1|r~VZn+68+II6u;asm10Ob=_wF-@g9v?#;*dZ@+%|{O#+PpFh6;{Q2Y8&mX^k|N8U$_y7O@!A=+@ zMnhm=LO}5+3o`?QHiHhxdQhHV;HYB==aBK(u;5@bhp<-6i46*DqFMnSA1*XHGjymj z$?Op*WNGP=)SJbz@M1!Xh>C;FgAEIv8ibYXrszl~ z&MaaYDh9g*7@JwyXK1-BXgI*Il2h;pPeZ6;LmS)vCRL5HH(U%EXSsA%Z__>8z+epk DI%10H literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/images/table_delete_row.gif b/webcit/tiny_mce/themes/advanced/docs/images/table_delete_row.gif new file mode 100644 index 0000000000000000000000000000000000000000..1997065fb2b447f498ab7fda4b7e21dcbb25dc81 GIT binary patch literal 942 zcmZ?wbhEHb6k!lyXlDQc1CIoUh=PEGhJcKQgo1{IiU|b`3j#VmBuw~FFylkPf)5Q7 z7Bo!QFk!}m2{SfKSg@gC#fJ$SK1|s0VZn+63pO0su;ai2Ap5|F4JUx;|A7nt58U{F z;lck0FaAIH@c#o4{rLYMi2nZv+crv!hQJ^S0mYvz%nS@F3_2h;f${_cM>m5fhm6OD z1qYisgtcN$Ojy9mEvgi>fT8hWN4JEt$%Yw%N7~tCoGZROc*x+)p`mC~@Svg5n~l@8 z>cxRXXEq)or2`@y3m*9JNg2eP*va6?$lx(i=t)DOQwuAXkirbBgarR4#!XpwwGCZQ}j-u$i5iXM38c!-9o(cUMTVu`pNz0PJ9X!TQ3xphWMO7tP+`ykxe1gf7&uxPJUL`M zHY_;U%pokNQs8*7k%5a_=z@SE(i5MkXeC zPNt5?0yW=8hN62%Dla%PGcz-pWCS=goN5wqs`((G@bc1P7WEc}kBSW;s{+{lBo>-5 iu&xUgtrHbga%dGy+03=YpedVyC-?NbIlm1R7_0$Wk9qk3 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/images/table_insert_col_before.gif b/webcit/tiny_mce/themes/advanced/docs/images/table_insert_col_before.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d1ff37afea7bb2e67952400e00184aa275d6764 GIT binary patch literal 935 zcmZ?wbhEHb6k!lyXlDQc1CNA&goc2OhJ=EKgo+6T6%!mP9uzc82Q3xphWMO7tP+`ykxe1gf7&uxOJUL`M zHY_;U%)u+PW5EN5h88YU7mp7DN{(zYMmj4p0u!3~q*V&u{5arzY@(RFO-4h5!|^7D zIH?}ZVugm;rn%2dUMy&AWMq^w(NJJWb>vXAtKet|SsBK;hMu<;?0m9#Rd5 h!d40F?cxwzaHwNr1Z$MUMpFj1Z7JoaTqOh;tN|1Me9r&? literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/images/table_insert_row_after.gif b/webcit/tiny_mce/themes/advanced/docs/images/table_insert_row_after.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3aa15f93a9d50777ca3a3b2309fc807ceabc57a GIT binary patch literal 928 zcmZ?wbhEHb6k!lyXlDQc1CNA&goc2OhJ=EKgo+6T6%!mP9uzc82Q3xphWMO7tP+`ykxe1gf7&vMfJUL`M zHY_;U%)uMAz#x%{g`JbTZ-#`DOLGT{dj|*Oqh`h)X6?Ek4-y$X8X1FD*?2NJv$hH7 z&6{JfXpzqZDa$&I13@aDj5?v~Qf7WQ*v!VmA#i}h;Q=$htVPBS0l|h)240Jt69SHm a!Hpb79uX5BFnBXLF$=_=o|fvsU=08}a&%e% literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/images/table_insert_row_before.gif b/webcit/tiny_mce/themes/advanced/docs/images/table_insert_row_before.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3271e54937cb8dbfb435ee8bc2d02157cff1448 GIT binary patch literal 928 zcmZ?wbhEHb6k!lyXlDQc1CNA&goc2OhJ=EKgo+6T6%!mP9uzc82Q3xphWMO7tP+`ykxe1gf7&vMfJUL`M zHY_;U%pt55lkwqTGaC=w17?0%i;Nu$1RC5Kcr9{H2skpjHgXtwL`-~0*X=}WE7QHI{4WtnErk^c$i_Har&nt0T0z!7V6jbF?3B; b3|uVFrNMjfN;AWXK;{oIr@tjQFjxZsoSk_C literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/it/about.htm b/webcit/tiny_mce/themes/advanced/docs/it/about.htm new file mode 100644 index 000000000..e1bca0ffb --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/it/about.htm @@ -0,0 +1,37 @@ + + + Informazioni su TinyMCE + + + + + + + + + + + +
    +
    +TinyMCE è un piccolo WYSIWYG (What You See Is What You Get, +quello che vedi è quello che ottieni) editor per i web browser +come MSIE o Mozilla che permette di editare HTML in modo comodo. Ha le +funzionalità comuni di molti word processor e non dovrebbe +essere difficile da usare.
    +
    +
    + + + + + + + + +
    +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/it/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/it/common_buttons.htm new file mode 100644 index 000000000..7dc7a7906 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/it/common_buttons.htm @@ -0,0 +1,180 @@ + + + Pulsanti comuni + + + + + + + + + + + +
    +
    +Di seguito una breve descrizione di ogni pulsante.
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Testo grassetto.
    Testo corsivo.
    Testo sottolineato.
    Testo barrato.
    Allinea a sinistra.
    Allinea al centro.
    Allinea a destra.
    Giustifica.
    Lista non ordinata.
    Lista ordianta.
    +
    Diminuisci l'indentazione.
    +
    Aumenta l'indentazione.
    Annulla l'ultima operazione.
    Ripeti l'ultima operazione.
    Inserieci un nuovo collegamento, maggiori informazioni su +questa funzione nella Sezione +'Inserisci un collegamento'
    Rimuovi tutti i collegamenti selezionati
    +
    Inserisci una nuova àncora, maggiori informazioni su +questa funzione nella Sezione 'Inserisci un'àncora'.
    Inserieci una nuova immagine, maggiori informazioni su questa +funzione nella Sezione 'Inserisci +una immagine'.
    Ripulisci il codice/rimuovi la formattazione non voluta. +Questa funzione è utile quando si copia per esempio da un +programma office
    +
    Mostra questa guida
    +
    Apre l'editor del sorgente HTML.
    Inserisce una nuova tabella 2x2 alla posizione corrente.
    Aggiunge una riga sopra quella corrente.
    Aggiunge una roga sotto quella corrente.
    Rimuove la riga corrente.
    Aggiunge una colonna prima di quella corrente.
    Aggiunge una colonna dopo quella corrente.
    Rimuove la colonna corrente.
    Inserisce una nuova riga orizzontale.
    Rimuove la formattazione dalla selezione.
    Formatta la selezione come pedice.
    Formatta la selezione come apice.
    +
    +
    + + + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/it/images/insert_anchor_window.gif b/webcit/tiny_mce/themes/advanced/docs/it/images/insert_anchor_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc9fc9d4a5e19f6f7c5e29bcb8e8f1fdd54d44ab GIT binary patch literal 5336 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/it/images/insert_table_window.gif b/webcit/tiny_mce/themes/advanced/docs/it/images/insert_table_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..5cb25cf59f7c75bf4dadfa6de5164b42b3c9b3cc GIT binary patch literal 7379 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 F06X$-YIgtt literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/it/index.htm b/webcit/tiny_mce/themes/advanced/docs/it/index.htm new file mode 100644 index 000000000..4e57afb15 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/it/index.htm @@ -0,0 +1,30 @@ + + + Indice della guida + + + + + + + + + + + +
    +
    +Seleziona un argomento:
    + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/it/insert_anchor_button.htm b/webcit/tiny_mce/themes/advanced/docs/it/insert_anchor_button.htm new file mode 100644 index 000000000..c4a011176 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/it/insert_anchor_button.htm @@ -0,0 +1,32 @@ + + +Bottone 'Inserisci àncora' + + + + + + + + + + + +
    +
    +Questo bottone apre una nuova finestra che permette di aggiungere o modificare un'àncora
    +
    +
    +
    +C'è un solo campo in questa finestra, dove devi inserire il nome del tuo punto di àncoraggio. Ricorda che il nome dell' àncora deve essere univoco.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/it/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/it/insert_image_button.htm new file mode 100644 index 000000000..9d3092305 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/it/insert_image_button.htm @@ -0,0 +1,66 @@ + + +Pulsante 'Inserisci immagine' + + + + + + + + + + + +
    +
    +Il pulsante 'inserisci immagine' apre la finestra mostrata qui sotto.
    +
    +
    +
    +Si inserisce semplicemente l'url dell'immagine che si vuole collegare e una descrizione di quell'immagine, +che sarà mostrato come testo alternativo dell'immagine sulla pagina. +
    +
    +Descrizione dei parametri:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    URL immagine URL/indirizzo dell'immagine.
    Descrizione dell'immagine Descrizione alternativa del contenuto dell'immagine.
    DimensioniLarghezza/Altezza dell'immagine.
    AllineamentoAllineamento dell'immagine, utile quando si inserisce del testo attorno all'immagine.
    BordoSpessore del bordo.
    Spazio verticaleSpazio verticale, utile quando si inserisce del testo attorno all'immagine.
    Spazio orizzontaleSpazio orizzontale, utile quando si inserisce del testo attorno all'immagine.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/it/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/it/insert_link_button.htm new file mode 100644 index 000000000..0aad824a7 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/it/insert_link_button.htm @@ -0,0 +1,41 @@ + + + Pulsante 'Inserisci collegamento' + + + + + + + + + + + +
    +
    +Questo pulsante apre una nuova finstra con le funzioni di +inserimento/modifica del collegamento.
    +
    +
    +
    +Ci sono due campi in questa finestra: il primo, "Link URL" è +l'indirizzo del collegamento. Il 'target' permette di selezionare come +il collegamento deve essere aperto.
    +
    +
    + + + + + + + + +
    +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/it/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/it/insert_table_button.htm new file mode 100644 index 000000000..f75e4dfea --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/it/insert_table_button.htm @@ -0,0 +1,71 @@ + + +Pulsante 'Inserisci tabella' + + + + + + + + + + + +
    +
    +Il pulsante 'Inserisci tabella' apre la finestra mostrata qui sotto. Questa azione permette di creare tabelle.
    +
    +
    +
    +Descrizione dei parametri:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ColonneNumero di colonne nella nuova tabella.
    RigheNumero di righe nella nuova tabella.
    CellpaddingSpazio tra il bordo di una cella e il suo contenuto.
    CellspacingSpazio tra le celle della tabella.
    AllineamentoAllineamento della tabella.
    BordoSpessore del bordo della tabella.
    LarghezzaLarghezza, in pixel, della tabella.
    AltezzaAltezza, in pixel, della tabella.
    ClasseStile o classe CSS della tabella.
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/it/style.css b/webcit/tiny_mce/themes/advanced/docs/it/style.css new file mode 100644 index 000000000..722f537a1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/it/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/nb/about.htm b/webcit/tiny_mce/themes/advanced/docs/nb/about.htm new file mode 100644 index 000000000..f2cf6566d --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nb/about.htm @@ -0,0 +1,32 @@ + + +About TinyMCE + + + + + + + + + + + +
    +
    +TinyMCE er en liten WYSIWYG-editor for weblesere som +f.eks. MSIE, Mozilla og Firefox og gjør det mulig å redigere +HTML-innhold på et mer anvendervennlig vis. +Applikasjonen har funksjoner som ligner dem man finner i vanlige tekstbehandlere +og burde ikke være spesielt vanskelig å benytte.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nb/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/nb/common_buttons.htm new file mode 100644 index 000000000..09857ea5c --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nb/common_buttons.htm @@ -0,0 +1,163 @@ + + +Vanlige knapper + + + + + + + + + + + +
    +
    +Nedenfor finner du en kort beskrivelse av hver knapp/funksjon.
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Fet tekst.
    Kursiv tekst.
    Understreket tekst.
    Gjennomstreket tekst.
    Rett venstremarg.
    Sentrer.
    Rett høyremarg.
    Rette marger.
    Punktliste.
    Nummerliste
    Reduser innrykk.
    Øk innrykk.
    Angre seneste endring.
    Gjør om seneste endring.
    Lage/Redigere lenke, lær mer om denne funksjonen i + kapittelet Lage/Redigere lenke.
    Ta bort lenker fra markerte lenker.
    Lage/Redigere anker, lær mer om denne funksjonen i + kapittelet Lage/Redigere anker.
    Lage/Redigere bilde, lær mer om denne funksjonen i + kapittelet Lage/Redigere bilde.
    Rense/Ordne koden. Denne funksjonen tar bort unødvendig + formatering. Bør anvendes når man f.eks. kopierer tekst + fra Office-program.
    Viser denne hjelp.
    Åpner en HTML-kodeeditor.
    Lager en ny tabell (2x2).
    Lager en rad ovenfor den nåværende raden.
    Lager en rad under den nåværende raden.
    Tar bort en rad.
    Lager en kolonne før den nåværende kolonnen.
    Lager en kolonne etter den nåværende kolonnen.
    Tar bort en kolonne.
    Lager en horisontal linje.
    Tar bort formatering fra markert område.
    Lager nedsenket tekst.
    Lager opphøyd tekst.
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nb/images/insert_anchor_window.gif b/webcit/tiny_mce/themes/advanced/docs/nb/images/insert_anchor_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c38437e26bcc84145d6a6e994ff1f0bdbbf0538 GIT binary patch literal 5229 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 CMam2S literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/nb/images/insert_link_window.gif b/webcit/tiny_mce/themes/advanced/docs/nb/images/insert_link_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..2a56e79c4d9f735f162fb69fb9b49ec05f17fc0d GIT binary patch literal 5767 zcmV;27I^7LNk%w1VM+m?0QUd@8#Z|pEpZ<@d=xKp7BO@VDQ*xdZx=IorpoXNBx+c9 zt$LfvXNS6^$nI8ktCqRq88mk%LxVb3lZdL;HByg*rP5h=u2of4NM@fbNQVn0Yv}0H z|NHRj>gvqQ%ypK=7czA{T9qU}fM0&Ijj-EOa;ZsZprXd@LSLGOsMKVHw?bf=imcd9 zY^0yU>M>4?bd|+Zai~ROohwI%rOEFgJAIL~-dA?4d!5TKOp0NEv_oKkh0w-L4sz6xp$by zjIP>%qR@}B+)QetJ6V(fX3TPv#8GgkAv}E(E^>LA$$Xv6pTp`RK7XRd>^)nSAw7Oj zZl;*Ku#q4sD!$xGCWP`UnS(Ryt zye&zHElP-uuiBu*>zTaeVuH3~gSI9@f`z8jTzs)NRFPYHus>XvI8~7|P>ox9uN5$J zp2O#qx8W&8g+E=Gp26vFkil(@zgl^(9y)s>J$@cJdz81}IaZP>MTDKe=!vY?Do2Ji zP>v8QZ%1XGGER&tMul*Z!eN26I8~C9wcm-W*L0M{hN#tSjJ^>paFw{>P;aJDZ>MgK zz-WlO4k&F5CTtBSY&KJnK3kVfYou+Czmc=vf~3(vUYQ&?dT)=wf}_!gsnw3L+;Nh^ zH&c*hg}7#gxoV5ObCkqsiMvW@p-X9^fT7PxXP`h`n2WC2B|(9cw&0Gi+l#H(f1%Hi zv)w2}gkplVO>3hXHF!p3o((5$J6Mz?K!IO>vocSOcXxMSfV6j*$d|g~FieUuO^bb> z%`;~DoWJLInaEy#vX{H#G*OOTeX^Xu=zX5dgr?JmhK567n@(+|Pi>_|Vw^5Yi7!iu z@$vC9Gt2;HnVFfHGcz*)0DuGp1i-++pp#8z|NsBYnO|RDW|^4)%>O_@K!AXN)X>NP z00960|M2kcA^8LV00000EC2ui07?O$000R80Qm_VNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGZNIt&!5MSAVZ2ANwTELlPFWFT*!YyfEqQh zfN9iajfiN(n&^oTL0Ke2nJCT3kYNrTb?b6q%k~1(v_O@>QJ}C2S06x}AW4t_jY^yl zUs(M)BrH}C6f1U^ODE%vvr8B-1T*357m_K=TD3TbE)1zsSA@hUF(io+2M%s1P+-Br zB0+w}@KF=a+X!jZbZlCNCl4GIxpX=IVZh*2FF9s*g({-Rm8n^Yh-kXy#tN@bFg|=Z z^Tb-WG+HdMzz;ZVF^)ED@PG_3Q7l0VEEQBh&K_u_07@+rOyJ2REF3co6m^hbj4e_y zk<2SLbW+SCg^cpR1J`^b#vMKYafA`vh$9IiF1Wyj9X+(+#R+9J&;ShxB&p<*Og8D{ zlTbp*k5M`?MNK(aW|^f^P)S9VRaj}ol~-ViMV47;sl}FCaLGlNU3lrmmtTMhMwnrU zDaM#%kV!_FWteHknP;GhMw)4;sm7XXu*pW7ZMf;in{U7gN1SoUDaV|1&`C#~b=Yag zop<1gN1l1;smGps@X1G?efa7B$De-y3P_-V2r9^+gAhtcp@kS~$f1WIib$e~D5}V! zi!jPaqm4M~$fJ)y3Q44qNJgpcw%j^7Wll&fMGZ;sT(HzrQB76VRatG-)mLGSRn}Q) zt<~0Bam`iNU3u-**I$7RR@h;QE!Nm$kxf?FWtnZ(*=M1RR@!N)t=8IWvCUT7ZMp5% z+i$@QSKM*QE!W(0(M?y~b=hs#-FM-QSKfK)t=Har@y%D?efjOz-+uuPSm1#PF4*9M z5l&d)g&A(x;fEoPSmKE(uGr#>G0s@yjXCbv%yPuB4CIWvir5lHVR>r9T|R zEjI`6aA0my=z6(snC_DQ8Sk0&s(Ejl`oh`ooB-Q7aGnP9ned+s3;J-O5+hpiq8K~6 zaikto8uFziYkG30Dudecs4$y4bE-D8n)9nX%ldPzLgQNWu1Nd3bg)hn8}+eND|>ab zT0`6Qv|w91cD6b(gj4ei;Z$}*(j(AzmEyw9K^0ZVeE~e+%;2!rlunl%_zyt4~#@#d!k^+>kUFR#4ywFsyHQ~!m zU4UPl{6(jL-H8tO^GN<4x3EAtj8G9f6vcKhz&CgV10H!4$8?iGkS!2XC1Z|9NT&vm zjKCukBvs5#MKe|1tW`RL6%0JWACJ(EKp+_*uPWe?UolNsPb-$xkX5y1y~rcQyHQA} z6}D@UO^DRf;go#nL!DF)dj04JL2?O1wo&Pb35W+i2+@vq)T0VcWJd>}csGxviz-(X z)4Q|?xb=CFaE`goH96(Tqo^;1AG%#By}>M{7Vbn~?C)AHMO(A46v{kc{q$M_A;Mi25UykNwC+C(FE8ax}9ay`@1u3tE&WfEx7JMrq^b z#161y12Uy4-l_-^X@*3${-CWt)Dn{1?$#f25=n6VFk%k>cglpkvRbqJoh`4|AMN!Ad*~`=GTS$=`9*VI)y&@|__vd9 z_6G{%Jm&*5A;AkCoSASqT)E!{z%-8dtBTf2btDxoa$$A9bJDMSq8oT#^bM< z?BwnGqr37fE6O~j?DP5~z5b9{m)(0aj}W2S{;2PLvz_KOd%MlxPCBR%lQ2|PmCff)L;m({GGHyhH=j#S@nOG-NuAP;%C7mCfMri zQ^@tbAIX_rh29^%3N4dH_b)>IAy|-*+v(;`a3}D5jmB0TBvUnfY| zX<18?X7(Ux$DZ29l}wq+RPF`8DVVT0&3JvKMEH=GHU#cjN23c!jel)$-xnT zShX0VGNwn)P0EjyZ{VgbAHh)JGj$ehWa~5-$=LbqgJ&i}Mzcw}b3&lxJ1ay=!t+AT z;#kMyZW#4@(IZP8K@!FnOTM&k;u2HO_k7T2X?in#(&RTj)o|F?KHFDuV}v;L1AYaw zCm^vuwdOz2g-(h>KD3I|7J1C8SW}hJaQ0P{RX54!DJq)rAP4530C|tk{aK_=>EUB(MmJ8JKpWbpg1T zi@J!5AP9%-GJ3)M zML3E5)PG8diP^S^2UUPl$WXt-LZvi{Stvu1)o1Y5E%G>zPlAR`agSUgeZMG&)TBPc z*gnPBeJr?#c+!XBB!g~5gXfff(U^k=M2!j*f8T|TrE^b17>WC|e@JMFvIBsc=!Be@ zG@f{XROnFa$bb;`fLs`l^w^U0XhcL2lQKDzG+C22d6Sm^1ukW{lRVjzKKYYC8I(df zltfvSMtPJ-nUqQyl$&)FI5CS*8I@8wl~h@kR(X|JnUz|(m0a1CUip<^*@{l7llt%v zW_gxqnU-p~mTcLUZuypQ8JBW7mvmW|c6pb0nU{LGmwbtrV>y<68JL1On1orFhIyEX znV5a~mz$-Sj`^678JUtfnUo2ajQK5JoXpvr zW~rRc8J*I}o6tF()_I+-S)JIqo!se}+S#4p8J>~<`JLifp5{rIcI;Aekp-HNxD=MX7x};n>rco-SY1yS_8m3K3rJre~32LNInx;lNrBAA%Mf#&+ zx~F8irhICrVhW^millxzr*2xM^m(OmN~C!ITBv2Jr)V0eg8Ha^Dye`9sDJ9HjC!bu z`b#*9mpiJYl{%`T8mUf-rj&}Qr>d%{>ZfhWsg;SM4hpHQnyI$Rr=}XBw_2-GimRha ztD1VNu==Knx~QeJo}9ax`wNg8^9`&;KYL`lzriID0NZYGkJC{&PwPHKAKTEW7X|yB?rGnbE zjjFaqdbG3JwQ>u$Y#Fv>d$)KivSu5XXv>x&8n+F~wQLKx66&`R zYndi1msvWgfcv%znz&nPxPP0ta%s1X`?;W-5|4|Tk-M{6>$Omdx}5v9A4<1_%eoip zmYy5Bv|GC$F}nE)vsj9(oBO(ROS!1qrqZgpbt=2Id%VbdyH-oEF`K;3Tf4a1mO6`^ zv-`Z(OSRF%kU75Y8^3A^zw%qZ z|5>{Bo4*f>zxvz1Im^HP8^ENiy8>LmkW0V@oWSA>zzUqe^c$S%8^IDh!4vEc>-(PZ z`IKR~!5rMd9{j;r*%24KpBa2M-+RI$`w%%X!k@~X&x67+?6DPi5>&#%_`04i3=;j| z4?7&gKD-h~F@YldzX*)OCJeMatP)9#!nxG4K`d`WT(k`Ax5b;ah-;cT{1KkTvPrzd zODqy!{1RatwM*>9EHTCwczpG?!bE(vOWT)LOqp5C!&B%91?FoBYQJQNwM_yt@m#bNjWp%(kgJnT-s}lU&D~{K&$r z!(e>O!yL?IEX-Yu%*Kqz!5qz-+|1Hk%*9O2*bL0lyviT(#KDJXY%Ik^4417-xUAdD z%X-Cfe8ij_&DreE*L=#`{L0Ln%3rt5&aA^_Owah7%=4Ve{XEU_9MAmh5r6DiYaGaY zJIJwXxV~G?xqQ0144HFG&Hnt(0$t7UywMqL(bt^M+Kka6&CJ#u(8R3KC*97~EX#)` zeBms}sJzdtEXo8O#-5zgLaoXHUD7+P&zNk{L;cS{jnp4~ z)RElDDXkM~?9vK-z;0Z^d<@b*jKZ>vd@sGwF>RhYJrYgb)jm8+JQ>zlZObRi&S)Li zDPfgYJ-}IgvN)O7dcD^WVZpV`zVRv7f}OH9+`xvNmJfW``I^{@O|OjI*zo$;kj<`= zJ=x(}*_J)5n4Q_2x~&uphMb+3pG|y)O_$xvvf&%rZF$-%o7#xY&}hlpt*zR3DcgEm z+F(1iu1(u%Y1<*Y+h^(7N}RI5&D&<_+eQr&#eKhHt+;0G)3uNzKtBVcxKPmesq;j$F_|UEbfF-=Iv%Cq2>`jospW*Wk_F8?Ds+ z?9uHV;T!JEm;BWGoZR=F-6SmG6Yk;iz0*96#sIF`Q0vHbUK2;&<8L|I zq&?)aOXfW!^bLjuAX*&=jNH`dM=)P-sj?);DDa3e?I8j zS?Gpjew~P(=+n9Aj2@ki{^-pa>5{&jlwRq_dFhy5oSMGr!P)7a{+pm4>bnV=e0}Pu zp6aT;>Jy=#gZ=8Tj=V6*>a%89UzW(dz3&O%a?8IK|#(wO`e(V7O F06XoAmZ<;$ literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/nb/images/insert_table_window.gif b/webcit/tiny_mce/themes/advanced/docs/nb/images/insert_table_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8b69ef02a40913b8a94c28f4df060c27f2859d2 GIT binary patch literal 7099 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/nb/index.htm b/webcit/tiny_mce/themes/advanced/docs/nb/index.htm new file mode 100644 index 000000000..629301257 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nb/index.htm @@ -0,0 +1,27 @@ + + +Hjelp Index + + + + + + + + + +
    +
    +Klikk på lenkene nedenfor for å gå til de ulike +hjelp-kapitlene. + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nb/insert_anchor_button.htm b/webcit/tiny_mce/themes/advanced/docs/nb/insert_anchor_button.htm new file mode 100644 index 000000000..83d88708c --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nb/insert_anchor_button.htm @@ -0,0 +1,34 @@ + + +Lage/Redigere anker + + + + + + + + + + + +
    +
    +Denne funksjon åpner et nytt vindu lik det nedenfor.
    +
    +
    +
    +Dette vinduet har et felt som man skal fylle i med et unikt +navn, denne funksjon gjør det mulig å skape +ankerpunkter/bokmerker.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nb/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/nb/insert_image_button.htm new file mode 100644 index 000000000..40fb90e43 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nb/insert_image_button.htm @@ -0,0 +1,71 @@ + + +Lage/Redigere bilde + + + + + + + + + + + +
    +
    +Funksjonen "Lage/Redigere bilde" åpner et nytt vindu som ser ut som +bildet nedenfor.
    +
    +
    +
    +I dette vinduet skriver du inn URL:en til bildet du vil lenke til +samt en bildebeskrivelse, denne beskrivelsen kommer til å vises som en alternativ +tekst til bildet.
    +
    +Feltforklaring:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Bildets URL URL/søkevei til bildet.
    Bildets beskrivelseBildets beskrivelse, denne beskrivelsen kommer til å vises som en + alternativ tekst til bildet.
    DimensjonerBildets bredde og høyde.
    JusteringBildets justering, kan være anvendelig når man vil at + tekst skal flyte rundt bildet.
    RammeBilderammens bredde.
    Vertikalt tomrom Vertikalt tomrom , kan væra anvendelig når man vil + at tekst skal flyte rundt bildet.
    Horisontalt tomromHorisontalt tomrom, kan være anvendelig når man vil + at tekst skal flyte rundt bildet.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nb/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/nb/insert_link_button.htm new file mode 100644 index 000000000..5430f6a7a --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nb/insert_link_button.htm @@ -0,0 +1,33 @@ + + +Lage/Redigere lenke + + + + + + + + + + + +
    +
    +Denne funksjon åpner et nytt vindu lik det nedenfor.
    +
    +
    +
    +Dette vinduet har to felt, lenkens URL/addresse samt hvordan lenken +skal åpnes.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nb/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/nb/insert_table_button.htm new file mode 100644 index 000000000..6e620df1a --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nb/insert_table_button.htm @@ -0,0 +1,72 @@ + + +Lage/Redigere tabell + + + + + + + + + + + +
    +
    +Lage tabell-knappen åpner et nytt vindu, ved hjelp av +dette vinduet kan du lage tabeller.
    +
    +
    +
    +Feltforklaring:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KolonnerAntall kolonner i tabellen.
    RaderAntall rader i tabellen.
    CelleutfyllingAntall pixler utfylling i hver celle.
    CellemellomromAntall pixler mellomrom mellom cellene.
    JusteringTabellens justering.
    RammebreddeRammens bredde.
    BreddeBredde i pixler.
    HøydeHøyde i pixler.
    StilStilmal på tabellen.
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nb/style.css b/webcit/tiny_mce/themes/advanced/docs/nb/style.css new file mode 100644 index 000000000..722f537a1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nb/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/nl/about.htm b/webcit/tiny_mce/themes/advanced/docs/nl/about.htm new file mode 100644 index 000000000..7ac0211e1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nl/about.htm @@ -0,0 +1,31 @@ + + +Over TinyMCE + + + + + + + + + + + +
    +
    +TinyMCE is een kleine What-You-See-Is-What-You-Get (WYSIWYG) +editor voor teksten. De bediening vindt plaats in de web browser, zoals MSIE of Mozilla. +Het werken met deze editor is eenvoudig, omdat de bediening veel lijkt op het werken +met teksten in (office-)tekstverwerkers. +

    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nl/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/nl/common_buttons.htm new file mode 100644 index 000000000..5b03318b5 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nl/common_buttons.htm @@ -0,0 +1,188 @@ + + +Functies van TinyMCE + + + + + + + + + + + +
    +
    +Het werken met de editor komt sterk overeen met wat u gewend bent van uw tekstverwerker: +Dubbel-klik op een woord in de tekst, of trek een kader met de muis terwijl u +de linkerknop inhoudt om een gedeelte van de tekst te kiezen. Het aldus gemarkeerde woord of +tekstfragment noemen we 'selecteerd'. Met de knoppen en stijl-keuzelijsten +in de editor kunt u hiervan vervolgens de opmaak aanpassen of (indien deze reeds was toegekend) verwijderen. +

    +De meeste functies voert u eenvoudig uit door het klikken +van de knoppen (buttons) boven het tekstvenster in de editor. Hieronder vindt u van elk van deze +knoppen een beknopte beschrijving. +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Gekozen tekstfragment 'Vet' (Bold) maken.
    Gekozen tekstfragment 'Cursief' (Italic) maken.
    Gekozen tekstfragment 'Onderstrepen' (Underline).
    Gekozen tekstfragment 'Doorstrepen' (Strikethrough).
    Gekozen tekstfragment naar links uitlijnen.
    Gekozen tekstfragment centreren.
    Gekozen tekstfragment naar rechts uitlijnen.
    Gekozen tekstfragment 'uitvullen' tot complete regels.
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Gekozen tekstfragment omzetten naar ongeordende (bullet-)lijst of opsomming.
    Gekozen tekstfragment omzetten naar doorgenummerde lijst.
    Inspringniveau van het gekozen tekstfragment verkleinen.
    Inspringniveau van het gekozen tekstfragment vergroten.
    De laaste bewerking ongedaan maken. De toetscombinatie CRTL-Z doet hetzelfde.
    De laatste bewerking opnieuw uitvoeren.
    Invoegen van een Link (Cross-Link) via dialoogmenu.
    + Zie de beschrijving bij Links en verwijzingen in tekst invoegen.
    Verwijdert alle gevonden Links (Cross-Links) uit de tekstselectie.
    Anker aan de tekstselectie toekennen of wijzigen.
    + Zie de beschrijving bij Anker Toevoegen.
    Voegt een afbeelding in.
    + Zie de beschrijving bij Afbeeldingen invoegen.
    Schoont ongewenste opmaak en codering van de tekstselectie op. Deze functie is erg nuttig na het + overkopiëren van teksten vanuit uw (Office-)tekstverwerker.
    Toont dit helpvenster met uitleg van alle functionaliteit van de editor.
    Opent het venster met de HTML-broncode voor het direct maken van wijzigingen + in de achterliggende pagina-codering. Kennis van de HTML-taal is vereist.
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Voegt een nieuwe tabel met 2 rijen en kolommen in op de huidige positie in te tekst.
    Voegt een nieuwe rij toe aan de tabel boven de huidige.
    Voegt een nieuwe rij toe aan de tabel onder de huidige.
    Verwijdert de huidige rij uit de tabel.
    Voegt een nieuwe kolom toe aan de tabel voor de huidige.
    Voegt een nieuwe kolom toe aan de tabel achter de huidige.
    Verwijdert de huidige kolom uit de tabel.
    Voegt een horizontale lijn in de tekst toe.
    Verwijdert alle tekst-opmaak van de tekstselectie.
    Toon of verberg hulplijnen voor tabellen in het tekstvenster.
    Verandert het gekozen tekstfragment in Subscript.
    Verandert het gekozen tekstfragment in Superscript.
    De Karaktertabel maakt het eenvoudig invoegen van bijzondere karakters mogelijk.
    + Zie de beschrijving bij Bijzondere karakers in de tekst invoegen.
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nl/images/html_source_window.gif b/webcit/tiny_mce/themes/advanced/docs/nl/images/html_source_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..db933dc9e65c954dcdc97e09048d15d26478e2fe GIT binary patch literal 16012 zcmV;7K6AlGNk%w1VYmU90mJ|R=jZ46`1oF4UVVLiv9Yn)+1Xv3<{23o#l^*x*#GRS zI0HPhg}Ly>VnpWddwsPy@q>GmFe_JxE;>3n!;guj+Fr!O^o@;;?W&>X-`~L2w$RYf zp`oGR;NbA^?*IS)A^8LV00000EC2ui0Js5|0RRR6peJ@4LY!!-u59bRa4gSsZQppV z?|kq7z~BzC>4-c4z=nV*Bm>Z>bV{vSuh^`1%k6r<;IMd1E}PHjv>Kc&m^R4{qIs;_ z@A$la&+q&HfPsR8goTEOh>41ejE#~98Ju| zaX7F_fPf_b`f1!qYJ-zZ7Y+#EupvW+4IBjj9N-61B!!YEDX3(LDdfl^BvP*AxNE}2 zN-I;=6KRnH0%Z>YOuTp$Af|}jCRY3@U;uy)1U~ZI`l`c)p~}LF^?5-YrUFH-h6_gk z9|a6>F;H+vV6EM@5#DatyFqS*33ctV#YaGcVGYm#3tr5)vE#>(BTE+S)9%W(1P(+B zcl2_&WCG+I2+Ww-&OLkc+u*}HuDsSWR?TaV)(f|RsA$rQnW;R$AzW3J z1v(6{7C2qo1J>ymR$Uv+Cjd?xB;(Wn0c-6CAY+*=gHwd{gw{b-9Yn(*R?%439tY}( zC*p`CHkJ-aW@VDoJE%=?+;Pe^@Zw*kAt&993dlG?Y1nDU-FDvXSmKbisZ)@7nQitS zdIMM#T2tczNPtS80T@Y0B&ih1et?BkL`VaaP=q=rgqYz3b0iZ^NG70X*HI*y*4_XG zEcID%a29b?m=l%N9(_s@Dd?c7RYibD1thBIqG%ms;baHA7$bGZZ77(HINm5DV+UmS z77s zCmTCQan9BhH@m*0guen{&7wb+)n&>Vb~Km=dDrGr|e%0XZ*1j~uK7N(g-w`qJn zK2X8D^8zVkw)oa+Sy^nQdQ<_(9#Ft~P&W46g9is#*?!?b+kr@S{mL1A5(^uSHTVdo zk~$%-_nC#JIZSPX3>KX4$%D4q#I%hiiU5c$Gny!j4V-%}r7{l;U33og?7(ya{<-l8XL&6xH>(F&fiUdws#wO2bw*fB*}O*4OGR zni&U){@PTcAtf4i&eATLH`#UvEo-8CcRjb%gcol3;fNc46967yfdoorLp=a;=fZV! zb$IXWv(N6*Df0kCSFm~iy%Kny`01z{em87mCyKSp2Y8fBR)T-Mv^pN`Cwtk*rkz#Z zfA2T;9Axj+HrZ{ey&v3eFuJElO&sOWeoBXpb^)1r79ltT~~2Ik6`mCOV{xB2Ed-p?ojMBASOjwS*Bh3|mhTbwrg}M9s%)|5?WUCZdeMg(Y$f42uVqQK7y8P8oDNA@ppAz#7^R zflU%f(>CxG3P$Y$5s=^f=obO^$&3T~+h2~Dm$M5@7fCP+q!zx-aaYSg|4p;WH z5;%{GiSnY%#Kg4!EM^T+OB18Z(0Ii*y3uf7(U4feLY5tNt6N?XKm*<)mj<+t1b5_% zR|X)jo>f2r`2b`fzZAd$BF#^WjHDzdNy$oD@{*X$q$W4X$xeFmlb{TxC`ZZ3MLC91 zoRq^?oFouMMpBiaD_tuosmkogG7_ZBr7m~L%U=5Om%t3BFcI~bFnTgS-atzwky(ij zD3g-RjKedBNzH0n^P1SqrZ%_9&2D=0o8SzmILG|F#mb&z%Fpa59XG+tW+VrM4&8bdz%F~|u z^rt`#s!)eY)S?>os7Ot!QkTlqraJYhP>rfor%KhTTJ@?}&8k+n%GIuV^{ZgD0|ye) zQUZ`f5oU$MSd9?Ywz}01%HV(qNaz7MhQ$M6VVno%Ljb(eM-MP;X)-RLh`~NgGkZnT zTNle%zsl7Ebgf4;IOf-tc;K+3aV%g3CRocRVz3@K0ppa>*T$L_tZ|*IGL8TMWgy@P zbo4+-NUPaAC?g#rVH}w(;(>u#D9X71 zL>)+Y2}kEx!JOsspbZ^pIeXftbUreMm0Sl7FN0&HO>dLp3uo8>Xtqrzu$B+|4vV-t z&3u-|ZE4+(R@H&m$dIcw9E52C?^hrtg!Pm^&1{~A`T(pQHEq+|WU&yo)MZ|_2qNU% zWoy|32+$C5x$W86UKiYQOtlEYEtbBT+qr?|cJjL2>1NwItl!`RS^z-;y^3JpbpQaB z?VyB#-=W|EH#i>h6AN10`{59exWp$;@rqmg;uz1k#y8IKj(hy$AP>37M^5sRoBZS` zPr1rh&hnPK{N*r@xy)xy^P1cI<~Yx}&Ueo9p8NdgK^=h5hfegO8~x}=PrB0om(KL2 zJN@ZUkGj;SPW7r={pwiHy4JVOb*Tqp0O$+5*vC%xvYY+vXixi&CXn{AH;L_SkGtIG zPWQUo{qA_ryWaQC_rB+yxPSn=-v=*tf!94V1h{)}2+#P&JO1&IkG$k3A9le1LGXEh zSpmlWG61w40Es^z=+TEe^M%#}rr-SC<)DJ{iRA-}|A1L#&w=1rrR-IvyzY0;``-Ir z@|O1l=FeBYu@^t=;TF08#GbyK&vKDzGjg9Pk`aPPbBLk z&zr9;u)l!$Ca{4Ius71CF4HvkAAb_MbQ0#FQaH+G}(0U08C958(hVm|RFcHtKQV3&KjM}oQ6e-<%+ z0LFa)&^~CQe=<0OG+2XZ7kqsnc;D52EcjaCr-8v%KI%{vV#hur!Gme1AL!#1WT$-@ zLV}S%0Ob<^&R{+nh&~Atf#?T<95Vstw}o=IgXYs(KIjZ9K?^pRhHAKm_J@Of0CxC6 zfN)oP2$&2M*ea@rfI?@0ai@gYXI72od_@?D2U2V92QweQTp5U0sy8L)BXqn`d_Nd> zaVUCoXcZU8hMKsEoXB`?xCdYd06{p0bGUrxM>QYtE2t-SjW&1xei#58@D(Isb_aqG z?x%epV2kII8Ri2bp7$`1sD9`JhH)o~tx|mSmx>pWiJjPt&iIUN_lbIdc~$lf^9OhB zBYTyBKG~>&s&PIasDW_Pf%BJrsMk2=129WCd}B8-si=P3$9CSgBeHh@=Ys%($6M(a zc9S@F)u?{S*gnY!jRaYc1}Tksz>cuUf}l}8RTy^Ef)6@)fkUT$z?c#g7<$8ifJjJo zL8F0W0ekg;dLh)2#OEM$wt|A2RGQG1PZ0($ZRXmLI}Vv2F6 zJ5;%o5ttuKhbB8@yfrThwK2&Ia zrfHOC7lUmlnQ=*zbJ=B3nSEooc7kYk91s8tF@00QLlwA!y$Ef0_Z8+toOyXZgz0|y zK#l|`oFgH2nHiI0my8Msj>y?Qbdrc9L5?KY49744#fK2j*>>HTEZ}*5LZ^P(=O4Q` zeAZxv%5Xm4_oA+m>g#{iKf3Lud=hX?9^EEs?I04iqRba@dQQxT(+BsT6pmZSj#Jh!oi;1@TG+bVouR=!>bCj};hX)5m_xih1!z ze}u`U=2ND$P+s9@jJf%%%Q$u;I*h0Ys>11gpbDPcH+}n;eXr$tU(pt~DVU4{hf|_{ z#MO2?N_Uc)i=pVG$(Rzsimpleb#(=?p@DnX>Ua;cSIEeH+6Q+cK!MC@u8$~qiMo77 za3B_%h;Zks=kt&CNrCVXlQX-E+lW5@B^qVlYCZx0i$mz5WEYD(B!Zr|wGil{OiPOh z>xFWMSEwg+O`97}E0EF&vrPGQu{eyV`Fmjzw7mLi<+XV$nXf}zup4s%r^XCqcecdW zfiAfWFe!F-yNh{Sr>2=1shWuA**IZRb|?yap0@$#nSGm!c8k%uWQSL!8g?z&TrN1b zbZdj1s9BxZId+uUge$O$pa+^MpoJ(v#V26JOaOXW zp~X(nnOuCAs%LoO2%uw}x2i$LXWYDcD8u^az0~Qj(h$88Ynrtdz1ypy9(X=@Y@+eG z$Ehg3%Y#0F{D|}+$c0SEL5nO+__S#E#$(s6MDdXzqI?(7tQJwpk&MZ#WXbI_FxyoR zO#sTC9D!oNoyt%?bU4ZX$Pjv}{DZB`%FM9J^7pcA{CnQ3i~MOmozZA=Y_*oTqZxt~ zDHxyYcbmlQemm@=^f-*-I~tkj%vMW`(5$PO7^c{|f~`fQAIie}`LGsxwy<%4Seib? zI?lvbtjgGnrpTpS`pYYErrB6~{0pwbZ~)p0ZS(Ab^?c7mDWuu#xJ4?cwG4b_8K*!< zr&uZyv&T4I+o;Qu9rK;2Tkj_5M&ZbzRz=)--1&aefu?`=w05YCynKjc7ZzFz%Io)?Cfcv4rxI3Z*6+#3BZ=1T zTYQa1g2EWrAxPJAEroTB*LN+~T1&2$Xs)yz(xAH4TtX&6hSX=u8`-KE#Dk@Z?byWg z)9XChd`!&BYmY)#drhs>q{rEU>DlWSfxh~*!0NhIebxNu&8O(D^Vij*nS|llXuEsV z8Ck5ft%0_k61xh93H_eEy$okcN5SpeV=>&oJ%21)ih-@#T)lZ%njge@kIZP!^h?gx zy{wci*=a4Om+gV=a1>2jG9`*vq7mNZ4X)0ousf^HfqmMJ*Qryx+B^J$vsb*}310FE zcPqJpvWMUQa>{nEw}qj#!PrCKOq-|&Uf_bM;Om!%P8*O>8>yMtuD9u`XN#re2zu0g zrq^BF*sabW?$hq9p5c0@SD3_D8hR*x;%t}VysC%R2;uGR-kxZ;2TI1}Ti>8s!MfX# zCF-x0Etp97<3o7Du-7DjjO0UWsX zyS2&ZIn3NNDCh{Nnu^}ERjs;)p693yy{!p>F&u8Uo9ESwcbG2eo?hdDSBzf?ooScP zdVI0}y6mI!8326v;k+kX3wxBGKI?u*!)Q0ccXynR*pV0E-xPQuJDlmDioD+-dUP(A zW;MVTjJ$6-hR9p6+M2DGyMV-wn$1q@uxY?ee4`mbx??4ZP*9cm5dh+DfaOl^!F%k5 z2Z`XCw^%BO!DW8_0i%inf&+njODuNVZg<*el0e?Gs@HGr*Nu&a3?=|>kK8J^*IMo# zj`7Z`io3?x4!dUQ$Sf=$lUS6!7|TA&-|6S^iA0fQA@azo6a4s~t7rnkD!xpx1ie^g zQkenjR$Y*Eqc85Jn$ec?spD2M6*{6Q8Rl~K%gsF(QshEq*dA|3^@ok5^m|Va~vPTX-aS!)w zzoA14(A$hYxXj!NQhPqZgA_8;9}H&aNBDw2eam;jicgsBz#sr95~wWqBqWTJZ>Q7i z&m9`jfKK(4=e-6!rwhB;1xp`hijjGWCS))2sUM78`Y2Qe zfT_>Buk~Y!v{LP+E-jcaO{cxz@ymy$?I(p^=!Dt_0M6h1JM#QaNPpJPb}#FT?YB znb~X{jBR`%OdxRB9CUbO#&M+ju(htjzWJzrlpSn@iHL3lOce0?0#Ee*1{)I#ADaMZ z1>EF_3GDp{O#W0}P7oA~c6@(aMCw>0AOLWbpQoFzs{?#}#M=^lbeKh>?ZjQ|ul0`` z0Fa+NXVAz|OQdii!-ftY_8IVKA|r{>Y*gytBfx=r;i9Di)yV@#Hy5J+;rieURLYgM zK)Gy5j22Bi`8e$3SRiK!o;xGy^y$+FqzM<~MH6r#;fEsFlxWle)ToV12cDst@GJm; zB3rv^RSEWMym=i@OgOVN?1T z0^_zsAFpZb_{0Gc;|Nqfa5?j4%Rg$>LW)E{fFg`bm`;%zbz|123#`7gu@r#JTA6Y< zj4|<#)Ep$oshlGniAlr{7nV#0Q{+h;f3B|=m&!5ff%BQ45g=DMWu|GqKb%o*N`Y~tQez=Gt!8jiR;yvqmB%9 zxTB9h0x4sOH+C182eSF#79L0j*`$+CLK!7sLz>v#1rz#FfR>;X;?hRH*x(D8^5g=c z7$^;)rIvzRxnqwrzR4mW%@m-UA#wI$ADwne*{4HPsy9v;ZxTQN0v>T<=0?1AfFdV| zZa_ezoN%y#qjO;y+6jds>YYs<9tdh6J<7sksDPBJP^tnF17jhp`T+|L8@TGHtqK83 zSav90V9gL?9AGB_b^<$r2OXHi0kYRAo9wdTTv`*e)A~^Vz!E<6gH#gF^r~pJ*W$2k zIKK8_tq=jw;7JnGC^ZVOc`0!KX=0GE&A8rHb?sba@VV~3!OGJvDfQNa8CCxJAwUP4 z$xAQ5;mV6{WkMJXFAb#mt8kIGa%@Ph6pdqSk_K_)mV$Yng4qTgL?aN({Ji{6%mSrj zg8-$-O9lap*>G|Y0&v;$gtZ}1ghvZg!QanZ5^b~%NOPd{5?t2oLD8zzc0n$u-~bPD zk`$1V07n}H#MIR`bpVz`)M7#^9%Q{iC!mb&3jn^LQcJq^^1%@(1eDx0(UQPoH{OF= z18c{N7xHmoq14)x5p$Fx8DsI0CeQ^lZ{Bj}FnezQOWLLsoCz^O*j$4Ts3Rp+Z${Li zdh22oS%fNf{D8>?Ze#tN8*Hdma~+-9o;s5-^i~TDdAKol7E~zShZ-%cq82RAb6~xu zjB`JTP=3C2k`q4Z@Wy60_141&!#5M{RqX5ja83EW~j;_>VG)st_IDD``?UAD$ z@R&~Yy63_nd~ZEY;h$aPGMNuVYIRhYOMPy40gl-0hdu;i9S%c+Oikz{X&cX7s4~OZ zDMf&GAqrlgc$AFrp(sbePY{S01{<2JfweLJS;3%^#VQVEBdYMp7rC|#uZV?+_E6KB zhJXpIfKe?(gd({&nKS|NLa_mo^aexNB#JgMbi?gUvk%jJ%i0P- z&P05O2tC@6sKRoHS~f*b?c`56w>gLgWe8RD)aNt%Imi<|2@0Q~gfMOSsYLK)M2xxF ziWVBJenK=z|6IhzBI?X)o(H2A-KdcNqFE7+f;6Ne9jPKb3JFLQVqq1%U!7FaDLY~# zdp@w#+77ign$DCJL?H!Ma1xcB0Pbl%El5kV^wXchQza`^NSpl9R8NsKsxg`)V|Un!JZ-RHIUjC{=loGtvM+U=>?KW%yK$g*C+uqPR~qx^bNWs6h{E z`$uR&>xLcZM4V<~s1MSrvFnIW9+?o6DNI?}fSm+0D)H51AvUjX!6;k*I!w0&VJ>Wy zLSpKgSY%H!u!qHKUd5_Mam%IuFA@N3u^??M;?5B)>D;X?ve;W?_z(uxJX(DpX%a+JH%(FGTv_s6UiY*YJgI;*-``!Ok!p%*_>BoIQ}p>oQJ`CGK(uBjgbUcGZv_<0)ZW z`9NqsM6d}m^F7{Ko6d=Fb9~C< z<^mErLx>(LLxhw6Knw|II^)?lJlTih=A5}jYfkk(wa717_lrZXes!yRJ?y3u`^>>k z_Oqis?J!(3P!Kz(0TlJ!y;Yz2dBbi#5wfCttj>*yJ$wQ4 z)wJK(2mA4bC>F(y^%r*YBCzRF=3o>1!)wi(v)e?Y_u7hBE6_EG;%maj%^k&LiD_A| zVzxFmUe~%H7M4I$3tD0*1&(pZ2J%M&)Hpdo`irzK4{SBM2D`?)Vz=n&dtUgkBB>7AQDSlQ~h0Y?O35cI-TD1jgHVIY3t1+|V| zltL>|P6Ach>D0;_Mne~7kr4=w^Eer7<(C%34wIl4nn}(aZerxEK^UsSGHlTBOd6bx zkevPh0rT{LDYDS;%?YeYg9@qQD$=30*&zT$j`)ZV6{Nve%|&kDSn?60FcQV6A>!yP z5F=_^{k#+;Vj3VskUxygqzT$HU}H0kSc6rNY$RGM;?LPN77?*gG_V^1V4ED(8XXCO zUNF!()?p^JVJp%iw$YlcYB4z>@ z`D3L;+7p0+G!7&sgquBt#n|BEm|z!_I z8iF|`Q1(D4`N1g-K@!*tz7bP1$z;iK=QQ)!Z+Y0 zel#5(gb3sz!Zwk_Iq|_XC7oZ`(}8r89~9;vEM_1aW`qD%f(!`BiK6$gBq4NNL!iNC zY7Ivv)YfgCtxV5>xaEk1W@SQz*$EbEvSw>?k7~MRY|5rH!DgOt0KTA;+lgb`6;^++ z6rcFrT}r{;@unDv-Uk%GQB}nu1t%al9xA;Qaq1*W1;EA#SRf4EYz9WnVH6br*{C=s zC|2Gqdfuyury*(;s}w@$!B}|?&#$PP0p4zoP?bup!f|JY~f~rHqK>E z7++NeBpfG+1xP^;S5UYiP^(A8tIY3WtM5mtRP1r z8V^CGWimd&8j|7gnBjS@*Q8cYEb>KlPgY`dDj81nAok?{!Gn;2g+37W z=ngXs#{5Io#q1@zupeCkhrOOI@UrvstF(5kv-(mbnKC= zWg9<|={;g>KDuLmbYwl`no39;>|h%_f^5L4BgU5750X)>K3fgpDm{(^9&+0g4Mo8E zE24T-BzR@QRK@^UplzZhm$lMO>HthC6D#?ZAdICk0p(0~T%{%d6B@4Dz4>IY+8=~I z*u~wea@59s^$1wTq;jC#IVccJ!YpF!=f)ic9)<}gg&Z#Z?9O`3Wg_M~0hTuv4u3Z67@5A^4?Z=3W+g2RuEd;2u)cEiNJSpg2vY-Tn#Q0!e0K?s;(TLx{p+ zo@VD}F0ls5%y*ph9OW`XOoIZb1nqqjYy^F?indnn%M3SWM}MZ zXT9-fX#yU3q@KRzXNrtXdM59jjZW@76n`x5JrQr&v7Mhf-;ZX=wa}>d!G(h2C^oce z7$_f&(kO{Cj4NHt{OuMQJd}e@mcyI{0LB*g`Y2UA;IxGQZ@jPt`R*74X0PsT@67&b zMOE0H%ITo0&7P{!-+JsW$uz;9pczwf~@~J`isU`vH+0Y;Z z7mdAypoeYYh!yZi8E=$%+kzrVtj^9pjNw&gYM9A@4(sqBOwTg5!Vs%xCQ?DE0+tc* zsIKlqmFc0E?amJSET#JJC(dwG)o|0ot+E=>ySkaPJ|nht$18rLyB-Co0Zg1x>p?LT zEU>XwZYgf`Mk9zSj;m@aqS{;8Q%!cC@hg1z0+O8Vx7Cl1{z@t2tv6tb|aKu}= zmD?PBZ0=kI#XjWdRB{qy8_TFHqHW{}*KBv(>_xQy>_0kks%|79i3`M0Z2OS<$)xwSUgQ$>PK&6(?eA5V16@i2&P<8^IP_;AA~M9e;y!lCK?2< zU(_?vT5UX|o$E%gE2AzzqozO`bV7G7LWjdR_XRx62OhwKLz~BQqSA;!bU9_TxGA($ z!KU>(U}A|%L@Z1>4M0iPh<&!+h@3QBxdKWP*7bHYZE9|iW{da|FdrNjP7`PgJeEd? zz)w?#y!aOUt}m->i-Xpm{Ypx*4D}Mo;+)z4*pLosQCG$_1og!L^~K1`6z%l!afQIl zG|gRRpo&b>*h`^~ScRdrh+Uco&`J=PRa3;ZC0vLG6HO3WjjJ|=x3u*Mx)H;zDd%vh zI=Tw8-()AeJ|wUcUC3vaO2Q1n>aO3g{J*#J=Oz)okcYMDI&r(lC= zQ;+_{aV8+K^wN$Ru0pAD&h#iwEFn)1*TGa`1ZwYgp=cnItg1|FHpkRlzIxg!$`*##ZJ5B9tDp<~36gM7_b_*0DXkoLq>e8^5>-5H)w(va zi5$`{c!-1ehkFPqy{Lpwc$B#AIB7*@+XT=#1d-+o_devQK6DFzIIO?N^+&6l`*yM9d?wm?PvZ{j`v5UKbJHsr!vYzn1H7t`@K)Ra|uA)4`yV_Z1_@c}IttUmy)93hxPko1f+*9h(E!U)*9h@r&$I_MsQI>|t8M85q zyey@4AVAzgE&aLoY-0ujkQ@0s2Dz&6?V=oAp41bJZL@?VCV2Yo+p9U-AurTBx*_m* zjx7Eld@kW@uj$ToK|?;%&vWHtKCru5p6mJR@m=ox=HcNUUy=DBIG)~pN0D;AL$nEu zmcD=ffJH0B=?`b>b2MPIKItby?yGKY{>tkI0__9EZ4PVC^0-PfFXnj_IySFJ!;157 zkNr^osj;Vb7F6TIzMp<&JwQJnNdH3EPxbG>^>=x1)@$^0|Dhu=>@T{rD>|sG%J(Zo z_+ypzyTbN@wZr)To^#bY2oT3~eSmOH$j7#<&<$-jwXpnM!s@n#AovJIf>R2icC6Bc%>TrNf33G(iu70DwITaHkx=dJ^~`YQ1Lb^7Rxobx@VG z#NsCiMre5Dl6A1v^%Yh)M)F~X#$q?r_Vy%4=^3ZT=iy^cP5Eq;iO; zc#D$zxWo(fS{RF^^)cr~On_N-mIg53L0xTq?J@9%;4wiEaL{1~@OH7WVJ7rF0T3`D zF1g{+HHF$kgUAvy!I8&;0AvFT4+lEM^YCF`zZL)m2>d`$UpfI*5)RgY9yobG z&|xBhh%BW4Ovtujn-B!sx)Jcm@&Gq)deZz02niv{kOC>{ySVVC!+`}8iu{Q&(Z-HJ zKJrvYlF`WlDP^u~=?x~2&5TMXK@;e1SSjsYA2s&e3~I$*W6k$~4q7?sCHPTKU;V;+{beUx zdG2}tClh$nAacfFU`k3;;xj`EZs`WdevMOuC`O{v7 zt)+O%2JUFI!5DzJ*j^9?#1YFC+5=EkQBy}z-35AMrt;8H~XpY!Pll8fYU7B&4Xl9ai!YSp9URsGG zbvp96AcNO9D8z($yaOB!c~I0%9&WhVK>?Op`eA8rcEI07Ti}L@h@9T%X)=1@q0R@Q zws0Ic1$2-HK#tzV0y?Xh!6hFkz*-YlVR2M=UDN&Z;aFqmr9Ru`D?2rnJL03+kqw(u?e)(W=X; z46gDjE4D>xdjYP68k*P}S)iJNW%ji)0ZnLR!IGw(T{MC$*a6U40AEB1MZ6qq<}nKw zIWYoF1dKdd#IZ>sfC>iy%H2)G zQg=;t%25)5*Ipv#M-oxjHgC2nBkacFd>kz@-c3q0XPre*5mf4}bjf&rg5- z?x)Y-`u6Y7fB*jf55NEl5PgKRhWNvPq8v0*S!^T`(@oQE+$~ z1j_(F2*MDGaCrDb%mrPL8EHr_H%%E#<5>7E>G{MP9*iOA>XV)-JTQh)v4H|d2*e-? zQGg|E5G!)h+($2iJyenrFvRrv4@CM+d|HP}&ERB{D+jDSBy0f#u)u@yv|MJWVf z3PeC6k{*5~C-n&oQtmRzN*-m7ob040rB}y8eSk_E-~)m97$$Y}=y4=*jL9N%9?c9W zX4)}OcdjO%^*G5nEsKwS1f{1>3UipmTw4JXlY`5Ap-)sorF&M%p$-knNjQ*Dmk<%9 z2~4RkDh3!sx*;rka6aG7v#S&7^a4M5+O2ePUF!Fwup^a-3>S%i7YS&|;ret8A4<+1!>i zuGu&uE0k!SCceTOrH~?Ww&+G=lp3giqpMfD0pN_GH`K?iQq0PmYWCd>UO?pEoE3ZrIALW(vPaNN+1a_$omvB9OFpj z5*C@GM_Mw!9FYqpce2SvI(RKQ!A)HxjF$%whQS`#N@m>Ajy(2-AvmG131s4uORjak zWW_5fO-W0SVzvg)>=r9u^B7o8D{-G8$#znytQh-8m-TVab55fk61PcH{Ymn2aCk}z zWu`Kh;m47EIiF}y=*le4EnY96%oxqcnXG}PG^bhQYJ$l&OMp>SzH}vK7DrBON^>xm z1kM+TvtB5&6O-0drhjO2%#z8>g);OebCQV%*902>oVq+&yxJk2{+j2EPi)Us>hn@_ z^XDi5ny5DOi#Y(hmc9zAP|q0aRQhuCx>C(hc!g@z>{_U~^5m*;F%eatgD6DGb=zP0 z8q#yMY#H+wn~!oJq^o?KNh5~Ruc;Jo)ZrUUI~u#0=JaScO&b^_2sb4S^?2H58nWlP zwJk}8V%-kkw}~X}b`v|&ycKH4iYh&%`a`LrwM=z%sJ104)g%}Jm^F(I$Y!bnpUGLed*;JI@6yHb?7-g>Qt}#Zjo;F ztZTh-Q{TGRpWgMai@oS!AG_IkUiP!Az2<3OyW3gb_P5Jjw?VBF^+w1sR~V3x9IKAHMM~*8Aft zzk9`BzVjoL{O3#mdCi}`@vCor;bTAhzTZCgb?^P}+dll_mp%E*@A~tjU-jx=zv7l?ssr-2)2b{*(}Vh4gD=yfAVf?8*SCunsksDf0-f-MMjF9?H7CxbJn zbTw#$WEXuoxOzCqgFxqlKZtfaD1@UIghhCBM~H-MM}$kbc}nPnFb9QE2zZT0h3waa zSLlCPsD%N@gr+~ktm6iNQsqbiI<3pnW%}I$cdfk ziJu6Hp(u)@D2a=>h>3WLiHKJJ1aJH48Q>D=#KBWj_nAK^T>|#NRRSpkM3BH`KXWh$d3lFkN*ge{>YC3 z`Hu!!kOY~J2)U37nUA%20oo{$6G@R3X^|IcjfB{ZyoCU(s5o)}k|7C_A29&v$c`t8 zk}0W@E6I{A>5?xAlQAiiGf9&*X_GgJlPPHcwb+f|=#xJQltC$!LrIiHX_QAPl+5@N z6!eiI>69KIj!3sMPFXwu{Q#0KB>*OwlUvD^UFnry36^15lRHU^!m&?hiI!=pmTSqD zZRwV8372sxmvgC>t+ZD&#$N?184srkm-yo755S7Q& z7#?+%7ZEXX000GGnCK{wz3H3337o+xoWn_+#c7&FP%a37ygTnWd?l z7&0`LvYIXvScF*s7Jycg`6{sKG7&?Xq`3iENsGv-p6kh;?dhKH>7KQim%K%v^=Y5? ziJ$q2pX8uV8-M`+LsOolIiB7?ogF!jq)C|o;WCw3042Eq@5qw<=#moJk`x-D>Ijn- zx{?~Ik{qg&82XYPijpFFk|b)78498!>W;KHl~n1XFAAeEDx)(>qcv)yH;SXRLk;{{ zokL@pF0%uaNt)g{j+MEiuwe}`kd-OQ011!)G3lgF3X@R^rA}IlqI;B>+rC92c zTAHO?8m3;_l3@C!Vj7d~C>(v6qiyP@ZwjYz>ZUtdDgK$7*U*{(u%nboq)3+%)!>&G z5Ry#spz#=`hsvdhs;FAJsEf*ujjE`R3aN)Gsgs(hmU^j}TB(-0sgv5Nkou{O8mf-k zq>ieNC?F62a;mDU%Bro}rX5zNvWNg8`5S|}qkSrysp^!U6_QFS0PBdU!78l7O030d ztjCJ1$*Qc&%B2Qy8B;lTg9-qZvWR`jt4~=Y^;Q5M=~^8L1i%Wa!&<7rIJqulI_taZ0EDnU{|v2OiL%^`@&c`VnAuW(SL~39GOR z%didWun!Bd5i7A1OR*ITu@b_HdYZ2r%ds5`qt-C3vcVEI>H*n`bSyy*F)Op9h#?-OpErxMIjgffTMhhKDILID35r&iL9|6{v`34yNvpI=%d}1Fv`-7Q zQ7g6oQ%ki~YqeL4wOOmRTg$awJGDFuwqYx_V@tMWYqn>LwrQ)jYnu&T>$YqQw{a`C zb4#~%Yqx;NK3a9Rd&{?d>$iVvw@HV3fJ?ZAYq*DtxI8Pk|D(5w>$r~#xseOEN!J05 z$Z({Bdy=cUo6EVKOSWmXY*ofr5JX#*<+-Pex~Z$W>Z2Lxz#<$0Utk0rz*SyL6h*+( zxT~wXyUV+EdqQkBN-;4LFVPeg!$=LrVSvP5Ceypk>%7l*L`>%HF#zE-#dvoRV3CK-PcBsCysa<;uo(7oXczwrydCj<@^kplMdExkfxmF80a z{M)`g@V@dZzyr*?X;n%t!zn2>HM`bQ=O$zLbaezQ!4o{cc_lg!H#=eiLDWaV9qhr* zySTGOKLPx~C2Ycc8^ZlV!Y9naEzGuV`?fAD!!u07HEhE-jKevs!#m8wJ?z6j48%b! z#6wKPMQp@JjKoQ-#7oS?P3*)^48>6_#ZyehRcysqjKx{3#aqn9UF^kQ48~zB#$!yz zWo*W0jK*oK#%s*RZS2Nx499US$8$`_b!^9XjK_Jb$9v4jeeB1749I~j$b(GCg>1-& z+`Fl%$cxO#jqJ#e49Sr!$&*aUm2AnEjLDg-$(zi{o$Se<49cM_%A-umjSLb0h>Xf< z+c>Gr%4WODtqjXK8<(dX%e9Q3{B%^<0ASi=%e{;ZxGYP$EDzZb4!&&60P8rSaTqAp zVFxe`A}|8O%nw;G5*;xDe0j`%49uxOG|Nnm^B@2Ou`(P&4I|J%C-DXw5E6Qt&3wGg ziSQc(Ag@{B+XtLrv5^5YIO)&q$rkqG8kt6dj0`_s%^K G0suP!I-~Fa literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/nl/images/insert_anchor_window.gif b/webcit/tiny_mce/themes/advanced/docs/nl/images/insert_anchor_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..17dde58b7de1577b8ad6fe3abad9e84971eada60 GIT binary patch literal 4031 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/nl/images/insert_image_window.gif b/webcit/tiny_mce/themes/advanced/docs/nl/images/insert_image_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..05354a4ef24e945c8c6fd5078eca0a6070be289b GIT binary patch literal 8363 zcmV;cAXMK+Nk%w1VN?Ms0mJ|RfPjGG;^O9`GRn%z>gwp--Q3gD(?mlxm5h@wD~ybc=jZ0w*w@{7XdhrLnTJw6(UkxVgEf90o`fu#yT02M-Si2nw0Q#mC8+0~-Jc2ml)cq5}m+p#cGt z-@4+S-s0us=$Vc|9F!9W2LKKZ0Pqu+@A32X2ltj30488Kfq@i0PvOpD_yx|zt){in|5Dsuxo40t-Ci_Vgg@acxRPp;HMNN zNMOLcxpLLWms=1(y}AVk5>^vkATS7J$|Z&`(0Wn9gYf~HB?xl9*a6Z38Xo&uECG7A z8R|y`D>lG|X%0C>f_@2f)!%;z1n8gtb_>Rrz-bK1cL05-CCFNR=!Mk~bU8h697PU1 zh(H0}Bq&t?10*0s1so!PlY}$_M_9h3d(v?K%7RVe^=QRXzk0!Rdr!IuM=utAbiPDL1Ns%20>YYA-7(2WB;03bnGkyxf7A!mM=J^+9M1#m^tOm^a_XsLwu2v=3BRAB6} z$QsLvjae1o?6b~3)})h9N{|5mw9hVQrIpxW>ns2mc!z9d0|4Z$vvJ~jsx}3vhHgaP zUYpQ9WxD#f%Me zt-=2$Y$?9_=K6q|5Ml6aHP0^0@CEG(Iw$}IT)=Ww4^*&#ycyTKa>@yK#qP)XYSXZz z=N4`B(MKQPK$l@Q?R3)`O^h_Ok1=P#)mSrU?YY`g2f^16RM)My6BJ8gO9fQG$^=D6 zCG(6hw;Ol5&Mu(ujCoCLw_YamYd5<9=Xx!}BRYKT-yJJFI5GqeE_1sM#5}mjF`wp; z-XSAgz}|WFJ$MBVm>eztt^qrHvE>epcoFC+1~nqymkV6D;DJ8Nd4PmBKK1Urdwak& z1~?ml@WYentO3zT&HI#BN8o$}S3h~~1=WEKc6BU!yFn`?LNdHB2V=|Pe*i2N?cDH+ zTtQU9Kg%(+{KhGI;0rTucmWU{Ose9t>%RE|tD{)WOeZf7K`VdXO4$2&cD&FzYcTMe z+`wRhEr{@oX1HP>w(KW3yRl6b0Nh~Vh}OFjPVE8?AWa9V&;b-VAbZ|Q*0BH}o##F8 zI@yt71pq)L>sjwg0MOwH0z&}~h@c$-IK*dU=oJGTD_;v>Q4r4{l{3KO5Ry8Bu`;DL zl~BZ3gelj9jP=F;3LwK+FWKTvOeDiHp0NUH1Y;GkIDtbX00CG;fJ%~J#x;)7jGF1< z4ijLkl9BNO$RZU6Dv&P+?C?Cs;$ty_=oLcdagSTXBN++l6-NT{GhZ^JCgZ5XQkwFV zro2mIn&5#}y0Vo`2!I0mg34qmpoS4R%=56bL|gXIhhMu=FOgL)(s1An93VlsbZDn! z!9 zX}L&}vl`<(%{DFBnkbra1Lq{?9NB3MO_J&}anj^GuNlr6T9Q-%&89x1m`*sZvz8dm zXd+R_M;$Kz<%Lt!A!TF;63FBdG0>Ahma}Z0XVB!(~1BA{7@col`CabF%UJa317IQb1cGs>9e2}!T=^LP3S@!`p}3@w4xWy=tei$Rgs(j z2L*yG=@=Iz0|c1I5P+O%xURV%ldiOsMeS%XKWJn`u$wXRRkI))qXIE522PAIfFK8e z)@r_W0z~lYDfhb6UyhS806+w|edE_ZMz#oK&4Ck48pzF7hMG?`0baLS%E|`zmZLIF z5zOc`7x;iNUJ@t*d_Z!iQGf{0%@}LL`cMveK(!rGfDbq%M0Yge2P8@u`^1>u_U>8g zjF_Nme;`2)_&^10atw8!o8j%=cYVmYfQL`h;rAZ+zcFHMa$msQ>{d5Lh~2IO7||ve zuz0#f;E-8{`_%*>XTn3ya)IYt+e&^AtJNKq3W?it#@GM{MAY*N3|%Tk|9J)f2yp6V zRJ+&4&}ZmA5P(yE+u%fix-m|j@{8=60JLWMF}|IFqf_J6Rfp%e&7SnAa~;O!K|t1l z4nVfQx{@F0rUJlTGrPAs>c>#}j1F)LqHA61DaZMd&9mzn$=%*lSNg#Nm9LCF$N`l< z!R3|C>Uzss^0;>V2UIjwH7@EXl=IxjQ%tymrCXbBPY^-K-RP0eCVYD;~CZ3 z-IKpS?&WlAj5H$|r}@C}6F%+}{G3$RQhvH=&wPD-K=g_?GTs32Z6oR&_?09T;B6&- zz!Uq`r`q-Hg5x7^Y?%M!zOw6cWwd* ze%>^G#8wRXk|3&KEATgd5{PVoCw~N3f$kS5*;izIH-0JieFk_8UIz?CQi4M=X|Kk3 z%f^0M2W#(l5gccFa|dho$AKTfc*ZaUUMB)>gMue$43j2nKJZZYXon&&C@}FL8?c9U2!l8{fsvONh zjv_#hAY^?a@QyfE3FAF9xMKq8V+(nXi3W?VSY;47jXE|y4tbGTW-0-3k5#6T zr-hLq8ImG7k|bG@CV7%5nUX5Gk}TPhF8Pu$8Iv+OlQdbAHffUOlao5RlRVjzKKYYC z8I(dfltfvSMtPJ-nUq0!lQ9MWuk@5q8I@8wl~h@kR(X~GSecbtxs_bml~_q^Oi2Vz z>6K(zmS%aDXqlF3Ih9};mhiWha2c0!IhS;qm2Ej>1%LtSm;uz#7Ch#cFt#)lka%`B zmUVfUh?$s*sg-vrWKr>pEJu$l!ei|cV=+N7cxIT3xtW~VnRMBhLDnYn$8B{46UQ)V z)^rmhkebz2nR%BN{^EKoQ*N(G7%7JV@@Hn6>6yIQo4(1IMK(+JR&P}&0-)0v2e1H4 zrvwLJ0Lw`M%~_cS&~BHxYsbj}2Y>+?upZa+NU0hr!T3Lf;y;#TBwG4sE8_*Zn>z8+Nh5DsE`_|k~*oBTB(+LshFCn zn!2f+`eupxsh}FFqB^Qa$*6qlr>IJvfa;R}r<$s++MBD|lCAoxw7QwGT4S`e3O)vy zGB%hZPy)S5m~J+!wOXu)d8=oNbjZ+S?I~lJseB0+W6$cT##*hOiL5dPb|QeAtLYHc zMgVw`a5wWzrulIU^AZc-dM~k`A}|4wBb#NlZ-!E(W4od}zq+nIXaNs(N3ulc&MWVx>}26iV9B8&u| z{V*5+P-_@aiZmKT>gSphYHuYVoB7#)@_>XfL1r4uu{sN!L#D0XHV-cI8T(dnq(uZP z+nz2fcjfa|=QgwOhoSe0vpYMrKT2f(K1%^gnjYr1qL}uIgE46;aiK`tuyV&D716X7 zO0zclPdOT`UzW2}8@F$2wWtG@OlnP;GI>`dwk=Dx%Z7weO0!ccq*iLLa(lR4>9IK$ zrbkq7L_h$Jn_~gNV`!S9V+OZ~d$@`lWeqVgJSL}QhPjy=x0@SfYO0WDCc2|LwWUjv zr24wB8@sZrl$~0;wtKs{o4dNZyS&@GzWckt8@$3hyu>?Z@Nm4yo4m@qyv*CY&ilO3 z8@hS_>b>Vk z0S=d=G?jSz=9j*jqZ}EK!rEv5?dwXLqW~QMOI+y_UWven`M!1#zaY7tM1V4K=bDxI ztOen$7`tZy>;ZN{S_j|(L&ud(;guu2zzqPu>Wh&O?1M1ldU(S!yT&jdu&%RduJAe| zA6J|7nwxGGz}xwh+;#yTkQWmG!tr_m4d4Oes-#2gt*u1FMjRFcu*4XUm<-$j6!-vb z;J_-Zeg_9LG2FLk>z>z{oijSI+R2?a`<-yM!Gv*ItrWtoQ~@5)0SV9ntET`BAShKg z03ING9ze%-T)={S$E!C1m9ZXwT*W5*2IJ=jTzru${KXY4#!0)ff%~-ld9!o2!3|Io zFag2|;7YSp4BIfu9$;brHPK2VT*?XK0j_+?t+dJ>P{N0K#cdFEZxG22S)4u?IbpnR z!A!;%n#uc_p>(#vuG9d8B*%j>01YrPSlddfi~y`W5bF`ms*ugnjLN}v%~pKEaG=Gz zoWdB%omi_4UuVf=i^)z~qbkC-I@-n`>`EpO$6vwBtu&z?z|69o%50MWNt~Vh?9T;# zEz|4)?K04ee9Pio2fXZ%oqI=PObjD3%oFO)Y5TN;Tcuvy!}Z)sDbjBnz{3e?O?}h<4Q$RZ*}0LMW1ySNAuYE}K$JNxlSGYUJl)A%9k&folwrNTTXscW z_1175*Ky6(UFKABeb;!M*QG?)eBIZ6{nvmU*n&OSgk9K%eb|Vd*owW_jGdBsxtG+? zWBRtgNwxsd`oE1WXOHQJ^hlX4o54etO+(4T@iHbqKb$Z;$%`AN$PI(G2a_~%=Zc5U?jNf=*7Ej z;T(?4L{{Jj-m$qmqAXXU3F?FIy=z*lqDv>nM;p(-v*Ih7-!P`(+)V^B&Z1ijMmPG4 z^9*DlPTnGpyF%K3MB3mf-mWQ~au#jO#1Sp&<3y0#Dq6QvPEJd@9`YXBP%F~K@xlx<_Yx?_Af-Z2&c zQ$c0_nBEsvQRqXCyDvcv{sv>yD(j>UreChrovmXeE@hOy0j`I&!iwpgnj(*QYXXC= z@;9$06WclL+OFx^|5n?iS;MS7V^&_TO(yI#rtO=`pUd_c3!5T2s>b*^-3pMf*Ik*{ z9b>gtb>6_96U*G@NCXaGaBQ6Ik-qKu-tFe7q+^?R0`BDgU77xEX%|ooLSUj%>&uo_ z>qy4!G6wOPY99J#8crm}FWa3?ZsGMAwB9=y$}l1Ajp7U*WA_ea#*JesZ@WVWnf0*I zQQG59p5v97<1kjVSex)CesD=%h4)zRzv{M_y8Ue?EGk7tYCWn$mA{vtDDa8DqQNW0)V<#6AKEL+veR+b=N~wOzyJhHp^H?6p7J zvF32Ic>qe`dUj6Rs;Tbb`t92)+%}f_fbH$K2kz%?C-D((pmVY)vYttV#?z^86emnUneGxAZn7i-K%ax3-+%jl*v#+m?v0?$nz9JLvYTA)_%Go9`V9if zH&){3Aca{b!G|RXa!l%{B)~Af2>%0vAAqN5JR*}GfUxO&LZi|twQ9X$vrxr@Gb%g` zr4eHD35dqGgo1L&r~v@f=(4fJ=f02qM=^bWH>9No=ARVI8a??dM}NJi;t6+M-3#Tzp0X$p|O9c92_Lf_A)`H@50NSB+O#~ zazFuz2lSfR*pTW^zzOpbU`Y6HU>$-V766LU?Hi^|=01W9DY8ld7gs9(KndUlinCnK zepDlI%Vd-SD@hgLF~HiDjT|+N3@UUe(UIz~0Wk*e6Pg`ZeEvM*u_)E5R$@ta)=}1vCpdb+VE|z?4%tqrR+^3{oM53RH4ZC^hZMI7XDp zxgnjT0yO?TNI=LMM&TdQMT%!)ck&;;FFdf5&LZ;OzZE!87m#^ta&EtauYEbe4h*RX zB&gs<%mW>^zKB3SfPj^{DYn1-i5e&5bxp#U*7E0LX(w^kAUI2Q#Fwia`g+Lr;mX zJXD%Y?X;rYLooUS&ksG{O3 z(osWY8P%=10&9*|MD_a9ufZZaSg{-(o2+09Y!d`&QUtL7WdI1!r0l0gH0$hNJ7qg- zY_es8+QffdN?L05+5eye+5(8}>(&CZJFV3og`n%o;lIfWf$c4V+2A9N*>fq%jt9 zNFo<3vZN!BT)gsM-~r7R%!LgjLNO-uF@Z8?$O?@O)7)T<#Up4lwAEO>``<(vOTYty`s`flPs|2H>!jap zI_e{2mjk>LB(Oj#xTj-a?Myru9Rbi8SKYq$>g!y*(J@DzzP{m(op#7K$4SuFj}Ch% zrq4r9EOaJNfPw>{^TPoP$Wns%0OlgLPOabmhC57P!70he4khbE%fv#!0-kOJ zM4}P^CeXk$onQ|w%tIlfgd`DIX@iu45*wr>h&|XLhXK@B_D0 zFcC&_DAT6C_b8@`=}k`RU=_axBRk=#X|L-4i2#deL@gk(i$h3<4;qMo;1~x0Y~%+% zyws?A6e4UoJQNr2h^g#oN{>U_mKo1D3IYsk3W$7ysaDklT2Wz)BZ$?hAgP5CDxr{u z)Xc6%fyo?gGFgfAWEn$QxlbZNlcuBsw1n_E(*)sKZ(~_0S4j?Vxn_0FDc1<@RTxzE z$(G}ISMcUlFJE3DU&+Z&zY_2-iv*08L=@&Y5ayZlF>C@3`=0?Mc7}@eEMwE8<|t$a zkC3e(9VE*j4Qzk|l#M`TzpN!WLt#!q5W)mDi&4&^aUh;eLYI5NUeM|}ilTksXoX0| zGQ{{aYDf(mRWqp7vSyHfaLrx|0b8X1Br=b(Sp;nq9U9w8;I=7PGNE&;+eqz}H(qMt zi7izd;6f3)nc_63I^8Kxd+O7l0yU^Y9V$^PM9`xmHK}X)sZyKj)bDr#m;#)tDh(;s zsS+}(Slz0Yn99|!5=^UL9V;k#dR4MAORP#D03*5eguO4z#QRXXTb! zlTZN{DZs6^@+!d|umB@KBm;klN(U0K)v6A`8yi4?2Lu$I225ZBMR0&-xl;rfM4|}H z8Hfi!JAukB?*eo+VNaI@kpmRrjn4doyc&=T2OMAkru9H$J$1Kk zVX_{e0Dyk0fSnYf1q}!v8aOcjT?#bd0P!<`2a;{0jbH&+l;p&Y6T)+dj;H_hq z`+yxB00YdOfC12hUG4Vv0uJzP0`42$=8~7Smy|4J7wdruoHl$0fUN@3>j4BT00$f5 ztb-AN0SV8*0R~2Jd0XoZ3+wf?y@{s3x!g;F6C5Jbo|+eoVdrP~gTLHftuPiyX&}*uX!QGLVtn0fRW$$U#=}jGsba z5*LBPhoEaI=*p-L9DuG32ygh@fB`hCnayE7ZI^S}s{$dm0#RPIX zxtvMl9swP*jWM0QWQ0NgU1AXQ2<&b?>H$gjkkL!tX|Dpj1OP<&qG>kprCr2^-ez~d zm~Mln>kJmIHej_z;D8a-oaR~M2(m^zYXc~d30ivt*j*)|V3DAX{f^Va#Re;6_c|e2 zC!5L3{%W(IYHe#X_1fA_YEirG?QerS+~OWLxyxRvay+wJamCuRZio;SVg zZSQ;IJKy@=H^2Ms?|%b4-~t~w!3%EigCjiQ|E??t8t(9iLp|z_J+p`2MssC11OO9`KX=? zGJwe3Yj6A8<6i8gclhb&3xkILM&+74Enp#;|UMf5B z@#9An3bnJd6BHEi>Q!UusiV)z%5XRwB`2Fd9k`wlm7JWctE1C>$144CnyZWR($W%} zJ+@X+!eX(CiV8U#&g$yw#>R#~AlTUWs<9&s{Es95)Bl=)h=6lQlv14UORWjuwTB$} z5FR*#tyzznfl_c>4-H*m`DBsK0MjB?dALorOD((VUjJHT2ZzS4Xv>L1eSG#NsC8ze zIqFL7?G^YRM{i;7E1Q-w(Z zLQqAhD2e>EmiDr)zM=6|Q_eFL(Tj35X;29<01%UaW_OB7OEY`2AWD)F5|T=g<}~H; zDHJ#k&U~ILCL>kS_YF$Q$Vm3@%iJd>CMhMgF7_=0whB80n>xlX`$9CNPGiaj8+VU0276IG7N5ag0J;O*w;h8cs8HsXOQ$)j4oWS%Q-PK z0yhGj25+2=N1SnSO4zUcsO-v_59M~v`d5S8Soh-sCmXa3`FfrAVrLltt+)4b4AU5~ zwmL+3cpWdqDpS+JpsGvc`4z>3ff7cp_&Wpn(PAd%7ew4;F+K{~C3Ik0qFIy;SHt<2 zPuy+tR1T^XlGrwR?siPe3jP*2jDG?MY=sbT3t*NabR1!ENwqWZ}wT35{n9k>9KHCG4@c+ zOax*@JA1-JLc69kx0fZzUJqGjB&NLAU6zpassNkr>Y3`??OwSfeE|`zBTo#W-nkuh z=xx(E5xG(*Lu6uT?6$!Ovn4i0@*!5I`Hmy+a2@QFik1jBGp*E)A*TZ%idy zWL_XV0S2Z@hqN6_>o`-qDb%Ttsbju~FvNMJqKj>Wk1qWVy{2-4cm2B3{oNBMR4L>UAAE5Bfga67vhw87e+|y{ z9j^R6DIC$^YA2ZeVknK9gZjehz0wKhMlADR1*b*_Wde`0%?>n#kEF=y*D! z^l~Vud^2BU+q9wM)1^cE%QBWogH>ngQ{n>RsY4-$+garOx?X!h5mblF^>$ z0U1V?;7FYf$dAXl8DQulW-JG&crkG1RO~7HH1N(WPT3dGB`{n*Uo49w=QoO-`IB7%=PWNewZGww93}K>SGEx z=oI@M>Oo#h>>GJ*`lG@wg?htCoeX7IP@M*;j!k`|HIcFgmC{pG;g6#{?A)pUpJgewmh1 z<$1_0qzR0sIjPEJg0 zziJ)~3`}H9PVa6vF(hk35^bkum3}t&T&@Yt?w?vT{Yht~)P%pV{k-Dxvqiujthv|J z|M_d=&sL6PEwOSUt+6F=MegSF8=`)B^{{_Fsx zXgIM;9EdWXA%2AxCqKXuJ}gqg||;+JDj4=q@@p=|Eq zH+HYNoIzSdKN*a|DGGE+khAI@kR$Ps*VUVuT4@WyItJ$Z;OC;8qQFd<3!o7s-=Y`THw6Ab4&&RI3&9x@f2i!eDJ}vjnL*4OoS@@A@aE(47*{(-Ghy|mU!h^ zS?}tS{zb~`>xiyLB8pa~{d_Yq1H<5pXRO^B2ifx5-lG?ijHIynX!wGlg{bY3^~}Lz6sqyfzcmOIfjB%^g)V-F|USzhb&h ziMeEreDdSQ@tMM3Ld)7+$xmMeR+>zhJD%<&J(c6`g~da5vJNKSf(8HD*fui=+9W^o z88z9{#sq=wW1%V`>ig#mL$pO(t6jf^?l+sBLkE}3qL=p?wDnH>)vuJ7!a<1~GfCsU zIX@cK_OhaS<3{-D9&5q+U(A-0r@!^ixsn}Dn@pUQpDz_8?rY?8nH=jeZ0|Mn)?SOx z_F8I@Js(eRrtf*Z!1I39TJZaBc8t1htPG@TbSl)Ti3orp%7EGL;HC~MaWA#FLPJb= zmfAlTg5@Etd75W{*Ge1ri*}2D9Bkjq{*1!julv*#J$++%4#1-6y`AVg`8Vn7&P%^D zhc1NMURJ(7@dy_~8}`$GiB|h7@p}BOKIl-JH+I$b;cA5i4C1NV9r5W5MfRx2hYs|Q zHy=(f3@KZki*x>dA^Rn5ux8cW7QID&@qIk6Xt7@C!Taf8RUH3{s=d$eUGLx)`kTOz z^}M1Fs3l+-W%t**Fop>&YX7x%^w+}CTLy*N5ILN%-~#UA7Y`4J74D4@OcZbx!aR^5 z#&jFuq=~LF+!zJ6>&&6ZZY|VEcC5NFMsEKN4W~G5Y@AL`oL+O>5q8`^{5S)J_~XX$ zhEDM(vGK+^@uvJZNmjf$KOU)&aNanHBV_zNB`3GDAFR z{uxQTo0Mw>$O7Kg{F~xkzG~_xp$stbi~lhDVJ9QGGbd%DIR%qInn95>6@rM(D86Q{Xur1MEKEK=xguX*;(MFoGZZ&>R!m>SXTt3s-1L|TAx z>U5@zMVd@MU+SOIq=BBKzdd0q3jV8nP?6#O$stXA=dt=S9y;z8`VzKc`G|kq-*;cq zA3j-*uKaS*>&|mkwnF;Jh$mPlbSu*H&%$HlohQa7>Dt^UNaqYS-3%?O3`=^(1~Ef} zpJ1n$X>XEw!#UG2B0+FEC)0(V={lZ?-pRx$X1SYWc{*o#M`Za@viz2Vv&XW6cCtbg zvqMd?!=1D5MPy?s*^%_@DCg{>>};H3PMk?jf^!bRI$O3mZi|sYwkEmI^kO1_6cb8H zj);g1C4)k_*CTw76`y8})=2}IvN#rsINX?HZ$*S6fjex_iw#1NcyZ2SS`xk{2`^rZ zZ(0T^nj~y^BArgmcNQz8G7d`H;n_)e zIa+~Zxxb5V0fMEW2v{O-C(i2Ti?b-%Cg^@ERZX1DVGVzu$5$0+L$@g2bsz72IhVY2 zPFf%^N&a&uS&Ip4(JAW0=b{s2IwQPDA^u`45Rs-P!vTjCiaVE4pLA0cT$0!51>$xf z1h7QpmgqN?AT|n=TuKH)O7KnQzSqEiT6D(f1^6YvXaZprS%Q%Pl{hFVc$wU8iIQpQ z0McP+{Ha>xF|A0#n{m+OkX3+P{=AVtzs{#IOIQp8>=+Vry25VeCU*_XD7Ju`5-C1< zMN7WV6R+8GEu;IEZ^B$k40lnX?%+v6gt$6r3zv=50}j{}sI(M(QY??B79i5d_SkaC zW968H^7!EwF-ib0=>-&7Ar6=QR8fv7*3t5F$W@ZXY$4EFx=(i{Q%!XQhF?Hcb$~~q zMk;}lM8Y+_XC`B!j?f~vO*OooOc!vh1@suul^+QKWHwR{Y9!0jTzCHSw@-MuIhsC3CEhop%9u#l>kSyRS&IW4elgBPG|$Z%zXI= z5VbPzC^3?te1E*v<9{fRwsFMK7949Cbz>8?*(Axa-fyUJYz9*^=T|=IOk2`RTWP5` z=G82^)Q7oONIsy^ts87gYS9)BXki%}Wx&2XQj!4(?)lZ5@jykmnhdS*+OHa^$--dx zOX**QGKU|xFUm9?@;~X}J95qc0PU6V#!GGax_< zGHF^W#RA3B^29^xSCv4M2Tu?C)sRSfDbR*g<%*2fW(2GG;R4Nm6 z2vUEueI>n|M=j$uZ;(#VbphE8I<3D2<6r4+E4E)5t=9|l5SNXJwefckMSTO`+FF}k ztkaxqyI0wCw4!aWIN6Y1tj|MfHNsGJrSDiUy2*iv$BnlvYI07ul3FTEUD}r>YtR{u zvy&Qs{9uM-x(IkjCB2|$!_Ir?^K_u+NS@Zzj4J#tAHpZ4EI z>or0##?kez3%<3IVouJhPfFNp7GzfOX8hM1s{q2eBX60MxTWx`b}H}e&EDN`eHXKp z?U?`0rR|;T)Vu1sEQ|`%-Hhq!%Jhz6`sOqJ+L!@T%%DqI|0;HenstY}c3)D!TjzH_ z;%2CqXGH$)zSGmK$nD0t_F!~+J~cw@>XEU;9uBI9pwerii|&S2De=hrchG4^dh-MD zj{@9eaK!rZle@jJ-@RebT(lr>s<&z?Wl^^8KkvFa!g)`ZsxUuvTy;qL%#e)Rkeup}cwnX%W$1=ATHs28q;#KD9PaxuRAx0C zqL6|3^F(JbPWum0|Dmh-@`IeNlw;L#HoBh56M3x^e0>Gsl$)#hxOd|1kIE@{gDuqJ z_#52;hPT4VTU5rCmj8O0KfL zR<>+gdI|ceux;3p+mIe9%u1qaT}Y`QsY@KDMz>T@^~&RqkA+0xU)?OMTCRv)3GUfA zBWmaW|7(%gtE{vszi#}gOKWsHw-G!|yT4M~X;xP9XYbR??O&rt9I>$ah!XOddWnr1 zKB?xv9vbB)K3CN>{|udC+vu3LA3eYKpi2YebFIUPDVx{{O7%otg4N6L&)2auPs?`5K+P6Bk>5W$s+=dR(oped`i9d;=VyTY=XLU)SNyzo zUKwLzh4WP(eN@%*c1jnypN<~sa><#zD)CGXUg$)ebuORnkeziV7W0$|$IW~6&Y%sy zevBQM(xA+}emA5l*=>QylrNaKX`jC|J%8ozyd7e}-hAN(dciSz!KrY;rG3G5dI9}+ z0fSg{H(&HbFM3BW`W7zwwJ!!tF9!Wx3_&b~nlFW;m+nO`Vc#!0)GtL%FGc@d!XdbE z=G+7{mk`Y*7II1LT=F#c(O+)bG*^LoIRm|%6}_BOxSZR*oIkx>_;V4wN=7J7X&pdA~qv*PTU z%M*x_cukPRfM-$HLNz?!eA1Yk{)P~IQ!iTCTPwb=_C*&}-03B_neDHbYNMdMX`uG~ z_}TBf<{JgwrkZf*Vj{nOLawzjm~+}lu3 zPr$&xGcz)yqN2iFLIVQ>_MVlHCnM+Q=HYv7*Vos8Lq6c(-_X#{n3$Kbv9S2wZ5bIE z?Ck9D@bIdts_^jcA^8LV00000EC2ui06+oc000I5;3p2(f}Ciou59bRa4gSsZQppV z?|k1bmx1UbAt4qNiNwHcI-k&}bV{vSuh^`1%k6r<;IP=Kq?m$50kXqxyWjA*d`_?1 z@A$la&+q&HfPsQ`W&$J&32Yo31WJyNkdcy;l$Dm3n3>qn8Cxv$Cv^b00jjA7y`Js7T1#5odW}; z-rC}wjX)fe01OHR7#IZ#3;>qt3e?c>@|7Oc9t#T|&^%mfu)q<9f(tN=lXT!gK}Zdd zNjNAA!v;^rNCCLGu;V2T7m^h5MslNq1{W;0S`Q58uKQM!T<~ml1iOQwJHgRJnMO5fWfL)m=?b(Eg+WaMxFu;m0io$ zEIbBqJ6&53oW-#4)6SXc zYPAmF`jnXe3?zi70B-fD#{hr#r1th#SauWvn;YgB=E=Hha zalS1XfdV!H=Rk5)2H*g2HUdCUS{HPAL0Styhonu$xHRKNWDb~)P3chZWsT|_u%-nY z`J+G02W|?z=edOxlu|Ks3Sn45Ae87qy=<3=C8m8E8{vD+)BZ* z$R?X;1|WLQwF~5mKn4%6x{W;e8z`yUbl(gW zTpKXGUe0kR(2`s?i)!`%=%kl!dgwqMpz)XqfLq_`Iag4e&k#W1GjkPKT|sh3ADvw8 zOB1B}H;yoPK$xYA+LGB_r`v$li)Ng&^Fpg5_uHPgopa-ZKk&5Zdi#w5&Ipuy^Vf)o z-gTaRBR;Bz+hbq7G@3=e!3B78Pkq;eclbcnaMPZ8RChJ)!R~+v&<1X`kz+Z^ zO}8o*1)8F)8-B@D6xG-A3kV8vvmt0nizBPgGkwFmezS1h#8eZmMzEGq0oSwmJTqd3bB z!mvX4;nRJx)-S34A9M-E>y#}(%C_UF4S9w1lQC$*pOB3F)a~g zD6)WWYe0q zssI59Av-M4)0_Si2sf+FzlzG#raJYhP>pI)eUi1qNcE~%&8k+n%GItm^;oRiXj8pJ zRxjZx8o-$btIEpOvqobYr@9GS$(n!*WFP~AIsyLX%GbX7^{;>pEMJ3h48a=qu!v2p zVi(I;ze1FBD~usyoidWi1eUTeaT8!EppqGBwy~fMt!PI}+R~c#w4jxlYPm$6)w-6o ziFvJS57Q;t+V-}%&8=>C%iG@i_P4+du5gD-+~OMdxX4Yea+k~8<|-Ee(2cHir%T=H zTKBsD*v+nXx69q`diT5F4X=2|OWyLDSG+?=uX@+Z-uAlpz3`2%eCJEw`r7xt_|30= z_sie@`uD#84zPd+OyB|=_`nEGu!0xN;08PR!4QtHgeOel3S0QX7|yVUH_YJt^oBUs52w7MSt}xVeD=V+sTKwK9OkoL+cPdC4knGMF(H z6%L$$#}y`X3g7&J1RTN3PQI_4`@824G#LSCPIIofd;t-_B>{ED<$**HjI{wey`F3T z@}d(h=?oZ}E5j%N3f1dN5EXy`A2@V6)bRlo$pru(xX{`baA~MWYSZ8;hMFmTA4`Y2 zY?R`(_Xq%wH8(j!XLeMsaS3b@See&c=_Oo(qG($STLFRAaFcua=nq(#1NM=ImGkrf z`k{IV*zR^ODG+XLd(Yaw6sE1y>&s&JvH|FhqbW-r7hirl%9wgUp?|6F4-lZq55Oe= z$~|s$r(4%Mybq|=A&h_r>C12>x8^6UDsd|J%C9FD&UO55dY_=lDxN zj-T|#{g=??c&Fq2fvizn>Q`161NiRqA&@P{+#G!09jvp1J2j|=~3_G zUb5QC35YUuxw518%zg;z5BU1Wr~Y(+Ir+Ue_x;aZc-3RAYSVU1mWF@-+P4mB7Jv0% zf6xbbT;@01(MzCrW#D%rK5>0;M|DdVaMe(MT(N-TH(|3T0j4wnV%AFSh5+GoA`+rr zCU_!%)`A-VX!xgV0EcsYS8|KTanR;XcsFv3XM@zXb|DV;UWu`3@I@i)HHP|i zGw~&d^QAFE0EbzahXtm3e4~ec_=gE5CnE%igjk4%c!-FYh>Ey~jM#{d_=u1giIO;p zlvs(Dc!`*piJG{HoY;w;_=%txilR7*q*#ikc#5c~h#s(ttk{bGuK0?u7>lwvi?mpa zws?!Un2Wl&i@ey2zW9s4=!y&$jKo-s#(0d#n2gG}jL0~QLndFV2#wDeU(xtp)o6{= z2w&IOUfYO``PGf<1&-<^j@+1y;b@NOMUEn%j-`f<zNs zkL$>f_PCGm=#TF>1o2QG|LBbYnO^s!8U5&9?D&uZ*^UV*jm|ic07;PunUNRikP%sr z11SOnQ!NL{k@U5VCNYxdsF5j&k<{3c5$Rvz_%!<1lI=wTA}5h5$zI^tDJwYyJc*JY zpdAdrh7BnKjZl*O7>^!VltYjKIaZV$U}Qk~6fPHyQK=aJ>xPr?=O_Ijj~2O+3D%7p z;U9&@lsUO&_wj97`H>{4UcJ(j#}{>GiERro4Kq1v-!?Ee*^@4kZr`Sq(@01l$8l74 zje5tF>)@5?Wf5jrjq8vZia7*p;t-JumS;(i*~ljzfI_qclx!&ipK)fMIg=WxF~_hW zk=Z3jfj@J3WdtCB2bnogc6@57lhYUvB5-nMX`3RT9d|?kwebkM`2o7AmD*96OQ)9A zs2y|(lrqHYgJ2 z6*85d=GmYG+IMmZlm%d*OIeL@G%$UKY8GIIAJB3mX$)Cup0o0g3Ge{KCw!734Q+#> zHaMXNN~1N3oII#_H@c$$c8!pkoeuhB+@x0BS)|zcmIRuiMmm$11Ar1B3>|oK462nE zAWUUrmckH*(O5oq_oC8pW!pF~PidoMTBaLnj>4ohk@+FgRi49XUSjI;E1G=i6L!4u7L@& zYC4i60;BA(qyl!0|8|{qYL0voq^O#ze2Ss}7kZ}Zm3|UXN>A3F_Y-PEMvm=ip2E1CG^&}ECVbcu>+*BB_mr+DDl0P9wb0w5_DAOXSY2uwL?#EPk9ik$=? zp>LY1aB7ZYc_O?jmO6@(=bEjNnGP$OpVjz%iJ1<=8Bp|T2+C@f>1T#e3U8)ngV(qb zmiLr^>65smckQB;he@W!3Zw)ZvlL2T;;1?V$^huNoD=tv2SOyuO0Lr>o#{0IY{&s) zdb0jnp+@?$GOM&ryRpm~sO9RO1i*#=ABl6-@Uv1Iv`NdgGdr+NtBy?jwNMMRVY#(k z3$|*zwt0%S^@X%v8@K%`w`^Ot|GKO&>9#OSwtA|!PD{3QyS7VdruR6ue|xxP`;z^| zjEvj3j{CTf8@bK6V3J$8mV3FFo4LhUk;fXipxU=z`LuY8xNu98bZfYY8@iqwU}n3z zg6og1i=aZ_3sB3qN%@kftG2ldxOO|Zi|e<%`>&wex%9cB*;Biud%H-9sk?i(y$ifF zi?*GLudvy=1xazkYr4eg9t#`0s#~EJP<4aLw7F`QH^HCRNVG>eoHl`=GKsjO%U@<2 zT^XX7@Zl3?RIh-lUc$-%CJVd&Xp1SWnvJ>En~F-NT>6<*Q<&nOSx!!LJq1SePscw>$AIQ3I|XRBTSvp+oy<@p^v%0J_&Hx zYp`^RlU15ai;_!B*|I1)lX-mC3YUV3sAlON1Pa8*d5{e;N*tVxLi~)B!k@bP zjQ`0J83LT)DVB<}#^6{DH-^0OJH;c3!WpU((DBBWHcH|u!vBbE1t2G<^dVckUe(%- zqk4r0TCdYtAJGuWYYD{vK&c(=Ho%705~4}LiYcrCS8c|s031-S1)&g1XqFOiZqb08 z!ce8P>AQ<8q}L?`9(j!{2V`)zLT33tV>+QJ+K}ZVa>W2955QyHILE_jH^8cn-rSQi zb;C^Qcb__(4v{XTxuV-Cw$B(1qqM1)+RM_QUbwuL9MC8AVaNoWaSr>ydHZCZTF_+S zyk;9t9WtDm5z9knkdUW1qO_J`+MV0+x8ppM)^|L`JdNxE09~oh{!qa<2@M&tCt%B= zXLiqoJEG9W(m;no-G~5`q9u`u$)$9n#=KwN8@%H9HI+QA(by1XNNUlk%5MtCMw-A5 zdLZVkl|)UTtb8K>uKWQeT@Q~Y%Lhp*1#zVvmT856-{oqVjkmT?`;xh?FvT1h8` z=1to(Jz|GSL#Y(Hx2g)wfSsVL6az$Av0d1agJgjTkfhd{BBA~{}`qk6` ze(-T)SiII-wi#(n!r$xD1l-DOTa9RRN}+upc>Q)9H=2B%(j*<3`05{n{EX?saq!B+ z>804wT$vo;O}6&3Cqa96yxGA!(8MdcEWD8*!G@?=+?E}>b@{op9kh&HXGXcuUp=C= zAr19_#*7@lJiXlyT)KOkyufXlPYvGws?|mLIT^BPhTA2aJ>H?}-95dd^ZmTvXpYa< zw#$3E&zQ^q&|0JQ9mQu0-}c?L0UqFtZdtho|C;S^rsk?V}Oh?Ew- z;T+!KkE_<&Sd#Fay)L}0JFVQ|eYgz1;0})9J=&2XKHOS6;tp=RCH}Q59^Nkg;2>^| zF}~b0F5@N+;rgAneazxUzT+o;-|+b3Lr}!dyC6l;o%Z?Tisa}ne|~kNB#kOo|_Ac zlYvg0gU+F8X=quw?`P&+aA4=$^drGR^_!-?PtbZGZbslQI)DD#mei$=&+p=uK|bsKz!N5ZS^zjsM1Dl{%rpj-hXE+Sj?{ z3VLSHRg@I)OQN3V;fI_2RSe(6wJNaE7Z-h_1TlT3htHp z83d2-On!WnGV#5=jv}t^+W{4zmd~Zj0Y)LA*9Z_0+75DQn7@RaZVta6sqZ2?jb7*P z;%KodK8+{8uSbEiQ27pvQrYdv(pfW-J&$uKkCOnG89DazdH%ai*$zyfm=@pU7_T1x z<;n5NE1koR;$KdhEN_+rAXEQIqcXpwIsU|M%#`U+AuW$(B3TdR8>S-puHuSwY)|VE z&t4CYyO1|_7QiWBz3#^SBZO)SSbpOfx%IjV^UuAvx2yo#k*)Wc>!{ZD1gw_nQJ&i< ztc4Q!bl>Rrc=s_L*(>-S%kK9Xsj0s-qY6&k4k{@Uz%k;A`1`H+#Tw66z39`(=?1sz zR649IQSy_Y`?<>K_oa>v;P{X3rjkAQDX#okuJzb7rQOI5Uq8O)c*Jw7fi! zdfHkE*X*|W!w=)*zUv;G-OT^qNlxVXz8ORr{jeXp3{bs=JNxTT;7NbX(;9KR^N+IKu}i=2}R7z}_k)746V0s}`o{%+7GP+FxTv)buS``TVr zTyfYnHkG4ZCkc~Kmn?&U#h8W<2W<2GoXq;|=>)DJ5gK{j3Gx{#q76FQ6+T))CibQI zX-57vf=zhJxny`u+k33l9?)o9<2?c2)u^ z5-JBmpORTJH(SFoVqJ54BCkoSP;6vSs~kKan3D`_Y*0|P60*u)rYVvH=W6j1<5?tdC_MjxuO~az~W{2$<+}D-#=Ex}QoAAQ3pG-h=6M1pbFhGETgK+`>QdmjYKRdO*%wK2Gz^ z6iE^#h(Zf^mF6;Qwz&tK52QK6oNgX*ry$!=aAk1-VGxpy1=KOc0uKz9(u#vJG{d4g zR;U1@7)lChCt9X}>4tua$SH{_SWqH)8SLnyW-v}BodWK~bW~FL5rmw5@whtc47I|V z0aIiqssmBWcS2j;B^)*#eiH=vIQL%P^1u z0pysP9;yLJu+Vz`*vJ5xDX_}~jx)sT?nw2%TLQj&FwyQ!FfgHjKR9Y8zyqv4Hl>44 zBBU^e3{!h;mJ(-5u?pKB@$Cnps#p$3GMrrglVHl_^2%P5c5 z$;>VPar0;_jN8_cq=g2tlS5DDFeOIMP;EsPTbu30o_1Nnm!p1Qa=z!T*QXB>)YeG@ z%vmMU3}3?=EevGqtI^qDOF9zTB(&Yo+hHg1Hh~i0?NNf;k-%VZ804)X3I7CMA>eo? z`Ul~NN9=UdATqrvSy5kr@@hwf+r|S|V?CK~4@BGlN!)Efm&52E1WL*2sl%{(>1n5s zdPA-!F)Ql2rN{*bp98m!bFU9RT!q3PO?-6IrGySqTX!5Joi4oU+Mgq*cbf`|MxO$svk`|GoXzyAJ?J2yc&n|L>ncee0_q z0q=J%`VG*4=4v1O{MWt)0AO+qT;Ts2xIh6G@O=|>AdC>0K?_o_f)4cHUlPbc{{;{e z;?v*>L)bxMz%Yg~oFNTs7>v&G!G=2AArE`#!(QN!g(7re1)m{5^p&s>=c5S|8;C&# zwvdGJYk|Nh^R?CJcpU_jU0f{{K#ApuHJ0K;Zr7rX?-D;5|X9yPN^K&C+g45%3#dO`uE6sZZc zdC^(`mfJtVGm_AT` z-~bpvKw@%$k$7NO8Zm%I`RB@tr_MFs?yJZE#1v=hoqGs%Ep)0^A0K{&Ok zvTmC5j^ylSd=zk!jMYYt>DeR+{AdHCamfb%nvw&FZd9Tk^^!&tBGQI{)TABl1QSNUQHnUF zr3qocO5v#l&Uq`I1p5O&|7C-o#^eI8303q0s)iqwX~bFa2v4DG&;tVej9%Wffnqnu*ea~iv5SZ-1Aw5=#a`4iGdR>MWkeMiaMnwo z%|U3THrfxAHV8fetw6uD*&d)4wvPxc`8>Ofy>el%_xvkQc?*SyTwnuO$~6H7vURNu2(U&;HMnX=rr9!#ya6O%7%)qwFc6#!Wep=^21)X#S3j_2 zwvOb>B`B+xAHd~5td#@`X{&q}GGj?3DJx@UGg+S`ST0OSut&4A*ldvJKD$7mBO$DT z+pt<2^lC6Ag+Zc8uxKFvG`ciVCPAc28k0&-nv}~(DMv>dgpzhTCY(O$A4Xl%kCv1G z5``&gVGEzG!2m_&2=$K`poic-i3?1)^#%rPgI#|B*C@4huzTHOI0#zEZCNO2Yno*E z=)nU??whkS4eb|DIR)32cBV<0Cv<*uB;^eEo4_6AaWB`H<{rsgOAuE!3`?9b8Nh8! zgUm3{JDZ`SM856K?|OsoMS>=-IoL>31yI*?&rz=E7CvpbIlSBTW;kIco^4H^Dtn~S z_*^)S5RdBxtpYq(?vt4gKqr&cb-#g#?{tCQLU6*CY`q`5X!lj$tiNGxU z*Ri_c7A(LnZWp{GD9`l7AO4psYbV|D&NKe> zVTS?+G(v=n($9=l@d{TBRXsttlA37)ZcI0{}psicI|X zq-YshM94E=f{&bIh;DER@s>OBV6RtH?<-ciy={ESS0VOcIme32yHt zjGO5F0TF=zM2+RZ0jyNTAFRU&bK1u)eWgbPSuk<4^fOt>IIoF55Dz#Hr!Vek)OP}Rn4 zAQkPK;XNL_V3z85Q(VOd0I-@ktPup}00l&0u9N^3x`P#7VHNHH7OKmsklX)+A(X5i z6ola!Twil=L`W2qi3mq!jl>1K;bWD697>j3*dZK#+#KRWiy0y4sepHJ*Vzcb0APSN zNdWwrp#lg%Q~?|Sitq+GWyCAyjx4$&EWXJs;$lo36D^Jh+=Um0G1#PWO$Iyw0Av8E9GbR$ zg*L#406-)Bb;2`7V;kv*MpYvvP@@1yqm4n*4S*tHkm4wcq6%E!bFsmY0U824z&;Qk zqqXDUs12gUV^Yi`d(>kZ9sxVL;}?|x1nEye_8;I?*_2%vM+wXW2#mnoV+s6>8a$V~ zxJ#GS)#gYfMOLIl+RoWn|~+I2%!Dt2N;Yx zBxVt8CYq_sXL?9zrUQtOCSqPe`?;NFK~}`6&T~vs6b2j=6ofm>3u)1mJJ6xK<>m(L zCU3ffZ^pv{^yY7-097`oRf?lzmH=dKjB#`lC8%RV)MmhSLUjUKi@1Yz(&l#Fn+jkj zN~B@bg~Aj7T|6YfYH+{-v|$Sf(&YRWd|rVC$fpa?=VaVx>J3Eeg$xF9zy-MfN1gyE zI1Q*~{O2iM!GW%(;{hUEqQnwBpW4M<>yanoZ5;#A(d&sHg`!wRfn2rjSeb?c50z&snn$b1)ydNNI)8y=VO5XAPB~U2x^aF z44gDoRi5sr>Iv%Red>y;9(g{63fSS3U5-DciTvG1{9)ONFp~ex^ zo)Tzb*72vBW)Pc_>4eVSH9;cE{32eV#r&P*xPB)IWZzfjK)SxA)D%Hf3>Kl_q=GeL z&s1ojV(a~AtD8z`x8frma7DX*0K1ZixjL)Catp$`1#u}19$tjMn9!Io^oo~&LF$9P%lz-AY50LZ;s?38AxmuhT|`fE*u z3qY{tN!ARxddttA>%a=_pcSoV49Ys7BoMOE2GFXt+G@VK&%QGMX{c80hCG>O@=Z)g ztXc?c*N!K>c;@wqt!C=u6&wnk($jIVpLNP?)L!hG=4!v5Y2me~)WnC|E<>2a$Jwrc zZHBFQ^=)?A<=|GuLm-=R2rLO03;;6dmF_AEbsdzBsMYpr2?ziH5I})`-|Dy+h)GA)a0$s_*);Z~MCM`@(Ph%J2NrZ~fZu{o-%_>hJ#YZ~yxL@BadD01NN{6L0|=@Bt%m z0xR$WGjIbt@B>3|1WWJ)Q*Z@a@C9RV25ayJb8rWH@CSo%2#fFtlW+-}@Cl=E3aju6 zpKt@X@C(Cm49oBg({K&j@D1Z|4(sp^^KcLQ@DBrV5DW1T6EP4QKnEak5-af%GjS6; z@e@OF6ie|GQ*jkr@fBln7Hjbqb8#1Y@e>n^3AMqEP@fo9W8msXdvvC`{@f4GB z9ACy9({UZ!@g3uF9_#TQ^Kl>h@gD*~mCvqb@@*_iXBunxn zQ*tHy@gk3L6F-MLh{qdy@+X6GD2wtat1%{vu_g=uKnHMC0+4bmyYef;ax9~ z#s(a~LrB0fd-FGgb2y7L9@BCeFR^GOv82EU688xKbii(OfK9}+plpXM+w(o+b3T7@ zIioTXhXw|m2NH+M0KD@7#4`hQz}FzaLbI|yJM=?CG(?xPGq2LBjmrgaz*JN-M%%=C zro%XcbV!TzNI&vK+wmqp83kNMpwQF;Y%~XSGzWZ*y96^y+w@K2G*0t#6;ss|H*`b; zbx;fSDDU)88}(5mbwrzVPBV2=JM~lZ@lr!1^;A=JRgZKzV|7+*^;UCrS9|qWgLPPo R^;na2S)27)FLDR~06Xz*j?Dl7 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/nl/images/insert_table_window.gif b/webcit/tiny_mce/themes/advanced/docs/nl/images/insert_table_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..e65679dde336b2bd9227f37dd9f9f3eb7ca011bc GIT binary patch literal 7337 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 PrZSx=O>3IF5C8x>C=Hx) literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/nl/index.htm b/webcit/tiny_mce/themes/advanced/docs/nl/index.htm new file mode 100644 index 000000000..84fe119d7 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nl/index.htm @@ -0,0 +1,27 @@ + + +Help Index + + + + + + + + + +
    +
    +Klik op de onderwerpen in onderstaande inhoudsopgave voor meer informatie. + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nl/insert_anchor_button.htm b/webcit/tiny_mce/themes/advanced/docs/nl/insert_anchor_button.htm new file mode 100644 index 000000000..4cd1ec8f1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nl/insert_anchor_button.htm @@ -0,0 +1,37 @@ + + +Ankers in de tekst gebruiken + + + + + + + + + +
    +
    +Met de knop 'Invoegen Anker' kunt u in de tekst z.g. HTML-ankers invoegen en +aanpassen. Deze ankers maken het mogelijk snel naar bepaalde tekstfragmenten te springen. +Door het toevoegen van de ankernaam (voorafgegaan door een '#') +aan de link naar een pagina (Zie 'Links en verwijzingen in tekst invoegen') +kan op deze wijze desgewenst direct naar een bepaalde passage in een pagina worden doorgelinkt. +

    +Voor het toevoegen of aanpassen van een anker wordt onderstaand dialoogvenster getoond.
    +
    +
    +
    +Bij het veld 'Anker naam' kan de gewenste naam van het anker worden ingevuld. +Let op: Binnen een complete pagina binnen uw website dient de naam van dit anker uniek zijn.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nl/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/nl/insert_image_button.htm new file mode 100644 index 000000000..264855352 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nl/insert_image_button.htm @@ -0,0 +1,65 @@ + + +Afbeeldingen invoegen + + + + + + + + + + + +
    +
    +Voer simpelweg de URL van de afbeelding en de beschrijving in. +De omschrijvende tekst wordt in sommige browsers bij de muiswijzer getoond +wanneer deze boven de afbeelding wordt stilgehouden. +De knop 'Afbeelding Invoegen' opent onderstaand dialoogvenster.
    +
    +
    +
    +Omschrijving van de velden:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AfbeeldingIn dit veld dient u een complete URL op te geven van de afbeelding.
    BeschrijvingOmschrijvende tekst die in sommige browsers bij de muiswijzer wordt getoond wanneer deze boven de afbeelding wordt stilgehouden.
    UitlijningUit de lijst kan worden gekozen op welke wijze de afbeelding in de tekst wordt ingebed.
    AfmetingenDe breedte en hoogte van de afbeelding in pixels. Laat deze velden leeg als de originele afmetingen gewenst zijn.
    OmrandingDe dikte (in pixels) van de omranding om de afbeelding.
    Verticale margeDe verticale marge (in pixels) gebruikt voor de omloop van teksten om de afbeelding.
    Horizontale margeDe horizontale marge (in pixels) gebruikt voor de omloop van teksten om de afbeelding.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nl/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/nl/insert_link_button.htm new file mode 100644 index 000000000..073dbc51e --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nl/insert_link_button.htm @@ -0,0 +1,35 @@ + + +Links en verwijzingen in tekst invoegen + + + + + + + + + + + +
    +
    +De knop 'Link Invoegen' leidt u naar onderstaand dialoogvenster waarmee u eenvoudig +een Link (Cross-Link) kunt aanbrengen in uw teksten. +

    +
    +
    +Bij 'Link URL' dient de de url van +de link te worden ingevuld (desgewenst voorafgegaan door 'http://' voor een externe +website), bij 'target' kan worden bepaald hoe de link moet openen. +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nl/insert_specchar_button.htm b/webcit/tiny_mce/themes/advanced/docs/nl/insert_specchar_button.htm new file mode 100644 index 000000000..32868ba44 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nl/insert_specchar_button.htm @@ -0,0 +1,32 @@ + + +Bijzondere karakers in de tekst invoegen + + + + + + + + + +
    +
    +Met de knop 'Bijzondere Karakters' kunt u in de tekst bijzondere karakters, die soms +op het toetsenbord lastig te vinden zijn, invoegen. +

    +Voor het invoegen van een deze karakters wordt onderstaand keuzevenster getoond. +Door het eenvoudigweg klikken op het gewenste karakter in het overzicht, wordt het op de huidige positie in de tekst ingevoegd.
    +
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nl/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/nl/insert_table_button.htm new file mode 100644 index 000000000..5e91d9f8f --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nl/insert_table_button.htm @@ -0,0 +1,73 @@ + + +Tabellen invoegen en aanpassen + + + + + + + + + + + +
    +
    +De knop 'Invoegen Tabel' stelt u in staat op de huidige plek een nieuwe tabel +in uw tekst in te voegen en opent onderstaand dialoogvenster.
    +
    +
    +
    +Omschrijving van de velden:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KolommenHet gewenste aantal kolommen in de tabel.
    RijenHet gewenste aantal rijen in de tabel.
    CelvullingDe 'Celvulling' (Cellpadding)
    + De opvulmarge rondom binnen elke cel in de tabel in pixels.
    CelafstandDe 'Celafstand' (Cellspacing)
    + De ruimte tussen de cellen onderling binnen de tabel in pixels.
    PositioneringDe positionering van de tabel in de paragraaf.
    OmrandingDe dikte in pixels van de omranding van de tabel.
    BreedteDe breedte van de tabel (in pixels of percentuele notatie).
    HoogteDe breedte van de tabel (in pixels of percentuele notatie).
    CSS-StijlOptionele stijlkeuze uit de voor de website aangemaakte Cascading Style Sheet (CSS).
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nl/style.css b/webcit/tiny_mce/themes/advanced/docs/nl/style.css new file mode 100644 index 000000000..f36b6297f --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nl/style.css @@ -0,0 +1,28 @@ +/* body { background-color: #FFFFFF; } */ +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/nn/about.htm b/webcit/tiny_mce/themes/advanced/docs/nn/about.htm new file mode 100644 index 000000000..060221887 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nn/about.htm @@ -0,0 +1,32 @@ + + +About TinyMCE + + + + + + + + + + + +
    +
    +TinyMCE er ein liten WYSIWYG-editor for weblesere som +f.eks. MSIE, Mozilla og Firefox og gjer det mulig å redigere +HTML-innhald på eit meir anvendervennlig vis. +Applikasjonen har funksjoner som likner dem man finner i vanlege tekstbehandlere +og burde ikkje vere spesielt vanskelig å benytte.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nn/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/nn/common_buttons.htm new file mode 100644 index 000000000..2907a280a --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nn/common_buttons.htm @@ -0,0 +1,163 @@ + + +Vanlege knapper + + + + + + + + + + + +
    +
    +Nedanfor finner du ein kort beskrivelse av kvar knapp/funksjon.
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Feit tekst.
    Kursiv tekst.
    Understreket tekst.
    Gjennomstreket tekst.
    Rett venstremarg.
    Sentrer.
    Rett høgremarg.
    Rette marger.
    Punktliste.
    Nummerliste
    Reduser innrykk.
    Auk innrykk.
    Angre seinaste endring.
    Gjer om seinaste endring.
    Lage/Redigere lenke, lær meir om denne funksjonen i + kapittelet Lage/Redigere lenke.
    Ta bort lenker frå markerte lenker.
    Lage/Redigere anker, lær meir om denne funksjonen i + kapittelet Lage/Redigere anker.
    Lage/Redigere bilde, lær meir om denne funksjonen i + kapittelet Lage/Redigere bilde.
    Rense/Ordne koden. Denne funksjonen tar bort unødvendig + formatering. Bør anvendes når man f.eks. kopierer tekst + frå Office-program.
    Viser denne hjelp.
    Åpner ein HTML-kodeeditor.
    Lager ein ny tabell (2x2).
    Lager ei rad ovenfor den noverande raden.
    Lager ei rad under den noverande raden.
    Tar bort ei rad.
    Lager ei kolonne før den noverande kolonnen.
    Lager ei kolonne etter den noverande kolonnen.
    Tar bort ei kolonne.
    Lager ei horisontal linje.
    Tar bort formatering frå markert område.
    Lager nedsenket tekst.
    Lager opphøgd tekst.
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nn/images/html_source_window.gif b/webcit/tiny_mce/themes/advanced/docs/nn/images/html_source_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..db933dc9e65c954dcdc97e09048d15d26478e2fe GIT binary patch literal 16012 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 G0suP!I-~Fa literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/nn/images/insert_anchor_window.gif b/webcit/tiny_mce/themes/advanced/docs/nn/images/insert_anchor_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c38437e26bcc84145d6a6e994ff1f0bdbbf0538 GIT binary patch literal 5229 zcmV-z6q4&lNk%w1VM+mu0QUd@L0*|KOp7;EkQ+95BR+o_GgGpJ|G`L}8pVPK<@8(}}CsV}iC} zfwhLH)PA7Og{Rb@#Oq#uvXHagmAK(iZ>L;*v0Z$zUVXA8K!BLLoV za+AZO$L*!b@L+$ln!e_XuGwLLwSlA1Uw*Tiz2!=2p>dJIi>=vUfV3t;f>(B|N@$^H zhq^9Gi5)n4e4We@D{vw`er=Dvh^p6aj=+bh)h$YhXo$LiqR;R+E&r;B1V(Pj04roXaXkh7BidRCB67T$dLzb)3KFAUl0WWuJ|&+C^iX zOlqQdnaEOcsCk;n9XWfIxZ-`E%}Z&baFD?zL4tFX#YbhHR&=X7Sd?vzzb#3KR&}hK zzUP>{tqtP)= zjE=C|YKpyNgts$h|A(p8X^Fdts@8&}(P)Uff1%HhvD`0AicM>zfT7PXONmZwq=tru zGc(Nb@$mp=nVFfHGcz*)0Dz#AO~Amw1Ox;#X3T)*=Ksu@0L=e0GiE?QK!AXN)X>NP z00960|M2kcA^8LV00000EC2ui07?Oi000R80Qm_VNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGZNIt&!5MSAVZ2ANwTELlPFWFT* zm?1#mO^#^6y!c6yAp<5!t~yDOaBPj3bmjsC(3S$#HBgm6fH)#RK%-BoEbS;(p~9Re ze_~Cd1i*=t5lB!Jx`k-duv#WIYyhL>7p^7e)CDrdick$fx-My&1}g+HWM2$5xo}|- zqfn7-+`u6N%akrwS^#0eq#Gws6exuMVKWZg32xYYtTL7+O`agYq;0_i<&>~HcAi0i zkSN!vT@O6a3NvI3;tMG+kb_PeS7akj1Q8IS0t_yw@l7~rte}AgTvXAFElO-tjvRH& zPzp4VIHF1>H1y((0}kk*%raR}k<2VT@X<#RfW#349CVPtLlh+l@q-i$B&p<*Og8D{ zlTbp*k5M`?Wz9NRW|^f^P)S9VRaj}ol~-UXAQo9>p`{jEZowrNU3TH67hiq>CKzFc zA*L8(jzK0FWtL&48E2k>CK_p`p{5#ZuE8c7ZMNa28*jb=CmeCcA*UR3&Os*~b=G00 z9e3V=Cmwm`p{E{u?!hM?efHu1ryqa*0Vp7W1|p~+gAPI{A%zxVs3C_Qf+!-1CZeb! zi!Q<_BaJrVs3VU)0x2YsMj{#Iw%m5>LPenCVRaa%TRaakyHC9rnq8@FUB}yjW_1FV~;-uIb@MXCb^P6XPd2(K1qUml$HK; zAotuIywkzC4W#QOyJ5cnOQyVN*1IOYZtfeWzjOwCC&79i+^52THasZAhEANQ#f)bB zD94h1T&c*Imb@v-o~|6K%cRD9D$T0i+^Wv7_B<=lwho=E(Yz-8E7QV0U98l|R=q6N z&Tbv8*VKl6E!o=Y#1Kx-FNBlX4NcF0+f|MmcL#?YGB*bBgr9ep>n7llyJN;{=Dcaz z%VxfB65vn2a{_GVz=nCWC&GR%9H_&DirAqjrl^ZGN@I|^jYm8evP+RnQzz?`%0Sh! zQNheqGfS1tSe3I^@k~}ftCi4jRWx#Zq*qD)WZrTF+^2tQ5bX7#v-*qN;Pm~nKButQuZm9 ziRxt@!5|wvasrR63TLj`S*(0UtDxPAXbAEMgFND^rGbQnzw=1&ly$XcX$@Lkn-f*uf5a972li_y85J=#jl?k&Ay@ zU*N*{zQW1xaP>>$;_~N@{XOnaaReac>PSG$m$f41xV3FkdUUUAR;{?vyas5 zk+1XMBxfi8!b{#xlULwm3M=Fhrx7b^qNExrWmr5^+Aw*n)M4|G=)8T5#G>GOr9gJc z4~}N^dcI7`E8-!Kdw954(883;y5> zNbVGp0JsqqA)yRNG~y?;$ZtSW9FKg#AIkyB1PzHgCV+$j zAZesO)B}gSW6>L7MC9Vs1lW8jeB^*iB4oG2V4r%k5uJ+9!VcqJYoTln8hQ5JAg;@ z|X8n4 zLxBz_A?YyI(Bf2buSw6(22<|Go{`op(w6mBJmE0W~;gN`9_Zb+i*kLmiOx*u6* zNVe+_lZm8|AQ|s>JTe|eI&!_OdMkb2YlryO^#S!A#C`MYk4^%Mzy9#AKLG3xWQoN8 z!2WQSM-=Q22IJ7dJDl)Aen{bhVAPfc!E7!EV!h2a00Z)PgEzb}k9n}e8}1M-X~(B7 zk7zNqT=B?i{juT}55XgCnXO!E>(d$UCAatMEgQR;V}A_SAI0^DTebP8{h#C&#*C?GZhxB$~(6*&lIJsLH=x6T@Ko#h0d@%*pZJ%FB;OKCGi!>XKB>> zBh&uabf@(ITTsi^A91OzjA`r-#n~9gz|}F2Wi7|1e#X|!^~W7`y$N0y+1E$^wyr;X zBWz7**Q?6$E<7oC$Yrap%ILkaKiKP!opCw7K=TNg{b65!;CI`4H8VlM{ns>)d(Gwc zM-1UC=LE02&K@a(M`GX+JWq6^f*y1cB|PuSYBaMP&3Cwz!j1;egC6dPd%#Cq;t6E& znKbo>O+m8akLVO65r0L!zrG1LI%J(BeyX(<;wO3Dmr0Hr7(MJXg5~`=$>I=^L*1P`huXi-;1mW{6 zX<1<;_HylPCl@kX+ETg?TwPykmzcUJFV_lAjQR41;pm4(i?6Y9d`cMqal<(|Iu1~( z2GrahJ2t6xg6@HWB;8oW`?6BW3|04ZT?Zv8yAWE^b|rK)D8yGQ z({9Ssdykb6eAW>pQGBp;d~Y)@EY*C?=X{jrOw#8!>Vs1(c74?(0@^2dXOuYi^L+-x zCm`WJvlc+hRZe(xK${aO9^*&s6gm(zNTow_Wo3V>qe1wzf3X8Xl~g+ibJ4+KR z2Gv5qlYqmsfX0(bH}rrKWj4e2h0p_r!)IAyI7>;CVVvawYPg1MSa;+TeSM=^fCEPE zLpWr_FDqz2YQ#7%_(tILKjkMtmg8KRqeltUIXw7&fiybE7Ehi3M}!%ae;gD^Nk~bw zGeVezJ4mB+QV2>1_(H-{N;8y&i{)-z$N>6~imJGZtk{aKxQa>gim!-)*~3{FaErK@ zi?{fJ6M<8*$6cuqOUehk!u@W+TVM^+XDiTKw# zlL$K>WQqL*fKHe@oLGPdn{4@-w0WDjnVX|&o4VPXzWJMs$(z7AoWxn2bt#<2nVibGoMefd z%=w(qshiFjozz*KtT~<5nVs6nnb^6V-ua!6*`473IiBPxnBrNU=$W3!xs;2kp6>ac z>#0Pa37_;?pS8)JmT8~*xu5@Vp8WZr-|3%qiA#q`paa?uWNDzFsh|M5ngYs}VON$6 zI+zn0mj+s)nTeqdx|{eppLWTh2>K5ix|bvBmL-~@A-bWe`Jifvp%f+nFcDx(#u zpalA&AUdNqI-??rSu)zA3F@P1$)gb(q(&N~I|`&ddZH?dmn=G@HHx4v8lo?XmJ_<8 zK3b(ps-;{?rCuteKf0D(YNS(&q&MoNO-h(g3Z-Dmqh^YxO1h*uYL;`lrEof?c6y{V zI;BF|rB|w>DVnEgYMvd6ntIu%U@EA1TBmydDyNHjr(cSwbPA`FdZd0DsCfFOfjX#( zS*U8mD3UsEyjFT3V^1N~SP6s-?=Qfw`t>daIO5 zskwTpzS^tAN~)VGt4`{vcv+-zilfeIt8Kcef10C``lfpttIRs7)w-(BnyPM!ta(YR zg2|+*N|@vduF)y3fqAaydZ6u!uFt8i@H(%hDX;W;ub^qK_`0u{sjvL{uaN1l06VaV zDX;{4u!Cu^2)nSIDxZeRun>Eh3LCK$E0+`7n@O3m8oRL^+p$HNtPY!=7G)D8Te2p5 zvM6g4`v9`Oz8*~q=lQPa!R;@Te*iTxP|MMircuJ`?)8Pw-(#9T&uQ|Yq_R-xm2pTs*AdYo0gpm zy0SaF{vf(>DX-F+xw?zFn;W;Qi@Lo#x3oLF#A~~7DYUs6yTrS^b!)tDiM+U}yv#ej zRqMQzNxI`Hz0|wCM{B*NiM`9OKFzT{iJNBOwzS+VNdn9#ev?pv1a`@ZfQzw)cT z^jp6ad%yS#vHH8e3){c`d$0f;zym9<=Btwg444O8hUlB0b*a5H>%9pKmk=zo61=8>G#%SEeT`Xu9g~eMdmr?x1YTU*_e8+k$!zAIvJ-o$w z+{Ji|$962pW9-K_oX2SYY{z0O$b$^Waa_i9nZ%H6$W;8uflS15e3yVs$a|c|m>kL? z;m0rB$w~~$o(#s99LY=@vSv&YY>dj4%*Kn%$RR<>B}}(MyvB{Z%6q)Xtemwt`^qFc z#wLNw92~M@+#QJk44>!p{7_+sw^K?9JHh$`8E2 zVkpi?jLu*9&FVbC1N_cu8qe~qqV!zP4SLV`{Ga-~&->ZW{%oHB9nkbS&;k9{thK8PX!noFrY+%6ZZ#ZJa8- z(!|-)E)AS89n-!_Iny*Po!NZT^Xi#4+0#D#(?A{6HHn|xThvB<)HdOgLcP>X-PBI~ n)HgXL>^#*}UDZ~7)mW{QU%Ay>-PKcmE=q}Tk-~J8#VJLE8Z~$hC~j7Dt5kEUTzjz@GWrVmEF?13vaSbPI zUw*SbTb4IdkR(5VAv}E?H+dpHe;6}%KtMpI%J2##YMH#{n7ibq$?ulA;z(wnm%8J8 zoy;FPd{}p_JXw`(jlW)fvK=^jY>d7OC2LD*q8>SW5GrphNQY;Kx=LuFd78<3o622$ zu{&6lS$M99s@6GHl8LL=S9Yw5tk_jmRfnn7dz{NjXP`P)lmGkh=;+hT%*^WQ>Mco# zYm2>OgSVr`?M-W>leOPRWS*hK>z%^qG*FIypUp8&j5t-1L}8qy$nK=a?jk*YoWJLv z!s=v%x1hu8p~dWKioIikww}T1L}Hwcui7|OlA68dpv3E+!|I*D=$pRhLt&dzaHx;6 z+=v< zt=M9LwHGpVP;aIoJ${C$)P|_lV1KkxaHo~G;ew>mVuH32EO1nEsZnpIL0*|bUzs#f zj!bHzjZjin(Oo|aJa9et? zB|(9An8$CB!B1|bKwX%UwBC%a+JvRjFind!QIBehyi;+gb(Y3)lEVxpYjc#uAUl1N zw%}=ryp*=!jIP;%qtJJl$Y_YVjj-ELZl-RIz*TgsKwg+qai}s*j51G*Dn^BOcXvHn zl|5RPVSuzwY@|+Xr88##W`((hr_^(#(tn`NVS%+wYNJhSqlSitKU|k5LxVzJnnGZj z@$vC9Gt2;HnVFfH004k9Gc%c)X28I}1Ox;#GiJ=0W`KYIUteD{X3YQ0nSg+R)X>NP z00960|M2kcA^8LV00000EC2ui0EPh}0RRa90Qm_VNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuzpkOV(}AVZ2ANwTELlPFWFT*Qrg^K`zbm<-_#)eISf*d)XJYm3~RjXRSWNEQ>&Cnz) zrh>V8<-voUEoy`aQKIC>4;V1CZR^kh9UxxRNR?8zP7oX}Xdodv^r#A-6)Tb?*|Ech zjZ@{!P3h+C&#q{gMskryw30J(4h&n*fReE5(dg99f{i@1@q z1j>`71wmXP%vIN2dF|ELUx5w(R@h;QE!Nm$kxf?FWtnZ(*=M1RR@!N)t=8IWvCUT7 zZMp5%+i$@QSKM*QE!W(0(M?y~b=hs#-FM-QSKfK)t=Har@y%D?efjOz-+uuPSm1#P zF4*9M5l&d)g&A(x;fEoPSmKE(uGr#>G0s@yjXCbv%yPF4^RhQBGOqm051t z<(FZOS>~B(uG!|Ban4!ioq6ur=bwQN%IM5A*Q}_cJv9YYHYUAe#8XsRh1FJEc?FhO zWSNCl25Pb87F=@CWfxw0@#Pm_f)QpIVv0S$m}8JhMww-pX~vmnpovDBX{f2jnrpDh zMw@N8>BgIHzzIj3amXqE$DDJ}Nk^S^*lEX|ci@Rfo_Xl0$DVue$w!}k`02-=e*g+d zpn(V~$e@D|N=TuF7;4C&haiebqKPP~$fAod%1EP)IO@owk3b4Zq>)G}$)uA|N=c=a zSZc|omtcxXrkQA}$)=ld%1Ni4cL$1cmgD|7PVT)jSrFVXF*bpAqJz*a{v*BvZ&3Zq@a zZU-^lO{{ko1761ehQ~4EeJpt*V_wOghcfA{ta>iPUd*=F5T5viAw2nB6-huS@j+^5 zChw+#2K#EFY><$4^tBv+r1m=JUE+8n(+ zcdyXti*)@u9l%sKu+|w2b_tsu!)*7k+)0dgAPFMIgtxKcc?@|WTOP@rce3cIjCw7* z9?Z0-MJ#qtAp6LsHnoXOE|%bm3&~>m9;LIVz+;SKT*5clv4kePBO5=X%1GGg4>uwW zRH9-Ush)QKs;JckkNbNS)?~G{KZ4{|Vbc}adUZBnscl$oTO{0I0Fn+o5`vP17A5(% z0+9UeIUtz=NHoYv#D!~d;NFxC~U2OvS1 z>_);%+(m46M+)ZehN&^)b?kT`Q{Kp$XENxeYM z4w9hYTl7 znlGIH!cdkxrJ*f>>JOpL2qe37m{ENQOn(S7cug(hF{7HqWmdI`&&+BRr`c6-D#VJ| zEXh8`>P_pWl^@^5*;;ev6l1_c9{M1oKO!Lxx;nuLOlU%0{jt|J;s7LJ5lN^<;xv)? zv#=lmfj{~p5?PJp0S8sUNGKx`&49!Z{s4_g6sSm%z^0-X9mym+OD&PuKqMmdhjl~} z2aq(vAK?)RxkTa~k zY=8tZAYlMVE&~!Rhy;PJ07)Vx3KEL?!=ji4NhJNTVG1J0A4w3&DMC6@kZe#S695T$ zK=J~Rgb*b00f`J&+u9k|7$gY-Nf~Gx1CUe*Bn=P=ko^%NkQe|YC;|y@eVYZMCOH91 z1__Zs5`a1}`)?GH&)+S302z_dR! zJrYm*!;m8xwLe-@Y7D2^AFGz2NIbh7kbu-5A^wA{4QFET=vo527D;=6?E_&G+aEE_ z+_C+UY=11b>oD*%$W9C|K^zDt1l(r7+LTCtNp=%sUz=}i;z!Jh%iXha>+ng5{Xr+%cW zHOp#^a`@Gk{CUuazMZ1y+8?|22YOh{bf^2{rBHV*jr~y|WGh11%yu^aEPLD`uQS5h z*#2oy$$sR9p`FS87`H#lZQOHHBHdHAQoE0tWvMEWnR*vpVTNyi=WhprUH?`Pghy6u zCJ^EEW^82w_s|aYFnNzhd6pM(@uWtZ*Ju6!7N2JUfi`HDP-vwG0jHN}ASZJEfLO0* zP?a`&wdW57{*YfHk#Ql>U;Z@%DyVuPXEh^17zdVM3&wIGVS~UDbG;W57Z!Y&#S0o{ ze6Ci6A9aL5w+kfZe9s3G=b>~h77{OJh1?)xG8GbASal5&5;`UlVpx7;Xl=P5cD&^e zY8Vm$@NMBH5>B=xQ5JW_G!lB~f6nD)^~QJ8HD-!Phy;OvVYN+(2zb}!O^Wvv?Z7j2 z1z&iEdG51DTG3ZL?BU})p zcDz$DONCrSWK2+nM9S1<^tN}>C1&}Cj|qW*A7K)OXHDZZK0EVXcovWXsYaSokVf-H z_(X#HbU$&ykgH-?5a~Z#Gm&2-5(-s=4FzhG8rop)PYJ1(gQY(YxkqrxoPd;21QeZ-rICrmk(PCxAo(nSIg&=0 zNhi5Mope&-iCQknm@%n+=~cK{fm zfB245X)|2frHQhSQW2(?A~a)JG#q-6a+H?F*^q8YqRRNrI#i!d3Yz&TM8q_u%T=X( z$c|7sfUN1IqB^Ps#}r9%s;HW(s=BJI+N!KdPP7@TvO24@TC28ttGJr0y1J{p+N-|$ ztH2tp!pf`M#S}d8pvao6%DSw~+N{p{tk4>*(mJiwTCLW4t=O8a+KQ~knln7{58xWE z;ySM6TCV1LuIQSs>bkD%+OF>UuJ9VK@;a~dTCetculSm;;M%R-s;~a~uK*jc0z0q- zTd)Ruuz%ItsNV(B0I7qTe1{e ztP5+hD!Z~Q+p;bzt{+PRFFUg|TeCL*d$Mo_vNyZ4JlnHAyRI?&vqC$xL~FA_TeL`< zv`WjdN4vC6`?OG7uuU7aR9m%H8?RG)wOYHiT)VF*Yq4D$wqhH#Sv$67d$vAXwrIPy zZ0oXW+qQ5Uw;}tsa$C1{8?khIw|cv`1e>>f`?r95uYMc2gj=}nI=J|1Rs*ZJ@yfW2 zySV*8u8teIcl}ovoi@9H`vx#fE|3JB)o3F3S zuCW`iv)j6?3$C?$x@4QWGOMqzOS-oExSPwlY$my;tGJVExx*{Ghey23YrD8xyv8fN z&|AI1o4dOEw3!RKqZ_%u>$>3oYrLiFyvQ5A)l0hQYrexvyyAPl>TAB)yS3ZPz0}*h z;<~)>yS~=Dzv&yj{_DQ~3%t=wz3dCX28_M&tF-g0xyj4A{d>R;9KrXCzXANd11!DD z3%>>Yzyh4WRlC3p?7z!#ZC;x zyt98C$b>wzgIvgnyt0S?oXCtkvWwivki4;voV~+Z$(DS{n4HP6s;`r*yW6D`pd8Ag zJj$fZ68pf(cihOIT*|E6%C7v%E^*5F+R3N8%CLOPxSY$REX(*x%jOEhVl1|{tjok) z%*Gtcs64~|%EUihxruwf7YxlRJIu#i&DLzqyezn>{LHN@x!!!Q4&2P$EY2lM&DVU+ z=nTu*Y_F5-x;#A2*Xz9GJHfy#&By!B(#)~uoX-5*&!D`{_1ez$+syY2&+bgn=NiuO zjL!_MvHR@L5FODm0nqf?&hLEC1--oZ{JZu{&cWQV4=vFmJ<>ao%&BrG2=Q?YS*o zuSK2EB%9i?-P<-X+lpP=YOK)p49<;Mhg@9nI8TuG`(+^j*?^t<1hV&??Q+ z>b>8;%-{aa!xHS@2TkArF4O2b-}SxVA_3e$E8Os!(ftj+Ki$*V4b(m@&l}y|{4L?} zo!|@};xpmk>T1y(F5cCR;3*E^-(27_&C@3y;3{se3NGUHP2%ag(;oibM2+Ftjo!(- z;V5ps9{%F`ovt-*g091Ae6G`X-sgZW*?S)7gkIu* zUg&-Qe&&eY$cnz`iQMRI%jS~)tNzfokj}Qpx~-bN>Du}cmVW4PY(-;U5)aW6pFZeT z-94jD5?7fLk8LOvP`RM6vd+BRC>$DCMwqBK{p6j5F#895yP~Nk=&So{y z4`Kc52=VH|j_N6m#F(z?A;Ij+-s}dbfWf}DwCv*YOw>Hh-tW!hH_Pk(fbHq7?AOlj z>yGV*m(|XGfZeXg!%poe?!-dwxG~-DAI`GquI>U45(A&^*G}--J`nQgX7zry-|p{3 ze#QR2HP4N(4@gRNi8(;7+PZH|? z{_$s4h}|^u_Ac%83gi?n#63RY^Zf5Co9t$l@dEGe@lNnFpVad{cnxp1x<2ja?(!|M z^swFZB46pz9_u@s1h*?$(ap_v4E8evik1ANX`U_=FF~hJW~MocM}A#*E+iMf~`X@4=Ek`SDx%S39ij zs`+t^`Bp3DzzzCz?fF$J`s`}@a83GDi~3rg6J@^mZ@w3(A9&x=5J;uPxh=S-vuHFjhQ@#E2dHwP|l+Vp8stXZ{g-3rsCSD9SJ zjwM_6AJwWIuYyFIcH>&Japlep2^K6}ym|4qbxV;X-@Z=u4kldIE=!k%6)#Q+IIzdR zk2%6+T-kEM!!a*!<~()ZXV9TVk0$+>^l8+gJFniHIWcS4v1QMut=Dz`*xI>u@8;c` z;BDW*g%2lg8}ZBI#g#8--kcD90Q zho1d=_}SgZXPnypY5MW!=P&H|F=hV9+b=-9{0j^~0>2wDLAng=3qc08TQI`79CQmp z3a^{cq@FTd$ilQR^iaADOB!m#j3j#tMFo$$i>ni(s;MX$rIM;V5UUcAMdnH*sY8T} ziVCV5$;;6y9=r2#Bq4FKi6|(CgzreEc1*IkB}F=Ms4bx~k4m+!l+VTFU@SgL3ABs*8!Gdey0WXnyz1Z^%*Lm9gNZ&A<^?U78)9F^2j zL?^YBze+FF^u0_s_0+shKNYpbm|h(9)C5CCbyX4}eT`LEIdv7cSZf7!R$Fr|PgO@5 z^;Or^culm=H-X&_S7Qkxw$NlP6V}jWBZ9NpxSq|b$RM+eRxoNS6ZS@I4dPPED9==G z+lQv@maJ#lOsL3k#VyxM;n0O_-No7^az>(h3Q9^F`5h8SC;3gY#)||FipwVtRue0G z{ZSWRuJnbH;V69y*C=eeT=OV{K_-%3q#~Y}Vy&$G7hxe81~<(nN4{8Qk3AO4WRwe2 z`D1xAp4n%Bvjw_lnq_`CDV%d2%-W-Y3^?eFVFt>goD?qqnns?phL})km0lXzW|Q_B zFQ)etd+fQ&#`A2ns|7n*Um0ziF16>jJEgks*891)_xAhiQp@~%@VxRS{P2McN1SlQ z7yr9)$M=Rj^1COed~VA}jC;|`XUg0|wmauL@JPevnp@FL`aHwXQ?IM<=wi;Tb=McN zc;0uBiWlmRVWYiv%wSK-#<_OqSm@P$2mYYj*R=Xyf)92YW~&EwczQHvlzw248y5KJ z6i>f*`PWH*RV#m6cCuWef9Cmki>`iO{jA+BNO|&q6JB?7-#6NS_xbB*y&IbR#s##H z;4gpe+22fv2SBJ95P>2CU;PkBzX;k4Aqvc2^Rh?(GwD^&c?E-?jHp&HqczECDg2Q5 z#<#%WnU7Y+;vo4}N1+-n?}ib|A@Fv{pv~O}hPG?q5L5REt`zYk5p&bY$aoMoO2&;b{EFbp=t4rx z@r}yDql)y%JT=y-kAB=E(gyjTiUqPHAnL~<(^bflsi=|S`=dd?xDlH?WRi}os%UQP4i?8%Y zDrE^wW5V*7Jt>wg>sY!whO#D_EG8|hdCZ9a#8Q}B%q2Cixl3$L^PAXgX37*9nU1JZ zoSN*VF_GyfNTMW{%pB)6>silWCi0eB>1H^|=}v%plUeZ;Bq{~E&VaI0paaFqDN%{g zgSPXR#hhp<35rf$X49AKglI+;%Fv`ZRD81x(?ttA;3afRYs={iNb-qnhE)oT{{+E*_A z6|i3v>|iNXSi>4ht%(&7Vi~(9*YHDuvXiB3Wi5MI%w|@zo8@e0J^NYEhE}wrC2eU< zds@_{R<*08EToS5TG+-`wzH*eZEb5?(y>;zyX9?fefwMB23NSlHSJfVdR*itSGmh& zZgZXcT}FTH+vRR|z58A8hF84fC2x7ndtUUWSH0_HZ+pKR5CA(n CMam2S literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/nn/images/insert_link_window.gif b/webcit/tiny_mce/themes/advanced/docs/nn/images/insert_link_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..2a56e79c4d9f735f162fb69fb9b49ec05f17fc0d GIT binary patch literal 5767 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 F06XoAmZ<;$ literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/nn/images/insert_specchar_window.gif b/webcit/tiny_mce/themes/advanced/docs/nn/images/insert_specchar_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..986fa51d3ccdc966896e9464e5559dd0257d354e GIT binary patch literal 10407 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 R^;na2S)27)FLDR~06Xz*j?Dl7 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/nn/images/insert_table_window.gif b/webcit/tiny_mce/themes/advanced/docs/nn/images/insert_table_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8b69ef02a40913b8a94c28f4df060c27f2859d2 GIT binary patch literal 7099 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/nn/index.htm b/webcit/tiny_mce/themes/advanced/docs/nn/index.htm new file mode 100644 index 000000000..ec6695a59 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nn/index.htm @@ -0,0 +1,27 @@ + + +Hjelp Index + + + + + + + + + +
    +
    +Klikk på lenkene nedanfor for å gå til dei ulike +hjelp-kapitlene. + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nn/insert_anchor_button.htm b/webcit/tiny_mce/themes/advanced/docs/nn/insert_anchor_button.htm new file mode 100644 index 000000000..8fb63bb6c --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nn/insert_anchor_button.htm @@ -0,0 +1,34 @@ + + +Lage/Redigere anker + + + + + + + + + + + +
    +
    +Denne funksjon åpner eit nytt vindauge lik det nedanfor.
    +
    +
    +
    +Dette vindauget har eit felt som man skal fylle i med eit unikt +navn, denne funksjon gjer det mulig å skape +ankerpunkter/bokmerker.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nn/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/nn/insert_image_button.htm new file mode 100644 index 000000000..47d483ff5 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nn/insert_image_button.htm @@ -0,0 +1,71 @@ + + +Lage/Redigere bilde + + + + + + + + + + + +
    +
    +Funksjonen "Lage/Redigere bilde" åpner eit nytt vindauge som ser ut som +bildet nedanfor.
    +
    +
    +
    +I dette vindauget skriver du inn URL:en til bildet du vil lenke til +samt ein bildebeskrivelse, denne beskrivelsen kommer til å vises som ein alternativ +tekst til bildet.
    +
    +Feltforklaring:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Bildets URL URL/søkevei til bildet.
    Bildets beskrivelseBildets beskrivelse, denne beskrivelsen kommer til å vises som ein + alternativ tekst til bildet.
    DimensjonerBildets bredde og høgde.
    JusteringBildets justering, kan vere anvendelig når man vil at + tekst skal flyte rundt bildet.
    RammeBilderammens bredde.
    Vertikalt tomrom Vertikalt tomrom , kan vere anvendelig når man vil + at tekst skal flyte rundt bildet.
    Horisontalt tomromHorisontalt tomrom, kan vere anvendelig når man vil + at tekst skal flyte rundt bildet.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nn/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/nn/insert_link_button.htm new file mode 100644 index 000000000..972bbcd62 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nn/insert_link_button.htm @@ -0,0 +1,33 @@ + + +Lage/Redigere lenke + + + + + + + + + + + +
    +
    +Denne funksjon åpner eit nytt vindauge lik det nedanfor.
    +
    +
    +
    +Dette vindauget har to felt, lenkens URL/addresse samt hvordan lenken +skal åpnes.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nn/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/nn/insert_table_button.htm new file mode 100644 index 000000000..8aad70aa0 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nn/insert_table_button.htm @@ -0,0 +1,72 @@ + + +Lage/Redigere tabell + + + + + + + + + + + +
    +
    +Lage tabell-knappen åpner et nytt vindauge, ved hjelp av +dette vindauget kan du lage tabeller.
    +
    +
    +
    +Feltforklaring:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KolonnerAntall kolonner i tabellen.
    RaderAntall rader i tabellen.
    CelleutfyllingAntall pixler utfylling i kvar celle.
    CellemellomromAntall pixler mellomrom mellom cellene.
    JusteringTabellens justering.
    RammebreddeRammens bredde.
    BreddeBredde i pixler.
    HøgdeHøgde i pixler.
    StilStilmal på tabellen.
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/nn/style.css b/webcit/tiny_mce/themes/advanced/docs/nn/style.css new file mode 100644 index 000000000..722f537a1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/nn/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/pl/about.htm b/webcit/tiny_mce/themes/advanced/docs/pl/about.htm new file mode 100644 index 000000000..81c947c2d --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/pl/about.htm @@ -0,0 +1,33 @@ + + + + +O TinyMCE + + + + + + + + + + + +
    +
    +TinyMCE jest ma³ym edytorem WYSWIWYG dla przegl±darek internetowych takich jak MSIE +lub Mozilla, pozwalaj±cym na edytowanie zawarto¶ci strony HTML w sposób przyjazny dla +u¿ytkownika. Posiada szeref funkcji znanych z popularnych edytorów tekstu, wiêc powinien +byæ ³atwy w u¿yciu.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/pl/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/pl/common_buttons.htm new file mode 100644 index 000000000..00a0b04d1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/pl/common_buttons.htm @@ -0,0 +1,164 @@ + + + + +Wa¿niejsze przyciski + + + + + + + + + + + +
    +
    +Poni¿ej znajduje siê krótki opis ka¿dego przycisku +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Pogrubienie tekstu.
    Pochylenie tekstu.
    Podkre¶lenie tekstu.
    Przekre¶lenie tekstu.
    Wyrównanie do lewej
    Wy¶rodkowanie.
    Wyrównanie do prawej.
    Wyjustowanie.
    Lista nieuporz±dkowana/lista punktów.
    Lista uporz±dkowana/lista ponumerowana
    Wysuniêcie/zmniejsz wciêcie.
    Wciêcie/zwiêksz wciêcie.
    Cofniêcie ostatnio wykonanej czynno¶ci
    Ponowienie ostatnio wykonanej czynno¶ci
    Wstawienie nowego ³±cza, przeczytaj wiêcej o tej funkcji sekcji Wstaw + ³±cze.
    Usuniêcie ³±cz z zaznaczonej czê¶ci/usuniêcie wszystkich zaznaczonych ³±cz.
    Wstawienie nowego zakotwiczenia, przeczytaj wiêcej o tej funkcji w sekcji Wstaw zakotwiczenie.
    Wstawienie nowego zdjêcia, przeczytaj wiêcej o tej funkcji w sekcji Wstaw + zdjêcie.
    Oczyszczenie kodu/usuniêcie niechcianeg formatowania. Ta funkcja jest pomocna kiedy + kopiujesz zawarto¶æ np. z worda.
    Pokazanie tego okna pomocy.
    Otwarcie edytora kodu HTML.
    Wstawienie nowej tabeli 2x2 w bie¿±cej pozycji.
    Wstawienie wiersza ponad aktualnie zaznaczonym.
    Wstawienie wiersz poni¿ej aktualnie zaznaczonego.
    Usuniêcie wiersza.
    Wstawienie kolumny przed aktualnie zaznaczon±.
    Wstawienie kolumny za aktualnie zaznaczon±.
    Usuniêcie kolumny.
    Wstawienie poziomej linii.
    Usuniêcie formatowania z zaznaczonej czê¶ci.
    Przekszta³cenie w indeks dolny.
    Przekszta³cenie w indeks górny.
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/pl/images/insert_anchor_window.gif b/webcit/tiny_mce/themes/advanced/docs/pl/images/insert_anchor_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..c2e08332b6700db03ac9b17d746899737beaf762 GIT binary patch literal 5401 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 aKrH9Vm=9K~W> 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/pl/images/insert_table_window.gif b/webcit/tiny_mce/themes/advanced/docs/pl/images/insert_table_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..b02e34edadfb9f7b66651d1a7d92b8aaadba0a3e GIT binary patch literal 7418 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/pl/index.htm b/webcit/tiny_mce/themes/advanced/docs/pl/index.htm new file mode 100644 index 000000000..4a48d425d --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/pl/index.htm @@ -0,0 +1,28 @@ + + + + +Spis pomocy + + + + + + + + + +
    +
    +Aby zobaczyæ poszczególne sekcje pomocy kliknij jeden z poni¿szych linków + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/pl/insert_anchor_button.htm b/webcit/tiny_mce/themes/advanced/docs/pl/insert_anchor_button.htm new file mode 100644 index 000000000..3858714b3 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/pl/insert_anchor_button.htm @@ -0,0 +1,33 @@ + + + + +Przycisk "Wstaw zakotwiczenie" + + + + + + + + + +
    +
    +Ten przycisk otwiera nowe okno z funkcj± wstawienia/edycja zakotwiczenia.
    +
    +
    +
    +Jest tylko jedno pole w tym oknie, nale¿y tam wpisaæ nazwê punktu zakotwiczenia. Nale¿y pamiêtaæ, ¿e nazwa musi byæ +unikatowa, nie powtarzaj±ca siê. +

    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/pl/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/pl/insert_image_button.htm new file mode 100644 index 000000000..1578e9e40 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/pl/insert_image_button.htm @@ -0,0 +1,65 @@ + + + + +Przycisk "Wstaw zdjêcie" + + + + + + + + + +
    +
    +Przycisk "Wstaw zdjêcie" otwiera okno pokazane poni¿ej.
    +
    +
    +
    +Nale¿y podaæ adres URL lub scie¿kê dostêpu do zdjêcia które ma byæ wstawione i podaæ krótki opis +zdjêcia, jest on wy¶wietlany jako alternatyny tekstowy opis zdjêcia umieszczonego na stronie. +

    +Opis pól:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Adres URL lub ¶cie¿ka dostêpu do zdjêciaURL/scie¿ka dostêpu do zdjêcia.
    Opis zdjêciaTekst opisuj±cy zdjêcia.
    WymiaryD³ugo¶æ/szeroko¶æ zdjêcia .
    WyrównanieWyrównanie zdjêcia, u¿yteczne przy zawijaniu tekstu wokó³ zdjêcia.
    KrawêdzieGrubo¶æ krawêdzi.
    Odstêp poziomyOdstêp poziomy, pomocne przy zawijaniu tesktu wokó³ zdjêcia.
    Odstêp pionowyOdstêp pionowy, pomocne przy zawijaniu tesktu wokó³ zdjêcia.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/pl/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/pl/insert_link_button.htm new file mode 100644 index 000000000..5ad826318 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/pl/insert_link_button.htm @@ -0,0 +1,35 @@ + + + + +Przycisk "Wstaw ³±cze" + + + + + + + + + + + +
    +
    +Ten przycisk otwiera nowe okno, pozwalaj±ce na wstawienie lub edytowanie ³±cza.
    +
    +
    +
    +S± dwa pola w tym oknie, pierwsze "Adres URL" jest adresem URL ³±cza +. "Cel" umo¿liwia ustalenie jak ³±cze ma byæ otwarte.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/pl/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/pl/insert_table_button.htm new file mode 100644 index 000000000..b3a448c77 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/pl/insert_table_button.htm @@ -0,0 +1,73 @@ + + + + +Przycisk "Wstaw tabelê" + + + + + + + + + + + +
    +
    +Przycisk "Wstaw tabelê" otwiera okno pokazane poni¿ej. Mo¿na w ten sposób stworzyæ now± tabelê.
    +
    +
    +
    +Opis pól:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KolumnyLiczba kolumn w tabeli.
    WierszeLiczba wierszy w tabeli.
    CellpaddingOdleg³o¶æ akapitu od krawêdzi komórki tabeli.
    CellspacingSzeroko¶æ krawêdzi komórek tabeli.
    WyrównanieWyrównanie tabeli.
    KrawêdzieGrubo¶æ krawêdzi tabeli.
    Szeroko¶æSzeroko¶æ tabeli w pikselach.
    Wysoko¶æWysoko¶æ tabeli w pikselach.
    KlasaStyl lub klasa CSS tabeli.
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/pl/style.css b/webcit/tiny_mce/themes/advanced/docs/pl/style.css new file mode 100644 index 000000000..722f537a1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/pl/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/sk/about.htm b/webcit/tiny_mce/themes/advanced/docs/sk/about.htm new file mode 100644 index 000000000..e0dbac072 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sk/about.htm @@ -0,0 +1,32 @@ + + +O TinyMCE + + + + + + + + + + + + +
    +
    +TinyMCE je malý WYSIWYG editor pre webovské prehliadače� ako sú MSIE nebo Mozilla, +ktorým je možné upravovať obsah HTML omnoho jednoduchšie. Obsahuje bežné funkcie, +ktoré je možné nájsť vo väčšine textových editorov, preto by jeho používanie nemalo +byť zložité
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/sk/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/sk/common_buttons.htm new file mode 100644 index 000000000..7f9b7a8f0 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sk/common_buttons.htm @@ -0,0 +1,170 @@ + + +B��tla�tka + + + + + + + + + + + + +
    +
    +Nižšie je popísané každé tlačitko. + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Kopíruje aktuálne vybraný obsah do schránky. (Ctrl+C)
    Odstráni aktuálne vybraný obsah do schránky. (Ctrl+X)
    Vloží obsah schránky do okna editoru. (Ctrl+P)
    Zhrubne text.
    Naformatuje text kurzívou.
    Podčiarkne text.
    Preškrtne text.
    Zarovná vľavo.
    Zarovná na sted.
    Zarovná vpravo.
    Zarovná do bloku.
    Zoznam s odrážkami.
    Číslovaný zoznam.
    Predsadí/zníži odsadenie
    Odsadenie/zvýši odsadenie
    Vráti späť naposledy vykonanú akciu.
    Obnový poslednú akciu.
    Vloží nový odkaz, viac o tejto funkcií v častiVložiť odkaz.
    Zruši odkaz v aktuálnom výbere/odstráni všetky vybrané odkazy.
    Vloží nový obrázok, viac o tejto funkcii v častiVložiť obrázok.
    Vyčistí kód/odstráni nechcené formatovanie. Táto funkcia sa hodí keď kopírujete + obsah napríklad z kancelárskeho balíka.
    Zobrazí túto nápovedu.
    Otevorý editor s HTML zdrojom.
    Do aktuálnej pozície vloží novú 2x2 tabulku.
    Pridá riadok pred akruálny.
    Pridá riadok po aktuálny.
    Odstráni riadok.
    Pridá stĺpec pred aktuálny.
    Pridá stĺpec za aktuálny.
    Odstráni aktuálny stĺpec.
    Pridá nový vodorovný oddeľovač.
    Odstráni z výberu formatovanie.
    Vytvorý z vybraného textu dolný index.
    Vytvorý z vybreného textu horný index.
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/sk/images/insert_image_window.png b/webcit/tiny_mce/themes/advanced/docs/sk/images/insert_image_window.png new file mode 100644 index 0000000000000000000000000000000000000000..5d9ea983036b347646ccda7ac3f26723c4a3cf43 GIT binary patch literal 4799 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/sk/images/insert_link_window.png b/webcit/tiny_mce/themes/advanced/docs/sk/images/insert_link_window.png new file mode 100644 index 0000000000000000000000000000000000000000..94a0c2e5a4206226b83753c42c7dfe08bcb288a0 GIT binary patch literal 3833 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/sk/index.htm b/webcit/tiny_mce/themes/advanced/docs/sk/index.htm new file mode 100644 index 000000000..e7b0ce5f3 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sk/index.htm @@ -0,0 +1,26 @@ + + +N�ov�a + + + + + + + + + + +
    +
    +Kliknutím na odkaz zvolíte požadovanú voľbu. + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/sk/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/sk/insert_image_button.htm new file mode 100644 index 000000000..5a9bb457e --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sk/insert_image_button.htm @@ -0,0 +1,66 @@ + + +Tla�tko vloit obr�ek + + + + + + + + + + + + +
    +
    +Tlačitko vložiť obrázok otvorý následujúce okno.
    +
    +
    +
    +Iba vložte URL obrázku, ktorý chcete pridať a zadajte jeho popis, ten bude +zobrazovaný ako alternatívny popisok obrázku.
    +
    +Popis položiek:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    URL obrázkuURL/cesta k obrázku.
    Popis obrázkuAlternatívny popis toho, co je na obrázku.
    Rozmeryšírka/výška obrázku.
    ZarovnávanieZarovnávanie obrázku, vhodné pre obtekanie obrázku textom.
    RamčekHrúbka ramčeku.
    Vertikálny okrajVertikálny okraj, vhodné pre zalomenie textu okolo obrázku.
    Horizontálny okrajHorizontány okraj, vhodné pre zalomenie textu okolo obrázku.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/sk/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/sk/insert_link_button.htm new file mode 100644 index 000000000..d2e14c894 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sk/insert_link_button.htm @@ -0,0 +1,34 @@ + + +Tla�tko vloit odkaz + + + + + + + + + + + + +
    +
    +Toto tlačitko otvorý nové okno s možnosťou vložiť/upraviť odkaz.
    +
    +
    +
    +V tomto okne sú dve položky. "URL odkazu" je adresa stráky, na +ktorú odkazujeme. "Cieľ" určuje, ako môže byť odkazovaná stránka otvorená.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/sk/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/sk/insert_table_button.htm new file mode 100644 index 000000000..36a7d21b5 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sk/insert_table_button.htm @@ -0,0 +1,68 @@ + + +Tla�tko vloit tabulku + + + + + + + + + + + + +
    +
    +Tlačítko vložiť tabuľku otvorý následujúce okno, vňom môžete definovať novú tabuľku.
    +
    +
    +
    +Popis položiek:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    StĺpcePočet stĺpcov v tabuľke.
    RiadkyPočet riadkov v tabuľke.
    Vnútorný okraj bunkyVnútorný okraj bunky.
    Vnútorný okraj tabuľky�Vnútorný okraj tabuľky.
    ZarovnanieZarovnať tabuľky.
    RiadokHrúbka riadku tabuľky.
    ŠírkaŠírka tabuľky v pixelech.
    VýškakaVýška tabuľky v pixelech.
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/sk/style.css b/webcit/tiny_mce/themes/advanced/docs/sk/style.css new file mode 100644 index 000000000..f988e2a7b --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sk/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: 0; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/sv/about.htm b/webcit/tiny_mce/themes/advanced/docs/sv/about.htm new file mode 100644 index 000000000..8ea096afa --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sv/about.htm @@ -0,0 +1,32 @@ + + +About TinyMCE + + + + + + + + + + + +
    +
    +TinyMCE är en liten WYSIWYG-editor för webläsare som +MSIE och Mozilla vilken möjliggör för användare att redigera +HTML-innehåll på ett mer användarvänligt sätt. +Applikationen har funktioner som liknar dem man finner i vanliga ordbehandlare +och borde inte vara speciellt svårt att använda.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/sv/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/sv/common_buttons.htm new file mode 100644 index 000000000..d256fa5b7 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sv/common_buttons.htm @@ -0,0 +1,163 @@ + + +Common buttons + + + + + + + + + + + +
    +
    +Nedan finner du en kort beskrivning av varje knapp/funktion.
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Fet text.
    Kursiv text.
    Understruken text.
    Genomstruken text.
    Rak vänstermarginal.
    Centrera.
    Rak högermarginal.
    Raka marginaler.
    Punktlista.
    Numrerad lista
    Minska indrag.
    Öka utdrag.
    Ångra senaste ändringen.
    Gör om senaste ändringen.
    Skapa/Redigera länk, läs mer om denna funktion i + kapitlet Skapa/Redigera länk.
    Ta bort länkar från markerade länkar.
    Skapa/Redigera ankare, lär mer om denna funktion i + kapitlet Skapa/Redigera ankare.
    Skapa/Redigera bild, lär mer om denna funktion i + kapitlet Skapa/Redigera bild.
    Rensa/Städa kåden. Denna funktion tar bort onödig + formatering. Bör användas när man t.ex. kopierar text + från Office-program.
    Visad denna hjälp.
    Öppnar en HTML-käkodseditor .
    Skapar en ny tabell (2x2) .
    Skapar en rad ovanför den nuvarande raden .
    Skapar en rad under den nuvarande raden .
    Tar bort en rad.
    Skapar en kolumn före den nuvarande kolumnen.
    Skapar en kolumn efter den nuvarande kolumnen.
    Tar bort en kolumn.
    Skapar en horisontell linje.
    Tar bort formatering från markerat område.
    Skapar nedsänkt text.
    Skapar upphöjd text.
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/sv/images/insert_anchor_window.gif b/webcit/tiny_mce/themes/advanced/docs/sv/images/insert_anchor_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c38437e26bcc84145d6a6e994ff1f0bdbbf0538 GIT binary patch literal 5229 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 CMam2S literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/sv/images/insert_link_window.gif b/webcit/tiny_mce/themes/advanced/docs/sv/images/insert_link_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..2a56e79c4d9f735f162fb69fb9b49ec05f17fc0d GIT binary patch literal 5767 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 F06XoAmZ<;$ literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/sv/images/insert_table_window.gif b/webcit/tiny_mce/themes/advanced/docs/sv/images/insert_table_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8b69ef02a40913b8a94c28f4df060c27f2859d2 GIT binary patch literal 7099 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/sv/index.htm b/webcit/tiny_mce/themes/advanced/docs/sv/index.htm new file mode 100644 index 000000000..afeb5cab1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sv/index.htm @@ -0,0 +1,27 @@ + + +Help Index + + + + + + + + + +
    +
    +Klicka på länkarna nedan för att gå till olika +hjälp-kapitel. + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/sv/insert_anchor_button.htm b/webcit/tiny_mce/themes/advanced/docs/sv/insert_anchor_button.htm new file mode 100644 index 000000000..9aa4846a6 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sv/insert_anchor_button.htm @@ -0,0 +1,34 @@ + + +Skapa/Redigera länk + + + + + + + + + + + +
    +
    +Denna funktion öppnar ett nytt fönster liknande det nedan.
    +
    +
    +
    +Detta fönster har ett fält som man skall fylla i med ett unik +namn, denna funktion gör det möjligt att skapa +ankarpunkter/bokmärken.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/sv/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/sv/insert_image_button.htm new file mode 100644 index 000000000..9a583a11a --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sv/insert_image_button.htm @@ -0,0 +1,71 @@ + + +Skapa/Redigera bild + + + + + + + + + + + +
    +
    +Funktionen "Skapa/Redigera bild" öppnar ett nytt fönster som ser ut som +bilden nedan.
    +
    +
    +
    +I detta fönster skriver du in URL:en till bilden du vill länka till +samt en bildbeskrivning, denna beskrivning kommer att visas som en alternativ +text till bilden.
    +
    +Fältförklaring:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Bilderns URL URL/sökväg till bilden.
    Bildens beskrivningBildens beskrivning, denna beskrivning kommer att visas som en + alternativ text till bilden.
    DimensionerBildens bredd och höjd.
    JusteringBildens justering, kan vara användbart när man vill att + text skall flyta runt bilden.
    RamBildramens bredd.
    Vertikalt tomrum Vertikalt tomrum , kan vara användbart när man vill + att text skall flyta runt bilden.
    Horizontellt tomromHorisontellt tomrum, kan vara användbart när man vill + att text skall flyta runt bilden.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/sv/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/sv/insert_link_button.htm new file mode 100644 index 000000000..cc428aaab --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sv/insert_link_button.htm @@ -0,0 +1,33 @@ + + +Skapa/Redigera länk + + + + + + + + + + + +
    +
    +Denna funktion öppnar ett nytt fönster liknande det nedan.
    +
    +
    +
    +Detta fönster har två fält länkens URL/adress samt hur länken +skall öppnas.
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/sv/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/sv/insert_table_button.htm new file mode 100644 index 000000000..8cc1c956a --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sv/insert_table_button.htm @@ -0,0 +1,72 @@ + + +Skapa/Redigera tabell + + + + + + + + + + + +
    +
    +Skapa tabell-knappen öppnar ett nytt fönster, med hjälp av +detta fönster kan du skapa tabeller.
    +
    +
    +
    +Fältförklaring:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KolumnerAntal kolumner i tabellen.
    RaderAntal rader i tabellen .
    CellutfyllnadAntal pixlars utfyllnad i varje cell.
    CellmellanrumAntal pixlars mellanrum mellan cellerna.
    JusteringTabellens justering.
    RambreddRamens bredd .
    BreddBredd i pixlar.
    HöjdHöjd i pixlar.
    StilStilmall på tabellen.
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/sv/style.css b/webcit/tiny_mce/themes/advanced/docs/sv/style.css new file mode 100644 index 000000000..722f537a1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/sv/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/docs/zh_cn/about.htm b/webcit/tiny_mce/themes/advanced/docs/zh_cn/about.htm new file mode 100644 index 000000000..4d3c8b3f6 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/zh_cn/about.htm @@ -0,0 +1,29 @@ + + +¹ØÓÚTinyMCE + + + + + + + + + + + + +
    +
    +TinyMCEÊÇÒ»ÖÖÊÊÓÃÓÚMSIEºÍMozillaµÈä¯ÀÀÆ÷µÄÇáÁ¿¼¶Ëù¼û¼´ËùµÃ±à¼­Æ÷£¬ÒÔ¸ü¼ÓÓѺõķ½Ê½¹©Óû§±à¼­HTMLÄÚÈÝ¡£Ëü¾ßÓд󲿷ÖÎÄ×Ö´¦ÀíÆ÷Ëù³£¼ûµÄ¹¦ÄÜ£¬²¢ÇÒÒ×ÓÚʹÓá£
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/zh_cn/common_buttons.htm b/webcit/tiny_mce/themes/advanced/docs/zh_cn/common_buttons.htm new file mode 100644 index 000000000..167a830d3 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/zh_cn/common_buttons.htm @@ -0,0 +1,160 @@ + + +³£Óð´Å¥ + + + + + + + + + + + + +
    +
    +ÒÔÏÂÊÇÿ¸ö°´Å¥µÄ¼ò¶Ì˵Ã÷ +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ´ÖÌåÎÄ×ÖÑùʽ
    бÌåÎÄ×ÖÑùʽ
    Ï»®ÏßÎÄ×ÖÑùʽ
    ɾ³ýÏßÎÄ×ÖÑùʽ
    ×ó¶ÔÆë
    ¾ÓÖжÔÆë
    ÓÒ¶ÔÆë
    Á½¶Ë¶ÔÆë
    ÎÞÐòÁбí
    ÓÐÐòÁбí
    ¼õÉÙËõ½øÁ¿
    Ôö¼ÓËõ½øÁ¿
    ³·ÏûÉÏÒ»²Ù×÷
    ÖØ×öÉÏÒ»²Ù×÷
    ²åÈëÐÂÁ´½Ó£¬µã»÷ ²åÈëÁ´½Ó°´Å¥ Õ½ÚÒԲ鿴¸ü¶àÄÚÈÝ¡£
    ɾ³ýµ±Ç°Ñ¡¶¨µÄÁ´½Ó/ÒƳýÈ«²¿Ñ¡¶¨µÄÁ´½Ó
    ²åÈëÐÂêµã£¬µã»÷ ²åÈëêµã°´Å¥ Õ½ÚÒԲ鿴¸ü¶àÄÚÈÝ¡£
    ²åÈëÐÂͼÏñ£¬µã»÷ ²åÈëͼÏñ°´Å¥ Õ½ÚÒԲ鿴¸ü¶àÄÚÈÝ¡£
    ÇåÀí´úÂë/Çå³ýËùÓв»ÐèÒªµÄ¸ñʽ¡£´Ë¹¦ÄÜÔÚÄã´ÓofficeµÈ²úÆ·Öи´ÖÆÄÚÈݽøÀ´µÄʱºòÌرðÓÐÓá£
    ÏÔʾ´Ë°ïÖú´°¿Ú
    ´ò¿ªHTML´úÂë±à¼­Æ÷
    ÔÚµ±Ç°Î»ÖòåÈëÒ»ÕÅ2¡Á2µÄ±í¸ñ
    ÔÚµ±Ç°ÐеÄÇ°Ãæ²åÈëÐÂÐÐ
    ÔÚµ±Ç°ÐеĺóÃæ²åÈëÐÂÐÐ
    ɾ³ýµ±Ç°ÐÐ
    ÔÚµ±Ç°ÁеÄÇ°Ãæ²åÈëÐÂÁÐ
    ÔÚµ±Ç°ÁеĺóÃæ²åÈëÐÂÁÐ
    ɾ³ýµ±Ç°ÁÐ
    ²åÈëˮƽÏß
    ÒƳýËùÑ¡ÎÄ×ֵĸñʽ
    ½«ËùÑ¡ÎÄ×Ö×öΪϱê
    ½«ËùÑ¡ÎÄ×Ö×öΪÉϱê
    +
    +
    + + + + + + + + diff --git a/webcit/tiny_mce/themes/advanced/docs/zh_cn/images/insert_anchor_window.gif b/webcit/tiny_mce/themes/advanced/docs/zh_cn/images/insert_anchor_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..21513adc8f71e69fd69cfed82abed802f04f9be5 GIT binary patch literal 10444 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%0DWBpH{MR24QF0Jaa;c&b1L6e( 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/zh_cn/images/insert_link_window.gif b/webcit/tiny_mce/themes/advanced/docs/zh_cn/images/insert_link_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..bcb3976e35f78e9e5ded9fececeb9d2b3607baa6 GIT binary patch literal 12005 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 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/docs/zh_cn/index.htm b/webcit/tiny_mce/themes/advanced/docs/zh_cn/index.htm new file mode 100644 index 000000000..1dd52cdba --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/zh_cn/index.htm @@ -0,0 +1,27 @@ + + +°ïÖúË÷Òý + + + + + + + + + + +
    +
    +Çëµã»÷ÒÔÏÂÁ´½ÓÀ´²é¿´°ïÖúÄÚÈÝÖеIJ»Í¬Õ½Ú. +
    +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_anchor_button.htm b/webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_anchor_button.htm new file mode 100644 index 000000000..bbb75589a --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_anchor_button.htm @@ -0,0 +1,31 @@ + + +²åÈëêµã°´Å¥ + + + + + + + + + + + + +
    +
    ´Ë°´Å¥»á´ò¿ª²åÈë/±à¼­ÃªµãµÄ¶Ô»°´°¿Ú£º
    +
    +
    +
    ´°¿ÚÖÐÖ»ÓÐÒ»¸öÎı¾Óò£¬Äã¿ÉÒÔÔÚ´ËÊäÈëêµãÃû³Æ£¬ÐèҪעÒâµÄÊÇêµãÃû³Æ±ØÐëÊÇΨһµÄ¡£
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_image_button.htm b/webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_image_button.htm new file mode 100644 index 000000000..68bd326b8 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_image_button.htm @@ -0,0 +1,63 @@ + + +²åÈëͼÏñ°´Å¥ + + + + + + + + + + + + +
    +
    µã»÷²åÈëͼƬ°´Å¥ºó»á´ò¿ªÒÔÏ´°¿Ú£º
    +
    +
    +
    ÄãÖ»Ðè¼òµ¥µÄÊäÈëÐèÒªÁ¬½ÓµÄͼÏñµØÖ·¼°Í¼ÏñÃèÊö£¨Í¼ÏñµÄÌæ´úÎÄ×Ö£©
    +
    +²ÎÊý˵Ã÷£º
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ͼÏñµØÖ·Òª²åÈëµÄͼƬµÄURL
    ͼÏñÃèÊöͼƬÄÚÈݵÄÌæ´úÎÄ×ÖÃèÊö
    άÊýͼÏñ¿í¶ÈÓë¸ß¶È
    ¶ÔÆ뷽ʽͼÏñµÄ¶ÔÆ뷽ʽ£¬ÔÚÎÄ×Ö»·ÈÆͼÏñʱÌرðÓÐÓá£
    ±ß¿òͼÏñ±ß¿òµÄºñ¶È
    ˮƽ¼ä¾àͼÏñˮƽ¼ä¾à£¬ÔÚÎÄ×Ö»·ÈÆͼÏñʱÌرðÓÐÓá£
    ´¹Ö±¼ä¾àͼÏñ´¹Ö±¼ä¾à£¬ÔÚÎÄ×Ö»·ÈÆͼÏñʱÌرðÓÐÓá£
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_link_button.htm b/webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_link_button.htm new file mode 100644 index 000000000..64944e374 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_link_button.htm @@ -0,0 +1,32 @@ + + +²åÈëÁ´½Ó°´Å¥ + + + + + + + + + + + + +
    +
    ´Ë°´Å¥»á´ò¿ª²åÈë/±à¼­Á´½ÓµÄ¶Ô»°´°¿Ú£º
    +
    +
    +
    ´°¿ÚÖÐÓÐÁ½¸ö±íµ¥Óò£¬µÚÒ»¸öÊÇÁ´½ÓµÄµØÖ·£¬µÚ¶þ¸öÊÇÁ´½ÓµÄ´ò¿ª·½Ê½¡£ +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_table_button.htm b/webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_table_button.htm new file mode 100644 index 000000000..b34ca1fec --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/zh_cn/insert_table_button.htm @@ -0,0 +1,71 @@ + + +²åÈë±í¸ñ°´Å¥ + + + + + + + + + + + + +
    +
    µã»÷²åÈë±í¸ñ°´Å¥»á´ò¿ªÒÔÏ´°¿Ú£¬´Ë²Ù×÷ÔÊÐíÄã´´½¨±í¸ñ¡£
    +
    +
    +
    +²ÎÊý˵Ã÷£º
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ÁÐÊý±í¸ñÁÐÊý
    ÐÐÊý±í¸ñÐÐÊý
    Ìî³ä±í¸ñµ¥Ôª¸ñµÄÌî³äÖµ
    ¼ä¾à±í¸ñµ¥Ôª¸ñ¼ä¾à
    ¶ÔÆ뷽ʽ±í¸ñ¶ÔÆ뷽ʽ
    ±ß¿ò±í¸ñ±ß¿ò¿í¶È
    ¿í¶È±í¸ñ¿í¶È£¬ÒÔÏóËØΪµ¥Î»¡£
    ¸ß¶È±í¸ñ¸ß¶È£¬ÒÔÏóËØΪµ¥Î»¡£
    ÀàÃû±í¸ñcssÑùʽÃû
    +
    +
    +
    + + + + + + +
    + + diff --git a/webcit/tiny_mce/themes/advanced/docs/zh_cn/style.css b/webcit/tiny_mce/themes/advanced/docs/zh_cn/style.css new file mode 100644 index 000000000..722f537a1 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/docs/zh_cn/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11 px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/webcit/tiny_mce/themes/advanced/editor_template.js b/webcit/tiny_mce/themes/advanced/editor_template.js new file mode 100644 index 000000000..1b1d9a255 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/editor_template.js @@ -0,0 +1,12 @@ +tinyMCE.importThemeLanguagePack('advanced');var TinyMCE_advanced_autoImportCSSClasses=true;var TinyMCE_advanced_resizer=new Object();var TinyMCE_advanced_buttons=[['bold','{$lang_bold_img}','{$lang_bold_desc}','Bold'],['italic','{$lang_italic_img}','{$lang_italic_desc}','Italic'],['underline','{$lang_underline_img}','{$lang_underline_desc}','Underline'],['strikethrough','strikethrough.gif','{$lang_striketrough_desc}','Strikethrough'],['justifyleft','justifyleft.gif','{$lang_justifyleft_desc}','JustifyLeft'],['justifycenter','justifycenter.gif','{$lang_justifycenter_desc}','JustifyCenter'],['justifyright','justifyright.gif','{$lang_justifyright_desc}','JustifyRight'],['justifyfull','justifyfull.gif','{$lang_justifyfull_desc}','JustifyFull'],['bullist','bullist.gif','{$lang_bullist_desc}','InsertUnorderedList'],['numlist','numlist.gif','{$lang_numlist_desc}','InsertOrderedList'],['outdent','outdent.gif','{$lang_outdent_desc}','Outdent'],['indent','indent.gif','{$lang_indent_desc}','Indent'],['cut','cut.gif','{$lang_cut_desc}','Cut'],['copy','copy.gif','{$lang_copy_desc}','Copy'],['paste','paste.gif','{$lang_paste_desc}','Paste'],['undo','undo.gif','{$lang_undo_desc}','Undo'],['redo','redo.gif','{$lang_redo_desc}','Redo'],['link','link.gif','{$lang_link_desc}','mceLink',true],['unlink','unlink.gif','{$lang_unlink_desc}','unlink'],['image','image.gif','{$lang_image_desc}','mceImage',true],['cleanup','cleanup.gif','{$lang_cleanup_desc}','mceCleanup'],['help','help.gif','{$lang_help_desc}','mceHelp'],['code','code.gif','{$lang_theme_code_desc}','mceCodeEditor'],['hr','hr.gif','{$lang_theme_hr_desc}','inserthorizontalrule'],['removeformat','removeformat.gif','{$lang_theme_removeformat_desc}','removeformat'],['sub','sub.gif','{$lang_theme_sub_desc}','subscript'],['sup','sup.gif','{$lang_theme_sup_desc}','superscript'],['forecolor','forecolor.gif','{$lang_theme_forecolor_desc}','mceForeColor',true],['backcolor','backcolor.gif','{$lang_theme_backcolor_desc}','mceBackColor',true],['charmap','charmap.gif','{$lang_theme_charmap_desc}','mceCharMap'],['visualaid','visualaid.gif','{$lang_theme_visualaid_desc}','mceToggleVisualAid'],['anchor','anchor.gif','{$lang_theme_anchor_desc}','mceInsertAnchor'],['newdocument','newdocument.gif','{$lang_newdocument_desc}','mceNewDocument']];function TinyMCE_advanced_getControlHTML(button_name){var buttonTileMap=new Array('anchor.gif','backcolor.gif','bullist.gif','justifycenter.gif','charmap.gif','cleanup.gif','code.gif','copy.gif','custom_1.gif','cut.gif','forecolor.gif','justifyfull.gif','help.gif','hr.gif','image.gif','indent.gif','justifyleft.gif','link.gif','numlist.gif','outdent.gif','paste.gif','redo.gif','removeformat.gif','justifyright.gif','strikethrough.gif','sub.gif','sup.gif','undo.gif','unlink.gif','visualaid.gif');for(var i=0;i4?but[4]:false)+(but.length>5?',\''+but[5]+'\'':'')+')';return '';}}}var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\','+(but.length>4?but[4]:false)+(but.length>5?',\''+but[5]+'\'':'')+')';return '';}}switch(button_name){case "formatselect":var html='';return html;case "styleselect":return '';case "fontselect":var fontHTML='';return fontHTML;case "fontsizeselect":return '';case "|":case "separator":return '';case "spacer":return '';case "rowseparator":return '
    ';}return "";}function TinyMCE_advanced_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceForeColor":var template=new Array();var elm=tinyMCE.selectedInstance.getFocusElement();var inputColor=tinyMCE.getAttrib(elm,"color");if(inputColor=='')inputColor=elm.style.color;if(!inputColor)inputColor="#000000";template['file']='color_picker.htm';template['width']=220;template['height']=190;tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",command:"forecolor",input_color:inputColor});return true;case "mceBackColor":var template=new Array();var elm=tinyMCE.selectedInstance.getFocusElement();var inputColor=elm.style.backgroundColor;if(!inputColor)inputColor="#000000";template['file']='color_picker.htm';template['width']=220;template['height']=190;template['width']+=tinyMCE.getLang('lang_theme_advanced_backcolor_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_backcolor_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",command:"HiliteColor",input_color:inputColor});return true;case "mceColorPicker":if(user_interface){var template=new Array();var inputColor=value['document'].getElementById(value['element_id']).value;template['file']='color_picker.htm';template['width']=220;template['height']=190;template['close_previous']="no";template['width']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height',0);if(typeof(value['store_selection'])=="undefined")value['store_selection']=true;tinyMCE.lastColorPickerValue=value;tinyMCE.openWindow(template,{editor_id:editor_id,mce_store_selection:value['store_selection'],inline:"yes",command:"mceColorPicker",input_color:inputColor});}else{var savedVal=tinyMCE.lastColorPickerValue;var elm=savedVal['document'].getElementById(savedVal['element_id']);elm.value=value;eval('elm.onchange();');}return true;case "mceCodeEditor":var template=new Array();template['file']='source_editor.htm';template['width']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_width",500));template['height']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_height",400));tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"no",inline:"yes"});return true;case "mceCharMap":var template=new Array();template['file']='charmap.htm';template['width']=550+(tinyMCE.isOpera?40:0);template['height']=250;template['width']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case "mceInsertAnchor":var template=new Array();template['file']='anchor.htm';template['width']=320;template['height']=90+(tinyMCE.isNS7?30:0);template['width']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case "mceNewDocument":if(confirm(tinyMCE.getLang('lang_newdocument')))tinyMCE.execInstanceCommand(editor_id,'mceSetContent',false,'');return true;}return false;}function TinyMCE_advanced_getEditorTemplate(settings,editorId){function removeFromArray(in_array,remove_array){var outArray=new Array();for(var i=0;i 

    ';var layoutManager=tinyMCE.getParam("theme_advanced_layout_manager","SimpleLayout");var styleSelectHTML='';if(settings['theme_advanced_styles']){var stylesAr=settings['theme_advanced_styles'].split(';');for(var i=0;i'+key+'';}TinyMCE_advanced_autoImportCSSClasses=false;}switch(layoutManager){case "SimpleLayout":var toolbarHTML="";var toolbarLocation=tinyMCE.getParam("theme_advanced_toolbar_location","bottom");var toolbarAlign=tinyMCE.getParam("theme_advanced_toolbar_align","center");var pathLocation=tinyMCE.getParam("theme_advanced_path_location","none");var statusbarLocation=tinyMCE.getParam("theme_advanced_statusbar_location",pathLocation);var defVals={theme_advanced_buttons1:"bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,separator,sub,sup,separator,charmap"};toolbarHTML+='';for(var i=1;i<100;i++){var def=defVals["theme_advanced_buttons"+i];var buttons=tinyMCE.getParam("theme_advanced_buttons"+i,def==null?'':def,true,',');if(buttons.length==0)break;buttons=removeFromArray(buttons,tinyMCE.getParam("theme_advanced_disable","",true,','));buttons=addToArray(buttons,tinyMCE.getParam("theme_advanced_buttons"+i+"_add","",true,','));buttons=addToArray(tinyMCE.getParam("theme_advanced_buttons"+i+"_add_before","",true,','),buttons);for(var b=0;b0){toolbarHTML+="
    ";deltaHeight-=23;}}toolbarHTML+='';template['html']='';if(toolbarLocation=="top"){template['html']+='';}if(statusbarLocation=="top"){template['html']+='';deltaHeight-=23;}template['html']+='';if(toolbarLocation=="bottom"){template['html']+='';}if(toolbarLocation=="external"){var bod=document.body;var elm=document.createElement("div");toolbarHTML=tinyMCE.replaceVars(toolbarHTML,tinyMCE.settings);toolbarHTML=tinyMCE.replaceVars(toolbarHTML,tinyMCELang);toolbarHTML=tinyMCE.replaceVar(toolbarHTML,'style_select_options',styleSelectHTML);toolbarHTML=tinyMCE.replaceVar(toolbarHTML,"editor_id",editorId);toolbarHTML=tinyMCE.applyTemplate(toolbarHTML);elm.className="mceToolbarExternal";elm.id=editorId+"_toolbar";elm.innerHTML='
    '+toolbarHTML+'
    '+statusbarHTML+'
    '+toolbarHTML+'
    '+toolbarHTML+'
    ';bod.appendChild(elm);deltaHeight=0;tinyMCE.getInstanceById(editorId).toolbarElement=elm;}else{tinyMCE.getInstanceById(editorId).toolbarElement=null;}if(statusbarLocation=="bottom"){template['html']+=''+statusbarHTML+'';deltaHeight-=23;}template['html']+='';break;case "RowLayout":template['html']='';var containers=tinyMCE.getParam("theme_advanced_containers","",true,",");var defaultContainerCSS=tinyMCE.getParam("theme_advanced_containers_default_class","container");var defaultContainerAlign=tinyMCE.getParam("theme_advanced_containers_default_align","center");for(var i=0;i';}else if(containers[i]=="mceElementpath"||containers[i]=="mceStatusbar"){var pathClass="mceStatusbar";if(i==containers.length-1){pathClass="mceStatusbarBottom";}else if(i==0){pathClass="mceStatusbar";}else{deltaHeight-=2;}template['html']+='';deltaHeight-=22;}else{var curContainer=tinyMCE.getParam("theme_advanced_container_"+containers[i],"",true,',');var curContainerHTML="";var curAlign=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align",defaultContainerAlign);var curCSS=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class",defaultContainerCSS);for(var j=0;j0){curContainerHTML+="
    ";deltaHeight-=23;}template['html']+='
    ';}}template['html']+='
    \ + \ +
    '+statusbarHTML+'
    '+curContainerHTML+'
    ';break;case "BorderLayout":break;case "CustomLayout":var customLayout=tinyMCE.getParam("theme_advanced_custom_layout","");if(customLayout!=""&&eval("typeof("+customLayout+")")!="undefined"){template=eval(customLayout+"(template);");}break;default:alert('UNDEFINED LAYOUT MANAGER! PLEASE CHECK YOUR TINYMCE CONFIG!');break;}if(resizing)template['html']+='';template['html']=tinyMCE.replaceVar(template['html'],'style_select_options',styleSelectHTML);template['delta_width']=0;template['delta_height']=deltaHeight;return template;}function TinyMCE_advanced_setResizing(e,editor_id,state){e=typeof(e)=="undefined"?window.event:e;var resizer=TinyMCE_advanced_resizer;var editorContainer=document.getElementById(editor_id+'_parent');var editorArea=document.getElementById(editor_id+'_parent').firstChild;var resizeBox=document.getElementById(editor_id+'_resize_box');var inst=tinyMCE.getInstanceById(editor_id);if(state){var width=editorArea.clientWidth;var height=editorArea.clientHeight;resizeBox.style.width=width+"px";resizeBox.style.height=height+"px";resizer.iframeWidth=inst.iframeElement.clientWidth;resizer.iframeHeight=inst.iframeElement.clientHeight;editorArea.style.display="none";resizeBox.style.display="block";if(!resizer.eventHandlers){if(tinyMCE.isMSIE)tinyMCE.addEvent(document,"mousemove",TinyMCE_advanced_resizeEventHandler);else tinyMCE.addEvent(window,"mousemove",TinyMCE_advanced_resizeEventHandler);tinyMCE.addEvent(document,"mouseup",TinyMCE_advanced_resizeEventHandler);resizer.eventHandlers=true;}resizer.resizing=true;resizer.downX=e.screenX;resizer.downY=e.screenY;resizer.width=parseInt(resizeBox.style.width);resizer.height=parseInt(resizeBox.style.height);resizer.editorId=editor_id;resizer.resizeBox=resizeBox;resizer.horizontal=tinyMCE.getParam("theme_advanced_resize_horizontal",true);}else{resizer.resizing=false;resizeBox.style.display="none";editorArea.style.display=tinyMCE.isMSIE?"block":"table";tinyMCE.execCommand('mceResetDesignMode');}}function TinyMCE_advanced_initInstance(inst){if(tinyMCE.getParam("theme_advanced_resizing",false)){if(tinyMCE.getParam("theme_advanced_resizing_use_cookie",true)){var w=TinyMCE_advanced_getCookie("TinyMCE_"+inst.editorId+"_width");var h=TinyMCE_advanced_getCookie("TinyMCE_"+inst.editorId+"_height");TinyMCE_advanced_resizeTo(inst,w,h,tinyMCE.getParam("theme_advanced_resize_horizontal",true));}}}function TinyMCE_advanced_setCookie(name,value,expires,path,domain,secure){var curCookie=name+"="+escape(value)+((expires)?"; expires="+expires.toGMTString():"")+((path)?"; path="+escape(path):"")+((domain)?"; domain="+domain:"")+((secure)?"; secure":"");document.cookie=curCookie;}function TinyMCE_advanced_getCookie(name){var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1){begin=dc.indexOf(prefix);if(begin!=0)return null;}else begin+=2;var end=document.cookie.indexOf(";",begin);if(end==-1)end=dc.length;return unescape(dc.substring(begin+prefix.length,end));}function TinyMCE_advanced_resizeTo(inst,w,h,set_w){var editorContainer=document.getElementById(inst.editorId+'_parent');var tableElm=editorContainer.firstChild;var iframe=inst.iframeElement;if(w==null||w=="null"){set_w=false;w=0;}if(h==null||h=="null")return;w=parseInt(w);h=parseInt(h);if(tinyMCE.isGecko){w+=2;h+=2;}var dx=w-tableElm.clientWidth;var dy=h-tableElm.clientHeight;w=w<1?30:w;h=h<1?30:h;if(set_w)tableElm.style.width=w+"px";tableElm.style.height=h+"px";iw=iframe.clientWidth+dx;ih=iframe.clientHeight+dy;iw=iw<1?30:iw;ih=ih<1?30:ih;if(tinyMCE.isGecko){iw-=2;ih-=2;}if(set_w)iframe.style.width=iw+"px";iframe.style.height=ih+"px";if(set_w){var tableBodyElm=tableElm.firstChild;var minIframeWidth=tableBodyElm.scrollWidth;if(inst.iframeElement.clientWidth=0;i--){var nodeName=path[i].nodeName.toLowerCase();var nodeData="";if(nodeName=="b"){nodeName="strong";}if(nodeName=="i"){nodeName="em";}if(nodeName=="span"){var cn=tinyMCE.getAttrib(path[i],"class");if(cn!=""&&cn.indexOf('mceItem')==-1)nodeData+="class: "+cn+" ";var st=tinyMCE.getAttrib(path[i],"style");if(st!=""){st=tinyMCE.serializeStyle(tinyMCE.parseStyle(st));nodeData+="style: "+st+" ";}}if(nodeName=="font"){if(tinyMCE.getParam("convert_fonts_to_spans"))nodeName="span";var face=tinyMCE.getAttrib(path[i],"face");if(face!="")nodeData+="font: "+face+" ";var size=tinyMCE.getAttrib(path[i],"size");if(size!="")nodeData+="size: "+size+" ";var color=tinyMCE.getAttrib(path[i],"color");if(color!="")nodeData+="color: "+color+" ";}if(getAttrib(path[i],'id')!=""){nodeData+="id: "+path[i].getAttribute('id')+" ";}var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1)nodeData+="class: "+className+" ";if(getAttrib(path[i],'src')!=""){var src=tinyMCE.getAttrib(path[i],"mce_src");if(src=="")src=tinyMCE.getAttrib(path[i],"src");nodeData+="src: "+src+" ";}if(getAttrib(path[i],'href')!=""){var href=tinyMCE.getAttrib(path[i],"mce_href");if(href=="")href=tinyMCE.getAttrib(path[i],"href");nodeData+="href: "+href+" ";}if(nodeName=="img"&&tinyMCE.getAttrib(path[i],"class").indexOf('mceItemFlash')!=-1){nodeName="flash";nodeData="src: "+path[i].getAttribute('title');}if(nodeName=="a"&&(anchor=tinyMCE.getAttrib(path[i],"name"))!=""){nodeName="a";nodeName+="#"+anchor;nodeData="";}if(getAttrib(path[i],'name').indexOf("mce_")!=0){var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1){nodeName+="."+className;}}var cmd='tinyMCE.execInstanceCommand(\''+editor_id+'\',\'mceSelectNodeDepth\',false,\''+i+'\');';html+=''+nodeName+'';if(i>0){html+=" » ";}}pathElm.innerHTML=''+tinyMCE.getLang('lang_theme_path')+": "+html+' ';}tinyMCE.switchClassSticky(editor_id+'_justifyleft','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_justifyright','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_justifycenter','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_justifyfull','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_numlist','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_sub','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_sup','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_anchor','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_link','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_unlink','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_outdent','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_image','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_hr','mceButtonNormal');if(node.nodeName=="A"&&tinyMCE.getAttrib(node,"class").indexOf('mceItemAnchor')!=-1)tinyMCE.switchClassSticky(editor_id+'_anchor','mceButtonSelected');var anchorLink=tinyMCE.getParentElement(node,"a","href");if(anchorLink||any_selection){tinyMCE.switchClassSticky(editor_id+'_link',anchorLink?'mceButtonSelected':'mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_unlink',anchorLink?'mceButtonSelected':'mceButtonNormal',false);}tinyMCE.switchClassSticky(editor_id+'_visualaid',visual_aid?'mceButtonSelected':'mceButtonNormal',false);if(undo_levels!=-1){tinyMCE.switchClassSticky(editor_id+'_undo','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_redo','mceButtonDisabled',true);}if(tinyMCE.getParentElement(node,"li,blockquote")){tinyMCE.switchClassSticky(editor_id+'_outdent','mceButtonNormal',false);}if(undo_index!=-1&&(undo_index0)){tinyMCE.switchClassSticky(editor_id+'_redo','mceButtonNormal',false);}if(undo_index!=-1&&(undo_index>0&&undo_levels>0)){tinyMCE.switchClassSticky(editor_id+'_undo','mceButtonNormal',false);}var selectElm=document.getElementById(editor_id+"_styleSelect");if(selectElm){TinyMCE_advanced_setupCSSClasses(editor_id);classNode=node;breakOut=false;var index=0;do{if(classNode&&classNode.className){for(var i=0;i");else selectByValue(selectElm,"");}var selectElm=document.getElementById(editor_id+"_fontNameSelect");if(selectElm){if(!tinyMCE.isSafari&&!(tinyMCE.isMSIE&&!tinyMCE.isOpera)){var face=inst.queryCommandValue('FontName');face=face==null||face==""?"":face;selectByValue(selectElm,face,face!="");}else{var elm=tinyMCE.getParentElement(node,"font","face");if(elm){var family=tinyMCE.getAttrib(elm,"face");if(family=='')family=''+elm.style.fontFamily;if(!selectByValue(selectElm,family,family!=""))selectByValue(selectElm,"");}else selectByValue(selectElm,"");}}var selectElm=document.getElementById(editor_id+"_fontSizeSelect");if(selectElm){if(!tinyMCE.isSafari&&!tinyMCE.isOpera){var size=inst.queryCommandValue('FontSize');selectByValue(selectElm,size==null||size==""?"0":size);}else{var elm=tinyMCE.getParentElement(node,"font","size");if(elm){var size=tinyMCE.getAttrib(elm,"size");if(size==''){var sizes=new Array('','8px','10px','12px','14px','18px','24px','36px');size=''+elm.style.fontSize;for(var i=0;i0){selectElm.setAttribute('cssImported','true');}}}; \ No newline at end of file diff --git a/webcit/tiny_mce/themes/advanced/editor_template_src.js b/webcit/tiny_mce/themes/advanced/editor_template_src.js new file mode 100644 index 000000000..e2a04b701 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/editor_template_src.js @@ -0,0 +1,1208 @@ +/* Import theme specific language pack */ +tinyMCE.importThemeLanguagePack('advanced'); + +// Variable declarations +var TinyMCE_advanced_autoImportCSSClasses = true; +var TinyMCE_advanced_resizer = new Object(); +var TinyMCE_advanced_buttons = [ + // Control id, button img, button title, command, user_interface, value + ['bold', '{$lang_bold_img}', '{$lang_bold_desc}', 'Bold'], + ['italic', '{$lang_italic_img}', '{$lang_italic_desc}', 'Italic'], + ['underline', '{$lang_underline_img}', '{$lang_underline_desc}', 'Underline'], + ['strikethrough', 'strikethrough.gif', '{$lang_striketrough_desc}', 'Strikethrough'], + ['justifyleft', 'justifyleft.gif', '{$lang_justifyleft_desc}', 'JustifyLeft'], + ['justifycenter', 'justifycenter.gif', '{$lang_justifycenter_desc}', 'JustifyCenter'], + ['justifyright', 'justifyright.gif', '{$lang_justifyright_desc}', 'JustifyRight'], + ['justifyfull', 'justifyfull.gif', '{$lang_justifyfull_desc}', 'JustifyFull'], + ['bullist', 'bullist.gif', '{$lang_bullist_desc}', 'InsertUnorderedList'], + ['numlist', 'numlist.gif', '{$lang_numlist_desc}', 'InsertOrderedList'], + ['outdent', 'outdent.gif', '{$lang_outdent_desc}', 'Outdent'], + ['indent', 'indent.gif', '{$lang_indent_desc}', 'Indent'], + ['cut', 'cut.gif', '{$lang_cut_desc}', 'Cut'], + ['copy', 'copy.gif', '{$lang_copy_desc}', 'Copy'], + ['paste', 'paste.gif', '{$lang_paste_desc}', 'Paste'], + ['undo', 'undo.gif', '{$lang_undo_desc}', 'Undo'], + ['redo', 'redo.gif', '{$lang_redo_desc}', 'Redo'], + ['link', 'link.gif', '{$lang_link_desc}', 'mceLink', true], + ['unlink', 'unlink.gif', '{$lang_unlink_desc}', 'unlink'], + ['image', 'image.gif', '{$lang_image_desc}', 'mceImage', true], + ['cleanup', 'cleanup.gif', '{$lang_cleanup_desc}', 'mceCleanup'], + ['help', 'help.gif', '{$lang_help_desc}', 'mceHelp'], + ['code', 'code.gif', '{$lang_theme_code_desc}', 'mceCodeEditor'], + ['hr', 'hr.gif', '{$lang_theme_hr_desc}', 'inserthorizontalrule'], + ['removeformat', 'removeformat.gif', '{$lang_theme_removeformat_desc}', 'removeformat'], + ['sub', 'sub.gif', '{$lang_theme_sub_desc}', 'subscript'], + ['sup', 'sup.gif', '{$lang_theme_sup_desc}', 'superscript'], + ['forecolor', 'forecolor.gif', '{$lang_theme_forecolor_desc}', 'mceForeColor', true], + ['backcolor', 'backcolor.gif', '{$lang_theme_backcolor_desc}', 'mceBackColor', true], + ['charmap', 'charmap.gif', '{$lang_theme_charmap_desc}', 'mceCharMap'], + ['visualaid', 'visualaid.gif', '{$lang_theme_visualaid_desc}', 'mceToggleVisualAid'], + ['anchor', 'anchor.gif', '{$lang_theme_anchor_desc}', 'mceInsertAnchor'], + ['newdocument', 'newdocument.gif', '{$lang_newdocument_desc}', 'mceNewDocument'] +]; + +/** + * Returns HTML code for the specificed control. + */ +function TinyMCE_advanced_getControlHTML(button_name) +{ + var buttonTileMap = new Array('anchor.gif','backcolor.gif','bullist.gif','justifycenter.gif', + 'charmap.gif','cleanup.gif','code.gif','copy.gif','custom_1.gif', + 'cut.gif','forecolor.gif','justifyfull.gif','help.gif','hr.gif', + 'image.gif','indent.gif','justifyleft.gif','link.gif','numlist.gif', + 'outdent.gif','paste.gif','redo.gif','removeformat.gif', + 'justifyright.gif','strikethrough.gif','sub.gif','sup.gif','undo.gif', + 'unlink.gif','visualaid.gif'); + + // Lookup button in button list + for (var i=0; i 4 ? but[4] : false) + (but.length > 5 ? ',\'' + but[5] + '\'' : '') + ')'; + return ''; + } + } + } + + // Old style + var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + but[3] + '\',' + (but.length > 4 ? but[4] : false) + (but.length > 5 ? ',\'' + but[5] + '\'' : '') + ')'; + return ''; + } + } + + // Custom controlls other than buttons + switch (button_name) + { + case "formatselect": + var html = ''; + //formatselect + return html; + + case "styleselect": + //styleselect + return ''; + + case "fontselect": + var fontHTML = ''; + return fontHTML; + + case "fontsizeselect": + //fontsizeselect + return ''; + + case "|": + case "separator": + return ''; + + case "spacer": + return ''; + + case "rowseparator": + return '
    '; + } + + return ""; +} + +/** + * Theme specific exec command handeling. + */ +function TinyMCE_advanced_execCommand(editor_id, element, command, user_interface, value) +{ + switch (command) + { + case "mceForeColor": + var template = new Array(); + var elm = tinyMCE.selectedInstance.getFocusElement(); + var inputColor = tinyMCE.getAttrib(elm, "color"); + + if (inputColor == '') + inputColor = elm.style.color; + + if (!inputColor) + inputColor = "#000000"; + + template['file'] = 'color_picker.htm'; + template['width'] = 220; + template['height'] = 190; + + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", command : "forecolor", input_color : inputColor}); + return true; + + case "mceBackColor": + var template = new Array(); + var elm = tinyMCE.selectedInstance.getFocusElement(); + var inputColor = elm.style.backgroundColor; + + if (!inputColor) + inputColor = "#000000"; + + template['file'] = 'color_picker.htm'; + template['width'] = 220; + template['height'] = 190; + + template['width'] += tinyMCE.getLang('lang_theme_advanced_backcolor_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_theme_advanced_backcolor_delta_height', 0); + + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", command : "HiliteColor", input_color : inputColor}); + //mceBackColor + return true; + + case "mceColorPicker": + if (user_interface) { + var template = new Array(); + var inputColor = value['document'].getElementById(value['element_id']).value; + + template['file'] = 'color_picker.htm'; + template['width'] = 220; + template['height'] = 190; + template['close_previous'] = "no"; + + template['width'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height', 0); + + if (typeof(value['store_selection']) == "undefined") + value['store_selection'] = true; + + tinyMCE.lastColorPickerValue = value; + tinyMCE.openWindow(template, {editor_id : editor_id, mce_store_selection : value['store_selection'], inline : "yes", command : "mceColorPicker", input_color : inputColor}); + } else { + var savedVal = tinyMCE.lastColorPickerValue; + var elm = savedVal['document'].getElementById(savedVal['element_id']); + elm.value = value; + eval('elm.onchange();'); + } + return true; + + case "mceCodeEditor": + var template = new Array(); + + template['file'] = 'source_editor.htm'; + template['width'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_width", 500)); + template['height'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_height", 400)); + + tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "no", inline : "yes"}); + //mceCodeEditor + return true; + + case "mceCharMap": + var template = new Array(); + + template['file'] = 'charmap.htm'; + template['width'] = 550 + (tinyMCE.isOpera ? 40 : 0); + template['height'] = 250; + + template['width'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_height', 0); + + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); + //mceCharMap + return true; + + case "mceInsertAnchor": + var template = new Array(); + + template['file'] = 'anchor.htm'; + template['width'] = 320; + template['height'] = 90 + (tinyMCE.isNS7 ? 30 : 0); + + template['width'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_height', 0); + + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); + return true; + + case "mceNewDocument": + if (confirm(tinyMCE.getLang('lang_newdocument'))) + tinyMCE.execInstanceCommand(editor_id, 'mceSetContent', false, ''); + + return true; + } + + // Default behavior + return false; +} + +/** + * Editor instance template function. + */ +function TinyMCE_advanced_getEditorTemplate(settings, editorId) +{ + function removeFromArray(in_array, remove_array) + { + var outArray = new Array(); + + for (var i=0; i 

    '; + var layoutManager = tinyMCE.getParam("theme_advanced_layout_manager", "SimpleLayout"); + + // Setup style select options -- MOVED UP FOR EXTERNAL TOOLBAR COMPATABILITY! + var styleSelectHTML = ''; + if (settings['theme_advanced_styles']) { + var stylesAr = settings['theme_advanced_styles'].split(';'); + + for (var i=0; i' + key + ''; + } + + TinyMCE_advanced_autoImportCSSClasses = false; + } + + switch(layoutManager) { + case "SimpleLayout" : //the default TinyMCE Layout (for backwards compatibility)... + var toolbarHTML = ""; + var toolbarLocation = tinyMCE.getParam("theme_advanced_toolbar_location", "bottom"); + var toolbarAlign = tinyMCE.getParam("theme_advanced_toolbar_align", "center"); + var pathLocation = tinyMCE.getParam("theme_advanced_path_location", "none"); // Compatiblity + var statusbarLocation = tinyMCE.getParam("theme_advanced_statusbar_location", pathLocation); + var defVals = { + theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect", + theme_advanced_buttons2 : "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code", + theme_advanced_buttons3 : "hr,removeformat,visualaid,separator,sub,sup,separator,charmap" + }; + + // Add accessibility control + toolbarHTML += ''; + + // Render rows + for (var i=1; i<100; i++) { + var def = defVals["theme_advanced_buttons" + i]; + + var buttons = tinyMCE.getParam("theme_advanced_buttons" + i, def == null ? '' : def, true, ','); + if (buttons.length == 0) + break; + + buttons = removeFromArray(buttons, tinyMCE.getParam("theme_advanced_disable", "", true, ',')); + buttons = addToArray(buttons, tinyMCE.getParam("theme_advanced_buttons" + i + "_add", "", true, ',')); + buttons = addToArray(tinyMCE.getParam("theme_advanced_buttons" + i + "_add_before", "", true, ','), buttons); + + for (var b=0; b 0) { + toolbarHTML += "
    "; + deltaHeight -= 23; + } + } + + // Add accessibility control + toolbarHTML += ''; + + // Setup template html + template['html'] = ''; + + if (toolbarLocation == "top") + { + template['html'] += ''; + } + + if (statusbarLocation == "top") + { + template['html'] += ''; + deltaHeight -= 23; + } + + template['html'] += ''; + + if (toolbarLocation == "bottom") + { + template['html'] += ''; + } + + // External toolbar changes + if (toolbarLocation == "external") + { + var bod = document.body; + var elm = document.createElement ("div"); + + toolbarHTML = tinyMCE.replaceVars(toolbarHTML, tinyMCE.settings); + toolbarHTML = tinyMCE.replaceVars(toolbarHTML, tinyMCELang); + toolbarHTML = tinyMCE.replaceVar(toolbarHTML, 'style_select_options', styleSelectHTML); + toolbarHTML = tinyMCE.replaceVar(toolbarHTML, "editor_id", editorId); + toolbarHTML = tinyMCE.applyTemplate(toolbarHTML); + + elm.className = "mceToolbarExternal"; + elm.id = editorId+"_toolbar"; + elm.innerHTML = '
    ' + toolbarHTML + '
    ' + statusbarHTML + '
    ' + toolbarHTML + '
    '+toolbarHTML+'
    '; + bod.appendChild (elm); + // bod.style.marginTop = elm.offsetHeight + "px"; + + deltaHeight = 0; + tinyMCE.getInstanceById(editorId).toolbarElement = elm; + + //template['html'] = '
    '+toolbarHTML+'
    ' + template["html"]; + } + else + { + tinyMCE.getInstanceById(editorId).toolbarElement = null; + } + + if (statusbarLocation == "bottom") + { + template['html'] += '' + statusbarHTML + ''; + deltaHeight -= 23; + } + + template['html'] += ''; + //"SimpleLayout" + break; + + case "RowLayout" : //Container Layout - containers defined in "theme_advanced_containers" are rendered from top to bottom. + template['html'] = ''; + + var containers = tinyMCE.getParam("theme_advanced_containers", "", true, ","); + var defaultContainerCSS = tinyMCE.getParam("theme_advanced_containers_default_class", "container"); + var defaultContainerAlign = tinyMCE.getParam("theme_advanced_containers_default_align", "center"); + + //Render Containers: + for (var i = 0; i < containers.length; i++) + { + if (containers[i] == "mceEditor") //Exceptions for mceEditor and ... + { + template['html'] += ''; + } + else if (containers[i] == "mceElementpath" || containers[i] == "mceStatusbar") // ... mceElementpath: + { + var pathClass = "mceStatusbar"; + + if (i == containers.length-1) + { + pathClass = "mceStatusbarBottom"; + } + else if (i == 0) + { + pathClass = "mceStatusbar"; + } + else + { + deltaHeight-=2; + } + + template['html'] += ''; + deltaHeight -= 22; + } + else //Render normal Container: + { + var curContainer = tinyMCE.getParam("theme_advanced_container_"+containers[i], "", true, ','); + var curContainerHTML = ""; + var curAlign = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align", defaultContainerAlign); + var curCSS = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class", defaultContainerCSS); + + for (var j=0; j 0) + { + curContainerHTML += "
    "; + deltaHeight -= 23; + } + + template['html'] += '
    '; + } + } + + template['html'] += '
    \ + \ +
    ' + statusbarHTML + '
    ' + curContainerHTML + '
    '; + //RowLayout + break; + + case "BorderLayout" : //will be like java.awt.BorderLayout of SUN Java... + // Not implemented yet... + break; + + case "CustomLayout" : //User defined layout callback... + var customLayout = tinyMCE.getParam("theme_advanced_custom_layout",""); + + if (customLayout != "" && eval("typeof(" + customLayout + ")") != "undefined") + { + template = eval(customLayout + "(template);"); + } + break; + + default: + alert('UNDEFINED LAYOUT MANAGER! PLEASE CHECK YOUR TINYMCE CONFIG!'); + //CustomLayout + break; + } + + if (resizing) + template['html'] += ''; + + template['html'] = tinyMCE.replaceVar(template['html'], 'style_select_options', styleSelectHTML); + template['delta_width'] = 0; + template['delta_height'] = deltaHeight; + + return template; +} + +/** + * Starts/stops the editor resizing. + */ +function TinyMCE_advanced_setResizing(e, editor_id, state) { + e = typeof(e) == "undefined" ? window.event : e; + + var resizer = TinyMCE_advanced_resizer; + var editorContainer = document.getElementById(editor_id + '_parent'); + var editorArea = document.getElementById(editor_id + '_parent').firstChild; + var resizeBox = document.getElementById(editor_id + '_resize_box'); + var inst = tinyMCE.getInstanceById(editor_id); + + if (state) { + // Place box over editor area + var width = editorArea.clientWidth; + var height = editorArea.clientHeight; + + resizeBox.style.width = width + "px"; + resizeBox.style.height = height + "px"; + + resizer.iframeWidth = inst.iframeElement.clientWidth; + resizer.iframeHeight = inst.iframeElement.clientHeight; + + // Hide editor and show resize box + editorArea.style.display = "none"; + resizeBox.style.display = "block"; + + // Add event handlers, only once + if (!resizer.eventHandlers) { + if (tinyMCE.isMSIE) + tinyMCE.addEvent(document, "mousemove", TinyMCE_advanced_resizeEventHandler); + else + tinyMCE.addEvent(window, "mousemove", TinyMCE_advanced_resizeEventHandler); + + tinyMCE.addEvent(document, "mouseup", TinyMCE_advanced_resizeEventHandler); + + resizer.eventHandlers = true; + } + + resizer.resizing = true; + resizer.downX = e.screenX; + resizer.downY = e.screenY; + resizer.width = parseInt(resizeBox.style.width); + resizer.height = parseInt(resizeBox.style.height); + resizer.editorId = editor_id; + resizer.resizeBox = resizeBox; + resizer.horizontal = tinyMCE.getParam("theme_advanced_resize_horizontal", true); + } else { + resizer.resizing = false; + resizeBox.style.display = "none"; + editorArea.style.display = tinyMCE.isMSIE ? "block" : "table"; + tinyMCE.execCommand('mceResetDesignMode'); + } +} + +function TinyMCE_advanced_initInstance(inst) { + if (tinyMCE.getParam("theme_advanced_resizing", false)) { + if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) { + var w = TinyMCE_advanced_getCookie("TinyMCE_" + inst.editorId + "_width"); + var h = TinyMCE_advanced_getCookie("TinyMCE_" + inst.editorId + "_height"); + + TinyMCE_advanced_resizeTo(inst, w, h, tinyMCE.getParam("theme_advanced_resize_horizontal", true)); + } + } +} + +function TinyMCE_advanced_setCookie(name, value, expires, path, domain, secure) { + var curCookie = name + "=" + escape(value) + + ((expires) ? "; expires=" + expires.toGMTString() : "") + + ((path) ? "; path=" + escape(path) : "") + + ((domain) ? "; domain=" + domain : "") + + ((secure) ? "; secure" : ""); + + document.cookie = curCookie; +} + +function TinyMCE_advanced_getCookie(name) { + var dc = document.cookie; + var prefix = name + "="; + var begin = dc.indexOf("; " + prefix); + + if (begin == -1) { + begin = dc.indexOf(prefix); + + if (begin != 0) + return null; + } else + begin += 2; + + var end = document.cookie.indexOf(";", begin); + + if (end == -1) + end = dc.length; + + return unescape(dc.substring(begin + prefix.length, end)); +} + +function TinyMCE_advanced_resizeTo(inst, w, h, set_w) { + var editorContainer = document.getElementById(inst.editorId + '_parent'); + var tableElm = editorContainer.firstChild; + var iframe = inst.iframeElement; + + if (w == null || w == "null") { + set_w = false; + w = 0; + } + + if (h == null || h == "null") + return; + + w = parseInt(w); + h = parseInt(h); + + if (tinyMCE.isGecko) { + w += 2; + h += 2; + } + + var dx = w - tableElm.clientWidth; + var dy = h - tableElm.clientHeight; + + w = w < 1 ? 30 : w; + h = h < 1 ? 30 : h; + + if (set_w) + tableElm.style.width = w + "px"; + + tableElm.style.height = h + "px"; + + iw = iframe.clientWidth + dx; + ih = iframe.clientHeight + dy; + + iw = iw < 1 ? 30 : iw; + ih = ih < 1 ? 30 : ih; + + if (tinyMCE.isGecko) { + iw -= 2; + ih -= 2; + } + + if (set_w) + iframe.style.width = iw + "px"; + + iframe.style.height = ih + "px"; + + // Is it to small, make it bigger again + if (set_w) { + var tableBodyElm = tableElm.firstChild; + var minIframeWidth = tableBodyElm.scrollWidth; + if (inst.iframeElement.clientWidth < minIframeWidth) { + dx = minIframeWidth - inst.iframeElement.clientWidth; + + inst.iframeElement.style.width = (iw + dx) + "px"; + } + } +} + +/** + * Handles resizing events. + */ +function TinyMCE_advanced_resizeEventHandler(e) { + var resizer = TinyMCE_advanced_resizer; + + // Do nothing + if (!resizer.resizing) + return; + + e = typeof(e) == "undefined" ? window.event : e; + + var dx = e.screenX - resizer.downX; + var dy = e.screenY - resizer.downY; + var resizeBox = resizer.resizeBox; + var editorId = resizer.editorId; + + switch (e.type) { + case "mousemove": + var w, h; + + w = resizer.width + dx; + h = resizer.height + dy; + + w = w < 1 ? 1 : w; + h = h < 1 ? 1 : h; + + if (resizer.horizontal) + resizeBox.style.width = w + "px"; + + resizeBox.style.height = h + "px"; + break; + + case "mouseup": + TinyMCE_advanced_setResizing(e, editorId, false); + TinyMCE_advanced_resizeTo(tinyMCE.getInstanceById(editorId), resizer.width + dx, resizer.height + dy, resizer.horizontal); + + // Expire in a month + if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) { + var expires = new Date(); + expires.setTime(expires.getTime() + 3600000 * 24 * 30); + + // Set the cookies + TinyMCE_advanced_setCookie("TinyMCE_" + editorId + "_width", "" + (resizer.horizontal ? resizer.width + dx : ""), expires); + TinyMCE_advanced_setCookie("TinyMCE_" + editorId + "_height", "" + (resizer.height + dy), expires); + } + break; + } +} + +/** + * Insert link template function. + */ +function TinyMCE_advanced_getInsertLinkTemplate() +{ + var template = new Array(); + + template['file'] = 'link.htm'; + template['width'] = 330; + template['height'] = 170 + (tinyMCE.isMSIE ? 25 : 0); + + // Language specific width and height addons + template['width'] += tinyMCE.getLang('lang_insert_link_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0); + + return template; +}; + +/** + * Insert image template function. + */ +function TinyMCE_advanced_getInsertImageTemplate() { + var template = new Array(); + + template['file'] = 'image.htm?src={$src}'; + template['width'] = 340; + template['height'] = 250 + (tinyMCE.isMSIE ? 25 : 0); + + // Language specific width and height addons + template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0); + + return template; +}; + +/** + * Node change handler. + */ +function TinyMCE_advanced_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection, setup_content) { + function selectByValue(select_elm, value, first_index) { + first_index = typeof(first_index) == "undefined" ? false : true; + + if (select_elm) { + for (var i=0; i=0; i--) { + var nodeName = path[i].nodeName.toLowerCase(); + var nodeData = ""; + + if (nodeName == "b") { + nodeName = "strong"; + } + + if (nodeName == "i") { + nodeName = "em"; + } + + if (nodeName == "span") { + var cn = tinyMCE.getAttrib(path[i], "class"); + if (cn != "" && cn.indexOf('mceItem') == -1) + nodeData += "class: " + cn + " "; + + var st = tinyMCE.getAttrib(path[i], "style"); + if (st != "") { + st = tinyMCE.serializeStyle(tinyMCE.parseStyle(st)); + nodeData += "style: " + st + " "; + } + } + + if (nodeName == "font") { + if (tinyMCE.getParam("convert_fonts_to_spans")) + nodeName = "span"; + + var face = tinyMCE.getAttrib(path[i], "face"); + if (face != "") + nodeData += "font: " + face + " "; + + var size = tinyMCE.getAttrib(path[i], "size"); + if (size != "") + nodeData += "size: " + size + " "; + + var color = tinyMCE.getAttrib(path[i], "color"); + if (color != "") + nodeData += "color: " + color + " "; + } + + if (getAttrib(path[i], 'id') != "") { + nodeData += "id: " + path[i].getAttribute('id') + " "; + } + + var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false); + if (className != "" && className.indexOf('mceItem') == -1) + nodeData += "class: " + className + " "; + + if (getAttrib(path[i], 'src') != "") { + var src = tinyMCE.getAttrib(path[i], "mce_src"); + + if (src == "") + src = tinyMCE.getAttrib(path[i], "src"); + + nodeData += "src: " + src + " "; + } + + if (getAttrib(path[i], 'href') != "") { + var href = tinyMCE.getAttrib(path[i], "mce_href"); + + if (href == "") + href = tinyMCE.getAttrib(path[i], "href"); + + nodeData += "href: " + href + " "; + } + + if (nodeName == "img" && tinyMCE.getAttrib(path[i], "class").indexOf('mceItemFlash') != -1) { + nodeName = "flash"; + nodeData = "src: " + path[i].getAttribute('title'); + } + + if (nodeName == "a" && (anchor = tinyMCE.getAttrib(path[i], "name")) != "") { + nodeName = "a"; + nodeName += "#" + anchor; + nodeData = ""; + } + + if (getAttrib(path[i], 'name').indexOf("mce_") != 0) { + var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false); + if (className != "" && className.indexOf('mceItem') == -1) { + nodeName += "." + className; + } + } + + var cmd = 'tinyMCE.execInstanceCommand(\'' + editor_id + '\',\'mceSelectNodeDepth\',false,\'' + i + '\');'; + html += '' + nodeName + ''; + + if (i > 0) { + html += " » "; + } + } + + pathElm.innerHTML = '' + tinyMCE.getLang('lang_theme_path') + ": " + html + ' '; + } + + // Reset old states + tinyMCE.switchClassSticky(editor_id + '_justifyleft', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_justifyright', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_justifycenter', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_justifyfull', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_sub', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_sup', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_anchor', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_link', 'mceButtonDisabled', true); + tinyMCE.switchClassSticky(editor_id + '_unlink', 'mceButtonDisabled', true); + tinyMCE.switchClassSticky(editor_id + '_outdent', 'mceButtonDisabled', true); + tinyMCE.switchClassSticky(editor_id + '_image', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_hr', 'mceButtonNormal'); + + if (node.nodeName == "A" && tinyMCE.getAttrib(node, "class").indexOf('mceItemAnchor') != -1) + tinyMCE.switchClassSticky(editor_id + '_anchor', 'mceButtonSelected'); + + // Get link + var anchorLink = tinyMCE.getParentElement(node, "a", "href"); + + if (anchorLink || any_selection) + { + tinyMCE.switchClassSticky(editor_id + '_link', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal', false); + tinyMCE.switchClassSticky(editor_id + '_unlink', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal', false); + } + + // Handle visual aid + tinyMCE.switchClassSticky(editor_id + '_visualaid', visual_aid ? 'mceButtonSelected' : 'mceButtonNormal', false); + + if (undo_levels != -1) + { + tinyMCE.switchClassSticky(editor_id + '_undo', 'mceButtonDisabled', true); + tinyMCE.switchClassSticky(editor_id + '_redo', 'mceButtonDisabled', true); + } + + // Within li, blockquote + if (tinyMCE.getParentElement(node, "li,blockquote")) + { + tinyMCE.switchClassSticky(editor_id + '_outdent', 'mceButtonNormal', false); + } + + // Has redo levels + if (undo_index != -1 && (undo_index < undo_levels-1 && undo_levels > 0)) + { + tinyMCE.switchClassSticky(editor_id + '_redo', 'mceButtonNormal', false); + } + + // Has undo levels + if (undo_index != -1 && (undo_index > 0 && undo_levels > 0)) + { + tinyMCE.switchClassSticky(editor_id + '_undo', 'mceButtonNormal', false); + } + + // Select class in select box + var selectElm = document.getElementById(editor_id + "_styleSelect"); + + if (selectElm) + { + TinyMCE_advanced_setupCSSClasses(editor_id); + + classNode = node; + breakOut = false; + var index = 0; + + do + { + if (classNode && classNode.className) + { + for (var i=0; i"); + else + selectByValue(selectElm, ""); + } + + // Select fontselect + var selectElm = document.getElementById(editor_id + "_fontNameSelect"); + if (selectElm) { + if (!tinyMCE.isSafari && !(tinyMCE.isMSIE && !tinyMCE.isOpera)) { + var face = inst.queryCommandValue('FontName'); + + face = face == null || face == "" ? "" : face; + + selectByValue(selectElm, face, face != ""); + } else { + var elm = tinyMCE.getParentElement(node, "font", "face"); + + if (elm) { + var family = tinyMCE.getAttrib(elm, "face"); + + if (family == '') + family = '' + elm.style.fontFamily; + + if (!selectByValue(selectElm, family, family != "")) + selectByValue(selectElm, ""); + } else + selectByValue(selectElm, ""); + } + } + + // Select fontsize + var selectElm = document.getElementById(editor_id + "_fontSizeSelect"); + if (selectElm) { + if (!tinyMCE.isSafari && !tinyMCE.isOpera) { + var size = inst.queryCommandValue('FontSize'); + selectByValue(selectElm, size == null || size == "" ? "0" : size); + } else { + var elm = tinyMCE.getParentElement(node, "font", "size"); + if (elm) { + var size = tinyMCE.getAttrib(elm, "size"); + + if (size == '') { + var sizes = new Array('', '8px', '10px', '12px', '14px', '18px', '24px', '36px'); + + size = '' + elm.style.fontSize; + + for (var i=0; i 0) { + selectElm.setAttribute('cssImported', 'true'); + } + } +}; diff --git a/webcit/tiny_mce/themes/advanced/image.htm b/webcit/tiny_mce/themes/advanced/image.htm new file mode 100644 index 000000000..7c9534469 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/image.htm @@ -0,0 +1,91 @@ + + + {$lang_insert_image_title} + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    {$lang_insert_image_title}
    {$lang_insert_image_src}: + + + + +
     
    {$lang_insert_image_alt}:
    {$lang_insert_image_align}:
    {$lang_insert_image_dimensions}: + x +
    {$lang_insert_image_border}:
    {$lang_insert_image_vspace}:
    {$lang_insert_image_hspace}:
    +
    +
    + + diff --git a/webcit/tiny_mce/themes/advanced/images/anchor.gif b/webcit/tiny_mce/themes/advanced/images/anchor.gif new file mode 100644 index 0000000000000000000000000000000000000000..34ab71534b74e1f8eb01a822d2073cde4cd878cb GIT binary patch literal 171 zcmV;c095}+Nk%w1VH5xq0K*0VDLrY1lc!y3io(UtI8lV8tiaOK*3t6qtjy*E#3&d$!w&zD+OKB~ULl7eEw((m;2 z^kQ<7@$qtYhNk=Uwg3PCA^8LW000jFEC2ui02BZe000DA@X1N5y*TU5`(_{rgp5Wq zV<-tiQw0DJpz-{)hcHm#IKm8pA~9I(Ca@SvR8S0cm6VSWFgTt^N>UaxG!szEiFzP_ cvz1f8Q5b|bYX=qJK_CnUx@XVt`!Nv!J5VM>-~a#s literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/bold.gif b/webcit/tiny_mce/themes/advanced/images/bold.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6a9cc2cd4117526156fa29c06156ba5971823c4 GIT binary patch literal 76 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*&Mzw-23{>3a?E=Bm(Rqw7V Z4AWqey4jFcx$b3$*C(Ir-+DzDtN~+a79aos literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/bold_de_se.gif b/webcit/tiny_mce/themes/advanced/images/bold_de_se.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b129de25e916946792c89f08a7b30b2f9dc8b72 GIT binary patch literal 73 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*UAzw-23e#sdnZdC`i8W!&j Xl@)6cxHjEB<6*$FFxbIg;(p2 i&djr5P5jX#dNVh}IZO5VUiUMXvRj`2I%m$xU=0AHn;dum literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/bold_fr.gif b/webcit/tiny_mce/themes/advanced/images/bold_fr.gif new file mode 100644 index 0000000000000000000000000000000000000000..2816454515a2b3d031ee1762f9308db99e9d3940 GIT binary patch literal 78 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*yKzw-23e%TquY+VNzx0~n3 bPUX;xQ|oohT$M9BQ$Xt4x8CPfj11NQWJeUX literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/bold_ru.gif b/webcit/tiny_mce/themes/advanced/images/bold_ru.gif new file mode 100644 index 0000000000000000000000000000000000000000..e000d461c96188c26fe081920ba332593e5b60ca GIT binary patch literal 77 zcmZ?wbhEHb6k!lyn83i`>+8$Fz@Ye(g^_`QkwFK@28xR?Ffgg~^shYqmVYseNeI`y fv!S2m6KACKPM+Zyy|O9RI8W2_`nTTOtPIuwq8S!> literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/bold_tw.gif b/webcit/tiny_mce/themes/advanced/images/bold_tw.gif new file mode 100644 index 0000000000000000000000000000000000000000..82085432c622fb9b195d45480ce0c00f80d24027 GIT binary patch literal 207 zcmV;=05JbYNk%w1VH5xq0J9DNySuyH-QDi)?jj;0%*@PHRaKdpnGq2YcXxM0L_~;) zh%+-YW@csp00960{{R30A^8LW000gEEC2ui02BZe000Dh(8)=wy*N7}G;WM{HHkzh zs6t%9fi%d0HcQepm#{3&(I_#A0+$;m0FJ}}WxKp?w}cH!tRNB$k|H1#RxPhVL6BGg z09nkC_M1X4*#RtJD4)}o#(?mXbR9t%Fa-%dPzMPG0V6gC3@He52a9TEFU_>xB^?a&6>B~^ R#bfrS$(b43?=Ue~0{~-MC*lAA literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/bullist.gif b/webcit/tiny_mce/themes/advanced/images/bullist.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e19467c70e337bbfb2a3fe3eff1bc3acab0eaec GIT binary patch literal 108 zcmZ?wbhEHb6k!ly*u>1h#Kfdz)l@%W&!*iMf|{-?85Jc}En;9`Q2fcl$iTqPpaWzB zRf;e$FdJ6vy7SNAl;>@M#YT=zObHxz&I%bBUa^s_ M6r5P1!pL9^0IPo@`~Uy| literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/buttons.gif b/webcit/tiny_mce/themes/advanced/images/buttons.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d5e08b5e6c88ac89d270bdcb9b052d22b9116a9 GIT binary patch literal 3286 zcmWlWdpy$%=lY-!@~b1p`D*lH9Uw98*aWkwzj5}-cT|RixNdr=-OKIuUcF2yr}A$^4XleqhE7d zXZf|+e>svaK3qPbU0Ov3b?rx$C&Qnvya;z3|^}i|q?flS`_ljrC7cYL{h=jehlu zHy+*Somf7cebq7fTY1;Vu(;f?6j{&xr~3N(sps3zWe5_-V!ILf(WDA_kUFkC_C}l!k)Zrm2~4a(qKon zPpqXHj4;87Od?8f-ib4b39=lDapYOL&L!)`zqNmt0jAJF>!7UV747)hGAT#CL-GlblmTwDtCi& zCLQ#$pa;eN@c=a3;MbqTYzyzFTZ=mcZ4QZhcIVu!`^LN_K5y>57-7OGAR>&3je$xk zi(P^t6TBZddYk+Ktk~+6#TV7vM}9bxR=sOu zBb6{$6aK&=HbOqpEGUEbl`hZ4xeWe}w+diG5tAC`tPq#wAn5<1c)@zE&JdSe@j zB1+C)X6qEV{^fPg*Obn#d`F(L5cl=|{FeDrH}sm%`;p+Qdp}IwF;bQ@(GB6gt@f@=VZKI~j&L@p? zYG~P6*DLL(&l3;fPd5ni4Sdl&3Z1)sroi~1d|=vgpA+jTwus*vdPa{H z%5HjW8Bxb6vT?|wS<%wavn=!E11|3kh%1@s3&#p;Mq$V92deTmh-h36f&x+-M5BTc zy4R`(h9{bqe6Wo5(fFH!tyPXm1xX4xPCN%g=$MW2l|cGXfa+*ou+iY1yi-kGck_}s z=(5e~y+WOpMY~$N{nE-*qe*N1a6%xN>xa2H&tv27$KFurYHr6J4b&17s2xjCzv=4D!pjvqGB-X|UR!3AnMiL)n`F#14O(*)K z4VtB9rNPj{yVL^uqRSZ#R_|201Hc%|c-ETV%@tzq)By^h?C9NNZI@1`LGOr?n5pKb zr_=-Z)CR@ERi_F?flIcJdiil4M==Q3)lyg84WcGkI(pVoAa;OWm_{q{colVhH#`8M zZ(^T|sot$0_rUO&dE808B8C6~NpMyGq~lyk!7FaX2J{^lH2vj&{$n)Gf4&JV--XK9 z;yOeqlZKj^Zg9{KR|L+fp(qqQO$1<$jAZ*3uDA$|JbZ{KbDqz4(K^zM-5D6RnDzC* zNZjbNm z&lw4PH6eNFb$Z514+ZqTj=ej8#VR>e>`f^yeQb&vt?**@Lryx@<0OSK2>0c-F%VzX+LI1Ta7&f*9$MC#;2Xz@S{%% z_eP1d9h_j-@gxL<#iZC$heawI=!o^CUza`T)6e`_zv_SiPYOqZm8gYM+?_tRi(hr= zj%T#KG#^Hx0VpSMx_uYO-51OWR4hzwWtnIPP9pR(^Uc}(GoPT`_IC)=z5(5wc67j2 zA!;KCp~Ptm2dtGi|8==TWIYvc&W{az?Z!5aF9^CS*gzIXpo|1CdK#wY#@8a!R8ejSjZMKyUL#m@gq@Phq!tde z?I9Bnf&jYE108WM^_)n{CA)A655&*t5LV@mFHR11{gr@Ea zRNX(}nZnkW#-wwe50?2=D8mBlAE!fnFH8CO z78bb4d8V}xJhspUEw_q*U~DyJch*+JnaNbS4S9g}Uv-fVPL3mKVc`ZYKK}gz7*+$U z>rzJro>P8+m;Ja&L%7Hm-c)_bTwtn^!Yqbj5m=CCyhTy4hcu%X2*&F-R-C~7&q7bz-&Jf(a@(4sHIn+zR_-o^bBL?4M7Sm(2Ov*1(i2STIt^6X0$J^U?`fQML$m8 z;NCB~>PDFHi?4#wjhUFkQA+)35Oh?#qjs*=(B)d>#0KTt0tsL;#1)OC?8m(ig6qf_ z$IY|OlBBrLcatQi{kqRSN#6U}vN02ek6PC|t%uszikeNiu%hQf$f9Tt1*;JhiOs`i zOxh=Nw=G9>CP?dBzx%v37pg%Nz0GBZ%Sw?TqR zsDzg3`|YXW*Yi*2Ot|E#iYong-d7`Z)uKI7X-1i>Lau0!6dogiY}OvBLZ8_Jhkj9_ zCnOLP=j@dQ#r8dN~{IES>T5kWt0 zy6cYoK97x3XP$*3IRF;p49U;{xGKc+SH*Gy@~9U!y&Lf&s_Z35>6$I=<+=FE(dz)g zaIZLz;RcJ_S3Yllda|y3p|8AE3U+a~*pnSTcvY-KRea8>Sgou0)>rX;qGD~e0x*$4 LuapS@VB7x#nmUU0 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/cancel_button_bg.gif b/webcit/tiny_mce/themes/advanced/images/cancel_button_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..4b4aeefcbbba8ed33383d99e3ad38a2b9683044e GIT binary patch literal 677 zcmV;W0$Tk?Nk%w1VOjtc0K@)fLs#+_}=< z+2GjQ)C|ia%M}g|2-*$|4jAv++6)X8?f3NB2<-a^7%Bu**N)yjcm?$#=+|zcKYj)I zIjF!OVTE%a3KYO_;R1$_A3cH`Nit-~lPFRDiUhfmW6G2Q3W(6yv1UzC}*s)i?z8nAt58I(vAO9Tu2JqX_n^*5Vy?OEB-=jZ2zyA2} z=ksr%;9UfV@9G68;D7`cXyAbe9{8UkfB!Y;;DZoGDB*+@R%juG3|^?=h8%WSVGAIJ LDB_4Bh5!IN$Y@?j literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/charmap.gif b/webcit/tiny_mce/themes/advanced/images/charmap.gif new file mode 100644 index 0000000000000000000000000000000000000000..3cdc4ac9134258a9a1a83b6afd5c7055bebbcbf9 GIT binary patch literal 245 zcmVJ7UM8qsvB8x<;Dr zSg7=Nn%Hi7)&KwiA^8LW0018VEC2ui02BZe000GY;3tk`X`X1RuI#x~)x&X5LaDKL zBuP+gmjjC8P!LL;h9PruTqdW2VQ_jhm?kOJM8RlI0sywOkQfrBgdlP}Q6Q310n$b# v>y*a!grF>@BLxiv8314c77P(14Hy;xh9(V(3=AWV77>droSmMZC?Nnljc8>f literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/cleanup.gif b/webcit/tiny_mce/themes/advanced/images/cleanup.gif new file mode 100644 index 0000000000000000000000000000000000000000..16491f6cfcf3e1123f08352c895f8010f791c469 GIT binary patch literal 256 zcmV+b0ssC-Nk%w1VH5xq0MrlwMm#2xdP3^ge4>(aXJcF2&#c0@g7@*TXJyAiI+Bx- z!osRT%E{EUw6tz+enw7G^6K)^$d=yS-J+Ue{{6y&f`-z%VxXFs!L^y{+>(HFVv>^L zOipLAk}~7mu>b%7A^8LW0018VEC2ui02BZe000Gj;3tk`X`X1RuBfCa3_CK)hB&I! z?6jS5DV>BNxhN371`1>FG$6!^gQF}JB8CHn;<-pFjYq{)@NCbANaf;iJjfX><#5Od z41@~dZSq94bpiqw6C4j!WCnJE77HB!h$k2WjE(>oEEpP%kC-wT1Ob;aBcK|jsHv(a GApkq`d~Wvu literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/close.gif b/webcit/tiny_mce/themes/advanced/images/close.gif new file mode 100644 index 0000000000000000000000000000000000000000..679ca2aa47644793fc7096142233af6d18cfc9ac GIT binary patch literal 102 zcmZ?wbhEHb6ky1B=+vSZwA88iSX|!)1|*>PlZBCifrUW_BnDE;z-;WX>&`!e zQ=Y5$?qJ;7tnMTs#JpKBeE~;8w4TG9b-KTcEEZl{H}m}(h0KD}68$HZ6lMA_FjxZs D>4hO7 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/color.gif b/webcit/tiny_mce/themes/advanced/images/color.gif new file mode 100644 index 0000000000000000000000000000000000000000..1ecd5743b64464068d80fe0c306375bc0f36a3f9 GIT binary patch literal 125 zcmZ?wbhEHb6k!lxSi}GV|NsBLa^b|RS+g7*9Dr=F7=z+Z7DfgJRt6mq7o?Vf*~wzp z9Utctp08V)UYxZ)DHzz35?MDRW1X_prZuwmzXRH=pKYwZWOr?gDO&r}E WQznT77&6ApIg)ei@KZGg25SKIc`;M~ literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/copy.gif b/webcit/tiny_mce/themes/advanced/images/copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc146865c5952aa48b82fc54677db621322465b9 GIT binary patch literal 263 zcmV+i0r>t$Nk%w1VH5xq0MrKnGD>2SrMb<|)0(p4GF`Q=%=coD-uwLia-!n0ztXb8 z>SB7D(cbRC&Eb``_99D}N_N7cveI&z@*+Zl!qxWT>hhwp!g8A0g0kXLg3_YG@}jE3 za+1=5r|rPV)BpegA^8LW0018VEC2ui02BZe000Gq;3tk`X`X1Rt}Ll2NgN5Sa@>ct z&})Jp0ne^?pcEK^!b{_DFiw_VrSR(z8m7&Gi9u+7k^;d~3fw9c#^BIo7zl(%`OrmN z*0>5KA}5&{3=It(2OS6o85w+K0F8|tI1CgD7JVrO2Z)Io8#2N9wc8v&jt5O5Ex Ns}n7+u(2f}06RB$bN>JU literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/custom_1.gif b/webcit/tiny_mce/themes/advanced/images/custom_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..4cbccdadf60dfccaf532fd56a567c47b131f80a8 GIT binary patch literal 76 zcmZ?wbhEHb6k!lySjfQ8(7@2Zz`(%B2qYALvH&S21|1+9C@TVF%TDQEdHOB?;yGKQ b7!RD8^=Ve+T!9>q%7xRawyuk2V6X-NXyp|c literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/cut.gif b/webcit/tiny_mce/themes/advanced/images/cut.gif new file mode 100644 index 0000000000000000000000000000000000000000..4e9a70b6e297cfa0744d581c42868b35b0a7a204 GIT binary patch literal 187 zcmV;s07U;sNk%w1VH5xq0K*3W0z;>dm7`y6hp@H0TzRe{O`Us&m(k6|m7uZ$S-vl0 zv81W9YJ#%8z`z1cvH$=8A^8LW000jFEC2ui02BZe000DN@X1N5y*RH`2hYzS9F#DC z&mja;FrrU@G*7b_@UslKvE>g#z<@B2axx(c_%I2W2u49rARu4_N5ZktItZW!fI&z+ p0E8?Jvj7|jibsJV{#*tC#rVODXii?U706WgML@)pV literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/forecolor.gif b/webcit/tiny_mce/themes/advanced/images/forecolor.gif new file mode 100644 index 0000000000000000000000000000000000000000..d5e381425fe0f58a146d8d68141686aa517c3391 GIT binary patch literal 272 zcmV+r0q_1tNk%w1VH5xq0MrHmVgdq!0s^>+A(FDP-mWX|+>7q%%Knm4;nJw;$6E00 zq5^UP@!4qj@34~ELeii*Vv@1~0%EdyB3-fv0%8IZO0wc20s(+4wP$kLBD|J7 zDvko>y+!`AasU7TA^8LW0018VEC2ui02BZe000Gz;3tk`X`X1Rsz$-QOtXFlqcphk z8fksw4TYkR;GGIL&%qNEW(vkqtZ}da8Ux6n@PL|Z4NSmNfK(!kj37En{Dy_fq91iUI{G1P_oC3mgd#5-J3RFrN~4DUKZp W2^|}!GYA_35_SkPxVgGBApkpwVP<>) literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/help.gif b/webcit/tiny_mce/themes/advanced/images/help.gif new file mode 100644 index 0000000000000000000000000000000000000000..51a1ee42073402ce787b60d151219ef7ce367615 GIT binary patch literal 295 zcmV+?0oeXWNk%w1VH5xq0Mrfu6i>3FyW3udp6K!Ub&;kbTH+f8tqUysbN$lQ^w;v!hW z!pq(wXY{hj_W%F@A^8LW0018VEC2ui02BZe000G~;3tk`X`X1Ru1KI+h83(|W>rq^ zR7RF&f!#zRnN$X{6T;$HBo?`WVllvQOo2)zp>TL49!J8HVVDe#NumhpbS0R9z=Ux~ zAoz}Cx7j!jCJ$n5dR`j5{)+~RJ$w}+Xh M?UBc{1V#pH0B+0Sa+3=zxSlW-zei2b}a=z4u4c+1=|M6#AZUG%OY1V6F^WxI(BULHv>RQKq-j zt7NjCDogO`gJ_lySi|J(sDATCUOUsGgu4xU7+ORVU(d1bXgSWKeMyMJ iI-K#xts6OY)eP+JZLJ;d&BZ;{lKm4VP7)Gium%8};6e`o literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/indent.gif b/webcit/tiny_mce/themes/advanced/images/indent.gif new file mode 100644 index 0000000000000000000000000000000000000000..acd315bb16c47c2f1679bdf440b511497f9d633b GIT binary patch literal 112 zcmV-$0FVDiNk%w1VH5xq0I~!C0s;a%TAPZd(ouxs%G2Opda$m#$^ZZWA^8LW000L7 zEC2ui02BZe0009uc)HyFFv__Ay%A`;yT;Qn5S6zzgeZ{axrjp`gM=IyhY1x0spz0f SC)ctBGpEmS`C~dK2>?4to+ugs literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/insert_button_bg.gif b/webcit/tiny_mce/themes/advanced/images/insert_button_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..69c131ce2992df593b0f4299bca3b823819bfafa GIT binary patch literal 703 zcmV;w0zmyoNk%w1VOjtc0K@s=_xSkz{{8#>`}z9$_xShz{{8*^{QUg;`}_L%`1kks_WJqx{r&y?{QUd-`}+F& z`T6KpoHUDH@N+q;kn@I-kkc5K66DuS_Z6KrDKY7RyI09*;fWvU%-gtB;niQErU0 zm*isj!{r@5Xn}%*gn@BrfQ5mHij9PfUyfe}2OBRWtq`cJq8+WUnh>9$sjjjey0H)tuAaQc9f1|Fwgs1#2OS*J)Y8+b*w@wD)!H1| z*x};Wufcfgl`*#qaLw)i7 z zoH>KW+zFGYhMgLD9zY-h0fGes24t9!p{j-j6DCB>;GpUR4OAyM=(>QbRjLa#3_uGO z>HrN@Gf0g)AZ^&Gar5dmTXybOr%e$Eh>L-6)xsGhB#tWqL*v4b9V>pE7=z`>iZc|> ztl2VQ$DKVp7OfcZVa0#}IK>dbvVaB+6ueeo*>VKfu`$SQfI)y|-o6|7?%lifYXPr$ z!>-Mob%f^%8bpZhntE^Fvsq(UkUGIr1<%7n7f-%?_yFe9t6xtZ{rU9?5{QT&pnm=7 z5zyOrUtfX!=lcb?pMU?kmmhlI6)505fd}4aAAtcXfPj1e&?n%97-p#9h8%WyVSMw& lC*p`CmT2OMD5j|5iYbQ3;)^iGD5Huk)M(?4INlfn06R=DYYYGY literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/italic.gif b/webcit/tiny_mce/themes/advanced/images/italic.gif new file mode 100644 index 0000000000000000000000000000000000000000..8bb330bd0bbf61fdb5ce86388ecbeae16465bc17 GIT binary patch literal 79 zcmZ?wbhEHb6k!lySjfl#1T8Hs)z#IEjEssuS%3n}3_2iDkURsE!kqq_+b+wcJF`jEB<5wG8q|kK!gZ`FaraVVo(3d({K5uXIu`5a6TsH a;#+zDYvZ#Uy^qv#6FHB6^105+U=0A})fi&{ literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/italic_ru.gif b/webcit/tiny_mce/themes/advanced/images/italic_ru.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2bb69a725e823b8e671f0640098c4fa80939b2f GIT binary patch literal 78 zcmZ?wbhEHb6k!lyn83i`>+8$Fz@Ye(g^_`QkwFK@28xR?Ffgh1^shYqmVdFy0;Z@$ hzTc5`u943p7fMVz+n$-ed(#4|tKWK`2QxBQ0|3J`7vul{ literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/italic_tw.gif b/webcit/tiny_mce/themes/advanced/images/italic_tw.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f6eeaa2b2111e9995584a66644dacd01ebf33e4 GIT binary patch literal 274 zcmZ?wbhEHb6k!lyI3mCxFE7u}&!3;4KY#xG^XJd|`}?n7zdk-bUSD7T{rmU(_wT=d z|9*dee|>$uy}dmH1H=FS|A8d&K=CIFBLjl~gAPaw$W8{sAA<=#Bx}ZV~!Miqw UgwLW=vT`Q(s%`JMrCAxQ0qpY;qW}N^ literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/justifyright.gif b/webcit/tiny_mce/themes/advanced/images/justifyright.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4cea971489cf2526bd45b5044e6d3435741f830 GIT binary patch literal 70 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz$Dw#zw-23e&HEgu66Wp{rQ%^ UM8cwz_vB2umD}FE7Gtmm0QJ%n+yDRo literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/link.gif b/webcit/tiny_mce/themes/advanced/images/link.gif new file mode 100644 index 0000000000000000000000000000000000000000..1accf426260eabe2f3113bab599ee26991407576 GIT binary patch literal 175 zcmV;g08sx&Nk%w1VH5xq0K)|U7cWe7jH1WO&q7mgq_fHP{QhovkA|48(BJg3yUmlM zwNqn#%+lYo$Ksc#!~g&QA^8LW000jFEC2ui02BZe000DB@X1N5y*TU5yZ;lDIEo`Y zBB>;nh!jN=5Xl<{ELAJRLi`OvPeCwL9EE`(0V^O727v-Gs1O*6fC9h;473EtqJph4 d4hzK!aZXzV=z)RofG^|2SqO#J~;-aN z((?HJ(%tf+t-`|0-T(jqA^8LW000jFEC2ui02BZe000D6@X1N5y*TTfdRNNeY>8o> z4KQZPc^-wzx@G{}*+AEJzAuCxrm-U+gcqV~fj9y(hozB$v;>w-LA7!<0TB$xmeMs$ Y1>z^>8fd%Q>Wl40uW#=7ygmW|J7pwMu>b%7 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/numlist.gif b/webcit/tiny_mce/themes/advanced/images/numlist.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2683522f4fbca7c59cdce63c7ac20211e006f49 GIT binary patch literal 111 zcmV-#0FeJjNk%w1VH5xq0I~%D0s;a&S(>c5(MoQ;hMLOK*yvJx*8l(jA^8LW000L7 zEC2ui02BZe0009tc)HyFFv>|=F}0bofd8LU3_`XHL13_jZKS5jZLdL qklCGA#V($?Eohv$~E=l}o!A^8LW000L7 zEC2ui02BZe0009sc)HyFFv__Ay%A`;yT+FxC|=hX#Xykdw-jk0V}u~DM=9B?30|g_ Q>jw#1h)7a$IY|HjJN(2Zp#T5? literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/paste.gif b/webcit/tiny_mce/themes/advanced/images/paste.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b45000a0140b8f9e04c933154c915f4322d7533 GIT binary patch literal 286 zcmV+(0pb2fNk%w1VH5xq0Mr}+LNg;3tk`X`X1Rt{>*It?NM0VL6(E zVp#@75XZ#A7$__!UdC~NbOwn>K!P;!f|hLd!H_&o5ubBI-bl_Ku=A;)xD5t@Ks^{# z+MN7ifk2od9Tj&Q6dVnQ7YGCeB^rSW3L6F-dlv)<1qEp%4jqtY1`CG`6a;PnBn}E^ kX95eB1O$f^sHqkY9smLtZoQ`}2mr#v!!X9j$Rr^EJMbBDr~m)} literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/redo.gif b/webcit/tiny_mce/themes/advanced/images/redo.gif new file mode 100644 index 0000000000000000000000000000000000000000..3af90697f0b74d0b6b07b585614a6dc67ff87f1d GIT binary patch literal 169 zcmV;a09OA;Nk%w1VH5xq0K*FaEl-kjqwqa)*O$8QUUsNeit)O{)H!9gj;!cSf8=SD z@4U+CH(H=qeZQ%{>Hq)$A^8LW000jFEC2ui02BZe000D5@X1N5y*TU5@mkK(Nsfb@ zh`52taWqPx3Yb$cP21Nib_4)BqDn)z literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/removeformat.gif b/webcit/tiny_mce/themes/advanced/images/removeformat.gif new file mode 100644 index 0000000000000000000000000000000000000000..0fa3cb79734b6ddadaded7a30dbbab4cdf7ee11a GIT binary patch literal 168 zcmV;Z09XG3d^!9RvqL!@E;^*>mjX*~6o0ZXGB7YP=m6OaAbAERg(>|jPrv0~%%#ha d_MXKm)lqT2YSDtso)?w9Z@gz^T^C`n1_07v8bkm9 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/strikethrough.gif b/webcit/tiny_mce/themes/advanced/images/strikethrough.gif new file mode 100644 index 0000000000000000000000000000000000000000..3264635918e2237257811a745f3a7e31b4369432 GIT binary patch literal 83 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*jFzw-23{>5`RB^ury^=8j) h^eUTr??>*V8C&%_D;C}?e9svC>)iK$`!yICtN}048)X0h literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/sub.gif b/webcit/tiny_mce/themes/advanced/images/sub.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d7ce30ff9147412d24dafd5ebeef67479edfa58 GIT binary patch literal 148 zcmV;F0Biq8Nk%w1VH5xq0K*9Y0|NsxQi79`kcOJVNJU7aqM%ZC%4un5GBq-gVG=Kt8X#(^7ugLSm;_S64DJ zGIDZqhMK}68X{71!TeAXEkg0%mX10Jt7ez-i0vdcUU#06Sc5 BF?Rp} literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/table.gif b/webcit/tiny_mce/themes/advanced/images/table.gif new file mode 100644 index 0000000000000000000000000000000000000000..2911830c3cd9cfb588114b40205ac316ded37716 GIT binary patch literal 287 zcmV+)0pR{eNk%w1VH5xq0Mr-&4-XG=a&q$Gl8~UV)yls!N@Iej^5Wv+vYk|?#{7~x zGT6sxlB&Y;^7(>_g2~h3+KzIM(yqDEw{v33+VWCfYLcq*{{H^LvU=X>{iCqL z#mds6qN19*_y7O^A^8LW0018VEC2ui02BZe000G?;3tk`X`X1B5)?(KB@00mJQCSN zE9B*0hM>X2$p{t>MWmN#dOXbs;)npedOjg>x~OhU6O8zQIdH3l0a%P7cOqTD;bAdt z9{7i*gQ;>J6LlpUY-9lzat#_A1ttt^9EFODjU@vQ92^px5)&Jr43#7UY!VHM8yXcA lp(dna6O$XO2?L@dmz|!U8w?Bswyp)k#Kpum$jK!k06V*Ud_@2N literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/table_delete_col.gif b/webcit/tiny_mce/themes/advanced/images/table_delete_col.gif new file mode 100644 index 0000000000000000000000000000000000000000..91f53af02aacbe33b04f782efb164560887d3bfe GIT binary patch literal 163 zcmV;U09^k^Nk%w1VH5xq0K*Fa0s;azZ{ony{xV8pTyKn*qO$Jn>V2Z^b%c^$j^>)S z^85Syjgq3Ovcf`IasU7TA^8LW000jFEC2ui02BZe000C~@X1N5y*TU5Yg=F;j03m~ z*9S7AQZ5E+6`;WiE*xJ4;S4OrVLD zq^HC5lAo_~pYs0x{r~^~A^8LW000jFEC2ui02BZe000D7@X1N5y*TU5>G|Nna879^ z3V9~RxRnWO7y-xJIHT+-78`=#Vo@mc9)Jo^FeDZl1O#9@r7(*PC}E43Bq@Wics$6M ZU5s;*CQxUf_d3_{csz*D~813(lGjTD@2z{n9^mxAJO7)Ys5OF}UnY`dU@qbmky T#N$E3kp`{PZ$%b~i~s;TfG0;) literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/table_insert_row_after.gif b/webcit/tiny_mce/themes/advanced/images/table_insert_row_after.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9c14466138007454958671320914d9a7d8a6db5 GIT binary patch literal 163 zcmV;U09^k^Nk%w1VH5xq0K*Od0s;b3hwZ}J{xV8pU2lbto3eVM^5XCQa(@5FN<(eWPqQV3Ig1XGua#QiUNM~QhRb*u41x>)iK!0SpY*0G3P}*Z=?k literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/underline_es.gif b/webcit/tiny_mce/themes/advanced/images/underline_es.gif new file mode 100644 index 0000000000000000000000000000000000000000..551d9148d302c5f58b3b20d2c6a642450889a7ef GIT binary patch literal 79 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*mGzw-23e(4zsAr}6}u9vvi dPIT?{=$xyxd19dGtWDy_KKDM~70ke34FHj_7K8u* literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/underline_fr.gif b/webcit/tiny_mce/themes/advanced/images/underline_fr.gif new file mode 100644 index 0000000000000000000000000000000000000000..551d9148d302c5f58b3b20d2c6a642450889a7ef GIT binary patch literal 79 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*mGzw-23e(4zsAr}6}u9vvi dPIT?{=$xyxd19dGtWDy_KKDM~70ke34FHj_7K8u* literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/underline_ru.gif b/webcit/tiny_mce/themes/advanced/images/underline_ru.gif new file mode 100644 index 0000000000000000000000000000000000000000..b78e2a498fb9406ef378d7c543756db552d87cba GIT binary patch literal 77 zcmZ?wbhEHb6k!lyn83i`>+8$Fz@Ye(g^_`QkwFK@28xR?Ffgg~^shYqmVYseNK2Ny ft@O9qnGc`Wq;$3l?I>E+zBOCw^tWDnRt9STq^=gR literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/underline_tw.gif b/webcit/tiny_mce/themes/advanced/images/underline_tw.gif new file mode 100644 index 0000000000000000000000000000000000000000..b715390484c95c3d3311012dd541e2b46a2f4a78 GIT binary patch literal 245 zcmZ?wbhEHb6k!lyI3mihYSpUH(9n19-U$i{mY0{GIdf*_%$df<#%XD3=g*&4Qc`;V z{=J%-nvai9ety1-i;KOzeMd*f{{8!R@7~S8!0`Y7e;|nmDE?$&WMB|w&;h9d*~!3K zl%U#|k~uHKi*I6=T}Ytl*F$OTQv9tdV6_n`zCQJ Ua|%tL!OK2l4tMK(4MhfP08!6P_5c6? literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/undo.gif b/webcit/tiny_mce/themes/advanced/images/undo.gif new file mode 100644 index 0000000000000000000000000000000000000000..520796d69defa118055d191eec33cc67f7551710 GIT binary patch literal 175 zcmV;g08sx&Nk%w1VH5xq0K*FaI$fTWtk6Go+_}Zyr?=K#e#T#ZwX4DHa-Hu#XSz{; z-OtzKVv^{Tv+z=g@&Et;A^8LW000jFEC2ui02BZe000DB@X1N5y*TU5^*Z3vJx60U zVAe<_A|#2DUTDd{g#kDRhWrRvKmt&#E(`|)VHiweM~gz>Krlp-Snncu!2ps)!r>e} d2m*##Qg9H=3xcDt9yk2euEN*a>RflBvc=VMi?aIs{*Scsi=V=*#PZ+j z{;astf|jzv(Biz+@&Et;A^8LW000jFEC2ui02BZe000Dg@X1N5y*TU5Y5N}`E=ypZ zo?#$r>naM6uI>xVQ-d%k;xmkbaDbB#Q~{NMWoQ&&iQ?mEND2guCgGWgQWh%TE;t;R zrC?g~sYnb2jsrT}bhh1bIVEWT3JYd|XL~9PPy-4A2LldqQhZ!)ii>%V0GF7VnjM^- Io)i%PJHdZeUH||9 literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/xp/tab_bg.gif b/webcit/tiny_mce/themes/advanced/images/xp/tab_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..897a01f2baea1ae5f61f642f508c27f356b35260 GIT binary patch literal 694 zcmV;n0!jTxNk%w1VUPh50K@Fo9O z^8Eb#`uh6u@89F;?DO;Q@$v2O@aq2l{`U6r`uh3s@ay>a_VV)W^z`ua^X~Tc^Y!)d z@$u}Dr?mh7{{R30A^8LV00000EC2ui0FVI^000I5U_%&PX`X1Ru59bRa4gSsZQppV z?|kpu1Vq9^EE3jl(HgoTEOh>41ejE#aB*8r|OC z;Njxq>Ry;kxw7TUm@{kM z%(=7Y&!9t#9!C>oFt6t5TbcX>0AjqCgySDAyxO3~?&AYen-@t=y!-i+yC*K5ef#nAwj*aBzkGe++J%)n_rHGi z_~ZNgpFh5P|L(<$r}sa8c>VI(gJ+NLe*5z2!~0iHAKiNQ_Sx$f58u3gI&t|H25dm_ zCkt3u2SkGGWMEZW;Gomm$lxyIF~cPBOsnm+7=M9lPo_41opD-0LNQ51q(`+gvyFkl F8UVy~RVDxc literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif b/webcit/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..9dc8abe1a4f20643367ea9548fa2d93be7f0fb0b GIT binary patch literal 428 zcmV;d0aN}*Nk%w1VJrbC0J8u9k(-?1#*X>8IO~@#-Jw(NpE2?8-}$*X|HwS%i!A@g zJpcdy{QUj^0000000000A^8LV00000EC2ui04xD0000F4(1ekyy*TU5yZ>M)j$~<` zXsV(?aUgIk&vb3yc&_h!@BhG{a7Zi;2?B+3$!t2G(5Q4uty-_xtai)odcR%(V@xia z&uH^v&2GEj@VIuMl4*~XmY0~BntqX! zo@AS$qNAjxdYzx1rmL*2u8ydwlCQM2wzqGwvV^$3zQ3WmyOhAi#>ard!)M6N&d+hm z%Vp5j*2mJ*W7pi>w%OX=;^U>@)8y#sm*(2-?(gvN^7Hid)9m*7`uqI-{{IZ{0USuM zpuvOl1R`9>u%W|(3Li?GNU@@fG5cC(oZi'; + html += '' + tinyMCE.getLang('lang_author') + ''; + html += '' + tinyMCE.getLang('lang_version') + ''; + html += ''; + html += ''; + html += ''; + + for (var i=0; i' + info.longname + ''; + else + html += '' + info.longname + ''; + + if (info.authorurl != null && info.authorurl != '') + html += '' + info.author + ''; + else + html += '' + info.author + ''; + + html += '' + info.version + ''; + html += ''; + } + + html += ''; + html += ''; + + tcont.innerHTML = html; +} + +function getPluginInfo(name) { + var fn = eval('tinyMCEPopup.windowOpener.TinyMCE_' + name + '_getInfo'); + + if (typeof(fn) != 'undefined') + return fn(); + + return { + longname : name, + authorurl : '', + infourl : '', + author : '--', + version : '--' + }; +} + +function insertHelpIFrame() { + var html = ''; + + document.getElementById('iframecontainer').innerHTML = html; + + html = ''; + html += 'Got Moxie? '; + html += 'Hosted By Sourceforge '; + html += 'Also on freshmeat '; + + document.getElementById('buttoncontainer').innerHTML = html; +} diff --git a/webcit/tiny_mce/themes/advanced/jscripts/anchor.js b/webcit/tiny_mce/themes/advanced/jscripts/anchor.js new file mode 100644 index 000000000..446a3ce2b --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/jscripts/anchor.js @@ -0,0 +1,59 @@ +var action, element; + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var anchor = tinyMCE.getParentElement(inst.getFocusElement(), "a", "name"); + var img = inst.getFocusElement(); + action = 'insert'; + + if (anchor != null) { + element = anchor; + action = "update"; + } + + if (tinyMCE.getAttrib(img, "class") == "mceItemAnchor") { + element = img; + action = "update"; + } + + if (action == "update") + document.forms[0].anchorName.value = element.nodeName == "IMG" ? element.getAttribute("title") : element.getAttribute("name"); + + document.forms[0].insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); +} + +function insertAnchor() { + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var name = document.forms[0].anchorName.value; + + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + + if (action == "update") { + if (element.nodeName == "IMG") + element.setAttribute("title", name); + else + element.setAttribute("name", name); + } else { + var rng = inst.getRng(); + + if (rng.collapse) + rng.collapse(false); + + name = name.replace(/&/g, '&'); + name = name.replace(/\"/g, '"'); + name = name.replace(//g, '&gr;'); + + html = ''; + + tinyMCEPopup.execCommand("mceInsertContent", false, html); + tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst); + } + + tinyMCEPopup.execCommand("mceEndUndoLevel"); + + tinyMCE.triggerNodeChange(); + tinyMCEPopup.close(); +} diff --git a/webcit/tiny_mce/themes/advanced/jscripts/charmap.js b/webcit/tiny_mce/themes/advanced/jscripts/charmap.js new file mode 100644 index 000000000..bc9df27b3 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/jscripts/charmap.js @@ -0,0 +1,324 @@ +function init() { + tinyMCEPopup.resizeToInnerSize(); +} + +var charmap = new Array(); + +// for mor details please see w3c.org +// now here is the complete list ;) + +charmap = [ + [' ', ' ', true, 'no-break space'], + ['&', '&', true, 'ampersand'], + ['"', '"', true, 'quotation mark'], +// finance + ['¢', '¢', true, 'cent sign'], + ['€', '€', true, 'euro sign'], + ['£', '£', true, 'pound sign'], + ['¥', '¥', true, 'yen sign'], +// signs + ['©', '©', true, 'copyright sign'], + ['®', '®', true, 'registered sign'], + ['™', '™', true, 'trade mark sign'], + ['‰', '‰', true, 'per mille sign'], + ['µ', 'µ', true, 'micro sign'], + ['·', '·', true, 'middle dot'], + ['•', '•', true, 'bullet'], + ['…', '…', true, 'three dot leader'], + ['′', '′', true, 'minutes / feet'], + ['″', '″', true, 'seconds / inches'], + ['§', '§', true, 'section sign'], + ['¶', '¶', true, 'paragraph sign'], + ['ß', 'ß', true, 'sharp s / ess-zed'], +// quotations + ['‹', '‹', true, 'single left-pointing angle quotation mark'], + ['›', '›', true, 'single right-pointing angle quotation mark'], + ['«', '«', true, 'left pointing guillemet'], + ['»', '»', true, 'right pointing guillemet'], + ['‘', '‘', true, 'left single quotation mark'], + ['’', '’', true, 'right single quotation mark'], + ['“', '“', true, 'left double quotation mark'], + ['”', '”', true, 'right double quotation mark'], + ['‚', '‚', true, 'single low-9 quotation mark'], + ['„', '„', true, 'double low-9 quotation mark'], + ['<', '<', true, 'less-than sign'], + ['>', '>', true, 'greater-than sign'], + ['≤', '≤', true, 'less-than or equal to'], + ['≥', '≥', true, 'greater-than or equal to'], + ['–', '–', true, 'en dash'], + ['—', '—', true, 'em dash'], + ['¯', '¯', true, 'macron'], + ['‾', '‾', true, 'overline'], + ['¤', '¤', true, 'currency sign'], + ['¦', '¦', true, 'broken bar'], + ['¨', '¨', true, 'diaeresis'], + ['¡', '¡', true, 'inverted exclamation mark'], + ['¿', '¿', true, 'turned question mark'], + ['ˆ', 'ˆ', true, 'circumflex accent'], + ['˜', '˜', true, 'small tilde'], + ['°', '°', true, 'degree sign'], + ['−', '−', true, 'minus sign'], + ['±', '±', true, 'plus-minus sign'], + ['÷', '÷', true, 'division sign'], + ['⁄', '⁄', true, 'fraction slash'], + ['×', '×', true, 'multiplication sign'], + ['¹', '¹', true, 'superscript one'], + ['²', '²', true, 'superscript two'], + ['³', '³', true, 'superscript three'], + ['¼', '¼', true, 'fraction one quarter'], + ['½', '½', true, 'fraction one half'], + ['¾', '¾', true, 'fraction three quarters'], +// math / logical + ['ƒ', 'ƒ', true, 'function / florin'], + ['∫', '∫', true, 'integral'], + ['∑', '∑', true, 'n-ary sumation'], + ['∞', '∞', true, 'infinity'], + ['√', '√', true, 'square root'], + ['∼', '∼', false,'similar to'], + ['≅', '≅', false,'approximately equal to'], + ['≈', '≈', true, 'almost equal to'], + ['≠', '≠', true, 'not equal to'], + ['≡', '≡', true, 'identical to'], + ['∈', '∈', false,'element of'], + ['∉', '∉', false,'not an element of'], + ['∋', '∋', false,'contains as member'], + ['∏', '∏', true, 'n-ary product'], + ['∧', '∧', false,'logical and'], + ['∨', '∨', false,'logical or'], + ['¬', '¬', true, 'not sign'], + ['∩', '∩', true, 'intersection'], + ['∪', '∪', false,'union'], + ['∂', '∂', true, 'partial differential'], + ['∀', '∀', false,'for all'], + ['∃', '∃', false,'there exists'], + ['∅', '∅', false,'diameter'], + ['∇', '∇', false,'backward difference'], + ['∗', '∗', false,'asterisk operator'], + ['∝', '∝', false,'proportional to'], + ['∠', '∠', false,'angle'], +// undefined + ['´', '´', true, 'acute accent'], + ['¸', '¸', true, 'cedilla'], + ['ª', 'ª', true, 'feminine ordinal indicator'], + ['º', 'º', true, 'masculine ordinal indicator'], + ['†', '†', true, 'dagger'], + ['‡', '‡', true, 'double dagger'], +// alphabetical special chars + ['À', 'À', true, 'A - grave'], + ['Á', 'Á', true, 'A - acute'], + ['Â', 'Â', true, 'A - circumflex'], + ['Ã', 'Ã', true, 'A - tilde'], + ['Ä', 'Ä', true, 'A - diaeresis'], + ['Å', 'Å', true, 'A - ring above'], + ['Æ', 'Æ', true, 'ligature AE'], + ['Ç', 'Ç', true, 'C - cedilla'], + ['È', 'È', true, 'E - grave'], + ['É', 'É', true, 'E - acute'], + ['Ê', 'Ê', true, 'E - circumflex'], + ['Ë', 'Ë', true, 'E - diaeresis'], + ['Ì', 'Ì', true, 'I - grave'], + ['Í', 'Í', true, 'I - acute'], + ['Î', 'Î', true, 'I - circumflex'], + ['Ï', 'Ï', true, 'I - diaeresis'], + ['Ð', 'Ð', true, 'ETH'], + ['Ñ', 'Ñ', true, 'N - tilde'], + ['Ò', 'Ò', true, 'O - grave'], + ['Ó', 'Ó', true, 'O - acute'], + ['Ô', 'Ô', true, 'O - circumflex'], + ['Õ', 'Õ', true, 'O - tilde'], + ['Ö', 'Ö', true, 'O - diaeresis'], + ['Ø', 'Ø', true, 'O - slash'], + ['Œ', 'Œ', true, 'ligature OE'], + ['Š', 'Š', true, 'S - caron'], + ['Ù', 'Ù', true, 'U - grave'], + ['Ú', 'Ú', true, 'U - acute'], + ['Û', 'Û', true, 'U - circumflex'], + ['Ü', 'Ü', true, 'U - diaeresis'], + ['Ý', 'Ý', true, 'Y - acute'], + ['Ÿ', 'Ÿ', true, 'Y - diaeresis'], + ['Þ', 'Þ', true, 'THORN'], + ['à', 'à', true, 'a - grave'], + ['á', 'á', true, 'a - acute'], + ['â', 'â', true, 'a - circumflex'], + ['ã', 'ã', true, 'a - tilde'], + ['ä', 'ä', true, 'a - diaeresis'], + ['å', 'å', true, 'a - ring above'], + ['æ', 'æ', true, 'ligature ae'], + ['ç', 'ç', true, 'c - cedilla'], + ['è', 'è', true, 'e - grave'], + ['é', 'é', true, 'e - acute'], + ['ê', 'ê', true, 'e - circumflex'], + ['ë', 'ë', true, 'e - diaeresis'], + ['ì', 'ì', true, 'i - grave'], + ['í', 'í', true, 'i - acute'], + ['î', 'î', true, 'i - circumflex'], + ['ï', 'ï', true, 'i - diaeresis'], + ['ð', 'ð', true, 'eth'], + ['ñ', 'ñ', true, 'n - tilde'], + ['ò', 'ò', true, 'o - grave'], + ['ó', 'ó', true, 'o - acute'], + ['ô', 'ô', true, 'o - circumflex'], + ['õ', 'õ', true, 'o - tilde'], + ['ö', 'ö', true, 'o - diaeresis'], + ['ø', 'ø', true, 'o slash'], + ['œ', 'œ', true, 'ligature oe'], + ['š', 'š', true, 's - caron'], + ['ù', 'ù', true, 'u - grave'], + ['ú', 'ú', true, 'u - acute'], + ['û', 'û', true, 'u - circumflex'], + ['ü', 'ü', true, 'u - diaeresis'], + ['ý', 'ý', true, 'y - acute'], + ['þ', 'þ', true, 'thorn'], + ['ÿ', 'ÿ', true, 'y - diaeresis'], +// ['Α', 'Α', true, 'Alpha'], + ['Β', 'Β', true, 'Beta'], + ['Γ', 'Γ', true, 'Gamma'], + ['Δ', 'Δ', true, 'Delta'], + ['Ε', 'Ε', true, 'Epsilon'], + ['Ζ', 'Ζ', true, 'Zeta'], + ['Η', 'Η', true, 'Eta'], + ['Θ', 'Θ', true, 'Theta'], + ['Ι', 'Ι', true, 'Iota'], + ['Κ', 'Κ', true, 'Kappa'], + ['Λ', 'Λ', true, 'Lambda'], + ['Μ', 'Μ', true, 'Mu'], + ['Ν', 'Ν', true, 'Nu'], + ['Ξ', 'Ξ', true, 'Xi'], + ['Ο', 'Ο', true, 'Omicron'], + ['Π', 'Π', true, 'Pi'], + ['Ρ', 'Ρ', true, 'Rho'], + ['Σ', 'Σ', true, 'Sigma'], + ['Τ', 'Τ', true, 'Tau'], + ['Υ', 'Υ', true, 'Upsilon'], + ['Φ', 'Φ', true, 'Phi'], + ['Χ', 'Χ', true, 'Chi'], + ['Ψ', 'Ψ', true, 'Psi'], + ['Ω', 'Ω', true, 'Omega'], + ['α', 'α', true, 'alpha'], + ['β', 'β', true, 'beta'], + ['γ', 'γ', true, 'gamma'], + ['δ', 'δ', true, 'delta'], + ['ε', 'ε', true, 'epsilon'], + ['ζ', 'ζ', true, 'zeta'], + ['η', 'η', true, 'eta'], + ['θ', 'θ', true, 'theta'], + ['ι', 'ι', true, 'iota'], + ['κ', 'κ', true, 'kappa'], + ['λ', 'λ', true, 'lambda'], + ['μ', 'μ', true, 'mu'], + ['ν', 'ν', true, 'nu'], + ['ξ', 'ξ', true, 'xi'], + ['ο', 'ο', true, 'omicron'], + ['π', 'π', true, 'pi'], + ['ρ', 'ρ', true, 'rho'], + ['ς', 'ς', true, 'final sigma'], + ['σ', 'σ', true, 'sigma'], + ['τ', 'τ', true, 'tau'], + ['υ', 'υ', true, 'upsilon'], + ['φ', 'φ', true, 'phi'], + ['χ', 'χ', true, 'chi'], + ['ψ', 'ψ', true, 'psi'], + ['ω', 'ω', true, 'omega'], +// symbols + ['ℵ', 'ℵ', false,'alef symbol'], + ['ϖ', 'ϖ', false,'pi symbol'], + ['ℜ', 'ℜ', false,'real part symbol'], + ['ϑ','ϑ', false,'theta symbol'], + ['ϒ', 'ϒ', false,'upsilon - hook symbol'], + ['℘', '℘', false,'Weierstrass p'], + ['ℑ', 'ℑ', false,'imaginary part'], +// arrows + ['←', '←', true, 'leftwards arrow'], + ['↑', '↑', true, 'upwards arrow'], + ['→', '→', true, 'rightwards arrow'], + ['↓', '↓', true, 'downwards arrow'], + ['↔', '↔', true, 'left right arrow'], + ['↵', '↵', false,'carriage return'], + ['⇐', '⇐', false,'leftwards double arrow'], + ['⇑', '⇑', false,'upwards double arrow'], + ['⇒', '⇒', false,'rightwards double arrow'], + ['⇓', '⇓', false,'downwards double arrow'], + ['⇔', '⇔', false,'left right double arrow'], + ['∴', '∴', false,'therefore'], + ['⊂', '⊂', false,'subset of'], + ['⊃', '⊃', false,'superset of'], + ['⊄', '⊄', false,'not a subset of'], + ['⊆', '⊆', false,'subset of or equal to'], + ['⊇', '⊇', false,'superset of or equal to'], + ['⊕', '⊕', false,'circled plus'], + ['⊗', '⊗', false,'circled times'], + ['⊥', '⊥', false,'perpendicular'], + ['⋅', '⋅', false,'dot operator'], + ['⌈', '⌈', false,'left ceiling'], + ['⌉', '⌉', false,'right ceiling'], + ['⌊', '⌊', false,'left floor'], + ['⌋', '⌋', false,'right floor'], + ['⟨', '〈', false,'left-pointing angle bracket'], + ['⟩', '〉', false,'right-pointing angle bracket'], + ['◊', '◊', true,'lozenge'], + ['♠', '♠', false,'black spade suit'], + ['♣', '♣', true, 'black club suit'], + ['♥', '♥', true, 'black heart suit'], + ['♦', '♦', true, 'black diamond suit'], + [' ', ' ', false,'en space'], + [' ', ' ', false,'em space'], + [' ', ' ', false,'thin space'], + ['‌', '‌', false,'zero width non-joiner'], + ['‍', '‍', false,'zero width joiner'], + ['‎', '‎', false,'left-to-right mark'], + ['‏', '‏', false,'right-to-left mark'], + ['­', '­', false,'soft hyphen'] +]; + +function renderCharMapHTML() { + var charsPerRow = 20, tdWidth=20, tdHeight=20; + var html = ''; + var cols=-1; + for (var i=0; i' + + charmap[i][1] + + ''; + if ((cols+1) % charsPerRow == 0) + html += ''; + } + } + if (cols % charsPerRow > 0) { + var padd = charsPerRow - (cols % charsPerRow); + for (var i=0; i '; + } + html += '
    '; + document.write(html); +} + +function insertChar(chr) { + tinyMCEPopup.execCommand('mceInsertContent', false, '\&#' + chr + ';'); + + // Refocus in window + if (tinyMCEPopup.isWindow) + window.focus(); +} + +function previewChar(codeA, codeB, codeN) { + var elmA = document.getElementById('codeA'); + var elmB = document.getElementById('codeB'); + var elmV = document.getElementById('codeV'); + var elmN = document.getElementById('codeN'); + + if (codeA=='#160;') { + elmV.innerHTML = '__'; + } else { + elmV.innerHTML = '&' + codeA; + } + + elmB.innerHTML = '&' + codeA; + elmA.innerHTML = '&' + codeB; + elmN.innerHTML = codeN; +} diff --git a/webcit/tiny_mce/themes/advanced/jscripts/color_picker.js b/webcit/tiny_mce/themes/advanced/jscripts/color_picker.js new file mode 100644 index 000000000..aab668e08 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/jscripts/color_picker.js @@ -0,0 +1,107 @@ +function init() { + if (tinyMCE.isMSIE) + tinyMCEPopup.resizeToInnerSize(); +} + +function selectColor() { + var color = document.getElementById("selectedColorBox").value; + + tinyMCEPopup.execCommand(tinyMCE.getWindowArg('command'), false, color); + tinyMCEPopup.close(); +} + +function showColor(color) { + document.getElementById("selectedColor").style.backgroundColor = color; + document.getElementById("selectedColorBox").value = color; +} + +var colors = new Array( + "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033", + "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099", + "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff", + "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033", + "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399", + "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff", + "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333", + "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399", + "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff", + "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633", + "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699", + "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff", + "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633", + "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999", + "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff", + "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933", + "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999", + "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff", + "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33", + "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99", + "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff", + "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33", + "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99", + "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff", + "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33", + "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99", + "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff" +); + +function convertRGBToHex(col) { + var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi"); + + var rgb = col.replace(re, "$1,$2,$3").split(','); + if (rgb.length == 3) { + r = parseInt(rgb[0]).toString(16); + g = parseInt(rgb[1]).toString(16); + b = parseInt(rgb[2]).toString(16); + + r = r.length == 1 ? '0' + r : r; + g = g.length == 1 ? '0' + g : g; + b = b.length == 1 ? '0' + b : b; + + return "#" + r + g + b; + } + + return col; +} + +function convertHexToRGB(col) { + if (col.indexOf('#') != -1) { + col = col.replace(new RegExp('[^0-9A-F]', 'gi'), ''); + + r = parseInt(col.substring(0, 2), 16); + g = parseInt(col.substring(2, 4), 16); + b = parseInt(col.substring(4, 6), 16); + + return "rgb(" + r + "," + g + "," + b + ")"; + } + + return col; +} + +function renderColorMap() { + var html = ""; + var inputColor = convertRGBToHex(tinyMCE.getWindowArg('input_color')); + + html += '' + + ''; + for (var i=0; i' + + '' + + '' + colors[i] +  ''; + if ((i+1) % 18 == 0) + html += ''; + } + html += '' + + '
    ' + + '' + + '' + + '
    ' + + '' + + '' + + '' + + '
    ' + + '' + + '
    '; + + document.write(html); +} \ No newline at end of file diff --git a/webcit/tiny_mce/themes/advanced/jscripts/image.js b/webcit/tiny_mce/themes/advanced/jscripts/image.js new file mode 100644 index 000000000..18899f3c6 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/jscripts/image.js @@ -0,0 +1,81 @@ +var url = tinyMCE.getParam("external_image_list_url"); +if (url != null) { + // Fix relative + if (url.charAt(0) != '/' && url.indexOf('://') == -1) + url = tinyMCE.documentBasePath + "/" + url; + + document.write(''); +} + +function insertImage() { + var src = document.forms[0].src.value; + var alt = document.forms[0].alt.value; + var border = document.forms[0].border.value; + var vspace = document.forms[0].vspace.value; + var hspace = document.forms[0].hspace.value; + var width = document.forms[0].width.value; + var height = document.forms[0].height.value; + var align = document.forms[0].align.options[document.forms[0].align.selectedIndex].value; + + tinyMCEPopup.restoreSelection(); + tinyMCE.insertImage(src, alt, border, hspace, vspace, width, height, align); + tinyMCEPopup.close(); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); + + var formObj = document.forms[0]; + + for (var i=0; i 0) { + for (var i=0; i'); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','theme_advanced_link'); + + var formObj = document.forms[0]; + + for (var i=0; i 0) { + var formObj = document.forms[0]; + + for (var i=0; i', 'gi'),'\n'); + html = tinyMCE.regexpReplace(html, '
    ','
    \n','gi'); + html = tinyMCE.regexpReplace(html, '\n\n','\n','gi'); + return html; +} + +function onLoadInit() { + tinyMCEPopup.resizeToInnerSize(); + + document.forms[0].htmlSource.value = fixContent(tinyMCE.getContent(tinyMCE.getWindowArg('editor_id'))); + resizeInputs(); + setWrap('off'); +} + +function setWrap(val) { + // hard soft off + document.forms[0].htmlSource.wrap = val; +} + +function toggleWordWrap(elm) { + if (elm.checked) + setWrap('soft'); + else + setWrap('off'); +} + +var wHeight=0, wWidth=0, owHeight=0, owWidth=0; + +function resizeInputs() { + if (!tinyMCE.isMSIE) { + wHeight = self.innerHeight-80; + wWidth = self.innerWidth-16; + } else { + wHeight = document.body.clientHeight - 80; + wWidth = document.body.clientWidth - 16; + } + + document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px'; + document.forms[0].htmlSource.style.width = Math.abs(wWidth) + 'px'; +} + +function renderWordWrap() { + if (tinyMCE.isMSIE) + document.write(''); +} diff --git a/webcit/tiny_mce/themes/advanced/langs/ar.js b/webcit/tiny_mce/themes/advanced/langs/ar.js new file mode 100644 index 000000000..83c70621f --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/ar.js @@ -0,0 +1,63 @@ +// Arabic lang variables + +tinyMCE.addToLang('',{ +theme_style_select : 'تصاميم', +theme_code_desc : 'شفرة المصدر', +theme_code_title : 'شفرة المصدر', +theme_code_wordwrap : 'Word wrap', +theme_sub_desc : 'منخفض', +theme_sup_desc : 'مرتفع', +theme_hr_desc : 'إدراج خط فاصل', +theme_removeformat_desc : 'إزالة التنسيقات', +theme_custom1_desc : 'Your custom description here', +insert_image_border : 'سمك الحدود', +insert_image_dimensions : 'المواصفات', +insert_image_vspace : 'تباعد عمودي', +insert_image_hspace : 'تباعد أفقي', +insert_image_align : 'محاذاة', +insert_image_align_default : 'Default', +insert_image_align_baseline : 'على السطر', +insert_image_align_top : 'أعلى', +insert_image_align_middle : 'وسط', +insert_image_align_bottom : 'أسفل', +insert_image_align_texttop : 'أعلى النص', +insert_image_align_absmiddle : 'وسط السطر', +insert_image_align_absbottom : 'أسفل النص', +insert_image_align_left : 'يسار', +insert_image_align_right : 'يمين', +theme_font_size : '-- Font size --', +theme_fontdefault : '-- Font family --', +theme_block : '-- Format --', +theme_paragraph : 'Paragraph', +theme_div : 'Div', +theme_address : 'Address', +theme_pre : 'Preformatted', +theme_h1 : 'Heading 1', +theme_h2 : 'Heading 2', +theme_h3 : 'Heading 3', +theme_h4 : 'Heading 4', +theme_h5 : 'Heading 5', +theme_h6 : 'Heading 6', +theme_colorpicker_title : 'لون النص', +theme_colorpicker_apply : 'Apply', +theme_forecolor_desc : 'لون النص', +theme_backcolor_desc : 'Select background color', +theme_charmap_title : 'إدراج رمز..ِ', +theme_charmap_desc : 'إدراج رمز..ِ', +theme_visualaid_desc : 'Toggle guidelines/invisible elements', +insert_anchor_title : 'Insert/edit anchor', +insert_anchor_name : 'Anchor name', +theme_anchor_desc : 'Insert/edit anchor', +theme_insert_link_titlefield : 'Title', +theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +theme_path : 'Path', +cut_desc : 'Cut', +copy_desc : 'Copy', +paste_desc : 'Paste', +link_list : 'Link list', +image_list : 'Image list', +browse : 'Browse', +image_props_desc : 'Image properties', +newdocument_desc : 'New document', +newdocument : 'Are you sure you want clear all contents?' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/ca.js b/webcit/tiny_mce/themes/advanced/langs/ca.js new file mode 100644 index 000000000..ebd5e15d3 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/ca.js @@ -0,0 +1,64 @@ +// CA lang variables by Marc Bria + +tinyMCE.addToLang('',{ +theme_style_select : 'Estils', +theme_code_desc : 'Editar codi HTML', +theme_code_title : 'Editor codi HTML', +theme_code_wordwrap : 'Ajustar salt de línea', +theme_sub_desc : 'Subíndex', +theme_sup_desc : 'Superíndex', +theme_hr_desc : 'Insertar un separador horitzontal', +theme_removeformat_desc : 'Eliminar format', +theme_custom1_desc : 'La teva descripció', +insert_image_border : 'Marc', +insert_image_dimensions : 'Dimensions', +insert_image_vspace : 'Espai vertical', +insert_image_hspace : 'Espai horizontal', +insert_image_align : 'Alineament', +insert_image_align_default : 'Per defecte', +insert_image_align_baseline : 'Línea base', +insert_image_align_top : 'Superior', +insert_image_align_middle : 'Centre', +insert_image_align_bottom : 'Inferior', +insert_image_align_texttop : 'Alinear text amunt', +insert_image_align_absmiddle : 'Centrat horitzontal', +insert_image_align_absbottom : 'Centrat a baix', +insert_image_align_left : 'Esquerra', +insert_image_align_right : 'Dreta', +insert_image_delta_height : 10, +theme_font_size : '-- Mida font --', +theme_fontdefault : '-- Font family --', +theme_block : '-- Format --', +theme_paragraph : 'Paragraph', +theme_div : 'Div', +theme_address : 'Address', +theme_pre : 'Preformatejat', +theme_h1 : 'Capçalera 1', +theme_h2 : 'Capçalera 2', +theme_h3 : 'Capçalera 3', +theme_h4 : 'Capçalera 4', +theme_h5 : 'Capçalera 5', +theme_h6 : 'Capçalera 6', +theme_colorpicker_title : 'Selecciona el color', +theme_colorpicker_apply : 'Apply', +theme_forecolor_desc : 'Selecciona color frontal', +theme_backcolor_desc : 'Selecciona color de fons', +theme_charmap_title : 'Selecciona un caràcter especial', +theme_charmap_desc : 'Inserta un caràcter especial', +theme_visualaid_desc : 'Alterna líniesguia/elements invisibles', +insert_anchor_title : 'Inserta/edita àncora', +insert_anchor_name : 'Nom de l´àncora', +theme_anchor_desc : 'Inserta/edita un àncora', +theme_insert_link_titlefield : 'Títlo', +theme_clipboard_msg : 'Copiar/Tallar/Enganxar no és possible amb Mozilla i Firefox.\nVols més informació sobre aquest problema de seguretat?', +theme_path : 'Camí', +cut_desc : 'Retallar', +copy_desc : 'Copiar', +paste_desc : 'Enganxar', +link_list : 'Llistat d´enllaços', +image_list : 'Llistat d´imatges', +browse : 'Explorar', +image_props_desc : 'Image properties', +newdocument_desc : 'New document', +newdocument : 'Are you sure you want clear all contents?' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/cs.js b/webcit/tiny_mce/themes/advanced/langs/cs.js new file mode 100644 index 000000000..f6a66a3a4 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/cs.js @@ -0,0 +1,70 @@ +/** + * Czech lang variables + * encoding: utf-8 + * + * $Id: cs.js,v 1.10 2005/10/18 13:55:39 spocke Exp $ + */ + + +tinyMCE.addToLang('',{ +theme_style_select : 'Styly', +theme_code_desc : 'Zobrazit HTML', +theme_code_title : 'Editace HTML', +theme_code_wordwrap : 'Bez dělení slov', +theme_sub_desc : 'Dolní index', +theme_sup_desc : 'Horní index', +theme_hr_desc : 'Vložit vodorovný oddělovač', +theme_removeformat_desc : 'ZruÅ¡it formátování', +theme_custom1_desc : 'Libovolný popisek', +insert_image_border : 'Rámeček', +insert_image_dimensions : 'Rozměry', +insert_image_vspace : 'Vertikální okraj', +insert_image_hspace : 'Horizontální okraj', +insert_image_align : 'Zarovnání', +insert_image_align_default : 'Výchozí', +insert_image_align_baseline : 'Na účaří', +insert_image_align_top : 'Nahoru', +insert_image_align_middle : 'Na střed', +insert_image_align_bottom : 'Dolů', +insert_image_align_texttop : 'Nejvyšší bod textu', +insert_image_align_absmiddle : 'Střed řádku', +insert_image_align_absbottom : 'Spodek řádku', +insert_image_align_left : 'Vlevo', +insert_image_align_right : 'Vpravo', +theme_font_size : '-- Velikost textu --', +theme_fontdefault : '-- Písmo --', +theme_block : '-- Formát --', +theme_paragraph : 'Odstavec', +theme_div : 'Div', +theme_address : 'Adresa', +theme_pre : 'Předformát', +theme_h1 : 'Nadpis 1', +theme_h2 : 'Nadpis 2', +theme_h3 : 'Nadpis 3', +theme_h4 : 'Nadpis 4', +theme_h5 : 'Nadpis 5', +theme_h6 : 'Nadpis 6', +theme_colorpicker_title : 'Výběr barvy', +theme_colorpicker_apply : 'Vybrat', +theme_forecolor_desc : 'Barva popředí', +theme_backcolor_desc : 'Barva pozadí', +theme_charmap_title : 'Výběr znaku', +theme_charmap_desc : 'Vložit znak', +theme_visualaid_desc : 'Zapnout značky/neviditelné prvky', +insert_anchor_title : 'Vložení/editace záložky', +insert_anchor_name : 'Název', +theme_anchor_desc : 'Vložit/editovat záložku', +theme_insert_link_titlefield : 'Název', +theme_clipboard_msg : 'Funkce Kopírovat/vyjmout/vložit nejsou použitelné v Mozille a Firefoxu.\nChcete více informací o tomto problému?', +theme_path : 'Cesta', +cut_desc : 'Vyjmout', +copy_desc : 'Kopírovat', +paste_desc : 'Vložit', +link_list : 'Seznam', +image_list : 'Seznam', +browse : 'Procházet', +image_props_desc : 'Vlastnosti obrázku', +newdocument_desc : 'Nový dokument', +newdocument : 'Jste si opravdu jistý(á), že chcete vymazat veÅ¡kerý obsah?' +}); + diff --git a/webcit/tiny_mce/themes/advanced/langs/cy.js b/webcit/tiny_mce/themes/advanced/langs/cy.js new file mode 100644 index 000000000..43636a3c8 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/cy.js @@ -0,0 +1,76 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +theme_style_select : '-- Arddulliau --', +theme_code_desc : 'Golygu côd HTML', +theme_code_title : 'Golygydd Côd HTML', +theme_code_wordwrap : 'Amlapio geiriau', +theme_sub_desc : 'Is-sgript', +theme_sup_desc : 'Uwch-sgript', +theme_hr_desc : 'Mewnosod llinell llorweddol', +theme_removeformat_desc : 'Diddymu fformatio', +theme_custom1_desc : 'Dy ddisgrifiad fan hyn', +insert_image_border : 'Ymyl', +insert_image_dimensions : 'Meintiau', +insert_image_vspace : 'Gofod fertigol', +insert_image_hspace : 'Gofod llorweddol', +insert_image_align : 'Unioniad', +insert_image_align_default : '-- Heb ddewis --', +insert_image_align_baseline : 'Gwaelodlin', +insert_image_align_top : 'Brig', +insert_image_align_middle : 'Canol', +insert_image_align_bottom : 'Gwaelod', +insert_image_align_texttop : 'Brig Testun', +insert_image_align_absmiddle : 'Canol Union', +insert_image_align_absbottom : 'Gwaelod Union', +insert_image_align_left : 'Chwith', +insert_image_align_right : 'Dde', +theme_font_size : '-- Maint ffont --', +theme_fontdefault : '-- Teulu ffont --', +theme_block : '-- Fformat --', +theme_paragraph : 'Paragraff', +theme_div : 'Div', +theme_address : 'Cyfeiriad', +theme_pre : 'Rhag-fformatiwyd', +theme_h1 : 'Pennawd 1', +theme_h2 : 'Pennawd 2', +theme_h3 : 'Pennawd 3', +theme_h4 : 'Pennawd 4', +theme_h5 : 'Pennawd 5', +theme_h6 : 'Pennawd 6', +theme_colorpicker_title : 'Dewis lliw', +theme_colorpicker_apply : 'Gosod', +theme_forecolor_desc : 'Dewis lliw testun', +theme_backcolor_desc : 'Dewis lliw cefndir', +theme_charmap_title : 'Dewis llythyren arbennig', +theme_charmap_desc : 'Gosod llythyren arbennig', +theme_visualaid_desc : 'Gwrthdroi canllawiau/elfennau anweledig', +insert_anchor_title : 'Mewnosod/golygu angor', +insert_anchor_name : 'Enw angor', +theme_anchor_desc : 'Mewnosod/golygu angor', +theme_insert_link_titlefield : 'Teitl', +theme_clipboard_msg : 'Dyw Copïo/Torri/Gludo ddim ar gael ym Mozilla na Firefox.\nHoffet ti ragor o wybodaeth ynghylch hyn?', +theme_path : 'Llwybr', +cut_desc : 'Torri', +copy_desc : 'Copïo', +paste_desc : 'Gludo', +link_list : 'Rhestr dolenni', +image_list : 'Rhestr delweddau', +browse : 'Pori', +image_props_desc : 'Priodoleddau delwedd', +newdocument_desc : 'Dogfen newydd', +class_name : 'Dosbarth', +newdocument : 'Wyt ti\'n sicr eisiau clirio\'r holl gynnwys?', +about_title : 'Ynglŷn â TinyMCE', +about : 'Ynglŷn â', +license : 'Trwydded', +plugins : 'Ategynnau', +plugin : 'Ategyn', +author : 'Awdur', +version : 'Fersiwn', +loaded_plugins : 'Ategynnau gweithredol', +help : 'Cymorth', +not_set : '-- Heb ddewis --', +close : 'Cau', +toolbar_focus : 'Neidio i fotymau offer - Alt+Q, Neidio i\'r golygydd - Alt+Z, Neidio i lwybr y elfen - Alt+X' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/da.js b/webcit/tiny_mce/themes/advanced/langs/da.js new file mode 100644 index 000000000..b4f8c9f2a --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/da.js @@ -0,0 +1,75 @@ +// DK lang variables contributed by Jan Moelgaard + +tinyMCE.addToLang('',{ +theme_style_select : '-- Styles --', +theme_code_desc : 'Rediger HTML kode', +theme_code_title : 'HTML Kodeeditor', +theme_code_wordwrap : 'Ombrydning', +theme_sub_desc : 'Sænket skrift', +theme_sup_desc : 'Hævet skrift', +theme_hr_desc : 'Indsæt horisontal linje', +theme_removeformat_desc : 'Fjern formatering', +theme_custom1_desc : 'Indsæt din egen beskrivelse her', +insert_image_border : 'Kant', +insert_image_dimensions : 'Dimensioner', +insert_image_vspace : 'Flyt til venstre', +insert_image_hspace : 'Flyt til højre', +insert_image_align : 'Justering', +insert_image_align_default : 'Standard', +insert_image_align_baseline : 'Bundlinje', +insert_image_align_top : 'Top', +insert_image_align_middle : 'Midt i', +insert_image_align_bottom : 'I bunden', +insert_image_align_texttop : 'I toppen af teksten', +insert_image_align_absmiddle : 'Absolut midte', +insert_image_align_absbottom : 'Absolut bund', +insert_image_align_left : 'Venstre', +insert_image_align_right : 'Højre', +theme_font_size : '-- Font størrelse --', +theme_fontdefault : '-- Font gruppe --', +theme_block : '-- Typografi --', +theme_paragraph : 'Afsnit', +theme_div : 'Div', +theme_address : 'Addresse', +theme_pre : 'Præformateret', +theme_h1 : 'Overskrift 1', +theme_h2 : 'Overskrift 2', +theme_h3 : 'Overskrift 3', +theme_h4 : 'Overskrift 4', +theme_h5 : 'Overskrift 5', +theme_h6 : 'Overskrift 6', +theme_colorpicker_title : 'Vælg en farve', +theme_colorpicker_apply : 'Anvend', +theme_forecolor_desc : 'Vælg forgrundsfarve', +theme_backcolor_desc : 'Vælg baggrundsfarve', +theme_charmap_title : 'Vælg specialkarakter', +theme_charmap_desc : 'Indsæt specialkarakter', +theme_visualaid_desc : 'Slå linjer/usynlige elementer til og fra', +insert_anchor_title : 'Indsæt/rediger bogmærke', +insert_anchor_name : 'Bogmærkets navn', +theme_anchor_desc : 'Indsæt/rediger bogmærke', +theme_insert_link_titlefield : 'Title', +theme_clipboard_msg : 'Kopier/Klip/Indsæt virker ikke i Mozilla og Firefox.\nVil du vide mere om dette?', +theme_path : 'Sti', +cut_desc : 'Klip', +copy_desc : 'Kopier', +paste_desc : 'Indsæt', +link_list : 'Linkliste', +image_list : 'Billedliste', +browse : 'Gennemse', +image_props_desc : 'Billedegenskaber', +newdocument_desc : 'Nyt dokument', +class_name : 'Klasse', +newdocument : 'Er du sikker på, at du vil slette alt?', +about_title : 'Om TinyMCE', +about : 'Om', +license : 'Licens', +plugins : 'Plugins', +plugin : 'Plugin', +author : 'Forfatter', +version : 'Version', +loaded_plugins : 'Indlæste plugins', +help : 'Hjælp', +not_set : '-- Ikke defineret --', +close : 'Luk' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/de.js b/webcit/tiny_mce/themes/advanced/langs/de.js new file mode 100644 index 000000000..b17ae130e --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/de.js @@ -0,0 +1,76 @@ +// DE lang variables + +tinyMCE.addToLang('',{ +theme_style_select : '-- CSS-Stile --', +theme_code_desc : 'HTML-Quelltext editieren', +theme_code_title : 'HTML-Quelltexteditor', +theme_code_wordwrap : 'Zeilenumbruch', +theme_sub_desc : 'Tiefergestellt', +theme_sup_desc : 'Hochgestellt', +theme_hr_desc : 'Horizontalen Balken einfügen', +theme_removeformat_desc : 'Formatierung löschen', +theme_custom1_desc : 'Eigene Beschreibung', +insert_image_border : 'Rahmen', +insert_image_dimensions : 'Größe', +insert_image_vspace : 'Vertikaler Raum', +insert_image_hspace : 'Horizontaler Raum', +insert_image_align : 'Ausrichtung', +insert_image_align_default : '-- Nicht festgelegt --', +insert_image_align_baseline : 'Grundlinie', +insert_image_align_top : 'Oben', +insert_image_align_middle : 'Mitte', +insert_image_align_bottom : 'Unten', +insert_image_align_texttop : 'Mit dem Text', +insert_image_align_absmiddle : 'Absolute mittig', +insert_image_align_absbottom : 'Absolut unten', +insert_image_align_left : 'Links', +insert_image_align_right : 'Rechts', +theme_font_size : '-- Schriftgröße --', +theme_fontdefault : '-- Schriftfamilie --', +theme_block : '-- Format --', +theme_paragraph : 'Absatz', +theme_div : 'Block', +theme_address : 'Adresse', +theme_pre : 'Vorformatiert', +theme_h1 : 'Überschrift 1', +theme_h2 : 'Überschrift 2', +theme_h3 : 'Überschrift 3', +theme_h4 : 'Überschrift 4', +theme_h5 : 'Überschrift 5', +theme_h6 : 'Überschrift 6', +theme_colorpicker_title : 'Farbe auswählen', +theme_colorpicker_apply : 'Farbe festlegen', +theme_forecolor_desc : 'Schriftfarbe auswählen', +theme_backcolor_desc : 'Hintergrundfarbe auswählen', +theme_charmap_title : 'Sonderzeichen einfügen', +theme_charmap_desc : 'Sonderzeichen einfügen', +theme_visualaid_desc : 'Hilfslinen/Unsichtbare Elemente anzeigen', +insert_anchor_title : 'Anker einfügen/bearbeiten', +insert_anchor_name : 'Ankername', +theme_anchor_desc : 'Anker einfügen/bearbeiten', +theme_insert_link_titlefield : 'Titel', +theme_clipboard_msg : 'Zwischenablagefunktionen sind in Mozilla und Firefox nicht verfügbar.\nWünschen Sie hierzu weitere Informationen?', +theme_path : 'Pfad', +cut_desc : 'Ausschneiden', +copy_desc : 'Kopieren', +paste_desc : 'Einfügen', +link_list : 'Hyperlink-Liste', +image_list : 'Bild-Liste', +browse : 'Durchsuchen', +image_props_desc : 'Bildeigenschaften', +newdocument_desc : 'Neues Dokument', +class_name : 'CSS-Klasse', +newdocument : 'Sind Sie sicher, dass Sie alle Inhalte löschen wollen?', +about_title : 'Über TinyMCE', +about : 'Über', +license : 'Lizenz', +plugins : 'Plugins', +plugin : 'Plugin', +author : 'Autor', +version : 'Version', +loaded_plugins : 'Geladene Plugins', +help : 'Hilfe', +not_set : '-- Nicht festgelegt --', +close : 'Schließen', +toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/el.js b/webcit/tiny_mce/themes/advanced/langs/el.js new file mode 100644 index 000000000..7a02eec3a --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/el.js @@ -0,0 +1,64 @@ +// Greek lang variables by Jacaranda Bill + +tinyMCE.addToLang('',{ +theme_style_select : 'ÈÝìáôá', +theme_code_desc : 'Åðåîåñãáóßá HTML êþäéêá', +theme_code_title : 'ÅðåîåñãáóôÞò HTML', +theme_code_wordwrap : 'Word wrap', +theme_sub_desc : 'Äåßêôçò', +theme_sup_desc : 'ÅêèÝôçò', +theme_hr_desc : 'ÅéóáãùãÞ ïñéæüíôéáò ãñáììÞò', +theme_removeformat_desc : 'ÁðáëïéöÞ ìïñöïðïßçóçò', +theme_custom1_desc : 'ÐåñéãñáöÞ', +insert_image_border : 'Ðåñßãñáììá', +insert_image_dimensions : 'ÄéáóôÜóåéò', +insert_image_vspace : 'ÊÜè. ðåñéèþñéï', +insert_image_hspace : 'Ïñéæ. ðåñéèþñéï', +insert_image_align : 'Óôïß÷éóç', +insert_image_align_default : 'ÐñïêáèïñéóìÝíç', +insert_image_align_baseline : 'Óå åõèõãñÜììéóç ìå ôï êåßìåíï', +insert_image_align_top : 'ÐÜíù', +insert_image_align_middle : 'Óôï êÝíôñï', +insert_image_align_bottom : 'ÊÜôù', +insert_image_align_texttop : 'Ôï êåßìåíï ðÜíù', +insert_image_align_absmiddle : 'Áðüëõôá óôï êÝíôñï', +insert_image_align_absbottom : 'Áðüëõôá êÜôù', +insert_image_align_left : 'ÁñéóôåñÜ', +insert_image_align_right : 'ÄåîéÜ', +theme_font_size : '-- Font size --', +theme_fontdefault : '-- Font family --', +theme_block : '-- Format --', +theme_paragraph : 'ÐáñÜãñáöïò', +theme_div : 'Div', +theme_address : 'Äéåýèõíóç', +theme_pre : 'Preformatted', +theme_h1 : 'Åðéêåöáëßäá 1', +theme_h2 : 'Åðéêåöáëßäá 2', +theme_h3 : 'Åðéêåöáëßäá 3', +theme_h4 : 'Åðéêåöáëßäá 4', +theme_h5 : 'Åðéêåöáëßäá 5', +theme_h6 : 'Åðéêåöáëßäá 6', +theme_colorpicker_title : '×ñþìáôá', +theme_colorpicker_apply : 'ÅöáñìïãÞ', +theme_forecolor_desc : 'ÅðéëïãÞ ÷ñþìáôïò ãñáììáôïóåéñÜò', +theme_backcolor_desc : 'Select background color', +theme_charmap_title : 'ÅðéëïãÞ åéäéêïý ÷áñáêôÞñá', +theme_charmap_desc : 'ÅéóáãùãÞ åéäéêïý ÷áñáêôÞñá', +theme_visualaid_desc : 'ÅìöÜíéóç/Áðüêñõøç ãñáììþí', +insert_anchor_title : 'ÅéóáãùãÞ/Äéüñèùóç Üãêõñáò', +insert_anchor_name : 'Ïíïìáóßá Üãêõñáò', +theme_anchor_desc : 'ÅéóáãùãÞ/Äéüñèùóç Üãêõñáò', +theme_insert_link_titlefield : 'Ôßôëïò', +theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +theme_path : 'Path', +cut_desc : 'Cut', +copy_desc : 'Copy', +paste_desc : 'Paste', +link_list : 'Link list', +image_list : 'Image list', +browse : 'Browse', +image_props_desc : 'Image properties', +newdocument_desc : 'New document', +class_name : 'ÊëÜóç', +newdocument : 'Are you sure you want clear all contents?' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/en.js b/webcit/tiny_mce/themes/advanced/langs/en.js new file mode 100644 index 000000000..ca726768a --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/en.js @@ -0,0 +1,76 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +theme_style_select : '-- Styles --', +theme_code_desc : 'Edit HTML Source', +theme_code_title : 'HTML Source Editor', +theme_code_wordwrap : 'Word wrap', +theme_sub_desc : 'Subscript', +theme_sup_desc : 'Superscript', +theme_hr_desc : 'Insert horizontal ruler', +theme_removeformat_desc : 'Remove formatting', +theme_custom1_desc : 'Your custom description here', +insert_image_border : 'Border', +insert_image_dimensions : 'Dimensions', +insert_image_vspace : 'Vertical space', +insert_image_hspace : 'Horizontal space', +insert_image_align : 'Alignment', +insert_image_align_default : '-- Not set --', +insert_image_align_baseline : 'Baseline', +insert_image_align_top : 'Top', +insert_image_align_middle : 'Middle', +insert_image_align_bottom : 'Bottom', +insert_image_align_texttop : 'TextTop', +insert_image_align_absmiddle : 'Absolute Middle', +insert_image_align_absbottom : 'Absolute Bottom', +insert_image_align_left : 'Left', +insert_image_align_right : 'Right', +theme_font_size : '-- Font size --', +theme_fontdefault : '-- Font family --', +theme_block : '-- Format --', +theme_paragraph : 'Paragraph', +theme_div : 'Div', +theme_address : 'Address', +theme_pre : 'Preformatted', +theme_h1 : 'Heading 1', +theme_h2 : 'Heading 2', +theme_h3 : 'Heading 3', +theme_h4 : 'Heading 4', +theme_h5 : 'Heading 5', +theme_h6 : 'Heading 6', +theme_colorpicker_title : 'Select a color', +theme_colorpicker_apply : 'Apply', +theme_forecolor_desc : 'Select text color', +theme_backcolor_desc : 'Select background color', +theme_charmap_title : 'Select custom character', +theme_charmap_desc : 'Insert custom character', +theme_visualaid_desc : 'Toggle guidelines/invisible elements', +insert_anchor_title : 'Insert/edit anchor', +insert_anchor_name : 'Anchor name', +theme_anchor_desc : 'Insert/edit anchor', +theme_insert_link_titlefield : 'Title', +theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +theme_path : 'Path', +cut_desc : 'Cut', +copy_desc : 'Copy', +paste_desc : 'Paste', +link_list : 'Link list', +image_list : 'Image list', +browse : 'Browse', +image_props_desc : 'Image properties', +newdocument_desc : 'New document', +class_name : 'Class', +newdocument : 'Are you sure you want clear all contents?', +about_title : 'About TinyMCE', +about : 'About', +license : 'License', +plugins : 'Plugins', +plugin : 'Plugin', +author : 'Author', +version : 'Version', +loaded_plugins : 'Loaded plugins', +help : 'Help', +not_set : '-- Not set --', +close : 'Close', +toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/es.js b/webcit/tiny_mce/themes/advanced/langs/es.js new file mode 100644 index 000000000..97dff894e --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/es.js @@ -0,0 +1,101 @@ +/** + * ES lang variables + * + * Authors : Alvaro Velasco, + * Adolfo Sanz De Diego (asanzdiego) , + * Carlos C Soto (eclipxe) + * Last Updated : October 17, 2005 + * TinyMCE Version : 2.0RC3 + */ + +tinyMCE.addToLang('',{ +theme_style_select : '-- Estilos --', +theme_code_desc : 'Editar código HTML', +theme_code_title : 'Editor código HTML', +theme_code_wordwrap : 'Ajuste de línea', +theme_sub_desc : 'Subíndice', +theme_sup_desc : 'Superíndice', +theme_hr_desc : 'Insertar una barra horizontal', +theme_removeformat_desc : 'Quitar formato', +theme_custom1_desc : 'Tu descripción aquí', +insert_image_border : 'Borde', +insert_image_dimensions : 'Dimensiones', +insert_image_vspace : 'Espacio vertical', +insert_image_hspace : 'Espacio horizontal', +insert_image_align : 'Alineación', +insert_image_align_default : '-- Por defecto --', +insert_image_align_baseline : 'Linea base', +insert_image_align_top : 'Arriba', +insert_image_align_middle : 'Centrado', +insert_image_align_bottom : 'Abajo', +insert_image_align_texttop : 'Texto arriba', +insert_image_align_absmiddle : 'Centrado total', +insert_image_align_absbottom : 'Abajo total', +insert_image_align_left : 'Izquierda', +insert_image_align_right : 'Derecha', +theme_font_size : '-- Tamaño del texto --', +theme_fontdefault : '-- Tipo de fuente --', +theme_block : '-- Formato del texto --', +theme_paragraph : 'Párrafo', +theme_div : 'Capa', +theme_address : 'Dirección', +theme_pre : 'Preformateado', +theme_h1 : 'Título 1', +theme_h2 : 'Título 2', +theme_h3 : 'Título 3', +theme_h4 : 'Título 4', +theme_h5 : 'Título 5', +theme_h6 : 'Título 6', +theme_colorpicker_title : 'Selecciona un color', +theme_colorpicker_apply : 'Aplicar', +theme_forecolor_desc : 'Selecciona un color para el texto', +theme_backcolor_desc : 'Selecciona un color de fondo', +theme_charmap_title : 'Selecciona un carácter especial', +theme_charmap_desc : 'Inserta un carácter especial', +theme_charmap_all_title : 'Todos', +theme_charmap_all_desc : 'Todos los caracteres', +theme_charmap_alpha_title : 'Alfabéticos', +theme_charmap_alpha_desc : 'Caracteres alfabéticos', +theme_charmap_arrows_title : 'Flechas', +theme_charmap_arrows_desc : 'Caracteres de flechas', +theme_charmap_greek_title : 'Griegos', +theme_charmap_greek_desc : 'Caracteres Griegos', +theme_charmap_math_title : 'Mathemáticos', +theme_charmap_math_desc : 'Caracteres mathemáticos', +theme_charmap_misc_title : 'Misceláneos', +theme_charmap_misc_desc : 'Caracteres misceláneos', +theme_charmap_money_title : 'Monedas', +theme_charmap_money_desc : 'Caracteres de monedas', +theme_charmap_quotaion_title : 'Comillas', +theme_charmap_quotaion_desc : 'Caracteres de comillas', +theme_visualaid_desc : 'Cambiar las líneas de ayuda por elementos invisibles', +insert_anchor_title : 'Insertar/editar ancla', +insert_anchor_name : 'Nombre del ancla', +theme_anchor_desc : 'Insertar/editar ancla', +theme_insert_link_titlefield : 'Título', +theme_clipboard_msg : 'No se pueden utilizar los comandos Copiar / Cortar / Pegar en Mozilla y en Firefox.\r\nUse el teclado Copiar (Ctrl+C) / Cortar (Ctrl+X) / Pegar (Ctrl+V)\r\n¿Quieres obtener más información?', +theme_path : 'Ruta', +cut_desc : 'Cortar (Ctrl+X)', +copy_desc : 'Copiar (Ctrl+C)', +paste_desc : 'Pegar (Ctrl+V)', +link_list : 'Lista de enlaces', +image_list : 'Lista de imágenes', +browse : 'Navegar', +image_props_desc : 'Propiedades de la imagen', +newdocument_desc : 'Nuevo documento', +class_name : 'Clase', +newdocument : '¿Estás seguro de que quieres borrar todo el contenido?', +about_title : 'Acerca de TinyMCE', +about : 'Acerca', +license : 'Licencia', +plugins : 'Plugins', +plugin : 'Plugin', +author : 'Autor', +version : 'Versión', +loaded_plugins : 'Plugins cargados', +help : 'Ayuda', +not_set : '-- Por defecto --', +close : 'Cerrar', +toolbar_focus : 'Saltar a la barra de herramientas - Alt+Q, Saltar al editor - Alt+Z, Saltar al elemento de la ruta - Alt+X', +theme_advanced_anchor_delta_width : 20 +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/fa.js b/webcit/tiny_mce/themes/advanced/langs/fa.js new file mode 100644 index 000000000..2e01f436d --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/fa.js @@ -0,0 +1,65 @@ +// IR lang variables +// Persian (Farsi) language pack (for IRAN) +// By: Morteza Zafari +// Lost@LostLord.com +// http://www.LostLord.com + +tinyMCE.addToLang('',{ +dir : 'rtl', +theme_style_select : '????', +theme_code_desc : '?????? ????', +theme_code_title : 'HTML ???????? ????', +theme_code_wordwrap : '?? ???', +theme_sub_desc : '??? ????', +theme_sup_desc : '???? ????', +theme_hr_desc : '??? ?? ????', +theme_removeformat_desc : '??? ?? ??? ???? ????', +theme_custom1_desc : 'Your custom description here', +insert_image_border : '?????', +insert_image_dimensions : '?????', +insert_image_vspace : '????? ?????', +insert_image_hspace : '????? ????', +insert_image_align : '??? ????????', +insert_image_align_default : '??? ???', +insert_image_align_baseline : '?? ????', +insert_image_align_top : '????', +insert_image_align_middle : '???', +insert_image_align_bottom : '?????', +insert_image_align_texttop : '????? ???', +insert_image_align_absmiddle : '??? ????', +insert_image_align_absbottom : '????? ????', +insert_image_align_left : '??', +insert_image_align_right : '????', +theme_font_size : '-- Font size --', +theme_fontdefault : '-- Font family --', +theme_block : '-- Format --', +theme_paragraph : '????????', +theme_div : 'Div', +theme_address : '????', +theme_pre : '?? ??? ????? ???', +theme_h1 : '???? 1', +theme_h2 : '???? 2', +theme_h3 : '???? 3', +theme_h4 : '???? 4', +theme_h5 : '???? 5', +theme_h6 : '???? 6', +theme_colorpicker_title : '??? ?? ?????? ????', +theme_colorpicker_apply : '?????', +theme_forecolor_desc : '?????? ??? ???', +theme_backcolor_desc : '?????? ??? ?????', +theme_charmap_title : '?????? ??????? ????', +theme_charmap_desc : '??? ??????? ????', +theme_visualaid_desc : '????? ???? ???? ? ????? ??????', +insert_anchor_title : '??? ? ?????? Anchor', +insert_anchor_name : '??? Anchor', +theme_anchor_desc : '??? ? ?????? Anchor', +theme_insert_link_titlefield : '?????', +theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +theme_path : '????', +cut_desc : 'Cut', +copy_desc : 'Copy', +paste_desc : 'Paste', +image_props_desc : 'Image properties', +newdocument_desc : 'New document', +newdocument : 'Are you sure you want clear all contents?' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/fi.js b/webcit/tiny_mce/themes/advanced/langs/fi.js new file mode 100644 index 000000000..2eaa9419c --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/fi.js @@ -0,0 +1,77 @@ +// FI lang variables by Urho Konttori from Absolutions +// Updated by Tuomo Aura from Ateco.fi + +tinyMCE.addToLang('',{ +theme_style_select : '-- Tyylit --', +theme_code_desc : 'Muokkaa HTML-lähdekoodia', +theme_code_title : 'HTML-Lähdekoodin muokkaus', +theme_code_wordwrap : 'Word wrap', +theme_sub_desc : 'Alaindeksi', +theme_sup_desc : 'Yläindeksi', +theme_hr_desc : 'Lisää vaakaviiva', +theme_removeformat_desc : 'Poista muotoilu', +theme_custom1_desc : 'Kirjoita oma selityksesi tähän', +insert_image_border : 'Reuna', +insert_image_dimensions : 'Mitat', +insert_image_vspace : 'Pystyväli', +insert_image_hspace : 'Vaakaväli', +insert_image_align : 'Asettelu', +insert_image_align_default : 'Oletus', +insert_image_align_baseline : 'Perustasoon', +insert_image_align_top : 'Ylälaitaan', +insert_image_align_middle : 'Keskelle', +insert_image_align_bottom : 'Alalaitaan', +insert_image_align_texttop : 'Tekstin ylälaitaan', +insert_image_align_absmiddle : 'Absoluuttisen keskelle', +insert_image_align_absbottom : 'Absoluuttisen alas', +insert_image_align_left : 'Vasemmalle', +insert_image_align_right : 'Oikealle', +theme_font_size : '-- Fonttikoko --', +theme_fontdefault : '-- Fontti --', +theme_block : '-- Muotoilu --', +theme_paragraph : 'Kappale', +theme_div : 'Div', +theme_address : 'Osoite', +theme_pre : 'Etukäteen muotoiltu', +theme_h1 : 'Otsikko 1', +theme_h2 : 'Otsikko 2', +theme_h3 : 'Otsikko 3', +theme_h4 : 'Otsikko 4', +theme_h5 : 'Otsikko 5', +theme_h6 : 'Otsikko 6', +theme_colorpicker_title : 'Valitse väri', +theme_colorpicker_apply : 'Aseta väri', +theme_forecolor_desc : 'Valitse fontin väri', +theme_backcolor_desc : 'Valitse taustaväri', +theme_charmap_title : 'Valitse erikoismerkki', +theme_charmap_desc : 'Lisää oma erikoismerkki', +theme_visualaid_desc : 'Näytä/piilota apuviivat', +insert_anchor_title : 'Lisää/muokkaa ankkuria', +insert_anchor_name : 'Ankkurin nimi', +theme_anchor_desc : 'Lisää/muokkaa ankkuria', +theme_insert_link_titlefield : 'Title', +theme_clipboard_msg : 'Leikkaus/Kopiointi/Liitäminen ei onnistu Mozilla eikä Firefox -selaimilla tietoturvasyistä. \n Haluatko lisätietoa aiheesta?', +theme_path : 'Polku', +cut_desc : 'Leikkaa', +copy_desc : 'Kopioi', +paste_desc : 'Liitä', +link_list : 'Linkkilista', +image_list : 'Kuvalista', +browse : 'Selaa', +image_props_desc : 'Kuvan ominaisuudet', +newdocument_desc : 'Uusi dokumentti', +class_name : 'Luokka', +newdocument : 'Oletko varma, että haluat poistaa kaiken sisällön?', +about_title : 'TinyMCE:n tiedot', +about : 'Tiedot', +license : 'Lisenssi', +plugins : 'Pluginit', +plugin : 'Plugini', +author : 'Tekijä', +version : 'Versio', +loaded_plugins : 'Ladatut pluginit', +help : 'Apua', +not_set : '-- Ei asetettu --', +close : 'Sulje', +toolbar_focus : 'Hyppää työkalupainikkeisiin - Alt+Q, Hyppää editoriin - Alt-Z, Hyppää polkuun - Alt-X' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/fr.js b/webcit/tiny_mce/themes/advanced/langs/fr.js new file mode 100644 index 000000000..49ebb75bc --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/fr.js @@ -0,0 +1,78 @@ +// Canadian French lang variables by Virtuelcom +// Modify by Laurent Dran 13-02-2006 +// Modifié par Normand Lamoureux le 2005-11-12 + +tinyMCE.addToLang('',{ +theme_style_select : '-- Style --', +theme_code_desc : 'Afficher le code source', +theme_code_title : 'Édititon du code source', +theme_code_wordwrap : 'Retour à la ligne automatique', +theme_sub_desc : 'Indice', +theme_sup_desc : 'Exposant', +theme_hr_desc : 'Insérer une règle horizontale ordinaire', +theme_removeformat_desc : 'Supprimer le formattage', +theme_custom1_desc : 'Votre description personnalisée ici', +insert_image_border : 'Bordure', +insert_image_dimensions : 'Dimensions', +insert_image_vspace : 'Espacement vertical', +insert_image_hspace : 'Espacement horizontal', +insert_image_align : 'Alignement', +insert_image_align_default : '-- Indéfini --', +insert_image_align_baseline : 'Ligne de base', +insert_image_align_top : 'Haut', +insert_image_align_middle : 'Milieu', +insert_image_align_bottom : 'Bas', +insert_image_align_texttop : 'Haut du texte', +insert_image_align_absmiddle : 'Milieu absolu', +insert_image_align_absbottom : 'Bas absolu', +insert_image_align_left : 'En flottement à gauche', +insert_image_align_right : 'En flottement à droite', +theme_font_size : '-- Taille --', +theme_fontdefault : '-- Police --', +theme_block : '-- Bloc de texte --', +theme_paragraph : 'Paragraphe', +theme_div : 'Div', +theme_address : 'Infos sur l\'auteur', +theme_pre : 'Texte préformaté', +theme_h1 : 'Titre de niveau 1', +theme_h2 : 'Titre de niveau 2', +theme_h3 : 'Titre de niveau 3', +theme_h4 : 'Titre de niveau 4', +theme_h5 : 'Titre de niveau 5', +theme_h6 : 'Titre de niveau 6', +theme_colorpicker_title : 'Choisir une couleur', +theme_colorpicker_apply : 'Appliquer', +theme_forecolor_desc : 'Couleur du texte', +theme_backcolor_desc : 'Couleur d\'arrière-plan', +theme_charmap_title : 'Sélectionner un charactère spécial', +theme_charmap_desc : 'Insérer un charactère spécial', +theme_visualaid_desc : 'Activer/Désactiver les lignes guides et les éléments invisibles', +insert_anchor_title : 'Gestionnaire d\'ancre', +insert_anchor_name : 'Nom de l\'ancre', +theme_anchor_desc : 'Insérer/Modifier une ancre', +theme_insert_link_titlefield : 'Info-bulle', +theme_clipboard_msg : 'Pour des raisons de sécurité, les fonctions « Copier », « Couper » et « Coller »\nne sont pas disponibles dans Mozilla et Firefox.\n\n\nVoulez-vous plus d\'information à ce sujet?\n', +theme_path : 'Élément(s) en cours ', +cut_desc : 'Couper', +copy_desc : 'Copier', +paste_desc : 'Coller', +link_list : 'Lien de la liste', +image_list : 'Image de la liste', +browse : 'Naviguer', +image_props_desc : 'Propriétés de l\'image', +newdocument_desc : 'Nouveau document', +class_name : 'Classe CSS', +newdocument : 'Êtes-vous sûr de vouloir supprimer tout le contenu ?', +about_title : 'À propos de TinyMCE', +about : 'À propos', +license : 'License', +plugins : 'Extensions', +plugin : 'Extension', +author : 'Auteur', +version : 'Version', +loaded_plugins : 'Extensions installées', +help : 'Aide', +not_set : '-- Indéfini --', +close : 'Fermer', +toolbar_focus : 'Atteindre la barre d\'outils (Alt+Q), Atteindre l\'éditeur (Alt-Z), Atteindre l\'élément en cours (Alt-X)' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/fr_ca.js b/webcit/tiny_mce/themes/advanced/langs/fr_ca.js new file mode 100644 index 000000000..2e15b5818 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/fr_ca.js @@ -0,0 +1,64 @@ +// Canadian French lang variables by Virtuelcom last modification: 2005-06-15 + +tinyMCE.addToLang('',{ +theme_style_select : '-- Styles --', +theme_code_desc : 'Modifier le code source HTML', +theme_code_title : 'Éditeur de code source HTML', +theme_code_wordwrap : 'Word wrap', +theme_sub_desc : 'Souscrit', +theme_sup_desc : 'Indice supérieur', +theme_hr_desc : 'Insérer un séparateur horizontal', +theme_removeformat_desc : 'Supprimer le formattage', +theme_custom1_desc : 'Votre description personnalisée ici', +insert_image_border : 'Bordure', +insert_image_dimensions : 'Dimensions', +insert_image_vspace : 'VSpace', +insert_image_hspace : 'HSpace', +insert_image_align : 'Alignement', +insert_image_align_default : 'Défaut', +insert_image_align_baseline : 'Baseline', +insert_image_align_top : 'Haut', +insert_image_align_middle : 'Milieu', +insert_image_align_bottom : 'Bas', +insert_image_align_texttop : 'TextTop', +insert_image_align_absmiddle : 'Milieu absolu', +insert_image_align_absbottom : 'Bas absolu', +insert_image_align_left : 'Gauche', +insert_image_align_right : 'Droit', +theme_font_size : 'Taille', +theme_fontdefault : '-- Police --', +theme_block : '-- Format --', +theme_paragraph : 'Paragraphe', +theme_div : 'Div', +theme_address : 'Addresse', +theme_pre : 'Préformatté', +theme_h1 : 'Entête 1', +theme_h2 : 'Entête 2', +theme_h3 : 'Entête 3', +theme_h4 : 'Entête 4', +theme_h5 : 'Entête 5', +theme_h6 : 'Entête 6', +theme_colorpicker_title : 'Choisir une couleur', +theme_colorpicker_apply : 'Appliquer', +theme_forecolor_desc : 'Choisir la couleur d\'avant plan', +theme_backcolor_desc : 'Choisir une couleur d\'arrière plan', +theme_charmap_title : 'Sélectionner un charactère spécial', +theme_charmap_desc : 'Insérer un charactère spécial', +theme_visualaid_desc : 'Active/Désactive les lignes guides et les éléments invisibles', +insert_anchor_title : 'Insérer/Modifier une ancre', +insert_anchor_name : 'Nom de l\'ancre', +theme_anchor_desc : 'Insérer / Modifier une ancre', +theme_insert_link_titlefield : 'Titre', +theme_clipboard_msg : 'Copier/Couper/Coller ne sont pas disponibles dans Mozilla et FireFox.\nDésirez-vous consulter de plus amples informations à ce sujet?', +theme_path : 'Chemin', +cut_desc : 'Couper', +copy_desc : 'Copier', +paste_desc : 'Coller', +link_list : 'Liste de liens', +image_list : 'Liste d\'images', +browse : 'Sélectionner', +image_props_desc : 'Propriétés de l\'image', +newdocument_desc : 'Nouveau Document', +class_name : 'Classe', +newdocument : 'Are you sure you want clear all contents?' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/he.js b/webcit/tiny_mce/themes/advanced/langs/he.js new file mode 100644 index 000000000..87778f3f8 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/he.js @@ -0,0 +1,76 @@ +// HE lang variables by Liron Newman, http://eesh.net + +tinyMCE.addToLang('',{ +theme_style_select : '-- ñéâðåðåú --', +theme_code_desc : 'òøåê àú ÷åã ä-HTML', +theme_code_title : 'òåøê ÷åã HTML', +theme_code_wordwrap : 'âìéùú ùåøåú', +theme_sub_desc : 'ëúá úçúé', +theme_sup_desc : 'ëúá òéìé', +theme_hr_desc : 'äëðñ ÷å àåô÷é', +theme_removeformat_desc : 'äñø òéöåá', +theme_custom1_desc : 'äúéàåø ùìê ëàï', +insert_image_border : 'âáåì', +insert_image_dimensions : 'îéîãéí', +insert_image_vspace : 'çìì àðëé', +insert_image_hspace : 'çìì àåô÷é', +insert_image_align : 'ééùåø', +insert_image_align_default : 'áøéøú îçãì', +insert_image_align_baseline : 'ì÷å äáñéñ', +insert_image_align_top : 'ìîòìä', +insert_image_align_middle : 'ìàîöò', +insert_image_align_bottom : 'ìîèä', +insert_image_align_texttop : 'ìøàù äè÷ñè', +insert_image_align_absmiddle : 'ìàîöò îåçìè', +insert_image_align_absbottom : 'ì÷öä úçúåï îåçìè', +insert_image_align_left : 'ìùîàì', +insert_image_align_right : 'ìéîéï', +theme_font_size : 'âåãì âåôï', +theme_fontdefault : '-- îùôçú âåôðéí --', +theme_block : '-- òéöåá --', +theme_paragraph : 'ôñ÷ä', +theme_div : '÷èò', +theme_address : 'ëúåáú', +theme_pre : 'îòåöá îøàù', +theme_h1 : 'ëåúøú 1', +theme_h2 : 'ëåúøú 2', +theme_h3 : 'ëåúøú 3', +theme_h4 : 'ëåúøú 4', +theme_h5 : 'ëåúøú 5', +theme_h6 : 'ëåúøú 6', +theme_colorpicker_title : 'áçø öáò', +theme_colorpicker_apply : 'äçì', +theme_forecolor_desc : 'áçø öáò è÷ñè', +theme_backcolor_desc : 'áçø öáò ø÷ò', +theme_charmap_title : 'áçø úå îéåçã', +theme_charmap_desc : 'äëðñ úå îéåçã', +theme_visualaid_desc : 'äçìó îöá ÷ååéí îðçéí/øëéáéí áìúé-ðøàéí', +insert_anchor_title : 'äëðñ/òøåê òåâï', +insert_anchor_name : 'ùí äòåâï', +theme_anchor_desc : 'äëðñ/òøåê òåâï', +theme_insert_link_titlefield : 'ëåúøú', +theme_clipboard_msg : 'ôòåìåú äòú÷ä/âæéøä/äãá÷ä àéðï ðúîëåú úçú Mozilla å-Firefox.\näàí áøöåðê ì÷áì îéãò ðåñó àåãåú ðåùà æä?', +theme_path : 'ðúéá', +cut_desc : 'âæåø', +copy_desc : 'äòú÷', +paste_desc : 'äãá÷', +link_list : 'øùéîú ÷éùåøéí', +image_list : 'øùéîú úîåðåú', +browse : 'ñééø', +image_props_desc : 'îàôééðé úîåðä', +newdocument_desc : 'îñîê çãù', +class_name : 'îçì÷ä', +newdocument : 'äàí àúä áèåç ùáøöåðê ìð÷åú àú ëì äúåëï?', +about_title : 'àåãåú TinyMCE', +about : 'àåãåú', +license : 'øéùéåï', +plugins : 'úåñôéí', +plugin : 'úåñó', +author : 'îçáø', +version : 'âøñä', +loaded_plugins : 'úåñôéí ôòéìéí', +help : 'òæøä', +not_set : '-- ìà îåâãø --', +close : 'ñâéøä', +toolbar_focus : 'òáåø àì ëôúåøé äëìéí - Alt+Q, òáåø àì äòåøê - Alt-Z, òáåø àì ðúéá òéöåá - Alt-X' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/hu.js b/webcit/tiny_mce/themes/advanced/langs/hu.js new file mode 100644 index 000000000..49535b002 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/hu.js @@ -0,0 +1,75 @@ +// HU lang variables + +tinyMCE.addToLang('',{ +theme_style_select : '-- Stílusok --', +theme_code_desc : 'HTML forrás szerkesztése', +theme_code_title : 'HTML forrás szerkesztõ', +theme_code_wordwrap : 'Sortördelés', +theme_sub_desc : 'Alsóindex', +theme_sup_desc : 'Felsõindex', +theme_hr_desc : 'Vizszíntes vonal beszúrása', +theme_removeformat_desc : 'Formázás eltávolítása', +theme_custom1_desc : 'Az egyéni leírásod jön ide', +insert_image_border : 'Keret', +insert_image_dimensions : 'Kiterjedés', +insert_image_vspace : 'Függõleges terület', +insert_image_hspace : 'Vizszintes terület', +insert_image_align : 'Elhelyezkedés', +insert_image_align_default : '-- Nincs beállítva --', +insert_image_align_baseline : 'Baseline', +insert_image_align_top : 'Felül', +insert_image_align_middle : 'Középen', +insert_image_align_bottom : 'Alul', +insert_image_align_texttop : 'Szövegfelett', +insert_image_align_absmiddle : 'Abszolút közép', +insert_image_align_absbottom : 'Abszolút alatt', +insert_image_align_left : 'Balra', +insert_image_align_right : 'Jobbra', +theme_font_size : '-- Betûméret --', +theme_fontdefault : '-- Betûcsalád --', +theme_block : '-- Formátum --', +theme_paragraph : 'Bekezdés', +theme_div : 'Div', +theme_address : 'Cím', +theme_pre : 'Elõreformázott', +theme_h1 : 'Fejléc 1', +theme_h2 : 'Fejléc 2', +theme_h3 : 'Fejléc 3', +theme_h4 : 'Fejléc 4', +theme_h5 : 'Fejléc 5', +theme_h6 : 'Fejléc 6', +theme_colorpicker_title : 'Színválasztás', +theme_colorpicker_apply : 'Alkalmaz', +theme_forecolor_desc : 'Szövegszín választás', +theme_backcolor_desc : 'Háttérszín választás', +theme_charmap_title : 'Egyéni karakter választás', +theme_charmap_desc : 'Egyéni karakter beszúrás', +theme_visualaid_desc : 'Sorjelölõk/láthatatlan elemek kapcsolása', +insert_anchor_title : 'Horgony nbeillesztése/szerkesztése', +insert_anchor_name : 'Horgony név', +theme_anchor_desc : 'Horgony nbeillesztése/szerkesztése', +theme_insert_link_titlefield : 'Cím', +theme_clipboard_msg : 'A Másolás/Kivágás/Beillesztés nem elérhetõ Mozillában and Firefox-ban.\nSzeretnél több információt errõl a problémáról?', +theme_path : 'Útvonal', +cut_desc : 'Kivágás', +copy_desc : 'Másolás', +paste_desc : 'Beillesztés', +link_list : 'Link lista', +image_list : 'Kép lista', +browse : 'Tallózás', +image_props_desc : 'Kép tulajdonságai', +newdocument_desc : 'Új dokumentum', +class_name : 'Osztály', +newdocument : 'Biztos hogy törölni akarod az összes tartalmat?', +about_title : 'TinyMCE névjegye', +about : 'Névjegy', +license : 'Licensz', +plugins : 'Bõvítmények', +plugin : 'Bõvítmény', +author : 'Szerzõ', +version : 'Verzió', +loaded_plugins : 'Betöltött bõvítmények', +help : 'Súgó', +not_set : '-- Nincs beállítva --', +close : 'Bezárás' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/is.js b/webcit/tiny_mce/themes/advanced/langs/is.js new file mode 100644 index 000000000..dc92c62fb --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/is.js @@ -0,0 +1,76 @@ +// Iceland lang variables by Johannes Birgir Jensson + +tinyMCE.addToLang('',{ +theme_style_select : '-- Stílar --', +theme_code_desc : 'Breyta HTML kóða', +theme_code_title : 'HTML kóðaritill', +theme_code_wordwrap : 'Word wrap', +theme_sub_desc : 'Lágskrift', +theme_sup_desc : 'Háskrift', +theme_hr_desc : 'Setja inn stiku', +theme_removeformat_desc : 'Fjarlægja textasnið', +theme_custom1_desc : 'Þín lýsing hér', +insert_image_border : 'Rammi', +insert_image_dimensions : 'Víddir', +insert_image_vspace : 'Bil fyrir ofan og neðan', +insert_image_hspace : 'Bil til vinstri og hægri', +insert_image_align : 'Jöfnun', +insert_image_align_default : '-- Ekki valin --', +insert_image_align_baseline : 'Sama lína', +insert_image_align_top : 'Uppi', +insert_image_align_middle : 'Miðja', +insert_image_align_bottom : 'Niðri', +insert_image_align_texttop : 'Texti efst', +insert_image_align_absmiddle : 'Alveg í miðju', +insert_image_align_absbottom : 'Alveg neðst', +insert_image_align_left : 'Vinstri', +insert_image_align_right : 'Hægri', +theme_font_size : '-- Textastærð --', +theme_fontdefault : '-- Leturgerð --', +theme_block : '-- Textasnið --', +theme_paragraph : 'Málsgrein', +theme_div : 'Div', +theme_address : 'Heimilisfang', +theme_pre : 'Ritvél', +theme_h1 : 'Haus 1', +theme_h2 : 'Haus 2', +theme_h3 : 'Haus 3', +theme_h4 : 'Haus 4', +theme_h5 : 'Haus 5', +theme_h6 : 'Haus 6', +theme_colorpicker_title : 'Veldu lit', +theme_colorpicker_apply : 'Staðfesta', +theme_forecolor_desc : 'Veldu textalit', +theme_backcolor_desc : 'Veldu bakgrunnslit', +theme_charmap_title : 'Veldu sérstaf', +theme_charmap_desc : 'Setja sérstaf inn', +theme_visualaid_desc : 'Sýna/fela töflur, akkeri og fleira', +insert_anchor_title : 'Setja inn/breyta akkeri', +insert_anchor_name : 'Heiti akkeris', +theme_anchor_desc : 'Setja inn/breyta akkeri', +theme_insert_link_titlefield : 'Titill', +theme_clipboard_msg : 'Afrita/klippa/líma er ekki virkt í Mozilla og Firefox.\nViltu fá upplýsingar um hvernig þú getur kveikt á þeim?', +theme_path : 'Slóð', +cut_desc : 'Klippa', +copy_desc : 'Afrita', +paste_desc : 'Skeyta', +link_list : 'Tenglalisti', +image_list : 'Myndalisti', +browse : 'Vafra', +image_props_desc : 'Stillingar myndar', +newdocument_desc : 'Nýtt skjal', +class_name : 'Class', +newdocument : 'Ertu viss um að þú viljir hreinsa allt burtu?', +about_title : 'Um TinyMCE', +about : 'Um', +license : 'Leyfi', +plugins : 'Viðbætur', +plugin : 'Viðbót', +author : 'Höfundur', +version : 'Útgáfa', +loaded_plugins : 'Virkar viðbætur', +help : 'Hjálp', +not_set : '-- Ekki valið --', +close : 'Loka', +toolbar_focus : 'Flýtilykill fyrir takka - Alt+Q, Flýtilykill fyrir ritil - Alt-Z, Flýtilykill fyrir slóð - Alt-X' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/it.js b/webcit/tiny_mce/themes/advanced/langs/it.js new file mode 100644 index 000000000..6ec4370e9 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/it.js @@ -0,0 +1,64 @@ +// Variabili di lingua IT - fabrix.xm@lombardiacom.it + +tinyMCE.addToLang('',{ +theme_style_select : 'Stili', +theme_code_desc : 'Edita il sorgente HTML', +theme_code_title : 'Editor Sorgente HTML', +theme_code_wordwrap : 'Word wrap', +theme_sub_desc : 'Pedice', +theme_sup_desc : 'Apice', +theme_hr_desc : 'Inserisci linea orizzontale', +theme_removeformat_desc : 'Rimuovi formattazione', +theme_custom1_desc : 'Scrivi qui la tua descrizione personalizzata', +insert_image_border : 'Bordo', +insert_image_dimensions : 'Dimensioni', +insert_image_vspace : 'Spazio verticale', +insert_image_hspace : 'Spazio orizzontale', +insert_image_align : 'Allineamento', +insert_image_align_default : 'Default', +insert_image_align_baseline : 'Baseline', +insert_image_align_top : 'Superiore', +insert_image_align_middle : 'Centrale', +insert_image_align_bottom : 'Inferiore', +insert_image_align_texttop : 'TextTop', +insert_image_align_absmiddle : 'Centro assoluto', +insert_image_align_absbottom : 'Inferiore assoluto', +insert_image_align_left : 'Sinistra', +insert_image_align_right : 'Destra', +theme_font_size : '-- Font size --', +theme_fontdefault : '-- Font family --', +theme_block : '-- Format --', +theme_paragraph : 'Paragrafo', +theme_div : 'Div', +theme_address : 'Indirizzo', +theme_pre : 'Preformattato', +theme_h1 : 'Intestazione 1', +theme_h2 : 'Intestazione 2', +theme_h3 : 'Intestazione 3', +theme_h4 : 'Intestazione 4', +theme_h5 : 'Intestazione 5', +theme_h6 : 'Intestazione 6', +theme_colorpicker_title : 'Seleziona un colore', +theme_colorpicker_apply : 'Applica', +theme_forecolor_desc : 'Seleziona il colore', +theme_backcolor_desc : 'Seleziona il colore di sfondo', +theme_charmap_title : 'Seleziona un carattere custom', +theme_charmap_desc : 'Inserisci un carattere custom', +theme_visualaid_desc : 'Mostra/nascondi linee guida e elementi invisibili', +insert_anchor_title : 'Inserisci/modifica àncora', +insert_anchor_name : 'Nome àncora', +theme_anchor_desc : 'Inserisci/modifica àncora', +theme_insert_link_titlefield : 'Titolo', +theme_clipboard_msg : 'Copia, Taglia e Incolla non sono disponibili in Mozilla e Firefox.\nVuoi maggiori dettegli su questo problema?', +theme_path : 'Percorso', +cut_desc : 'Taglia', +copy_desc : 'Copia', +paste_desc : 'Incolla', +link_list : 'Lista link', +image_list : 'Lista immagini', +browse : 'Sfoglia', +image_props_desc : 'Proprietà dell\'immagine', +newdocument_desc : 'Nuovo documento', +class_name : 'Classe', +newdocument : 'Sicuro di voler cancellare l\'intero contenuto?' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/ja.js b/webcit/tiny_mce/themes/advanced/langs/ja.js new file mode 100644 index 000000000..08d0abfc5 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/ja.js @@ -0,0 +1,62 @@ +// JP lang variables + +tinyMCE.addToLang('',{ +theme_style_select : '$B%9%?%$%k(B', +theme_paragraph : '$BJ8L.(B', +theme_address : '$B%"%I%l%9(B', +theme_pre : '$B@07A:Q$_(B', +theme_h1 : 'H1', +theme_h2 : 'H2', +theme_h3 : 'H3', +theme_h4 : 'H4', +theme_h5 : 'H5', +theme_h6 : 'H6', +theme_div : 'Div', +insert_anchor_title : '$B%"%s%+!<$NA^F~(B/$BJT=8(B', +insert_anchor_name : '$B%"%s%+!<$NL>A0(B', +theme_anchor_desc : '$B%"%s%+!<$NA^F~(B/$BJT=8(B', +theme_code_desc : 'HTML$B$ND>@\JT=8(B', +theme_code_title : 'HTML$B$NJT=8(B', +theme_code_wordwrap : 'Word wrap', +theme_hr_desc : '$B?eJ?@~(B', +theme_removeformat_desc : '$B@07A>pJs:o=|(B', +theme_visualaid_desc : '$BJd=u>pJs$N;k3P2=(B($B%H%0%k(B)', +theme_sub_desc : '$BE:;z2<(B', +theme_sup_desc : '$BE:;z>e(B', +theme_charmap_desc : '$BFCGr(B', +insert_image_hspace : '$B2#M>Gr(B', +insert_image_align : '$B0LCV9g$o$;(B', +insert_image_align_default : '$B0EL[(B', +insert_image_align_baseline : '$B4p=`@~(B', +insert_image_align_top : '$B>e(B', +insert_image_align_middle : '$BCf(B', +insert_image_align_bottom : '$B2<(B', +insert_image_align_texttop : '$BJ8;z$N>e(B', +insert_image_align_absmiddle : '$B@dBP$KCf(B', +insert_image_align_absbottom : '$B@dBP$K2<(B', +insert_image_align_left : '$B:8(B', +insert_image_align_right : '$B1&(B', +theme_font_size : '-- Font size --', +theme_fontdefault : '-- Font family --', +theme_block : '-- Format --', +theme_colorpicker_title : '$B?\'$N;XDj(B', +theme_colorpicker_apply : '$BE,MQ(B', +theme_forecolor_desc : '$BA07J?\'(B', +theme_backcolor_desc : 'Select background color', +theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +theme_path : 'Path', +cut_desc : 'Cut', +copy_desc : 'Copy', +paste_desc : 'Paste', +link_list : 'Link list', +image_list : 'Image list', +browse : 'Browse', +image_props_desc : 'Image properties', +newdocument_desc : 'New document', +class_name : '$B%/%i%9(B', +newdocument : 'Are you sure you want clear all contents?' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/ko.js b/webcit/tiny_mce/themes/advanced/langs/ko.js new file mode 100644 index 000000000..cff48a8e6 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/ko.js @@ -0,0 +1,65 @@ +// KO lang variables + +tinyMCE.addToLang('',{ +theme_style_select : '½ºÅ¸ÀÏ', +theme_code_desc : 'HTML ¼Ò½º °íÄ¡±â', +theme_code_title : 'HTML ¼Ò½º ÆíÁý±â', +theme_code_wordwrap : 'Word wrap', +theme_code_save : 'ÀúÀå', +theme_sub_desc : '¾Æ·¡Ã·ÀÚ', +theme_sup_desc : 'À§Ã·ÀÚ', +theme_hr_desc : '°¡·ÎÁÙ ³Ö±â', +theme_removeformat_desc : '¼Ó¼º Áö¿ì±â', +theme_custom1_desc : 'Your custom description here', +insert_image_border : 'Å׵θ®', +insert_image_dimensions : 'Å©±â', +insert_image_vspace : '¼¼·Î ¿©¹é', +insert_image_hspace : '°¡·Î ¿©¹é', +insert_image_align : 'Á¤·Ä', +insert_image_align_default : '±âº»°ª', +insert_image_align_baseline : 'Baseline', +insert_image_align_top : 'Top', +insert_image_align_middle : 'Middle', +insert_image_align_bottom : 'Bottom', +insert_image_align_texttop : 'TextTop', +insert_image_align_absmiddle : 'Absolute Middle', +insert_image_align_absbottom : 'Absolute Bottom', +insert_image_align_left : 'Left', +insert_image_align_right : 'Right', +theme_font_size : '-- Font size --', +theme_fontdefault : '-- Font family --', +theme_block : '-- Format --', +theme_paragraph : '´Ü¶ô', +theme_div : 'Div', +theme_address : 'ÁÖ¼Ò', +theme_pre : '¼­½Ä ÀÖÀ½', +theme_h1 : 'Á¦¸ñ 1', +theme_h2 : 'Á¦¸ñ 2', +theme_h3 : 'Á¦¸ñ 3', +theme_h4 : 'Á¦¸ñ 4', +theme_h5 : 'Á¦¸ñ 5', +theme_h6 : 'Á¦¸ñ 6', +theme_colorpicker_title : '»ö»ó ¼±ÅÃ', +theme_colorpicker_apply : 'Àû¿ë', +theme_forecolor_desc : '±ÛÀÚ »ö»ó', +theme_backcolor_desc : 'Select background color', +theme_charmap_title : 'Select custom character', +theme_charmap_desc : 'Insert custom character', +theme_visualaid_desc : 'Toggle guidelines/invisible elements', +insert_anchor_title : '¾ÞÄ¿ ³Ö±â/°íÄ¡±â', +insert_anchor_name : '¾ÞÄ¿ À̸§', +theme_anchor_desc : '¾ÞÄ¿ ³Ö±â/°íÄ¡±â', +theme_insert_link_titlefield : 'Á¦¸ñ', +theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +theme_path : 'Path', +cut_desc : 'Cut', +copy_desc : 'Copy', +paste_desc : 'Paste', +link_list : 'Link list', +image_list : 'Image list', +browse : 'Browse', +image_props_desc : 'Image properties', +newdocument_desc : 'New document', +class_name : 'Ŭ·¡½º', +newdocument : 'Are you sure you want clear all contents?' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/nb.js b/webcit/tiny_mce/themes/advanced/langs/nb.js new file mode 100644 index 000000000..9dd4311a2 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/nb.js @@ -0,0 +1,77 @@ +// nb = Norwegian (bokmål) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +theme_style_select : 'Stiler', +theme_code_desc : 'Redigere HTML Koden', +theme_code_title : 'HTML Kildekode Redigering', +theme_code_wordwrap : 'Ord deling', +theme_sub_desc : 'Nedsenket skrift', +theme_sup_desc : 'Opphøyd skrift', +theme_hr_desc : 'Sett inn horisontal linje', +theme_removeformat_desc : 'Fjern formatering', +theme_custom1_desc : 'Din spesialfunksjons beskrivelse her', +insert_image_border : 'Ramme', +insert_image_dimensions : 'Dimensjoner', +insert_image_vspace : 'Vertikalt tomrom', +insert_image_hspace : 'Horisontalt tomrom', +insert_image_align : 'Justering', +insert_image_align_default : 'Intet', +insert_image_align_baseline : 'Bunnlinjen', +insert_image_align_top : 'Lengst opp', +insert_image_align_middle : 'Midten', +insert_image_align_bottom : 'Lengst ned', +insert_image_align_texttop : 'Tekstens topp', +insert_image_align_absmiddle : 'Absolutt midten', +insert_image_align_absbottom : 'Absolutt lengst ned', +insert_image_align_left : 'Venstre', +insert_image_align_right : 'Høyre', +insert_image_delta_width : 30, +insert_image_delta_height : 10, +theme_font_size : '-- Font størrelse --', +theme_fontdefault : '-- Font familie --', +theme_block : '-- Format --', +theme_paragraph : 'Paragraf', +theme_div : 'Div', +theme_address : 'Adresse', +theme_pre : 'Pre-formattert', +theme_h1 : 'Overskrift 1', +theme_h2 : 'Overskrift 2', +theme_h3 : 'Overskrift 3', +theme_h4 : 'Overskrift 4', +theme_h5 : 'Overskrift 5', +theme_h6 : 'Overskrift 6', +theme_colorpicker_title : 'Velg en farge', +theme_colorpicker_apply : 'Bruk', +theme_forecolor_desc : 'Velg forgrunnsfarge', +theme_backcolor_desc : 'Velg bakgrunnsfarge', +theme_charmap_title : 'Velg spesialtegn', +theme_charmap_desc : 'Sett inn spesialtegn', +theme_visualaid_desc : 'Slå av/på usynlige elementer', +insert_anchor_title : 'Opprette/endre anker', +insert_anchor_name : 'Ankernavn', +theme_anchor_desc : 'Opprette/endre anker', +theme_insert_link_titlefield : 'Tittel', +theme_clipboard_msg : 'Kopier/Klipp ut/Lim inn er ikke tilgjengelig i Mozilla/Firefox.\nVil du ha mere informasjon om dette?', +theme_path : 'Søkevei', +cut_desc : 'Klipp ut', +copy_desc : 'Kopier', +paste_desc : 'Lim inn', +link_list : 'Lenke liste', +image_list : 'Bilde liste', +browse : 'Bla gjennom', +image_props_desc : 'Bilde egenskaper', +newdocument_desc : 'Nytt dokument', +class_name : 'Stil', +newdocument : 'Er du sikker på at du vil tømme hele redigeringsområdet?', +about_title : 'Om TinyMCE', +about : 'Om', +license : 'Lisens', +plugins : 'Innstikksprogrammer', +plugin : 'Innstikksprogram', +author : 'Utviklere', +version : 'Versjon', +loaded_plugins : 'Lastet innstikksprogram', +help : 'Hjelp', +not_set : '-- Ikke satt --', +close : 'Stopp' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/nl.js b/webcit/tiny_mce/themes/advanced/langs/nl.js new file mode 100644 index 000000000..bad5922db --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/nl.js @@ -0,0 +1,76 @@ +// NL lang variables + +tinyMCE.addToLang('',{ +theme_style_select : '-- Stijlen --', +theme_code_desc : 'HTML bron bewerken', +theme_code_title : 'HTML code-editor', +theme_code_wordwrap : 'Terugloop', +theme_sub_desc : 'Subscript', +theme_sup_desc : 'Superscript', +theme_hr_desc : 'Horizontale lijn invoegen', +theme_removeformat_desc : 'Opmaak verwijderen', +theme_custom1_desc : 'Tik hier een omschrijving', +insert_image_border : 'Rand', +insert_image_dimensions : 'Afmetingen', +insert_image_vspace : 'Verticale marge', +insert_image_hspace : 'Horizontale marge', +insert_image_align : 'Uitlijning', +insert_image_align_default : '-- geen --', +insert_image_align_baseline : 'Basislijn', +insert_image_align_top : 'Boven', +insert_image_align_middle : 'Midden', +insert_image_align_bottom : 'Onder', +insert_image_align_texttop : 'Bovenkant tekst', +insert_image_align_absmiddle : 'Absoluut midden', +insert_image_align_absbottom : 'Absoluut onder', +insert_image_align_left : 'Links', +insert_image_align_right : 'Rechts', +theme_font_size : '-- Lettergrootte --', +theme_fontdefault : '-- Lettertype --', +theme_block : '-- Paragraaf --', +theme_paragraph : 'Paragraaf', +theme_div : 'Blok', +theme_address : 'Adres', +theme_pre : 'Opgemaakt', +theme_h1 : 'Kop 1', +theme_h2 : 'Kop 2', +theme_h3 : 'Kop 3', +theme_h4 : 'Kop 4', +theme_h5 : 'Kop 5', +theme_h6 : 'Kop 6', +theme_colorpicker_title : 'Selecteer een kleur', +theme_colorpicker_apply : 'Toepassen', +theme_forecolor_desc : 'Een tekstkleur selecteren', +theme_backcolor_desc : 'Een achtergrondkleur selecteren', +theme_charmap_title : 'Speciale tekens invoegen', +theme_charmap_desc : 'Speciale tekens invoegen', +theme_visualaid_desc : 'Onzichtbare elementen en hulplijnen aan/uit', +insert_anchor_title : 'Bladwijzer invoegen/bewerken', +insert_anchor_name : 'Bladwijzer naam', +theme_anchor_desc : 'Bladwijzer invoegen/bewerken', +theme_insert_link_titlefield : 'titel', +theme_clipboard_msg : 'Kopiëren/Knippen/Plakken is uit veiligheidsoverwegingen niet direct beschikbaar in Mozilla en Firefox.\nWilt u meer informatie over deze kwestie?', +theme_path : 'Pad', +cut_desc : 'Knippen', +copy_desc : 'Kopiëren', +paste_desc : 'Plakken', +link_list : 'Hyperlinklijst', +image_list : 'Afbeeldinglijst', +browse : 'Bladeren', +image_props_desc : 'Eigenschappen van afbeelding', +newdocument_desc : 'Nieuw document', +class_name : 'Stijl', +newdocument : 'Weet u zeker dat u de hele inhoud wilt wissen?', +about_title : 'Over TinyMCE', +about : 'Over', +license : 'Licentie', +plugins : 'Plugins', +plugin : 'Plugin', +author : 'Author', +version : 'Versie', +loaded_plugins : 'Ingeladen plugins', +help : 'Help', +not_set : '-- geen --', +close : 'Sluiten', +toolbar_focus : 'Ga naar werkbalk knoppen - Alt+Q, Ga naar editor - Alt-Z, Ga naar pad - Alt-X' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/nn.js b/webcit/tiny_mce/themes/advanced/langs/nn.js new file mode 100644 index 000000000..720982fba --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/nn.js @@ -0,0 +1,77 @@ +// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen + +tinyMCE.addToLang('',{ +theme_style_select : 'Stiler', +theme_code_desc : 'Redigere HTML Koden', +theme_code_title : 'HTML Kildekode Redigering', +theme_code_wordwrap : 'Ord deling', +theme_sub_desc : 'Nedsenket skrift', +theme_sup_desc : 'Opphøgd skrift', +theme_hr_desc : 'Sett inn horisontal linje', +theme_removeformat_desc : 'Fjern formatering', +theme_custom1_desc : 'Din spesialfunksjons beskrivelse her', +insert_image_border : 'Ramme', +insert_image_dimensions : 'Dimensjoner', +insert_image_vspace : 'Vertikalt tomrom', +insert_image_hspace : 'Horisontalt tomrom', +insert_image_align : 'Justering', +insert_image_align_default : 'Intet', +insert_image_align_baseline : 'Bunnlinjen', +insert_image_align_top : 'Lengst opp', +insert_image_align_middle : 'Midten', +insert_image_align_bottom : 'Lengst ned', +insert_image_align_texttop : 'Tekstens topp', +insert_image_align_absmiddle : 'Absolutt midten', +insert_image_align_absbottom : 'Absolutt lengst ned', +insert_image_align_left : 'Venstre', +insert_image_align_right : 'Høgre', +insert_image_delta_width : 30, +insert_image_delta_height : 10, +theme_font_size : '-- Font størrelse --', +theme_fontdefault : '-- Font familie --', +theme_block : '-- Format --', +theme_paragraph : 'Paragraf', +theme_div : 'Div', +theme_address : 'Adresse', +theme_pre : 'Pre-formattert', +theme_h1 : 'Overskrift 1', +theme_h2 : 'Overskrift 2', +theme_h3 : 'Overskrift 3', +theme_h4 : 'Overskrift 4', +theme_h5 : 'Overskrift 5', +theme_h6 : 'Overskrift 6', +theme_colorpicker_title : 'Velg en farge', +theme_colorpicker_apply : 'Bruk', +theme_forecolor_desc : 'Velg forgrunnsfarge', +theme_backcolor_desc : 'Velg bakgrunnsfarge', +theme_charmap_title : 'Velg spesialtegn', +theme_charmap_desc : 'Sett inn spesialtegn', +theme_visualaid_desc : 'Slå av/på usynlige elementer', +insert_anchor_title : 'Opprette/endre anker', +insert_anchor_name : 'Ankernavn', +theme_anchor_desc : 'Opprette/endre anker', +theme_insert_link_titlefield : 'Tittel', +theme_clipboard_msg : 'Kopier/Klipp ut/Lim inn er ikke tilgjengelig i Mozilla/Firefox.\nVil du ha mere informasjon om dette?', +theme_path : 'Søkevei', +cut_desc : 'Klipp ut', +copy_desc : 'Kopier', +paste_desc : 'Lim inn', +link_list : 'Lenke liste', +image_list : 'Bilde liste', +browse : 'Bla gjennom', +image_props_desc : 'Bilde egenskaper', +newdocument_desc : 'Nytt dokument', +class_name : 'Stil', +newdocument : 'Er du sikker på at du vil tømme hele redigeringsområdet?', +about_title : 'Om TinyMCE', +about : 'Om', +license : 'Lisens', +plugins : 'Innstikksprogrammer', +plugin : 'Innstikksprogram', +author : 'Utviklere', +version : 'Versjon', +loaded_plugins : 'Lastet innstikksprogram', +help : 'Hjelp', +not_set : '-- Ikkje satt --', +close : 'Stopp' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/pl.js b/webcit/tiny_mce/themes/advanced/langs/pl.js new file mode 100644 index 000000000..3abfee6b6 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/pl.js @@ -0,0 +1,79 @@ +// PL lang variables +// fixed by Wooya +// http://www.mfusion.prv.pl +// fixed by lemiel 14.11.2005 + +tinyMCE.addToLang('',{ +theme_style_select : 'Styl', +theme_code_desc : 'Edytuj zródd³o html', +theme_code_title : 'Edytor zród³a html', +theme_code_wordwrap : 'Zawijanie wierszy', +theme_sub_desc : 'Nadpisywanie', +theme_sup_desc : 'Podpisywanie', +theme_hr_desc : 'Wstaw poziom± liniê', +theme_removeformat_desc : 'Usuñ formatowanie', +theme_custom1_desc : 'Wstaw w³asny opis', +insert_image_border : 'Ramka', +insert_image_dimensions : 'Wymiary', +insert_image_vspace : 'Pionowy odstêp', +insert_image_hspace : 'Poziomy odstêp', +insert_image_align : 'Otaczanie', +insert_image_align_default : 'Domy¶lne', +insert_image_align_baseline : 'Do linii bazowej', +insert_image_align_top : 'Górne', +insert_image_align_middle : '¦rodkowe', +insert_image_align_bottom : 'Dolne', +insert_image_align_texttop : 'Tekst powy¿ej', +insert_image_align_absmiddle : 'Absolutny ¶rodek', +insert_image_align_absbottom : 'Absolutny dó³', +insert_image_align_left : 'Lewe', +insert_image_align_right : 'Prawe', +theme_font_size : '-- Rozmiar czcionki --', +theme_fontdefault : '-- Rodzina czcionki --', +theme_block : '-- Format --', +theme_paragraph : '-- Paragraf --', +theme_div : 'Div', +theme_address : 'Adres', +theme_pre : 'Preformatowanie', +theme_h1 : 'Nag³ówek 1', +theme_h2 : 'Nag³ówek 2', +theme_h3 : 'Nag³ówek 3', +theme_h4 : 'Nag³ówek 4', +theme_h5 : 'Nag³ówek 5', +theme_h6 : 'Nag³ówek 6', +theme_colorpicker_title : 'Wybierz kolor', +theme_colorpicker_apply : 'Wybierz', +theme_forecolor_desc : 'Wybierz kolor tekstu', +theme_backcolor_desc : 'Wybierz kolor t³a', +theme_charmap_title : 'Wybierz znak', +theme_charmap_desc : 'Wstaw znak', +theme_visualaid_desc : 'Prze³±cz linie prowadz±ce/niewidoczne elementy', +insert_anchor_title : 'Kotwica', +insert_anchor_name : 'Nazwa kotwicy', +theme_anchor_desc : 'Wstaw/Edytuj kotwicê', +theme_insert_link_titlefield : 'Tytu³', +theme_clipboard_msg : 'Kopiuj/Edytuj/Wklej nie jest dostêpne w przegl±darkach Mozilla i Firefox.\nPotrzebujesz wiêcej informacji na ten temat?', +theme_path : 'Œcie¿ka', +cut_desc : 'Wytnij', +copy_desc : 'Kopiuj', +paste_desc : 'Wklej', +link_list : 'Lista linków', +image_list : 'Lista obrazków', +browse : 'Przegl±daj', +image_props_desc : 'W³a¶ciwosci obrazka', +newdocument_desc : 'Nowy dokument', +class_name : 'Klasa', +newdocument : 'Czy jeste¶ pewien, ¿e chcesz wyczy¶ciæ zawarto¶æ tego dokumentu?', +about_title : 'O TinyMCE ...', +about : 'O ...', +license : 'Licencja', +plugins : 'Pluginy', +plugin : 'Plugin', +author : 'Autor', +version : 'Wersja', +loaded_plugins : 'Za³adowane pluginy', +help : 'Pomoc', +not_set : '-- Nie wybrano --', +close : 'Zamknij', +toolbar_focus : 'Skocz do przycisków narzêdzi - Alt+Q, Skocz do edytora - Alt-Z, Skocz do ¶cie¿ki elementu - Alt-X' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/pt.js b/webcit/tiny_mce/themes/advanced/langs/pt.js new file mode 100644 index 000000000..3980d6c66 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/pt.js @@ -0,0 +1,65 @@ +// PT lang variables + +tinyMCE.addToLang('',{ +theme_style_select : 'Estilos CSS', +theme_code_desc : 'Editar Fonte HTML', +theme_code_title : 'Editor de fonte HTML', +theme_code_save : 'Guardar', +theme_code_wordwrap : 'Translinear palavras', +theme_sub_desc : 'Subscrito', +theme_sup_desc : 'Superscrito', +theme_hr_desc : 'Inserir linha horizontal', +theme_removeformat_desc : 'Remover formatação', +theme_custom1_desc : 'Descrição customizada aqui', +insert_image_border : 'Borda', +insert_image_dimensions : 'Dimensões', +insert_image_vspace : 'Espaçamento Vert.', +insert_image_hspace : 'Espaçamento Horiz.', +insert_image_align : 'Alinhamento', +insert_image_align_default : 'Por omissão', +insert_image_align_baseline : 'Linha de base', +insert_image_align_top : 'Topo', +insert_image_align_middle : 'Centrado', +insert_image_align_bottom : 'Fundo', +insert_image_align_texttop : 'Topo do Texto', +insert_image_align_absmiddle : 'Centrado absoluto', +insert_image_align_absbottom : 'Fundo absoluto', +insert_image_align_left : 'Esquerda', +insert_image_align_right : 'Direita', +theme_font_size : '-- Font size --', +theme_fontdefault : '-- Font family --', +theme_block : '-- Format --', +theme_paragraph : 'Parágrafo', +theme_div : 'Bloco HTML', +theme_address : 'Morada', +theme_pre : 'Pré formatado', +theme_h1 : 'Título 1', +theme_h2 : 'Título 2', +theme_h3 : 'Título 3', +theme_h4 : 'Título 4', +theme_h5 : 'Título 5', +theme_h6 : 'Título 6', +theme_colorpicker_title : 'Seleccione uma côr', +theme_colorpicker_apply : 'Aplicar', +theme_forecolor_desc : 'Seleccione côr da frente', +theme_backcolor_desc : 'Select background color', +theme_charmap_title : 'Seleccione símbolo customizado', +theme_charmap_desc : 'Inserir símbolo customizado', +theme_visualaid_desc : 'Ligar/Desligar guias/elementos invisíveis', +insert_anchor_title : 'Inserir/editar âncora', +insert_anchor_name : 'Nome da âncora', +theme_anchor_desc : 'Inserir/editar âncora', +theme_insert_link_titlefield : 'Título', +theme_clipboard_msg : 'Copiar/Cortar/Colar não está disponível em Mozilla e Firefox.\nPretende obter mais informação acerca deste assunto?', +theme_path : 'Path', +cut_desc : 'Cortar', +copy_desc : 'Copiar', +paste_desc : 'Colar', +link_list : 'Link list', +image_list : 'Image list', +browse : 'Browse', +image_props_desc : 'Image properties', +newdocument_desc : 'New document', +class_name : 'Classe de CSS', +newdocument : 'Are you sure you want clear all contents?' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/pt_br.js b/webcit/tiny_mce/themes/advanced/langs/pt_br.js new file mode 100644 index 000000000..5f3786423 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/pt_br.js @@ -0,0 +1,115 @@ +/** + * pt_br lang variables + * Brazilian Portuguese + * + * Authors : ???? + * Revision and modifications: + * Marcio Barbosa (mpg) + * Last Updated : November 26, 2005 + * TinyMCE Version : 2.0RC4 + */ +tinyMCE.addToLang('',{ +theme_style_select : 'Estilos', +theme_code_desc : 'Editar Código HTML', +theme_code_title : 'Editor de Código HTML', +theme_code_wordwrap : 'Quebrar Linhas', +theme_sub_desc : 'Subscrito', +theme_sup_desc : 'Subrescrito', +theme_hr_desc : 'Inserir linha horizontal', +theme_removeformat_desc : 'Remover formatação', +theme_custom1_desc : 'Sua descrição personalizada aqui', +insert_image_border : 'Borda', +insert_image_dimensions : 'Dimensões', +insert_image_vspace : 'Espaço Vertical', +insert_image_hspace : 'Espaço Horizontal', +insert_image_align : 'Alinhamento', +insert_image_align_default : 'Padrão', +insert_image_align_baseline : 'Linha base', +insert_image_align_top : 'Topo', +insert_image_align_middle : 'Centro', +insert_image_align_bottom : 'Fundo', +insert_image_align_texttop : 'Texto ao Topo', +insert_image_align_absmiddle : 'Centro Absoluto', +insert_image_align_absbottom : 'Fundo Absoluto', +insert_image_align_left : 'Esquerda', +insert_image_align_right : 'Direita', +theme_font_size : '-- Corpo --', +theme_fontdefault : '-- Tipo de Fonte --', +theme_block : '-- Formato --', +theme_paragraph : 'Parágrafo', +theme_div : 'Div', +theme_address : 'Endereço', +theme_pre : 'Pré-formatado', +theme_h1 : 'Cabeçalho 1', +theme_h2 : 'Cabeçalho 2', +theme_h3 : 'Cabeçalho 3', +theme_h4 : 'Cabeçalho 4', +theme_h5 : 'Cabeçalho 5', +theme_h6 : 'Cabeçalho 6', +theme_colorpicker_title : 'Selecionar côr', +theme_colorpicker_apply : 'Aplicar', +theme_forecolor_desc : 'Selecionar côr do texto', +theme_backcolor_desc : 'Selecionar côr de fundo', +theme_charmap_title : 'Selecionar caracter especial', +theme_charmap_desc : 'Inserir caracter especial', +theme_charmap_alpha_desc : 'Caracteres alfabéticos', +theme_charmap_arrows_title : 'Flechas', +theme_charmap_arrows_desc : 'Caracteres de flechas', +theme_charmap_greek_title : 'Gregos', +theme_charmap_greek_desc : 'Caracteres Gregos', +theme_charmap_math_title : 'Mathematicos', +theme_charmap_math_desc : 'Caracteres mathematicos', +theme_charmap_misc_title : 'Diversos', +theme_charmap_misc_desc : 'Caracteres diversos', +theme_charmap_money_title : 'Moedas', +theme_charmap_money_desc : 'Caracteres de moedas', +theme_charmap_quotaion_title : 'Apóstrofes', +theme_charmap_quotaion_desc : 'Caracteres de Apóstrofe', +theme_visualaid_desc : 'Trocar as linhas de ajuda por elementos invisíveis', +insert_anchor_title : 'Inserir/editar âncora', +insert_anchor_name : 'Nome da âncora', +theme_anchor_desc : 'Inserir/editar âncora', +theme_insert_link_titlefield : 'Título', +theme_clipboard_msg : 'Não se pode utiliza os comando de Copiar / Cortar / Colar no Mozilla e Firefox.\r\nUse o teclado para Copiar (Ctrl+C) / Cortar (Ctrl+X) / Colar (Ctrl+V)\r\nQuer obter mais informação?', +theme_path : 'Rota', +cut_desc : 'Cortar (Ctrl+X)', +copy_desc : 'Copiar (Ctrl+C)', +paste_desc : 'Colar (Ctrl+V)', +link_list : 'Lista de links', +image_list : 'Lista de imagens', +browse : 'Navegar', +image_props_desc : 'Propriedades da imagem', +newdocument_desc : 'Novo documento', +class_name : 'Classe', +newdocument : 'Tem certesa que deseja apagar todo o conteúdo?', +about_title : 'Sobre o TinyMCE', +about : 'Sobre', +license : 'Licença', +plugins : 'Plugins', +plugin : 'Plugin', +author : 'Autor', +version : 'Versão', +loaded_plugins : 'Plugins carregados', +help : 'Ajuda', +not_set : '-- Por padrão --', +close : 'Fechar', +toolbar_focus : 'Ir para a barra de ferramentas - Alt+Q, Ir para o editor - Alt+Z, Ir para o elemento de destino - Alt+X', +theme_visualaid_desc : 'Tornar linhas visíveis/invisíveis', +insert_anchor_title : 'Inserir/editar âncora', +insert_anchor_name : 'Nome da âncora', +theme_anchor_desc : 'Inserir/editar âncora', +theme_insert_link_titlefield : 'Título', +theme_clipboard_msg : 'Copiar/Recortar/Colar não é permitido no Mozilla e Firefox.\nQuer mais informações sobre isso?', +theme_path : 'Caminho', +cut_desc : 'Recortar', +copy_desc : 'Copiar', +paste_desc : 'Colar', +link_list : 'Lista de Links', +image_list : 'Lista de Imagens', +browse : 'Navegar', +image_props_desc : 'Propriedades da Imagem', +newdocument_desc : 'Novo Documento', +class_name : 'Classe', +newdocument : 'Tem certeza que deseja limpar todo o conteúdo?', +theme_advanced_anchor_delta_width : 20 +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/readme.txt b/webcit/tiny_mce/themes/advanced/langs/readme.txt new file mode 100644 index 000000000..ef48d2ba4 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/readme.txt @@ -0,0 +1,4 @@ +Theme specific language packs. + +The language pack codes are based on ISO-639-2 +http://www.loc.gov/standards/iso639-2/englangn.html diff --git a/webcit/tiny_mce/themes/advanced/langs/ru.js b/webcit/tiny_mce/themes/advanced/langs/ru.js new file mode 100644 index 000000000..c042cc450 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/ru.js @@ -0,0 +1,76 @@ +// Russian lang variables cp1251 + +tinyMCE.addToLang('',{ +theme_style_select : '-- Ñòèëè --', +theme_code_desc : 'Ðåäàêòèðîâàòü HTML êîäû', +theme_code_title : 'Ðåäàêòîð HTML êîäîâ', +theme_code_wordwrap : 'Ïåðåíîñ ïî ñëîâàì', +theme_sub_desc : 'Íèæíèé èíäåêñ', +theme_sup_desc : 'Âåðõíèé èíäåêñ', +theme_hr_desc : 'Âñòàâèòü ãîðèçîíòàëüíûé ðàçäåëèòåëü', +theme_removeformat_desc : 'Óáðàòü ôîðìàòèðîâàíèå', +theme_custom1_desc : 'Âàøå ïðîèçâîëüíîå îïèñàíèå', +insert_image_border : 'Ðàìêà', +insert_image_dimensions : 'Ðàçìåðû', +insert_image_vspace : 'Âåðòèêàëüíûé îòñòóï', +insert_image_hspace : 'Ãîðèçîíòàëüíûé îòñòóï', +insert_image_align : 'Âûðàâíèâàíèå', +insert_image_align_default : '-- Íå çàäàíî --', +insert_image_align_baseline : 'Ïî áàçîâîé ëèíèè', +insert_image_align_top : 'Ïî âåðõó', +insert_image_align_middle : 'Ïîñðåäèíå', +insert_image_align_bottom : 'Ïî íèçó', +insert_image_align_texttop : 'Ïî âåðõó òåêñòà', +insert_image_align_absmiddle : 'Àáñîëþòíî ïîñðåäèíå', +insert_image_align_absbottom : 'Àáñîëþòíî ñâåðõó', +insert_image_align_left : 'Âëåâî', +insert_image_align_right : 'Âïðàâî', +theme_font_size : '-- Ðàçìåð øðèôòà --', +theme_fontdefault : '-- Ñåìåéñòâî øðèôòîâ --', +theme_block : '-- Ôîðìàò --', +theme_paragraph : 'Àáçàö', +theme_div : 'Div', +theme_address : 'Ñòèëü àäðåñà', +theme_pre : ':`Ïðåäâàðèòåëüíî ôîðìàòèðîâàííûé', +theme_h1 : 'Çàãîëîâîê 1', +theme_h2 : 'Çàãîëîâîê 2', +theme_h3 : 'Çàãîëîâîê 3', +theme_h4 : 'Çàãîëîâîê 4', +theme_h5 : 'Çàãîëîâîê 5', +theme_h6 : 'Çàãîëîâîê 6', +theme_colorpicker_title : 'Âûáðàòü öâåò', +theme_colorpicker_apply : 'Ïðèìåíèòü', +theme_forecolor_desc : 'Âûáðàòü öâåò òåêñòà', +theme_backcolor_desc : 'Âûáðàòü öâåò ôîíà', +theme_charmap_title : 'Âûáîð ïðîèçâîëüíîãî ñèìâîëà', +theme_charmap_desc : 'Âñòàâèòü ïðîèçâîëüíûé ñèìâîë', +theme_visualaid_desc : 'Ïîêàçàòü ãðàíèöû ñêðûòûõ ýëåìåíòîâ', +insert_anchor_title : 'Âñòàâèòü/ðåäàêòèðîâàòü ÿêîðü', +insert_anchor_name : 'Èìÿ ÿêîðÿ', +theme_anchor_desc : 'Âñòàâèòü/ðåäàêòèðîâàòü ÿêîðü', +theme_insert_link_titlefield : 'Çàãîëîâîê', +theme_clipboard_msg : 'Êîïèðîâàòü/Âûðåçàòü/Âñòàâèòü íåäîñòóïíû äëÿ Mozilla è Firefox.\nÕîòèòå óçíàòü îá ýòîì ïîäðîáíåå?', +theme_path : 'Ïóòü', +cut_desc : 'Âûðåçàòü', +copy_desc : 'Êîïèðîâàòü', +paste_desc : 'Âñòàâèòü', +link_list : 'Ïåðå÷àíü ññûëîê', +image_list : 'Ïåðå÷åíü êàðòèíîê', +browse : 'Ïîäîáðàòü', +image_props_desc : 'Ñâîéñòâà êàðòèíêè', +newdocument_desc : 'Íîâûé äîêóìåíò', +class_name : 'Êëàññ', +newdocument : 'Âû óâåðåíû, ÷òî õîòèòå î÷èñòèòü âñ¸ ñîäåðæèìîå?', +about_title : 'Î TinyMCE', +about : 'Î TinyMCE', +license : 'Ëèöåíçèÿ', +plugins : 'Ïëàãèíû', +plugin : 'Ïëàãèí', +author : 'Àâòîð', +version : 'Âåðñèÿ', +loaded_plugins : 'Çàãðóæåííûå ïëàãèíû', +help : 'Ïîìîùü', +not_set : '-- íå óñòàíîâëåíî --', +close : 'Çàêðûòü', +toolbar_focus : 'Ïåðåìåñòèòü ôîêóñ íà ïàíåëü èíñòðóìåíòîâ - Alt+Q, Ïåðåìåñòèòü ôîêóñ â ðåäàêòîð - Alt-Z, Ïåðåìåñòèòü ôîêóñ íà ýëåìåíò ïóòè - Alt-X' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/ru_KOI8-R.js b/webcit/tiny_mce/themes/advanced/langs/ru_KOI8-R.js new file mode 100644 index 000000000..3149c7ced --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/ru_KOI8-R.js @@ -0,0 +1,76 @@ +// Russian lang variables KOI8-R + +tinyMCE.addToLang('',{ +theme_style_select : '-- óÔÉÌÉ --', +theme_code_desc : 'òÅÄÁËÔÉÒÏ×ÁÔØ HTML ËÏÄÙ', +theme_code_title : 'òÅÄÁËÔÏÒ HTML ËÏÄÏ×', +theme_code_wordwrap : 'ðÅÒÅÎÏÓ ÐÏ ÓÌÏ×ÁÍ', +theme_sub_desc : 'îÉÖÎÉÊ ÉÎÄÅËÓ', +theme_sup_desc : '÷ÅÒÈÎÉÊ ÉÎÄÅËÓ', +theme_hr_desc : '÷ÓÔÁ×ÉÔØ ÇÏÒÉÚÏÎÔÁÌØÎÙÊ ÒÁÚÄÅÌÉÔÅÌØ', +theme_removeformat_desc : 'õÂÒÁÔØ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÅ', +theme_custom1_desc : '÷ÁÛÅ ÐÒÏÉÚ×ÏÌØÎÏÅ ÏÐÉÓÁÎÉÅ', +insert_image_border : 'òÁÍËÁ', +insert_image_dimensions : 'òÁÚÍÅÒÙ', +insert_image_vspace : '÷ÅÒÔÉËÁÌØÎÙÊ ÏÔÓÔÕÐ', +insert_image_hspace : 'çÏÒÉÚÏÎÔÁÌØÎÙÊ ÏÔÓÔÕÐ', +insert_image_align : '÷ÙÒÁ×ÎÉ×ÁÎÉÅ', +insert_image_align_default : '-- îÅ ÚÁÄÁÎÏ --', +insert_image_align_baseline : 'ðÏ ÂÁÚÏ×ÏÊ ÌÉÎÉÉ', +insert_image_align_top : 'ðÏ ×ÅÒÈÕ', +insert_image_align_middle : 'ðÏÓÒÅÄÉÎÅ', +insert_image_align_bottom : 'ðÏ ÎÉÚÕ', +insert_image_align_texttop : 'ðÏ ×ÅÒÈÕ ÔÅËÓÔÁ', +insert_image_align_absmiddle : 'áÂÓÏÌÀÔÎÏ ÐÏÓÒÅÄÉÎÅ', +insert_image_align_absbottom : 'áÂÓÏÌÀÔÎÏ Ó×ÅÒÈÕ', +insert_image_align_left : '÷ÌÅ×Ï', +insert_image_align_right : '÷ÐÒÁ×Ï', +theme_font_size : '-- òÁÚÍÅÒ ÛÒÉÆÔÁ --', +theme_fontdefault : '-- óÅÍÅÊÓÔ×Ï ÛÒÉÆÔÏ× --', +theme_block : '-- æÏÒÍÁÔ --', +theme_paragraph : 'áÂÚÁÃ', +theme_div : 'Div', +theme_address : 'óÔÉÌØ ÁÄÒÅÓÁ', +theme_pre : ':`ðÒÅÄ×ÁÒÉÔÅÌØÎÏ ÆÏÒÍÁÔÉÒÏ×ÁÎÎÙÊ', +theme_h1 : 'úÁÇÏÌÏ×ÏË 1', +theme_h2 : 'úÁÇÏÌÏ×ÏË 2', +theme_h3 : 'úÁÇÏÌÏ×ÏË 3', +theme_h4 : 'úÁÇÏÌÏ×ÏË 4', +theme_h5 : 'úÁÇÏÌÏ×ÏË 5', +theme_h6 : 'úÁÇÏÌÏ×ÏË 6', +theme_colorpicker_title : '÷ÙÂÒÁÔØ Ã×ÅÔ', +theme_colorpicker_apply : 'ðÒÉÍÅÎÉÔØ', +theme_forecolor_desc : '÷ÙÂÒÁÔØ Ã×ÅÔ ÔÅËÓÔÁ', +theme_backcolor_desc : '÷ÙÂÒÁÔØ Ã×ÅÔ ÆÏÎÁ', +theme_charmap_title : '÷ÙÂÏÒ ÐÒÏÉÚ×ÏÌØÎÏÇÏ ÓÉÍ×ÏÌÁ', +theme_charmap_desc : '÷ÓÔÁ×ÉÔØ ÐÒÏÉÚ×ÏÌØÎÙÊ ÓÉÍ×ÏÌ', +theme_visualaid_desc : 'ðÏËÁÚÁÔØ ÇÒÁÎÉÃÙ ÓËÒÙÔÙÈ ÜÌÅÍÅÎÔÏ×', +insert_anchor_title : '÷ÓÔÁ×ÉÔØ/ÒÅÄÁËÔÉÒÏ×ÁÔØ ÑËÏÒØ', +insert_anchor_name : 'éÍÑ ÑËÏÒÑ', +theme_anchor_desc : '÷ÓÔÁ×ÉÔØ/ÒÅÄÁËÔÉÒÏ×ÁÔØ ÑËÏÒØ', +theme_insert_link_titlefield : 'úÁÇÏÌÏ×ÏË', +theme_clipboard_msg : 'ëÏÐÉÒÏ×ÁÔØ/÷ÙÒÅÚÁÔØ/÷ÓÔÁ×ÉÔØ ÎÅÄÏÓÔÕÐÎÙ ÄÌÑ Mozilla É Firefox.\nèÏÔÉÔÅ ÕÚÎÁÔØ Ï ÜÔÏÍ ÐÏÄÒÏÂÎÅÅ?', +theme_path : 'ðÕÔØ', +cut_desc : '÷ÙÒÅÚÁÔØ', +copy_desc : 'ëÏÐÉÒÏ×ÁÔØ', +paste_desc : '÷ÓÔÁ×ÉÔØ', +link_list : 'ðÅÒÅÞÁÎØ ÓÓÙÌÏË', +image_list : 'ðÅÒÅÞÅÎØ ËÁÒÔÉÎÏË', +browse : 'ðÏÄÏÂÒÁÔØ', +image_props_desc : 'ó×ÏÊÓÔ×Á ËÁÒÔÉÎËÉ', +newdocument_desc : 'îÏ×ÙÊ ÄÏËÕÍÅÎÔ', +class_name : 'ëÌÁÓÓ', +newdocument : '÷Ù Õ×ÅÒÅÎÙ, ÞÔÏ ÈÏÔÉÔÅ ÏÞÉÓÔÉÔØ ×Ó£ ÓÏÄÅÒÖÉÍÏÅ?', +about_title : 'ï TinyMCE', +about : 'ï TinyMCE', +license : 'ìÉÃÅÎÚÉÑ', +plugins : 'ðÌÁÇÉÎÙ', +plugin : 'ðÌÁÇÉÎ', +author : 'á×ÔÏÒ', +version : '÷ÅÒÓÉÑ', +loaded_plugins : 'úÁÇÒÕÖÅÎÎÙÅ ÐÌÁÇÉÎÙ', +help : 'ðÏÍÏÝØ', +not_set : '-- ÎÅ ÕÓÔÁÎÏ×ÌÅÎÏ --', +close : 'úÁËÒÙÔØ', +toolbar_focus : 'ðÅÒÅÍÅÓÔÉÔØ ÆÏËÕÓ ÎÁ ÐÁÎÅÌØ ÉÎÓÔÒÕÍÅÎÔÏ× - Alt+Q, ðÅÒÅÍÅÓÔÉÔØ ÆÏËÕÓ × ÒÅÄÁËÔÏÒ - Alt-Z, ðÅÒÅÍÅÓÔÉÔØ ÆÏËÕÓ ÎÁ ÜÌÅÍÅÎÔ ÐÕÔÉ - Alt-X' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/ru_UTF-8.js b/webcit/tiny_mce/themes/advanced/langs/ru_UTF-8.js new file mode 100644 index 000000000..ccb19872e --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/ru_UTF-8.js @@ -0,0 +1,76 @@ +// Russian lang variables UTF-8 + +tinyMCE.addToLang('',{ +theme_style_select : '-- Стили --', +theme_code_desc : 'Редактировать HTML коды', +theme_code_title : 'Редактор HTML кодов', +theme_code_wordwrap : 'Перенос по словам', +theme_sub_desc : 'Нижний индекс', +theme_sup_desc : 'Верхний индекс', +theme_hr_desc : 'Вставить горизонтальный разделитель', +theme_removeformat_desc : 'Убрать форматирование', +theme_custom1_desc : 'Ваше произвольное описание', +insert_image_border : 'Рамка', +insert_image_dimensions : 'Размеры', +insert_image_vspace : 'Вертикальный отступ', +insert_image_hspace : 'Горизонтальный отступ', +insert_image_align : 'Выравнивание', +insert_image_align_default : '-- Не задано --', +insert_image_align_baseline : 'По базовой линии', +insert_image_align_top : 'По верху', +insert_image_align_middle : 'Посредине', +insert_image_align_bottom : 'По низу', +insert_image_align_texttop : 'По верху текста', +insert_image_align_absmiddle : 'Абсолютно посредине', +insert_image_align_absbottom : 'Абсолютно сверху', +insert_image_align_left : 'Влево', +insert_image_align_right : 'Вправо', +theme_font_size : '-- Размер шрифта --', +theme_fontdefault : '-- Семейство шрифтов --', +theme_block : '-- Формат --', +theme_paragraph : 'Абзац', +theme_div : 'Div', +theme_address : 'Стиль адреса', +theme_pre : ':`Предварительно форматированный', +theme_h1 : 'Заголовок 1', +theme_h2 : 'Заголовок 2', +theme_h3 : 'Заголовок 3', +theme_h4 : 'Заголовок 4', +theme_h5 : 'Заголовок 5', +theme_h6 : 'Заголовок 6', +theme_colorpicker_title : 'Выбрать цвет', +theme_colorpicker_apply : 'Применить', +theme_forecolor_desc : 'Выбрать цвет текста', +theme_backcolor_desc : 'Выбрать цвет фона', +theme_charmap_title : 'Выбор произвольного символа', +theme_charmap_desc : 'Вставить произвольный символ', +theme_visualaid_desc : 'Показать границы скрытых элементов', +insert_anchor_title : 'Вставить/редактировать якорь', +insert_anchor_name : 'Имя якоря', +theme_anchor_desc : 'Вставить/редактировать якорь', +theme_insert_link_titlefield : 'Заголовок', +theme_clipboard_msg : 'Копировать/Вырезать/Вставить недоступны для Mozilla и Firefox.\nХотите узнать об этом подробнее?', +theme_path : 'Путь', +cut_desc : 'Вырезать', +copy_desc : 'Копировать', +paste_desc : 'Вставить', +link_list : 'Перечань ссылок', +image_list : 'Перечень картинок', +browse : 'Подобрать', +image_props_desc : 'Свойства картинки', +newdocument_desc : 'Новый документ', +class_name : 'Класс', +newdocument : 'Вы уверены, что хотите очистить всё содержимое?', +about_title : 'О TinyMCE', +about : 'О TinyMCE', +license : 'Лицензия', +plugins : 'Плагины', +plugin : 'Плагин', +author : 'Автор', +version : 'Версия', +loaded_plugins : 'Загруженные плагины', +help : 'Помощь', +not_set : '-- не установлено --', +close : 'Закрыть', +toolbar_focus : 'Переместить фокус на панель инструментов - Alt+Q, Переместить фокус в редактор - Alt-Z, Переместить фокус на элемент пути - Alt-X' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/sk.js b/webcit/tiny_mce/themes/advanced/langs/sk.js new file mode 100644 index 000000000..d3b2d1532 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/sk.js @@ -0,0 +1,72 @@ +/** + * Slovak lang variables + * encoding: utf-8 + * + * @author Vladimir VASIL vvasil@post.sk + * + * $Id: sk.js,v 1.1 2005/11/22 20:56:45 spocke Exp $ + */ + + +tinyMCE.addToLang('',{ +theme_style_select : 'Å týly', +theme_code_desc : 'ZobraziÅ¥ HTML', +theme_code_title : 'Editácia HTML', +theme_code_wordwrap : 'Bez delení slov', +theme_sub_desc : 'Dolný index', +theme_sup_desc : 'Horný index', +theme_hr_desc : 'VložiÅ¥ vodorovný oddeľovač', +theme_removeformat_desc : 'ZruÅ¡iÅ¥ formátovanie', +theme_custom1_desc : 'Ľubovolný popisok', +insert_image_border : 'Rámček', +insert_image_dimensions : 'Rozmery', +insert_image_vspace : 'Vertikálný okraj', +insert_image_hspace : 'Horizontálný okraj', +insert_image_align : 'Zarovnánie', +insert_image_align_default : 'Výchozi', +insert_image_align_baseline : 'Na čiare', +insert_image_align_top : 'Nahor', +insert_image_align_middle : 'Na stred', +insert_image_align_bottom : 'Dole', +insert_image_align_texttop : 'Najvyšší bod textu', +insert_image_align_absmiddle : 'Stred riadku', +insert_image_align_absbottom : 'Spodok riadku', +insert_image_align_left : 'Vľavo', +insert_image_align_right : 'Vpravo', +theme_font_size : '-- VeľkosÅ¥ textu --', +theme_fontdefault : '-- Písmo --', +theme_block : '-- Formát --', +theme_paragraph : 'Odstavec', +theme_div : 'Div', +theme_address : 'Adresa', +theme_pre : 'Predformát', +theme_h1 : 'Nádpis 1', +theme_h2 : 'Nádpis 2', +theme_h3 : 'Nádpis 3', +theme_h4 : 'Nádpis 4', +theme_h5 : 'Nádpis 5', +theme_h6 : 'Nádpis 6', +theme_colorpicker_title : 'Výber farby', +theme_colorpicker_apply : 'VybraÅ¥', +theme_forecolor_desc : 'Farba popredia', +theme_backcolor_desc : 'Farba pozadia', +theme_charmap_title : 'Výber znaku', +theme_charmap_desc : 'VložiÅ¥ znak', +theme_visualaid_desc : 'Zapnúť značky/neviditeľné prvky', +insert_anchor_title : 'Vloženie/editácia záložky', +insert_anchor_name : 'Názov', +theme_anchor_desc : 'VložiÅ¥/editovaÅ¥ záložku', +theme_insert_link_titlefield : 'Názov', +theme_clipboard_msg : 'Funkcie KopírovaÅ¥/vystrihnúť/vložiÅ¥ niesú použiteľné v Mozille a Firefoxe.\nChcete viac informacií o tomto probléme?', +theme_path : 'Cesta', +cut_desc : 'Vystrihnúť', +copy_desc : 'KopírovaÅ¥', +paste_desc : 'VložiÅ¥', +link_list : 'Zoznam', +image_list : 'Zoznam', +browse : 'PrechádzaÅ¥', +image_props_desc : 'Vlastnosti obrázku', +newdocument_desc : 'Nový dokument', +newdocument : 'Ste si istý(á), že chcete vymazaÅ¥ vÅ¡etok obsah?' +}); + diff --git a/webcit/tiny_mce/themes/advanced/langs/sv.js b/webcit/tiny_mce/themes/advanced/langs/sv.js new file mode 100644 index 000000000..fc25a7fc6 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/sv.js @@ -0,0 +1,77 @@ +// SE lang variables + +tinyMCE.addToLang('',{ +theme_style_select : '-- Stilar --', +theme_code_desc : 'Editera HTML-koden', +theme_code_title : 'HTML-källkodseditor', +theme_code_wordwrap : 'Automatiskt radbyte', +theme_sub_desc : 'Nedsänkt text', +theme_sup_desc : 'Upphöjd text', +theme_hr_desc : 'Sätt in horisontell linje', +theme_removeformat_desc : 'Ta bort formatering', +theme_custom1_desc : 'Din specialbeskriving här', +insert_image_border : 'Ram', +insert_image_dimensions : 'Dimensioner', +insert_image_vspace : 'Vertikalt tomrum', +insert_image_hspace : 'Horisontellt tomrum', +insert_image_align : 'Justering', +insert_image_align_default : 'Ingen', +insert_image_align_baseline : 'Bottenlinjen', +insert_image_align_top : 'Längst upp', +insert_image_align_middle : 'Mitten', +insert_image_align_bottom : 'Längst ner', +insert_image_align_texttop : 'Textens top', +insert_image_align_absmiddle : 'Absoluta mitten', +insert_image_align_absbottom : 'Absolut längst ner', +insert_image_align_left : 'Vänster', +insert_image_align_right : 'Höger', +insert_image_delta_width : 30, +insert_image_delta_height : 10, +theme_font_size : '-- Fontstorlek --', +theme_fontdefault : '-- Font familj --', +theme_block : '-- Stycke --', +theme_paragraph : 'Paragraf', +theme_div : 'Div', +theme_address : 'Adress', +theme_pre : 'Förformatterad', +theme_h1 : 'Rubrik 1', +theme_h2 : 'Rubrik 2', +theme_h3 : 'Rubrik 3', +theme_h4 : 'Rubrik 4', +theme_h5 : 'Rubrik 5', +theme_h6 : 'Rubrik 6', +theme_colorpicker_title : 'Välj en färg', +theme_colorpicker_apply : 'Verkställ', +theme_forecolor_desc : 'Välj förgrundsfärg', +theme_backcolor_desc : 'Välj bakgrundsfärg', +theme_charmap_title : 'Välj specialtecken', +theme_charmap_desc : 'Sätt in specialtecken', +theme_visualaid_desc : 'Slå av/på osynliga element', +insert_anchor_title : 'Skapa/redigera ankare', +insert_anchor_name : 'Ankarnamn', +theme_anchor_desc : 'Skapa/redigera ankare', +theme_insert_link_titlefield : 'Titel', +theme_clipboard_msg : 'Klipput/Kopiera/Klistra fungerar inte Mozilla och Firefox. Vill du veta mer om detta?', +theme_path : 'Sökväg', +cut_desc : 'Klipp ut', +copy_desc : 'Kopiera', +paste_desc : 'Klistra in', +link_list : 'Länkar', +image_list : 'Bilder', +browse : 'Bläddra', +image_props_desc : 'Bild egenskaper', +newdocument_desc : 'Nytt dokument', +class_name : 'Stil', +newdocument : 'Är du säker på att du vill tömma hela redigerings ytan?', +about_title : 'Om TinyMCE', +about : 'Om', +license : 'Licens', +plugins : 'Insticksprogram', +plugin : 'Insticksprogram', +author : 'Utvecklare', +version : 'Version', +loaded_plugins : 'Laddade insticksprogram', +help : 'Hjälp', +not_set : '-- Inte satt --', +close : 'Stäng' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/tw.js b/webcit/tiny_mce/themes/advanced/langs/tw.js new file mode 100644 index 000000000..4c9ba4499 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/tw.js @@ -0,0 +1,91 @@ +// TW lang variables contributed by Jim Kou + +tinyMCE.addToLang('',{ +bold_desc : '²ÊÅé', +bold_img : "bold.gif", +bullist_desc : '²Å¸¹¶µ¥Ø', +cancel : '¨ú®ø', +cleanup_desc : '²M°£', +help_desc : '»²§U»¡©ú', +image_desc : '¹Ï¤ù', +indent_desc : 'ÁY±Æ', +insert : '·s¼W', +insert_anchor_name : '¼Ðµù¦WºÙ', +insert_anchor_title : '·s¼W¼Ðµù', +insert_image_align : '¹ï»ô', +insert_image_align_absbottom : '±j¨î»ô¤U', +insert_image_align_absmiddle : '±j¨î¸m¤¤', +insert_image_align_baseline : '°ò·Ç½u', +insert_image_align_bottom : '»ô¤U', +insert_image_align_default : '¼Ð·Ç', +insert_image_align_left : '»ô¥ª', +insert_image_align_middle : '¸m¤¤', +insert_image_align_right : '»ô¥k', +insert_image_align_texttop : '¤å¦r¤W¤è', +insert_image_align_top : '»ô¤W', +insert_image_alt : '¹Ï¤ù»¡©ú', +insert_image_border : '¥~®Ø', +insert_image_dimensions : '¤Ø¤o', +insert_image_hspace : '¤ô¥­¶¡»Ø', +insert_image_src : '¹Ï¤ù¨Ó·½', +insert_image_title : '·s¼W¹Ï¤ù', +insert_image_vspace : '««ª½¶¡»Ø', +insert_link_target : '¥Ø¼Ð', +insert_link_target_blank : 'Åã¥Ü©ó·sµøµ¡¤¤', +insert_link_target_same : 'Åã¥Ü©ó¦P¤@µøµ¡¤¤', +insert_link_title : '·s¼W¶W³sµ²', +insert_link_url : '¶W³sµ²', +italic_desc : '±×Åé', +italic_img : "italic.gif", +justifycenter_desc : '»ô¤¤', +justifyfull_desc : '¶ñº¡', +justifyleft_desc : '»ô¥ª', +justifyright_desc : '»ô¥k', +link_desc : '«Ø¥ß³sµ²', +numlist_desc : '¼Æ¦r¶µ¥Ø', +outdent_desc : '¥Y±Æ', +redo_desc : '­«°µ', +striketrough_desc : '§R°£½u', +theme_address : '¦a§}', +theme_anchor_desc : '¼Ðµù', +theme_charmap_desc : '¯S®í¦r¤¸', +theme_charmap_title : '¯S®í¦r¤¸²M³æ', +theme_code_desc : 'Åã¥Ü HTML ­ì©l½X', +theme_code_wordwrap : 'Word wrap', +theme_code_title : 'HTML ­ì©l½X', +theme_colorpicker_apply : 'Åܧó', +theme_colorpicker_title : 'ÃC¦â', +theme_font_size : '-- Font size --', +theme_fontdefault : '-- Font family --', +theme_block : '-- Format --', +theme_forecolor_desc : '¦r«¬ÃC¦â', +theme_backcolor_desc : 'Select background color', +theme_h1 : '¼ÐÃD1', +theme_h2 : '¼ÐÃD2', +theme_h3 : '¼ÐÃD3', +theme_h4 : '¼ÐÃD4', +theme_h5 : '¼ÐÃD5', +theme_h6 : '¼ÐÃD6', +theme_hr_desc : '·s¼W¾î½u', +theme_paragraph : '¬q¸¨', +theme_pre : '¤º©w®æ¦¡', +theme_removeformat_desc : '²M°£®æ¦¡³]©w', +theme_style_select : '¼Ë¦¡', +theme_sub_desc : '¤U¼Ð', +theme_sup_desc : '¤W¼Ð', +theme_visualaid_desc : 'Åã¥Ü/ÁôÂëD¥i¨£ªº¤¸¯À', +underline_desc : '©³½u', +undo_desc : '´_­ì', +unlink_desc : '¨ú®ø³sµ²', +theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +theme_path : 'Path', +cut_desc : 'Cut', +copy_desc : 'Copy', +paste_desc : 'Paste', +link_list : 'Link list', +image_list : 'Image list', +browse : 'Browse', +image_props_desc : 'Image properties', +newdocument_desc : 'New document', +newdocument : 'Are you sure you want clear all contents?' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/zh_cn.js b/webcit/tiny_mce/themes/advanced/langs/zh_cn.js new file mode 100644 index 000000000..f471ec11f --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/zh_cn.js @@ -0,0 +1,76 @@ +// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com) + +tinyMCE.addToLang('',{ +theme_style_select : '-- ¸ñʽ --', +theme_code_desc : '±à¼­HTMLÔ´´úÂë', +theme_code_title : 'HTMLÔ´´úÂë±à¼­Æ÷', +theme_code_wordwrap : '×Ô¶¯»»ÐÐ', +theme_sub_desc : 'ϱê', +theme_sup_desc : 'Éϱê', +theme_hr_desc : '²åÈëˮƽÏß', +theme_removeformat_desc : 'ÒƳý¸ñʽ', +theme_custom1_desc : 'ÕâÀïÌîдÓû§×Ô¶¨ÒåÃèÊö', +insert_image_border : '±ß¿ò', +insert_image_dimensions : 'άÊý', +insert_image_vspace : '´¹Ö±¼ä¾à', +insert_image_hspace : 'ˮƽ¼ä¾à', +insert_image_align : '¶ÔÆ뷽ʽ', +insert_image_align_default : '-- ĬÈÏ --', +insert_image_align_baseline : '»ùÏß', +insert_image_align_top : '¶¥¶Ë', +insert_image_align_middle : '¾ÓÖÐ', +insert_image_align_bottom : 'µ×²¿', +insert_image_align_texttop : 'ÎÄ×ÖÉÏ·½', +insert_image_align_absmiddle : '¾ø¶Ô¾ÓÖÐ', +insert_image_align_absbottom : '¾ø¶Ôµ×²¿', +insert_image_align_left : '×ó¶ÔÆë', +insert_image_align_right : 'ÓÒ¶ÔÆë', +theme_font_size : '-- ×ֺŠ--', +theme_fontdefault : '-- ×ÖÌå --', +theme_block : '-- ¸ñʽ --', +theme_paragraph : '¶ÎÂä', +theme_div : '²ã', +theme_address : 'µØÖ·', +theme_pre : 'Ô¤¸ñʽ»¯', +theme_h1 : '±êÌâ 1', +theme_h2 : '±êÌâ 2', +theme_h3 : '±êÌâ 3', +theme_h4 : '±êÌâ 4', +theme_h5 : '±êÌâ 5', +theme_h6 : '±êÌâ 6', +theme_colorpicker_title : 'Ñ¡ÔñÑÕÉ«', +theme_colorpicker_apply : 'Ó¦ÓÃ', +theme_forecolor_desc : 'Ñ¡ÔñÎÄ×ÖÑÕÉ«', +theme_backcolor_desc : 'Ñ¡Ôñ±³¾°ÑÕÉ«', +theme_charmap_title : 'Ñ¡ÔñÌØÊâ·ûºÅ', +theme_charmap_desc : '²åÈëÌØÊâ·ûºÅ', +theme_visualaid_desc : '¿ª¹Ø²»¿É¼ûÔªËØ', +insert_anchor_title : '²åÈë/±à¼­ êµã', +insert_anchor_name : 'êµãÃû³Æ', +theme_anchor_desc : '²åÈë/±à¼­ êµã', +theme_insert_link_titlefield : '±êÌâ', +theme_clipboard_msg : '¼ôÇÐ/¸´ÖÆ/Õ³Ìù¹¦ÄÜÔÚ Mozilla ºÍ Firefox ä¯ÀÀÆ÷Öв»Ö§³Ö¡£\nÄúÏ£Íû»ñµÃ¸ü¶àµÄÐÅÏ¢Âð£¿', +theme_path : '·¾¶', +cut_desc : '¼ôÇÐ', +copy_desc : '¸´ÖÆ', +paste_desc : 'Õ³Ìù', +link_list : 'Á´½ÓÁбí', +image_list : 'ͼÏñÁбí', +browse : 'ä¯ÀÀ', +image_props_desc : 'ͼÏñÊôÐÔ', +newdocument_desc : 'н¨¼äµµ', +class_name : 'Àà', +newdocument : 'ÄúÈ·ÈÏÒªÇå³ýËùÓÐÄÚÈÝÂð£¿', +about_title : '¹ØÓÚ TinyMCE', +about : '¹ØÓÚ', +license : 'ÊÚȨÊé', +plugins : 'ËùÓвå¼þ', +plugin : '²å¼þ', +author : '×÷Õß', +version : '°æ±¾', +loaded_plugins : '¶ÁÈ¡²å¼þ', +help : '°ïÖú', +not_set : '-- ¿ÕÉ趨 --', +close : '¹Ø±Õ', +toolbar_focus : 'Ìøµ½¹¤¾ß°´Å¥ - Alt+Q, Ìøµ½±à¼­Æ÷ - Alt-Z, Ìøµ½ÔªËØ·¾¶ - Alt-X' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/zh_tw.js b/webcit/tiny_mce/themes/advanced/langs/zh_tw.js new file mode 100644 index 000000000..d148b2627 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/zh_tw.js @@ -0,0 +1,78 @@ +// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com + + +tinyMCE.addToLang('',{ +theme_style_select : '-- ¦¡¼Ë --', +theme_code_desc : '½s¿è HTML ½X', +theme_code_title : 'HTML ½X½s¿è¾¹', +theme_code_wordwrap : '¦rµüÀô¶', +theme_sub_desc : '¤U¼Ð', +theme_sup_desc : '¤W¼Ð', +theme_hr_desc : '´¡¤J¤ô¥­½u', +theme_removeformat_desc : '²M°£®æ¦¡³]©w', +theme_custom1_desc : '¦Û­q»¡©ú¦b¦¹¿é¤J', +insert_image_border : '®Ø½u', +insert_image_dimensions : '¤Ø¤o', +insert_image_vspace : '¹Ï¹³¤W¤U°¼¶¡¶Z', +insert_image_hspace : '¹Ï¹³¥ª¥kÃ䶡¶Z', +insert_image_align : '««ª½¹ï»ô', +insert_image_align_default : '-- ¥¼³]¸m --', +insert_image_align_baseline : '©³½u', +insert_image_align_top : '³»ºÝ', +insert_image_align_middle : '¤¤½u', +insert_image_align_bottom : '©³³¡', +insert_image_align_texttop : '¤å¦r³»ºÝ', +insert_image_align_absmiddle : 'µ´¹ï¤¤½u', +insert_image_align_absbottom : 'µ´¹ï©³³¡', +insert_image_align_left : '¥ª', +insert_image_align_right : '¥k', +theme_font_size : '-- ¦rÅé¤j¤p --', +theme_fontdefault : '-- ¦rÅé¿ï¾Ü --', +theme_block : '-- ®æ¦¡ --', +theme_paragraph : '¬q¸¨', +theme_div : '¤À¬É', +theme_address : '¦ì¸m', +theme_pre : '¤º©w®æ¦¡', +theme_h1 : '¼ÐÃD¤@', +theme_h2 : '¼ÐÃD¤G', +theme_h3 : '¼ÐÃD¤T', +theme_h4 : '¼ÐÃD¥|', +theme_h5 : '¼ÐÃD¤­', +theme_h6 : '¼ÐÃD¤»', +theme_colorpicker_title : '¿ï¨úÃC¦â', +theme_colorpicker_apply : '®M¥Î', +theme_forecolor_desc : '¿ï¨ú¤å¦rÃC¦â', +theme_backcolor_desc : '¿ï¨ú­I´ºÃC¦â', +theme_charmap_title : '¿ï¨ú¦Û­q¦r¤¸', +theme_charmap_desc : '´¡¤J¦Û­q¦r¤¸', +theme_visualaid_desc : '¤Á´««ü¥Ü©Î«D¥i¨£¤¸¥ó', +insert_anchor_title : '´¡¤J©Î½s¿è³sµ²ÂI', +insert_anchor_name : '³sµ²ÂI¦WºÙ', +theme_anchor_desc : '´¡¤J©Î½s¿è³sµ²ÂI', +theme_insert_link_titlefield : '¼ÐÃD', +theme_clipboard_msg : '¦b Mozilla ©M Firefox ¤¤µLªk¨Ï¥Î½Æ»s©Î°Å¤U©Î¶K¤W¥\¯à¡C\n»Ý­n§ó¦hÃö©ó¦¹ªº°T®§¶Ü¡H', +theme_path : '¸ô®|', +cut_desc : '°Å¤U', +copy_desc : '½Æ»s', +paste_desc : '¶K¤W', +link_list : '³sµ²¦Cªí', +image_list : '¹ÏÀɦCªí', +browse : 'ÂsÄý', +image_props_desc : '¹ÏÀÉÄÝ©Ê', +newdocument_desc : '·s¤å¥ó', +class_name : '¤ÀÃþ', +newdocument : '½T©w­n²M°£¥þ³¡¤º®e¡H', +about_title : 'Ãö©ó TinyMCE', +about : 'Ãö©ó', +license : '±ÂÅv', +plugins : 'À³¥Î®M¥ó', +plugin : 'À³¥Î®M¥ó', +author : '§@ªÌ', +version : 'ª©¥»', +loaded_plugins : '¤w¸ü¤JÀ³¥Î®M¥ó', +help : '¨ó§U', +not_set : '-- ¥¼³]¸m --', +close : 'Ãö³¬', +toolbar_focus : '§Ö³t±Ò¥Î¤u¨ã¯Ã - Alt+Q¡F§Ö³t±Ò¥Î½s¿è¾¹ - Alt-Z¡F§Ö³t²¾¦Ü¤¸¥ó¸ô®| - Alt-X' +}); diff --git a/webcit/tiny_mce/themes/advanced/langs/zh_tw_utf8.js b/webcit/tiny_mce/themes/advanced/langs/zh_tw_utf8.js new file mode 100644 index 000000000..c45307a1b --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/langs/zh_tw_utf8.js @@ -0,0 +1,78 @@ +// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com +// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com + + +tinyMCE.addToLang('',{ +theme_style_select : '-- 式樣 --', +theme_code_desc : '編輯 HTML 碼', +theme_code_title : 'HTML 碼編輯器', +theme_code_wordwrap : '字詞環繞', +theme_sub_desc : '下標', +theme_sup_desc : '上標', +theme_hr_desc : '插入水平線', +theme_removeformat_desc : '清除格式設定', +theme_custom1_desc : '自訂說明在此輸入', +insert_image_border : '框線', +insert_image_dimensions : '尺寸', +insert_image_vspace : '圖像上下側間距', +insert_image_hspace : '圖像左右邊間距', +insert_image_align : '垂直對齊', +insert_image_align_default : '-- 未設置 --', +insert_image_align_baseline : '底線', +insert_image_align_top : '頂端', +insert_image_align_middle : '中線', +insert_image_align_bottom : '底部', +insert_image_align_texttop : '文字頂端', +insert_image_align_absmiddle : '絕對中線', +insert_image_align_absbottom : '絕對底部', +insert_image_align_left : 'å·¦', +insert_image_align_right : '右', +theme_font_size : '-- 字體大小 --', +theme_fontdefault : '-- 字體選擇 --', +theme_block : '-- 格式 --', +theme_paragraph : '段落', +theme_div : '分界', +theme_address : '位置', +theme_pre : '內定格式', +theme_h1 : '標題一', +theme_h2 : '標題二', +theme_h3 : '標題三', +theme_h4 : '標題四', +theme_h5 : '標題五', +theme_h6 : '標題六', +theme_colorpicker_title : '選取顏色', +theme_colorpicker_apply : '套用', +theme_forecolor_desc : '選取文字顏色', +theme_backcolor_desc : '選取背景顏色', +theme_charmap_title : '選取自訂字元', +theme_charmap_desc : '插入自訂字元', +theme_visualaid_desc : '切換指示或非可見元件', +insert_anchor_title : '插入或編輯連結點', +insert_anchor_name : '連結點名稱', +theme_anchor_desc : '插入或編輯連結點', +theme_insert_link_titlefield : '標題', +theme_clipboard_msg : '在 Mozilla 和 Firefox 中無法使用複製或剪下或貼上功能。\n需要更多關於此的訊息嗎?', +theme_path : '路徑', +cut_desc : '剪下', +copy_desc : '複製', +paste_desc : '貼上', +link_list : '連結列表', +image_list : '圖檔列表', +browse : '瀏覽', +image_props_desc : '圖檔屬性', +newdocument_desc : '新文件', +class_name : '分類', +newdocument : '確定要清除全部內容?', +about_title : '關於 TinyMCE', +about : '關於', +license : '授權', +plugins : '應用套件', +plugin : '應用套件', +author : '作者', +version : '版本', +loaded_plugins : '已載入應用套件', +help : '協助', +not_set : '-- 未設置 --', +close : '關閉', +toolbar_focus : '快速啟用工具紐 - Alt+Q;快速啟用編輯器 - Alt-Z;快速移至元件路徑 - Alt-X' +}); diff --git a/webcit/tiny_mce/themes/advanced/link.htm b/webcit/tiny_mce/themes/advanced/link.htm new file mode 100644 index 000000000..c61994df3 --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/link.htm @@ -0,0 +1,92 @@ + + + {$lang_insert_link_title} + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    {$lang_insert_link_title}
    {$lang_insert_link_url}: + + + + +
     
    {$lang_insert_link_target}:
    {$lang_theme_insert_link_titlefield}:
    {$lang_class_name}: +   
    +
    +
    + + diff --git a/webcit/tiny_mce/themes/advanced/source_editor.htm b/webcit/tiny_mce/themes/advanced/source_editor.htm new file mode 100644 index 000000000..a671fb00c --- /dev/null +++ b/webcit/tiny_mce/themes/advanced/source_editor.htm @@ -0,0 +1,30 @@ + + + + {$lang_theme_code_title} + + + + + +
    +
    {$lang_theme_code_title}
    + +
    + +
    + + + +
    +
    + +
    + +
    + +
    +
    +
    + + diff --git a/webcit/tiny_mce/themes/simple/css/editor_content.css b/webcit/tiny_mce/themes/simple/css/editor_content.css new file mode 100644 index 000000000..75290eed1 --- /dev/null +++ b/webcit/tiny_mce/themes/simple/css/editor_content.css @@ -0,0 +1,27 @@ +body { + background-color: #FFFFFF; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} + +td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +pre { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +.mceVisualAid { + border: 1px dashed #BBBBBB; +} diff --git a/webcit/tiny_mce/themes/simple/css/editor_popup.css b/webcit/tiny_mce/themes/simple/css/editor_popup.css new file mode 100644 index 000000000..81a58d504 --- /dev/null +++ b/webcit/tiny_mce/themes/simple/css/editor_popup.css @@ -0,0 +1,41 @@ +body { + background-color: #F0F0EE; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} + +td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; +} + +input { + background: #FFFFFF; + border: 1px solid #cccccc; +} + +td, input, select, textarea { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +input, select, textarea { + border: 1px solid #808080; +} + +.input_noborder { + border: 0px solid #808080; +} + +.title { + font-size: 12px; + font-weight: bold; +} \ No newline at end of file diff --git a/webcit/tiny_mce/themes/simple/css/editor_ui.css b/webcit/tiny_mce/themes/simple/css/editor_ui.css new file mode 100644 index 000000000..88d42e637 --- /dev/null +++ b/webcit/tiny_mce/themes/simple/css/editor_ui.css @@ -0,0 +1,92 @@ +.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected { + margin-top: 1px; + margin-left: 1px; +} + +.mceButtonNormal { + border: 1px solid #F0F0EE !important; + cursor: arrow; +} + +.mceButtonOver { + border: 1px solid #0A246A; + cursor: arrow; + background-color: #B6BDD2; +} + +.mceButtonDown { + cursor: arrow; + border: 1px solid #0A246A; + background-color: #8592B5; +} + +.mceButtonSelected { + border: 1px solid; + border-color: #C0C0BB; + cursor: arrow; +} + +.mceButtonDisabled { + filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); + -moz-opacity:0.3; + opacity: 0.3; + border: 1px solid #F0F0EE !important; + cursor: arrow; +} + +.mceSeparator { + border-top: 1px solid buttonhighlight; + border-left: 1px solid buttonhighlight; + border-bottom: 1px solid buttonshadow; + border-right: 1px solid buttonshadow; + margin-right: 2px; + margin-left: 2px; +} + +.mceSeparatorLine { + margin:2px; + margin-left: 4px; + background-color: #F0F0EE; + border-top: 1px solid buttonshadow; + border-left: 1px solid buttonshadow; + border-bottom: 1px solid buttonhighlight; + border-right: 1px solid buttonhighlight; + width: 0px; + height: 15px; +} + +.mceSelectList { + font-family: "MS Sans Serif"; + font-size: 7pt; + font-weight: normal; + margin-top: 2px; +} + +.mceLabel, .mceLabelDisabled { + font-family: "MS Sans Serif"; + font-size: 9pt; +} + +.mceLabel { + color: #000000; +} + +.mceLabelDisabled { + cursor: text; + color: #999999; +} + +.mceEditor { + background: #F0F0EE; + border: 1px solid #cccccc; +} + +.mceEditorArea { + font-family: "MS Sans Serif"; + background: #FFFFFF; +} + +.mceToolbar { + background: #F0F0EE; + border-top: 1px solid #cccccc; +} \ No newline at end of file diff --git a/webcit/tiny_mce/themes/simple/editor_template.js b/webcit/tiny_mce/themes/simple/editor_template.js new file mode 100644 index 000000000..4d4478328 --- /dev/null +++ b/webcit/tiny_mce/themes/simple/editor_template.js @@ -0,0 +1,20 @@ +function TinyMCE_simple_getEditorTemplate(){var template=new Array();template['html']='\ +\ +\ +\ +
    \ +IFRAME\ +
    \ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +
    ';template['delta_width']=0;template['delta_height']=-20;return template;}function TinyMCE_simple_handleNodeChange(editor_id,node){tinyMCE.switchClassSticky(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_numlist','mceButtonNormal');do{switch(node.nodeName.toLowerCase()){case "b":case "strong":tinyMCE.switchClassSticky(editor_id+'_bold','mceButtonSelected');break;case "i":case "em":tinyMCE.switchClassSticky(editor_id+'_italic','mceButtonSelected');break;case "u":tinyMCE.switchClassSticky(editor_id+'_underline','mceButtonSelected');break;case "strike":tinyMCE.switchClassSticky(editor_id+'_strikethrough','mceButtonSelected');break;case "ul":tinyMCE.switchClassSticky(editor_id+'_bullist','mceButtonSelected');break;case "ol":tinyMCE.switchClassSticky(editor_id+'_numlist','mceButtonSelected');break;}}while((node=node.parentNode)!=null);} \ No newline at end of file diff --git a/webcit/tiny_mce/themes/simple/editor_template_src.js b/webcit/tiny_mce/themes/simple/editor_template_src.js new file mode 100644 index 000000000..66eca18e2 --- /dev/null +++ b/webcit/tiny_mce/themes/simple/editor_template_src.js @@ -0,0 +1,70 @@ +function TinyMCE_simple_getEditorTemplate() { + var template = new Array(); + + template['html'] = '\ +\ +\ +\ +
    \ +IFRAME\ +
    \ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +\ +
    '; + + template['delta_width'] = 0; + template['delta_height'] = -20; + + return template; +} + +function TinyMCE_simple_handleNodeChange(editor_id, node) { + // Reset old states + tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonNormal'); + tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonNormal'); + + // Handle elements + do { + switch (node.nodeName.toLowerCase()) { + case "b": + case "strong": + tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonSelected'); + break; + + case "i": + case "em": + tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonSelected'); + break; + + case "u": + tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonSelected'); + break; + + case "strike": + tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonSelected'); + break; + + case "ul": + tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonSelected'); + break; + + case "ol": + tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonSelected'); + break; + } + } while ((node = node.parentNode) != null); +} diff --git a/webcit/tiny_mce/themes/simple/images/bold.gif b/webcit/tiny_mce/themes/simple/images/bold.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6a9cc2cd4117526156fa29c06156ba5971823c4 GIT binary patch literal 76 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*&Mzw-23{>3a?E=Bm(Rqw7V Z4AWqey4jFcx$b3$*C(Ir-+DzDtN~+a79aos literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/simple/images/bold_de_se.gif b/webcit/tiny_mce/themes/simple/images/bold_de_se.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b129de25e916946792c89f08a7b30b2f9dc8b72 GIT binary patch literal 73 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*UAzw-23e#sdnZdC`i8W!&j Xl@)6cxH+8$Fz@Ye(g^_`QkwFK@28xR?Ffgg~^shYqmVYseNeI`y fv!S2m6KACKPM+Zyy|O9RI8W2_`nTTOtPIuwq8S!> literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/simple/images/bold_tw.gif b/webcit/tiny_mce/themes/simple/images/bold_tw.gif new file mode 100644 index 0000000000000000000000000000000000000000..82085432c622fb9b195d45480ce0c00f80d24027 GIT binary patch literal 207 zcmV;=05JbYNk%w1VH5xq0J9DNySuyH-QDi)?jj;0%*@PHRaKdpnGq2YcXxM0L_~;) zh%+-YW@csp00960{{R30A^8LW000gEEC2ui02BZe000Dh(8)=wy*N7}G;WM{HHkzh zs6t%9fi%d0HcQepm#{3&(I_#A0+$;m0FJ}}WxKp?w}cH!tRNB$k|H1#RxPhVL6BGg z09nkC_M1X4*#RtJD4)}o#(?mXbR9t%Fa-%dPzMPG0V6gC3@He52a91h#Kfdz)l@%W&!*iMf|{-?85Jc}En;9`Q2fcl$iTqPpaWzB zRf;e$FdJ6vy7SNAl;>@M#YT=zObHxz&I%bBUa^s_ M6r5P1!pL9^0IPo@`~Uy| literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/simple/images/cleanup.gif b/webcit/tiny_mce/themes/simple/images/cleanup.gif new file mode 100644 index 0000000000000000000000000000000000000000..16491f6cfcf3e1123f08352c895f8010f791c469 GIT binary patch literal 256 zcmV+b0ssC-Nk%w1VH5xq0MrlwMm#2xdP3^ge4>(aXJcF2&#c0@g7@*TXJyAiI+Bx- z!osRT%E{EUw6tz+enw7G^6K)^$d=yS-J+Ue{{6y&f`-z%VxXFs!L^y{+>(HFVv>^L zOipLAk}~7mu>b%7A^8LW0018VEC2ui02BZe000Gj;3tk`X`X1RuBfCa3_CK)hB&I! z?6jS5DV>BNxhN371`1>FG$6!^gQF}JB8CHn;<-pFjYq{)@NCbANaf;iJjfX><#5Od z41@~dZSq94bpiqw6C4j!WCnJE77HB!h$k2WjE(>oEEpP%kC-wT1Ob;aBcK|jsHv(a GApkq`d~Wvu literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/simple/images/italic.gif b/webcit/tiny_mce/themes/simple/images/italic.gif new file mode 100644 index 0000000000000000000000000000000000000000..8bb330bd0bbf61fdb5ce86388ecbeae16465bc17 GIT binary patch literal 79 zcmZ?wbhEHb6k!lySjfl#1T8Hs)z#IEjEssuS%3n}3_2iDkURsE!kqq_+b+wcJF`+8$Fz@Ye(g^_`QkwFK@28xR?Ffgh1^shYqmVdFy0;Z@$ hzTc5`u943p7fMVz+n$-ed(#4|tKWK`2QxBQ0|3J`7vul{ literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/simple/images/italic_tw.gif b/webcit/tiny_mce/themes/simple/images/italic_tw.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f6eeaa2b2111e9995584a66644dacd01ebf33e4 GIT binary patch literal 274 zcmZ?wbhEHb6k!lyI3mCxFE7u}&!3;4KY#xG^XJd|`}?n7zdk-bUSD7T{rmU(_wT=d z|9*dee|>$uy}dmH1H=FS|A8d&K=CIFBLjl~gAPaw$W8{sAA<=#Bx}ZV~!Miqwc5(MoQ;hMLOK*yvJx*8l(jA^8LW000L7 zEC2ui02BZe0009tc)HyFFv>|=F}0bofd8LU3_`XHL13Hq)$A^8LW000jFEC2ui02BZe000D5@X1N5y*TU5@mkK(Nsfb@ zh`52taWqPx3Yb$cP21Nib_4)BqDn)z literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/simple/images/spacer.gif b/webcit/tiny_mce/themes/simple/images/spacer.gif new file mode 100644 index 0000000000000000000000000000000000000000..388486517fa8da13ebd150e8f65d5096c3e10c3a GIT binary patch literal 43 ncmZ?wbhEHbWMp7un7{x9ia%KxMSyG_5FaGNz{KRj$Y2csb)f_x literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/simple/images/strikethrough.gif b/webcit/tiny_mce/themes/simple/images/strikethrough.gif new file mode 100644 index 0000000000000000000000000000000000000000..3264635918e2237257811a745f3a7e31b4369432 GIT binary patch literal 83 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*jFzw-23{>5`RB^ury^=8j) h^eUTr??>*V8C&%_D;C}?e9svC>)iK$`!yICtN}048)X0h literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/simple/images/underline.gif b/webcit/tiny_mce/themes/simple/images/underline.gif new file mode 100644 index 0000000000000000000000000000000000000000..1dfeb5f6d06e21a25615a9eb0cbd2a74ab0efa42 GIT binary patch literal 88 zcmZ?wbhEHb6k!lySjfl#1l85mjEo?b;!hSJ#l)Zk5(UXKFlkQdUwQg1zxWJ?3%{OS koDe;yao*!zU(QKMRZNWnGjv6-o@%}Q>)iK!0SpY*0G3P}*Z=?k literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/simple/images/underline_fr.gif b/webcit/tiny_mce/themes/simple/images/underline_fr.gif new file mode 100644 index 0000000000000000000000000000000000000000..551d9148d302c5f58b3b20d2c6a642450889a7ef GIT binary patch literal 79 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*mGzw-23e(4zsAr}6}u9vvi dPIT?{=$xyxd19dGtWDy_KKDM~70ke34FHj_7K8u* literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/simple/images/underline_ru.gif b/webcit/tiny_mce/themes/simple/images/underline_ru.gif new file mode 100644 index 0000000000000000000000000000000000000000..b78e2a498fb9406ef378d7c543756db552d87cba GIT binary patch literal 77 zcmZ?wbhEHb6k!lyn83i`>+8$Fz@Ye(g^_`QkwFK@28xR?Ffgg~^shYqmVYseNK2Ny ft@O9qnGc`Wq;$3l?I>E+zBOCw^tWDnRt9STq^=gR literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/simple/images/underline_tw.gif b/webcit/tiny_mce/themes/simple/images/underline_tw.gif new file mode 100644 index 0000000000000000000000000000000000000000..b715390484c95c3d3311012dd541e2b46a2f4a78 GIT binary patch literal 245 zcmZ?wbhEHb6k!lyI3mihYSpUH(9n19-U$i{mY0{GIdf*_%$df<#%XD3=g*&4Qc`;V z{=J%-nvai9ety1-i;KOzeMd*f{{8!R@7~S8!0`Y7e;|nmDE?$&WMB|w&;h9d*~!3K zl%U#|k~uHKi*I6=T}Ytl*F$OTQv9tdV6_n`zCQJ Ua|%tL!OK2l4tMK(4MhfP08!6P_5c6? literal 0 HcmV?d00001 diff --git a/webcit/tiny_mce/themes/simple/images/undo.gif b/webcit/tiny_mce/themes/simple/images/undo.gif new file mode 100644 index 0000000000000000000000000000000000000000..520796d69defa118055d191eec33cc67f7551710 GIT binary patch literal 175 zcmV;g08sx&Nk%w1VH5xq0K*FaI$fTWtk6Go+_}Zyr?=K#e#T#ZwX4DHa-Hu#XSz{; z-OtzKVv^{Tv+z=g@&Et;A^8LW000jFEC2ui02BZe000DB@X1N5y*TU5^*Z3vJx60U zVAe<_A|#2DUTDd{g#kDRhWrRvKmt&#E(`|)VHiweM~gz>Krlp-Snncu!2ps)!r>e} d2m*##Qg9H=3xcDt9yk');this.defParam("font_size_classes",'');this.defParam("font_size_style_values",'xx-small,x-small,small,medium,large,x-large,xx-large');this.defParam("event_elements",'a,img');this.defParam("convert_urls",true);this.defParam("table_inline_editing",false);this.defParam("object_resizing",true);if(this.isMSIE&&this.settings['browsers'].indexOf('msie')==-1)return;if(this.isGecko&&this.settings['browsers'].indexOf('gecko')==-1)return;if(this.isSafari&&this.settings['browsers'].indexOf('safari')==-1)return;if(this.isOpera&&this.settings['browsers'].indexOf('opera')==-1)return;var baseHREF=tinyMCE.settings['document_base_url'];var h=document.location.href;var p=h.indexOf('://');if(p>0&&document.location.protocol!="file:"){p=h.indexOf('/',p+3);h=h.substring(0,p);if(baseHREF.indexOf('://')==-1)baseHREF=h+baseHREF;tinyMCE.settings['document_base_url']=baseHREF;tinyMCE.settings['document_base_prefix']=h;}if(baseHREF.indexOf('?')!=-1)baseHREF=baseHREF.substring(0,baseHREF.indexOf('?'));this.settings['base_href']=baseHREF.substring(0,baseHREF.lastIndexOf('/'))+"/";theme=this.settings['theme'];this.blockRegExp=new RegExp("^(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|blockquote|center|dl|dir|fieldset|form|noscript|noframes|menu|isindex)$","i");this.posKeyCodes=new Array(13,45,36,35,33,34,37,38,39,40);this.uniqueURL='http://tinymce.moxiecode.cp/mce_temp_url';this.uniqueTag='';this.settings['theme_href']=tinyMCE.baseURL+"/themes/"+theme;if(!tinyMCE.isMSIE)this.settings['force_br_newlines']=false;if(tinyMCE.getParam("content_css",false)){var cssPath=tinyMCE.getParam("content_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['content_css']=this.documentBasePath+"/"+cssPath;else this.settings['content_css']=cssPath;}else this.settings['content_css']='';if(tinyMCE.getParam("popups_css",false)){var cssPath=tinyMCE.getParam("popups_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['popups_css']=this.documentBasePath+"/"+cssPath;else this.settings['popups_css']=cssPath;}else this.settings['popups_css']=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_popup.css";if(tinyMCE.getParam("editor_css",false)){var cssPath=tinyMCE.getParam("editor_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['editor_css']=this.documentBasePath+"/"+cssPath;else this.settings['editor_css']=cssPath;}else this.settings['editor_css']=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_ui.css";if(tinyMCE.settings['debug']){var msg="Debug: \n";msg+="baseURL: "+this.baseURL+"\n";msg+="documentBasePath: "+this.documentBasePath+"\n";msg+="content_css: "+this.settings['content_css']+"\n";msg+="popups_css: "+this.settings['popups_css']+"\n";msg+="editor_css: "+this.settings['editor_css']+"\n";alert(msg);}this._initCleanup();if(this.configs.length==0){if(this.isSafari&&this.getParam('safari_warning',true))alert("Safari support is very limited and should be considered experimental.\nSo there is no need to even submit bugreports on this early version.\nYou can disable this message by setting: safari_warning option to false");tinyMCE.addEvent(window,"load",TinyMCE.prototype.onLoad);if(tinyMCE.isMSIE){if(tinyMCE.settings['add_unload_trigger']){tinyMCE.addEvent(window,"unload",TinyMCE.prototype.unloadHandler);tinyMCE.addEvent(window.document,"beforeunload",TinyMCE.prototype.unloadHandler);}}else{if(tinyMCE.settings['add_unload_trigger'])tinyMCE.addEvent(window,"unload",function(){tinyMCE.triggerSave(true,true);});}}this.loadScript(tinyMCE.baseURL+'/themes/'+this.settings['theme']+'/editor_template'+tinyMCE.srcMode+'.js');this.loadScript(tinyMCE.baseURL+'/langs/'+this.settings['language']+'.js');this.loadCSS(this.settings['editor_css']);var themePlugins=tinyMCE.getParam('plugins','',true,',');if(this.settings['plugins']!=''){for(var i=0;i');this.loadedFiles[this.loadedFiles.length]=url;};TinyMCE.prototype.loadCSS=function(url){for(var i=0;i');this.loadedFiles[this.loadedFiles.length]=url;};TinyMCE.prototype.importCSS=function(doc,css_file){if(css_file=='')return;if(typeof(doc.createStyleSheet)=="undefined"){var elm=doc.createElement("link");elm.rel="stylesheet";elm.href=css_file;if((headArr=doc.getElementsByTagName("head"))!=null&&headArr.length>0)headArr[0].appendChild(elm);}else var styleSheet=doc.createStyleSheet(css_file);};TinyMCE.prototype.confirmAdd=function(e,settings){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var elementId=elm.name?elm.name:elm.id;tinyMCE.settings=settings;if(!elm.getAttribute('mce_noask')&&confirm(tinyMCELang['lang_edit_confirm']))tinyMCE.addMCEControl(elm,elementId);elm.setAttribute('mce_noask','true');};TinyMCE.prototype.updateContent=function(form_element_name){var formElement=document.getElementById(form_element_name);for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();if(inst.formElement==formElement){var doc=inst.getDoc();tinyMCE._setHTML(doc,inst.formElement.value);if(!tinyMCE.isMSIE)doc.body.innerHTML=tinyMCE._cleanupHTML(inst,doc,this.settings,doc.body,inst.visualAid);}}};TinyMCE.prototype.addMCEControl=function(replace_element,form_element_name,target_document){var id="mce_editor_"+tinyMCE.idCounter++;var inst=new TinyMCEControl(tinyMCE.settings);inst.editorId=id;this.instances[id]=inst;inst.onAdd(replace_element,form_element_name,target_document);};TinyMCE.prototype.triggerSave=function(skip_cleanup,skip_callback){for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();tinyMCE.settings['preformatted']=false;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=false;tinyMCE._setHTML(inst.getDoc(),inst.getBody().innerHTML);if(inst.settings['cleanup']==false){tinyMCE.handleVisualAid(inst.getBody(),true,false,inst);tinyMCE._setEventsEnabled(inst.getBody(),true);}tinyMCE._customCleanup(inst,"submit_content_dom",inst.contentWindow.document.body);var htm=skip_cleanup?inst.getBody().innerHTML:tinyMCE._cleanupHTML(inst,inst.getDoc(),this.settings,inst.getBody(),this.visualAid,true);htm=tinyMCE._customCleanup(inst,"submit_content",htm);if(tinyMCE.settings["encoding"]=="xml"||tinyMCE.settings["encoding"]=="html")htm=tinyMCE.convertStringToXML(htm);if(!skip_callback&&tinyMCE.settings['save_callback']!="")var content=eval(tinyMCE.settings['save_callback']+"(inst.formTargetElementId,htm,inst.getBody());");if((typeof(content)!="undefined")&&content!=null)htm=content;htm=tinyMCE.regexpReplace(htm,"(","(","gi");htm=tinyMCE.regexpReplace(htm,")",")","gi");htm=tinyMCE.regexpReplace(htm,";",";","gi");htm=tinyMCE.regexpReplace(htm,""",""","gi");htm=tinyMCE.regexpReplace(htm,"^","^","gi");if(inst.formElement)inst.formElement.value=htm;}};TinyMCE.prototype._setEventsEnabled=function(node,state){var events=new Array('onfocus','onblur','onclick','ondblclick','onmousedown','onmouseup','onmouseover','onmousemove','onmouseout','onkeypress','onkeydown','onkeydown','onkeyup');var evs=tinyMCE.settings['event_elements'].split(',');for(var y=0;y","gi");content=tinyMCE.regexpReplace(content,"\r","
    ","gi");content=tinyMCE.regexpReplace(content,"\n","
    ","gi");}content=tinyMCE.storeAwayURLs(content);content=tinyMCE._customCleanup(inst,"insert_to_editor",content);if(tinyMCE.isMSIE){window.setInterval('try{tinyMCE.getCSSClasses(document.frames["'+editor_id+'"].document, "'+editor_id+'");}catch(e){}',500);if(tinyMCE.settings["force_br_newlines"])document.frames[editor_id].document.styleSheets[0].addRule("p","margin: 0px;");var body=document.frames[editor_id].document.body;tinyMCE.addEvent(body,"beforepaste",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(body,"beforecut",TinyMCE.prototype.eventPatch);body.editorId=editor_id;}content=tinyMCE.cleanupHTMLCode(content);if(!tinyMCE.isMSIE){var contentElement=inst.getDoc().createElement("body");var doc=inst.getDoc();contentElement.innerHTML=content;if(tinyMCE.isGecko&&tinyMCE.settings['remove_lt_gt'])content=content.replace(new RegExp('<>','g'),"");if(tinyMCE.settings['cleanup_on_startup'])tinyMCE.setInnerHTML(inst.getBody(),tinyMCE._cleanupHTML(inst,doc,this.settings,contentElement));else{content=tinyMCE.regexpReplace(content,"","","gi");content=tinyMCE.regexpReplace(content,"","
    ","gi");content=tinyMCE.regexpReplace(content,"","","gi");tinyMCE.setInnerHTML(inst.getBody(),content);}inst.convertAllRelativeURLs();}else{if(tinyMCE.settings['cleanup_on_startup']){tinyMCE._setHTML(inst.getDoc(),content);eval('try {tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody()));} catch(e) {}');}else tinyMCE._setHTML(inst.getDoc(),content);}var parentElm=document.getElementById(inst.editorId+'_parent');if(parentElm.lastChild.nodeName=="INPUT")inst.formElement=tinyMCE.isGecko?parentElm.firstChild:parentElm.lastChild;else inst.formElement=tinyMCE.isGecko?parentElm.previousSibling:parentElm.nextSibling;tinyMCE.handleVisualAid(inst.getBody(),true,tinyMCE.settings['visual'],inst);tinyMCE.executeCallback('setupcontent_callback','_setupContent',0,editor_id,inst.getBody(),inst.getDoc());if(!tinyMCE.isMSIE)TinyMCE.prototype.addEventHandlers(editor_id);if(tinyMCE.isMSIE)tinyMCE.addEvent(inst.getBody(),"blur",TinyMCE.prototype.eventPatch);tinyMCE.selectedInstance=inst;tinyMCE.selectedElement=inst.contentWindow.document.body;if(!inst.isHidden())tinyMCE.triggerNodeChange(false,true);tinyMCE._customCleanup(inst,"insert_to_editor_dom",inst.getBody());tinyMCE._customCleanup(inst,"setup_content_dom",inst.getBody());tinyMCE._setEventsEnabled(inst.getBody(),false);tinyMCE.cleanupAnchors(inst.getDoc());if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(inst.getDoc());inst.startContent=tinyMCE.trim(inst.getBody().innerHTML);inst.undoLevels[inst.undoLevels.length]=inst.startContent;tinyMCE.operaOpacityCounter=-1;};TinyMCE.prototype.cleanupHTMLCode=function(s){s=s.replace(//gi,'

     

    ');s=s.replace(/

    \s*<\/p>/gi,'

     

    ');s=s.replace(/<(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|b|em|strong|i|strike|u|span|a|ul|ol|li|blockquote)([a-z]*)([^\\|>]*?)\/>/gi,'<$1$2$3>');s=s.replace(new RegExp('\\s+><\/(img|br|hr)>/gi,'<$1$2 />');if(tinyMCE.isMSIE)s=s.replace(/

    <\/p>/gi,"


    ");s=s.replace(new RegExp('(href=\"?)(\\s*?#)','gi'),'$1'+tinyMCE.settings['document_base_url']+"#");return s;};TinyMCE.prototype.storeAwayURLs=function(s){s=s.replace(new RegExp('mce_src\\s*=\\s*\"[^ >\"]*\"','gi'),'');s=s.replace(new RegExp('mce_href\\s*=\\s*\"[^ >\"]*\"','gi'),'');s=s.replace(new RegExp('src\\s*=\\s*\"([^ >\"]*)\"','gi'),'src="$1" mce_src="$1"');s=s.replace(new RegExp('href\\s*=\\s*\"([^ >\"]*)\"','gi'),'href="$1" mce_href="$1"');return s;};TinyMCE.prototype.cancelEvent=function(e){if(tinyMCE.isMSIE){e.returnValue=false;e.cancelBubble=true;}else e.preventDefault();};TinyMCE.prototype.removeTinyMCEFormElements=function(form_obj){if(typeof(form_obj)=="undefined"||form_obj==null)return;if(form_obj.nodeName!="FORM"){if(form_obj.form)form_obj=form_obj.form;else form_obj=tinyMCE.getParentElement(form_obj,"form");}if(form_obj==null)return;for(var i=0;i");rng.collapse(false);rng.select();tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange(false);return false;}}if(e.keyCode==8||e.keyCode==46){tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(e.target,"a");tinyMCE.imgElement=tinyMCE.getParentElement(e.target,"img");tinyMCE.triggerNodeChange(false);}return false;break;case "keyup":case "keydown":if(e.target.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];else return;if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();var inst=tinyMCE.selectedInstance;if(tinyMCE.isGecko&&tinyMCE.settings['force_p_newlines']&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(tinyMCE.selectedInstance._handleBackSpace(e.type)){tinyMCE.execCommand("mceAddUndoLevel");e.preventDefault();return false;}}tinyMCE.selectedElement=null;tinyMCE.selectedNode=null;var elm=tinyMCE.selectedInstance.getFocusElement();tinyMCE.linkElement=tinyMCE.getParentElement(elm,"a");tinyMCE.imgElement=tinyMCE.getParentElement(elm,"img");tinyMCE.selectedElement=elm;if(tinyMCE.isGecko&&e.type=="keyup"&&e.keyCode==9)tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(),true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);if(tinyMCE.isMSIE&&e.type=="keydown"&&e.keyCode==13)tinyMCE.enterKeyElement=tinyMCE.selectedInstance.getFocusElement();if(tinyMCE.isMSIE&&e.type=="keyup"&&e.keyCode==13){var elm=tinyMCE.enterKeyElement;if(elm){var re=new RegExp('^HR|IMG|BR$','g');var dre=new RegExp('^H[1-6]$','g');if(!elm.hasChildNodes()&&!re.test(elm.nodeName)){if(dre.test(elm.nodeName))elm.innerHTML="  ";else elm.innerHTML=" ";}}}var keys=tinyMCE.posKeyCodes;var posKey=false;for(var i=0;i-1)suffix='?rnd='+this.operaOpacityCounter++;element.src=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/images/opacity.png"+suffix;element.style.backgroundImage="url('"+element.mceOldSrc+"')";}else{if(element.mceOldSrc){element.src=element.mceOldSrc;element.parentNode.style.backgroundImage="";element.mceOldSrc=null;}}}}};TinyMCE.prototype.restoreClass=function(element){if(element!=null&&element.oldClassName&&!element.classLock){element.className=element.oldClassName;element.oldClassName=null;}};TinyMCE.prototype.setClassLock=function(element,lock_state){if(element!=null)element.classLock=lock_state;};TinyMCE.prototype.addEvent=function(obj,name,handler){if(tinyMCE.isMSIE){obj.attachEvent("on"+name,handler);}else obj.addEventListener(name,handler,false);};TinyMCE.prototype.submitPatch=function(){tinyMCE.removeTinyMCEFormElements(this);tinyMCE.triggerSave();this.mceOldSubmit();tinyMCE.isNotDirty=true;};TinyMCE.prototype.onLoad=function(){for(var c=0;c0)return;if(val.indexOf('%')==-1)val+='px';break;case "vspace":case "hspace":elm.style.marginTop=val+"px";elm.style.marginBottom=val+"px";elm.removeAttribute(attrib);return;case "align":if(elm.nodeName=="IMG"){if(tinyMCE.isMSIE)elm.style.styleFloat=val;else elm.style.cssFloat=val;}else elm.style.textAlign=val;elm.removeAttribute(attrib);return;}if(val!=''){eval('elm.style.'+style+' = val;');elm.removeAttribute(attrib);}}}else{if(style=='')return;var val=eval('elm.style.'+style)==''?tinyMCE.getAttrib(elm,attrib):eval('elm.style.'+style);val=val==null?'':''+val;switch(attrib){case "background":if(val.indexOf('url')==-1&&val!='')val="url('"+val+"');";if(val!=''){elm.style.backgroundImage=val;elm.removeAttribute(attrib);}return;case "border":case "width":case "height":val=val.replace('px','');break;case "align":if(tinyMCE.getAttrib(elm,'align')==''){if(elm.nodeName=="IMG"){if(tinyMCE.isMSIE&&elm.style.styleFloat!=''){val=elm.style.styleFloat;style='styleFloat';}else if(tinyMCE.isGecko&&elm.style.cssFloat!=''){val=elm.style.cssFloat;style='cssFloat';}}}break;}if(val!=''){elm.removeAttribute(attrib);elm.setAttribute(attrib,val);eval('elm.style.'+style+' = "";');}}};TinyMCE.prototype._cleanupAttribute=function(valid_attributes,element_name,attribute_node,element_node){var attribName=attribute_node.nodeName.toLowerCase();var attribValue=attribute_node.nodeValue;var attribMustBeValue=null;var verified=false;if(attribName.indexOf('moz_')!=-1)return null;if(!tinyMCE.cleanup_on_save&&(attribName=="mce_href"||attribName=="mce_src"))return{name:attribName,value:attribValue};if(tinyMCE.cleanup_verify_html&&!verified){for(var i=1;i1)val="url('"+eval(tinyMCE.getParam('urlconverter_callback')+"(m[1], null, true);")+"')";}if(tinyMCE.getParam("force_hex_style_colors"))val=tinyMCE.convertRGBToHex(val,true);if(val!="url('')")str+=key.toLowerCase()+": "+val+"; ";}}if(new RegExp('; $').test(str))str=str.substring(0,str.length-2);return str;};TinyMCE.prototype.convertRGBToHex=function(s,k){if(s.toLowerCase().indexOf('rgb')!=-1){var re=new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)","gi");var rgb=s.replace(re,"$1,$2,$3,$4,$5").split(',');if(rgb.length==5){r=parseInt(rgb[1]).toString(16);g=parseInt(rgb[2]).toString(16);b=parseInt(rgb[3]).toString(16);r=r.length==1?'0'+r:r;g=g.length==1?'0'+g:g;b=b.length==1?'0'+b:b;s="#"+r+g+b;if(k)s=rgb[0]+s+rgb[4];}}return s;};TinyMCE.prototype.convertHexToRGB=function(s){if(s.indexOf('#')!=-1){s=s.replace(new RegExp('[^0-9A-F]','gi'),'');return "rgb("+parseInt(s.substring(0,2),16)+","+parseInt(s.substring(2,4),16)+","+parseInt(s.substring(4,6),16)+")";}return s;};TinyMCE.prototype._verifyClass=function(node){if(tinyMCE.isGecko){var className=node.getAttribute('class');if(!className)return false;}if(tinyMCE.isMSIE)var className=node.getAttribute('className');if(tinyMCE.cleanup_verify_css_classes&&tinyMCE.cleanup_on_save){var csses=tinyMCE.getCSSClasses();nonDefinedCSS=true;for(var c=0;c'+output;}}var re=new RegExp("^(TABLE|TD|TR)$");if(re.test(node.nodeName)){if((node.nodeName!="TABLE"||tinyMCE.cleanup_inline_styles)&&(width=tinyMCE.getAttrib(node,"width"))!=''){node.style.width=width.indexOf('%')!=-1?width:width.replace(/[^0-9]/gi,'')+"px";node.removeAttribute("width");}if((node.nodeName=="TABLE"&&!tinyMCE.cleanup_inline_styles)&&node.style.width!=''){tinyMCE.setAttrib(node,"width",node.style.width.replace('px',''));node.style.width='';}if((height=tinyMCE.getAttrib(node,"height"))!=''){height=""+height;node.style.height=height.indexOf('%')!=-1?height:height.replace(/[^0-9]/gi,'')+"px";node.removeAttribute("height");}}if(tinyMCE.cleanup_inline_styles){var re=new RegExp("^(TABLE|TD|TR|IMG|HR)$");if(re.test(node.nodeName)&&tinyMCE.getAttrib(node,"class").indexOf('mceItem')==-1){tinyMCE._moveStyle(node,'width','width');tinyMCE._moveStyle(node,'height','height');tinyMCE._moveStyle(node,'borderWidth','border');tinyMCE._moveStyle(node,'','vspace');tinyMCE._moveStyle(node,'','hspace');tinyMCE._moveStyle(node,'textAlign','align');tinyMCE._moveStyle(node,'backgroundColor','bgColor');tinyMCE._moveStyle(node,'borderColor','borderColor');tinyMCE._moveStyle(node,'backgroundImage','background');if(tinyMCE.isMSIE5)node.outerHTML=node.outerHTML;}else if(tinyMCE.isBlockElement(node))tinyMCE._moveStyle(node,'textAlign','align');if(node.nodeName=="FONT")tinyMCE._moveStyle(node,'color','color');}if(elementValidAttribs){for(var a=1;a"+node.innerHTML+"";if(elementName=="table"&&!node.hasChildNodes())return "";if(node.attributes.length>0){var lastAttrib="";for(var i=0;i"+this.convertStringToXML(String.fromCharCode(160))+"";if(tinyMCE.isMSIE&&elementName=="script")return "<"+elementName+elementAttribs+">"+node.text+"";if(node.hasChildNodes()){if(!(elementName=="span"&&elementAttribs==""&&tinyMCE.getParam("trim_span_elements"))){if(elementName=="p"&&tinyMCE.cleanup_force_br_newlines)output+="";else output+="<"+elementName+elementAttribs+">";}for(var i=0;i
    ";else output+="";}}else{if(!nonEmptyTag){if(openTag)output+="<"+elementName+elementAttribs+">";else output+="<"+elementName+elementAttribs+" />";}}return output;case 3:if(node.parentNode.nodeName=="SCRIPT"||node.parentNode.nodeName=="NOSCRIPT"||node.parentNode.nodeName=="STYLE")return node.nodeValue;return this.convertStringToXML(node.nodeValue);case 8:return "";default:return "[UNKNOWN NODETYPE "+node.nodeType+"]";}};TinyMCE.prototype.convertStringToXML=function(html_data){var output="";for(var i=0;i127)output+='&#'+chr+";";else output+=String.fromCharCode(chr);continue;}if(tinyMCE.settings['entity_encoding']=="raw"){output+=String.fromCharCode(chr);continue;}if(typeof(tinyMCE.settings['cleanup_entities']["c"+chr])!='undefined'&&tinyMCE.settings['cleanup_entities']["c"+chr]!='')output+='&'+tinyMCE.settings['cleanup_entities']["c"+chr]+';';else output+=''+String.fromCharCode(chr);}return output;};TinyMCE.prototype._getCleanupElementName=function(chunk){var pos;if(chunk.charAt(0)=='+')chunk=chunk.substring(1);if(chunk.charAt(0)=='-')chunk=chunk.substring(1);if((pos=chunk.indexOf('/'))!=-1)chunk=chunk.substring(0,pos);if((pos=chunk.indexOf('['))!=-1)chunk=chunk.substring(0,pos);return chunk;};TinyMCE.prototype._initCleanup=function(){var validElements=tinyMCE.settings["valid_elements"];validElements=validElements.split(',');var extendedValidElements=tinyMCE.settings["extended_valid_elements"];extendedValidElements=extendedValidElements.split(',');for(var i=0;i/gi,'>');return html;}if(on_save&&tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertFontsToSpans(doc);tinyMCE._customCleanup(inst,on_save?"get_from_editor_dom":"insert_to_editor_dom",doc.body);var n=doc.getElementsByTagName("font");for(var i=0;i[ \n\r]*[ \n\r]*

    ','
    ','gi'));tinyMCE.setInnerHTML(element,tinyMCE.regexpReplace(element.innerHTML,'','','gi'));}var html=this.cleanupNode(element);if(tinyMCE.settings['debug'])tinyMCE.debug("Cleanup process executed in: "+(new Date().getTime()-startTime)+" ms.");html=tinyMCE.regexpReplace(html,'


    ','
    ');html=tinyMCE.regexpReplace(html,'

     


     

    ','
    ');html=tinyMCE.regexpReplace(html,'\\s*
    \\s*',' ');html=tinyMCE.regexpReplace(html,'

    \\s*
    \\s*

    ','

     

    ');html=tinyMCE.regexpReplace(html,'

    \\s* \\s*
    \\s* \\s*

    ','

     

    ');html=tinyMCE.regexpReplace(html,'

    \\s* \\s*
    \\s*

    ','

     

    ');html=tinyMCE.regexpReplace(html,'

    \\s*
    \\s* \\s*

    ','

     

    ');html=html.replace(new RegExp('(.*?)','gi'),'$1');if(!tinyMCE.isMSIE)html=html.replace(new RegExp('','g'),"");if(tinyMCE.settings['remove_linebreaks'])html=html.replace(new RegExp('\r|\n','g'),' ');if(tinyMCE.getParam('apply_source_formatting')){html=html.replace(new RegExp('<(p|div)([^>]*)>','g'),"\n<$1$2>\n");html=html.replace(new RegExp('<\/(p|div)([^>]*)>','g'),"\n\n");html=html.replace(new RegExp('
    ','g'),"
    \n");}if(tinyMCE.settings['force_br_newlines']){var re=new RegExp('

     

    ','g');html=html.replace(re,"
    ");}if(tinyMCE.isGecko&&tinyMCE.settings['remove_lt_gt']){var re=new RegExp('<>','g');html=html.replace(re,"");}html=tinyMCE._customCleanup(inst,on_save?"get_from_editor":"insert_to_editor",html);var chk=tinyMCE.regexpReplace(html,"[ \t\r\n]","").toLowerCase();if(chk=="
    "||chk=="
    "||chk=="

     

    "||chk=="

     

    "||chk=="

    ")html="";if(tinyMCE.settings["preformatted"])return "
    "+html+"
    ";return html;};TinyMCE.prototype.insertLink=function(href,target,title,onclick,style_class){tinyMCE.execCommand('mceBeginUndoLevel');if(this.selectedInstance&&this.selectedElement&&this.selectedElement.nodeName.toLowerCase()=="img"){var doc=this.selectedInstance.getDoc();var linkElement=tinyMCE.getParentElement(this.selectedElement,"a");var newLink=false;if(!linkElement){linkElement=doc.createElement("a");newLink=true;}var mhref=href;var thref=eval(tinyMCE.settings['urlconverter_callback']+"(href, linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(linkElement,'href',thref);tinyMCE.setAttrib(linkElement,'mce_href',mhref);tinyMCE.setAttrib(linkElement,'target',target);tinyMCE.setAttrib(linkElement,'title',title);tinyMCE.setAttrib(linkElement,'onclick',onclick);tinyMCE.setAttrib(linkElement,'class',style_class);if(newLink){linkElement.appendChild(this.selectedElement.cloneNode(true));this.selectedElement.parentNode.replaceChild(linkElement,this.selectedElement);}return;}if(!this.linkElement&&this.selectedInstance){if(tinyMCE.isSafari){tinyMCE.execCommand("mceInsertContent",false,''+this.selectedInstance.getSelectedHTML()+'');}else this.selectedInstance.contentDocument.execCommand("createlink",false,tinyMCE.uniqueURL);tinyMCE.linkElement=this.getElementByAttributeValue(this.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);var elementArray=this.getElementsByAttributeValue(this.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);for(var i=0;i';tinyMCE.execCommand("mceInsertContent",false,html);}else{if(!this.imgElement&&this.selectedInstance){if(tinyMCE.isSafari)tinyMCE.execCommand("mceInsertContent",false,'');else this.selectedInstance.contentDocument.execCommand("insertimage",false,tinyMCE.uniqueURL);tinyMCE.imgElement=this.getElementByAttributeValue(this.selectedInstance.contentDocument.body,"img","src",tinyMCE.uniqueURL);}}if(this.imgElement){var needsRepaint=false;var msrc=src;src=eval(tinyMCE.settings['urlconverter_callback']+"(src, tinyMCE.imgElement);");if(tinyMCE.getParam('convert_urls'))msrc=src;if(onmouseover&&onmouseover!="")onmouseover="this.src='"+eval(tinyMCE.settings['urlconverter_callback']+"(onmouseover, tinyMCE.imgElement);")+"';";if(onmouseout&&onmouseout!="")onmouseout="this.src='"+eval(tinyMCE.settings['urlconverter_callback']+"(onmouseout, tinyMCE.imgElement);")+"';";if(typeof(title)=="undefined")title=alt;if(width!=this.imgElement.getAttribute("width")||height!=this.imgElement.getAttribute("height")||align!=this.imgElement.getAttribute("align"))needsRepaint=true;tinyMCE.setAttrib(this.imgElement,'src',src);tinyMCE.setAttrib(this.imgElement,'mce_src',msrc);tinyMCE.setAttrib(this.imgElement,'alt',alt);tinyMCE.setAttrib(this.imgElement,'title',title);tinyMCE.setAttrib(this.imgElement,'align',align);tinyMCE.setAttrib(this.imgElement,'border',border,true);tinyMCE.setAttrib(this.imgElement,'hspace',hspace,true);tinyMCE.setAttrib(this.imgElement,'vspace',vspace,true);tinyMCE.setAttrib(this.imgElement,'width',width,true);tinyMCE.setAttrib(this.imgElement,'height',height,true);tinyMCE.setAttrib(this.imgElement,'onmouseover',onmouseover);tinyMCE.setAttrib(this.imgElement,'onmouseout',onmouseout);if(width&&width!="")this.imgElement.style.pixelWidth=width;if(height&&height!="")this.imgElement.style.pixelHeight=height;if(needsRepaint)tinyMCE.selectedInstance.repaint();}tinyMCE.execCommand('mceEndUndoLevel');};TinyMCE.prototype.getElementByAttributeValue=function(node,element_name,attrib,value){var elements=this.getElementsByAttributeValue(node,element_name,attrib,value);if(elements.length==0)return null;return elements[0];};TinyMCE.prototype.getElementsByAttributeValue=function(node,element_name,attrib,value){var elements=new Array();if(node&&node.nodeName.toLowerCase()==element_name){if(node.getAttribute(attrib)&&node.getAttribute(attrib).indexOf(value)!=-1)elements[elements.length]=node;}if(node&&node.hasChildNodes()){for(var x=0,n=node.childNodes.length;x=strTok2.length){for(var i=0;i=strTok2.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break;}}}if(strTok1.length=strTok1.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break;}}}if(breakPoint==1)return targetURL.path;for(var i=0;i<(strTok1.length-(breakPoint-1));i++)outPath+="../";for(var i=breakPoint-1;i=0;i--){if(baseURLParts[i].length==0)continue;newBaseURLParts[newBaseURLParts.length]=baseURLParts[i];}baseURLParts=newBaseURLParts.reverse();var newRelURLParts=new Array();var numBack=0;for(var i=relURLParts.length-1;i>=0;i--){if(relURLParts[i].length==0||relURLParts[i]==".")continue;if(relURLParts[i]=='..'){numBack++;continue;}if(numBack>0){numBack--;continue;}newRelURLParts[newRelURLParts.length]=relURLParts[i];}relURLParts=newRelURLParts.reverse();var len=baseURLParts.length-numBack;var absPath=(len<=0?"":"/")+baseURLParts.slice(0,len).join('/')+"/"+relURLParts.join('/');var start="",end="";relURL.protocol=baseURL.protocol;relURL.host=baseURL.host;relURL.port=baseURL.port;if(relURL.path.charAt(relURL.path.length-1)=="/")absPath+="/";relURL.path=absPath;return TinyMCE.prototype.serializeURL(relURL);};TinyMCE.prototype.getParam=function(name,default_value,strip_whitespace,split_chr){var value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(value=="true"||value=="false")return(value=="true");if(strip_whitespace)value=tinyMCE.regexpReplace(value,"[ \t\r\n]","");if(typeof(split_chr)!="undefined"&&split_chr!=null){value=value.split(split_chr);var outArray=new Array();for(var i=0;i0);if(tinyMCE.settings['custom_undo_redo']){undoIndex=inst.undoIndex;undoLevels=inst.undoLevels.length;}tinyMCE.executeCallback('handleNodeChangeCallback','_handleNodeChange',0,editorId,elm,undoIndex,undoLevels,inst.visualAid,anySelection,setup_content);}}if(this.selectedInstance&&(typeof(focus)=="undefined"||focus))this.selectedInstance.contentWindow.focus();};TinyMCE.prototype._customCleanup=function(inst,type,content){var customCleanup=tinyMCE.settings['cleanup_callback'];if(customCleanup!=""&&eval("typeof("+customCleanup+")")!="undefined")content=eval(customCleanup+"(type, content, inst);");var plugins=tinyMCE.getParam('plugins','',true,',');for(var i=0;i0)className+=" ";className+=classNames[i];}return className;};TinyMCE.prototype.handleVisualAid=function(el,deep,state,inst){if(!el)return;var tableElement=null;switch(el.nodeName){case "TABLE":var oldW=el.style.width;var oldH=el.style.height;var bo=tinyMCE.getAttrib(el,"border");bo=bo==""||bo=="0"?true:false;tinyMCE.setAttrib(el,"class",tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el,"class"),state&&bo));el.style.width=oldW;el.style.height=oldH;for(var y=0;y0){tinyMCE.setAttrib(s[i],'size',fSize);s[i].style.fontSize='';}var fFace=s[i].style.fontFamily;if(fFace!=null&&fFace!=""){tinyMCE.setAttrib(s[i],'face',fFace);s[i].style.fontFamily='';}var fColor=s[i].style.color;if(fColor!=null&&fColor!=""){tinyMCE.setAttrib(s[i],'color',tinyMCE.convertRGBToHex(fColor));s[i].style.color='';}}};TinyMCE.prototype.convertFontsToSpans=function(doc){var sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');var h=doc.body.innerHTML;h=h.replace(/0&&fSize<8){if(fsClasses!=null)tinyMCE.setAttrib(s[i],'class',fsClasses[fSize-1]);else s[i].style.fontSize=sizes[fSize-1];}s[i].removeAttribute('size');}if(fFace!=""){s[i].style.fontFamily=fFace;s[i].removeAttribute('face');}if(fColor!=""){s[i].style.color=fColor;s[i].removeAttribute('color');}}};TinyMCE.prototype.setInnerHTML=function(e,h){if(tinyMCE.isMSIE&&!tinyMCE.isOpera){e.innerHTML=tinyMCE.uniqueTag+h;e.firstChild.removeNode(true);}else{h=this.fixGeckoBaseHREFBug(1,e,h);e.innerHTML=h;this.fixGeckoBaseHREFBug(2,e,h);}};TinyMCE.prototype.fixGeckoBaseHREFBug=function(m,e,h){if(tinyMCE.isGecko){if(m==1){h=h.replace(/\ssrc=/gi," xsrc=");h=h.replace(/\shref=/gi," xhref=");return h;}else{if(h.indexOf(' xsrc')!=-1){var n=e.getElementsByTagName("img");for(var i=0;i=0;x--)tinyMCE.insertAfter(cn[x],an[i]);}}};TinyMCE.prototype._setHTML=function(doc,html_content){html_content=tinyMCE.cleanupHTMLCode(html_content);try{tinyMCE.setInnerHTML(doc.body,html_content);}catch(e){if(this.isMSIE)doc.body.createTextRange().pasteHTML(html_content);}if(tinyMCE.isMSIE&&tinyMCE.settings['fix_content_duplication']){var paras=doc.getElementsByTagName("P");for(var i=0;i<\/o:p>","
    ");html=tinyMCE.regexpReplace(html," <\/o:p>","");html=tinyMCE.regexpReplace(html,"","");html=tinyMCE.regexpReplace(html,"

    <\/p>","");html=tinyMCE.regexpReplace(html,"

    <\/p>\r\n

    <\/p>","");html=tinyMCE.regexpReplace(html,"

     <\/p>","
    ");html=tinyMCE.regexpReplace(html,"

    \s*(

    \s*)?","

    ");html=tinyMCE.regexpReplace(html,"<\/p>\s*(<\/p>\s*)?","

    ");}tinyMCE.setInnerHTML(doc.body,html);}tinyMCE.cleanupAnchors(doc);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc);};TinyMCE.prototype.getImageSrc=function(str){var pos=-1;if(!str)return "";if((pos=str.indexOf('this.src='))!=-1){var src=str.substring(pos+10);src=src.substring(0,src.indexOf('\''));return src;}return "";};TinyMCE.prototype._getElementById=function(element_id){var elm=document.getElementById(element_id);if(!elm){for(var j=0;j0){for(var x=0;x0)tinyMCE.cssClasses=output;return output;};TinyMCE.prototype.regexpReplace=function(in_str,reg_exp,replace_str,opts){if(in_str==null)return in_str;if(typeof(opts)=="undefined")opts='g';var re=new RegExp(reg_exp,opts);return in_str.replace(re,replace_str);};TinyMCE.prototype.trim=function(str){return str.replace(/^\s*|\s*$/g,"");};TinyMCE.prototype.cleanupEventStr=function(str){str=""+str;str=str.replace('function anonymous()\n{\n','');str=str.replace('\n}','');str=str.replace(/^return true;/gi,'');return str;};TinyMCE.prototype.getAbsPosition=function(node){var pos=new Object();pos.absLeft=pos.absTop=0;var parentNode=node;while(parentNode){pos.absLeft+=parentNode.offsetLeft;pos.absTop+=parentNode.offsetTop;parentNode=parentNode.offsetParent;}return pos;};TinyMCE.prototype.getControlHTML=function(control_name){var themePlugins=tinyMCE.getParam('plugins','',true,',');var templateFunction;for(var i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+"_getControlHTML";if(eval("typeof("+templateFunction+")")!='undefined'){var html=eval(templateFunction+"('"+control_name+"');");if(html!="")return tinyMCE.replaceVar(html,"pluginurl",tinyMCE.baseURL+"/plugins/"+themePlugins[i]);}}return eval('TinyMCE_'+tinyMCE.settings['theme']+"_getControlHTML"+"('"+control_name+"');");};TinyMCE.prototype._themeExecCommand=function(editor_id,element,command,user_interface,value){var themePlugins=tinyMCE.getParam('plugins','',true,',');var templateFunction;for(var i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+"_execCommand";if(eval("typeof("+templateFunction+")")!='undefined'){if(eval(templateFunction+"(editor_id, element, command, user_interface, value);"))return true;}}templateFunction='TinyMCE_'+tinyMCE.settings['theme']+"_execCommand";if(eval("typeof("+templateFunction+")")!='undefined')return eval(templateFunction+"(editor_id, element, command, user_interface, value);");return false;};TinyMCE.prototype._getThemeFunction=function(suffix,skip_plugins){if(skip_plugins)return 'TinyMCE_'+tinyMCE.settings['theme']+suffix;var themePlugins=tinyMCE.getParam('plugins','',true,',');var templateFunction;for(var i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+suffix;if(eval("typeof("+templateFunction+")")!='undefined')return templateFunction;}return 'TinyMCE_'+tinyMCE.settings['theme']+suffix;};TinyMCE.prototype.isFunc=function(func_name){if(func_name==null||func_name=="")return false;return eval("typeof("+func_name+")")!="undefined";};TinyMCE.prototype.exec=function(func_name,args){var str=func_name+'(';for(var i=3;i';document.body.appendChild(debugDiv);elm=document.getElementById("tinymce_debug");}var args=this.debug.arguments;for(var i=0;i1&&tinyMCE.currentConfig!=this.settings['index']){tinyMCE.settings=this.settings;tinyMCE.currentConfig=this.settings['index'];}};TinyMCEControl.prototype.convertAllRelativeURLs=function(){var body=this.getBody();var elms=body.getElementsByTagName("img");for(var i=0;i0)rng.selectNodeContents(nodes[0]);else rng.selectNodeContents(node);}else rng.selectNode(node);if(collapse){if(!to_start&&node.nodeType==3){rng.setStart(node,node.nodeValue.length);rng.setEnd(node,node.nodeValue.length);}else rng.collapse(to_start);}sel.removeAllRanges();sel.addRange(rng);}this.scrollToNode(node);tinyMCE.selectedElement=null;if(node.nodeType==1)tinyMCE.selectedElement=node;};TinyMCEControl.prototype.scrollToNode=function(node){var pos=tinyMCE.getAbsPosition(node);var doc=this.getDoc();var scrollX=doc.body.scrollLeft+doc.documentElement.scrollLeft;var scrollY=doc.body.scrollTop+doc.documentElement.scrollTop;var height=tinyMCE.isMSIE?document.getElementById(this.editorId).style.pixelHeight:this.targetElement.clientHeight;if(!tinyMCE.settings['auto_resize']&&!(pos.absTop>scrollY&&pos.absTop<(scrollY-25+height)))this.contentWindow.scrollTo(pos.absLeft,pos.absTop-height+25);};TinyMCEControl.prototype.getBody=function(){return this.getDoc().body;};TinyMCEControl.prototype.getDoc=function(){return this.contentWindow.document;};TinyMCEControl.prototype.getWin=function(){return this.contentWindow;};TinyMCEControl.prototype.getSel=function(){if(tinyMCE.isMSIE&&!tinyMCE.isOpera)return this.getDoc().selection;var sel=this.contentWindow.getSelection();if(tinyMCE.isSafari&&!sel.getRangeAt){var newSel=new Object();var doc=this.getDoc();function getRangeAt(idx){var rng=new Object();rng.startContainer=this.focusNode;rng.endContainer=this.anchorNode;rng.commonAncestorContainer=this.focusNode;rng.createContextualFragment=function(html){if(html.charAt(0)=='<'){var elm=doc.createElement("div");elm.innerHTML=html;return elm.firstChild;}return doc.createTextNode("UNSUPPORTED, DUE TO LIMITATIONS IN SAFARI!");};rng.deleteContents=function(){doc.execCommand("Delete",false,"");};return rng;}newSel.focusNode=sel.baseNode;newSel.focusOffset=sel.baseOffset;newSel.anchorNode=sel.extentNode;newSel.anchorOffset=sel.extentOffset;newSel.getRangeAt=getRangeAt;newSel.text=""+sel;newSel.realSelection=sel;newSel.toString=function(){return this.text;};return newSel;}return sel;};TinyMCEControl.prototype.getRng=function(){var sel=this.getSel();if(sel==null)return null;if(tinyMCE.isMSIE&&!tinyMCE.isOpera)return sel.createRange();if(tinyMCE.isSafari){var rng=this.getDoc().createRange();var sel=this.getSel().realSelection;rng.setStart(sel.baseNode,sel.baseOffset);rng.setEnd(sel.extentNode,sel.extentOffset);return rng;}return this.getSel().getRangeAt(0);};TinyMCEControl.prototype._insertPara=function(e){function isEmpty(para){function isEmptyHTML(html){return html.replace(new RegExp('[ \t\r\n]+','g'),'').toLowerCase()=="";}if(para.getElementsByTagName("img").length>0)return false;if(para.getElementsByTagName("table").length>0)return false;if(para.getElementsByTagName("hr").length>0)return false;var nodes=tinyMCE.getNodeTree(para,new Array(),3);for(var i=0;i <"+blockName+"> ";paraAfter=body.childNodes[1];}this.selectNode(paraAfter,true,true);return true;}if(startChop.nodeName==blockName)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);rngBefore.setEnd(startNode,startOffset);paraBefore.appendChild(rngBefore.cloneContents());rngAfter.setEndAfter(endChop);rngAfter.setStart(endNode,endOffset);var contents=rngAfter.cloneContents();if(contents.firstChild&&contents.firstChild.nodeName==blockName){paraAfter.innerHTML=contents.firstChild.innerHTML;}else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML=" ";if(isEmpty(paraAfter))paraAfter.innerHTML=" ";var rng=doc.createRange();if(!startChop.previousSibling&&startChop.parentNode.nodeName.toUpperCase()==blockName){rng.setStartBefore(startChop.parentNode);}else{if(rngBefore.startContainer.nodeName.toUpperCase()==blockName&&rngBefore.startOffset==0)rng.setStartBefore(rngBefore.startContainer);else rng.setStart(rngBefore.startContainer,rngBefore.startOffset);}if(!endChop.nextSibling&&endChop.parentNode.nodeName.toUpperCase()==blockName)rng.setEndAfter(endChop.parentNode);else rng.setEnd(rngAfter.endContainer,rngAfter.endOffset);rng.deleteContents();rng.insertNode(paraAfter);rng.insertNode(paraBefore);paraAfter.normalize();paraBefore.normalize();this.selectNode(paraAfter,true,true);return true;};TinyMCEControl.prototype._handleBackSpace=function(evt_type){var doc=this.getDoc();var sel=this.getSel();if(sel==null)return false;var rng=sel.getRangeAt(0);var node=rng.startContainer;var elm=node.nodeType==3?node.parentNode:node;if(node==null)return;if(elm&&elm.nodeName==""){var para=doc.createElement("p");while(elm.firstChild)para.appendChild(elm.firstChild);elm.parentNode.insertBefore(para,elm);elm.parentNode.removeChild(elm);var rng=rng.cloneRange();rng.setStartBefore(node.nextSibling);rng.setEndAfter(node.nextSibling);rng.extractContents();this.selectNode(node.nextSibling,true,true);}var para=tinyMCE.getParentBlockElement(node);if(para!=null&¶.nodeName.toLowerCase()=='p'&&evt_type=="keypress"){var htm=para.innerHTML;var block=tinyMCE.getParentBlockElement(node);if(htm==""||htm==" "||block.nodeName.toLowerCase()=="li"){var prevElm=para.previousSibling;while(prevElm!=null&&prevElm.nodeType!=1)prevElm=prevElm.previousSibling;if(prevElm==null)return false;var nodes=tinyMCE.getNodeTree(prevElm,new Array(),3);var lastTextNode=nodes.length==0?null:nodes[nodes.length-1];if(lastTextNode!=null)this.selectNode(lastTextNode,true,false,false);para.parentNode.removeChild(para);return true;}}return false;};TinyMCEControl.prototype._insertSpace=function(){return true;};TinyMCEControl.prototype.autoResetDesignMode=function(){if(!tinyMCE.isMSIE&&tinyMCE.settings['auto_reset_designmode']&&this.isHidden())eval('try { this.getDoc().designMode = "On"; } catch(e) {}');};TinyMCEControl.prototype.isHidden=function(){if(tinyMCE.isMSIE)return false;var sel=this.getSel();return(!sel||!sel.rangeCount||sel.rangeCount==0);};TinyMCEControl.prototype.isDirty=function(){return this.startContent!=tinyMCE.trim(this.getBody().innerHTML)&&!tinyMCE.isNotDirty;};TinyMCEControl.prototype._mergeElements=function(scmd,pa,ch,override){if(scmd=="removeformat"){pa.className="";pa.style.cssText="";ch.className="";ch.style.cssText="";return;}var st=tinyMCE.parseStyle(tinyMCE.getAttrib(pa,"style"));var stc=tinyMCE.parseStyle(tinyMCE.getAttrib(ch,"style"));var className=tinyMCE.getAttrib(pa,"class");className+=" "+tinyMCE.getAttrib(ch,"class");if(override){for(var n in st){if(typeof(st[n])=='function')continue;stc[n]=st[n];}}else{for(var n in stc){if(typeof(stc[n])=='function')continue;st[n]=stc[n];}}tinyMCE.setAttrib(pa,"style",tinyMCE.serializeStyle(st));tinyMCE.setAttrib(pa,"class",tinyMCE.trim(className));ch.className="";ch.style.cssText="";ch.removeAttribute("class");ch.removeAttribute("style");};TinyMCEControl.prototype.setUseCSS=function(b){var doc=this.getDoc();try{doc.execCommand("useCSS",false,!b);}catch(ex){}try{doc.execCommand("styleWithCSS",false,b);}catch(ex){}if(!tinyMCE.getParam("table_inline_editing"))try{doc.execCommand('enableInlineTableEditing',false,"false");}catch(ex){}if(!tinyMCE.getParam("object_resizing"))try{doc.execCommand('enableObjectResizing',false,"false");}catch(ex){}};TinyMCEControl.prototype.execCommand=function(command,user_interface,value){var doc=this.getDoc();var win=this.getWin();var focusElm=this.getFocusElement();if(this.lastSafariSelection&&!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel','gi').test(command)){this.moveToBookmark(this.lastSafariSelection);tinyMCE.selectedElement=this.lastSafariSelectedElement;}if(!tinyMCE.isMSIE&&!this.useCSS){this.setUseCSS(false);this.useCSS=true;}this.contentDocument=doc;if(tinyMCE._themeExecCommand(this.editorId,this.getBody(),command,user_interface,value))return;if(focusElm&&focusElm.nodeName=="IMG"){var align=focusElm.getAttribute('align');var img=command=="JustifyCenter"?focusElm.cloneNode(false):focusElm;switch(command){case "JustifyLeft":if(align=='left')img.removeAttribute('align');else img.setAttribute('align','left');var div=focusElm.parentNode;if(div&&div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);this.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;case "JustifyCenter":img.removeAttribute('align');var div=tinyMCE.getParentElement(focusElm,"div");if(div&&div.style.textAlign=="center"){if(div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);}else{var div=this.getDoc().createElement("div");div.style.textAlign='center';div.appendChild(img);focusElm.parentNode.replaceChild(div,focusElm);}this.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;case "JustifyRight":if(align=='right')img.removeAttribute('align');else img.setAttribute('align','right');var div=focusElm.parentNode;if(div&&div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);this.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;}}if(tinyMCE.settings['force_br_newlines']){var alignValue="";if(doc.selection.type!="Control"){switch(command){case "JustifyLeft":alignValue="left";break;case "JustifyCenter":alignValue="center";break;case "JustifyFull":alignValue="justify";break;case "JustifyRight":alignValue="right";break;}if(alignValue!=""){var rng=doc.selection.createRange();if((divElm=tinyMCE.getParentElement(rng.parentElement(),"div"))!=null)divElm.setAttribute("align",alignValue);else if(rng.pasteHTML&&rng.htmlText.length>0)rng.pasteHTML('
    '+rng.htmlText+"
    ");tinyMCE.triggerNodeChange();return;}}}switch(command){case "mceRepaint":this.repaint();return true;case "mceStoreSelection":this.selectionBookmark=this.getBookmark();return true;case "mceRestoreSelection":this.moveToBookmark(this.selectionBookmark);return true;case "InsertUnorderedList":case "InsertOrderedList":var tag=(command=="InsertUnorderedList")?"ul":"ol";if(tinyMCE.isSafari)this.execCommand("mceInsertContent",false,"<"+tag+">
  •  
  • <"+tag+">");else this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case "Strikethrough":if(tinyMCE.isSafari)this.execCommand("mceInsertContent",false,""+this.getSelectedHTML()+"");else this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case "mceSelectNode":this.selectNode(value);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=value;break;case "FormatBlock":if(value==null||value==""){var elm=tinyMCE.getParentElement(this.getFocusElement(),"p,div,h1,h2,h3,h4,h5,h6,pre,address");if(elm)this.execCommand("mceRemoveNode",false,elm);}else this.getDoc().execCommand("FormatBlock",false,value);tinyMCE.triggerNodeChange();break;case "mceRemoveNode":if(!value)value=tinyMCE.getParentElement(this.getFocusElement());if(tinyMCE.isMSIE){value.outerHTML=value.innerHTML;}else{var rng=value.ownerDocument.createRange();rng.setStartBefore(value);rng.setEndAfter(value);rng.deleteContents();rng.insertNode(rng.createContextualFragment(value.innerHTML));}tinyMCE.triggerNodeChange();break;case "mceSelectNodeDepth":var parentNode=this.getFocusElement();for(var i=0;parentNode;i++){if(parentNode.nodeName.toLowerCase()=="body")break;if(parentNode.nodeName.toLowerCase()=="#text"){i--;parentNode=parentNode.parentNode;continue;}if(i==value){this.selectNode(parentNode,false);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=parentNode;return;}parentNode=parentNode.parentNode;}break;case "SetStyleInfo":var rng=this.getRng();var sel=this.getSel();var scmd=value['command'];var sname=value['name'];var svalue=value['value']==null?'':value['value'];var wrapper=value['wrapper']?value['wrapper']:"span";var parentElm=null;var invalidRe=new RegExp("^BODY|HTML$","g");var invalidParentsRe=tinyMCE.settings['merge_styles_invalid_parents']!=''?new RegExp(tinyMCE.settings['merge_styles_invalid_parents'],"gi"):null;if(tinyMCE.isMSIE){if(rng.item)parentElm=rng.item(0);else{var pelm=rng.parentElement();var prng=doc.selection.createRange();prng.moveToElementText(pelm);if(rng.htmlText==prng.htmlText||rng.boundingWidth==0){if(invalidParentsRe==null||!invalidParentsRe.test(pelm.nodeName))parentElm=pelm;}}}else{var felm=this.getFocusElement();if(sel.isCollapsed||(/td|tr|tbody|table/ig.test(felm.nodeName)&&sel.anchorNode==felm.parentNode))parentElm=felm;}if(parentElm&&!invalidRe.test(parentElm.nodeName)){if(scmd=="setstyle")tinyMCE.setStyleAttrib(parentElm,sname,svalue);if(scmd=="setattrib")tinyMCE.setAttrib(parentElm,sname,svalue);if(scmd=="removeformat"){parentElm.style.cssText='';tinyMCE.setAttrib(parentElm,'class','');}var ch=tinyMCE.getNodeTree(parentElm,new Array(),1);for(var z=0;z=0;i--){var elm=nodes[i];var isNew=tinyMCE.getAttrib(elm,"mce_new")=="true";elm.removeAttribute("mce_new");if(elm.childNodes&&elm.childNodes.length==1&&elm.childNodes[0].nodeType==1){this._mergeElements(scmd,elm,elm.childNodes[0],isNew);continue;}if(elm.parentNode.childNodes.length==1&&!invalidRe.test(elm.nodeName)&&!invalidRe.test(elm.parentNode.nodeName)){if(invalidParentsRe==null||!invalidParentsRe.test(elm.parentNode.nodeName))this._mergeElements(scmd,elm.parentNode,elm,false);}}var nodes=doc.getElementsByTagName(wrapper);for(var i=nodes.length-1;i>=0;i--){var elm=nodes[i];var isEmpty=true;var tmp=doc.createElement("body");tmp.appendChild(elm.cloneNode(false));tmp.innerHTML=tmp.innerHTML.replace(new RegExp('style=""|class=""','gi'),'');if(new RegExp('','gi').test(tmp.innerHTML)){for(var x=0;x0){value=tinyMCE.replaceVar(value,"selection",selectedText);tinyMCE.execCommand('mceInsertContent',false,value);}tinyMCE.triggerNodeChange();break;case "mceSetAttribute":if(typeof(value)=='object'){var targetElms=(typeof(value['targets'])=="undefined")?"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address":value['targets'];var targetNode=tinyMCE.getParentElement(this.getFocusElement(),targetElms);if(targetNode){targetNode.setAttribute(value['name'],value['value']);tinyMCE.triggerNodeChange();}}break;case "mceSetCSSClass":this.execCommand("SetStyleInfo",false,{command:"setattrib",name:"class",value:value});break;case "mceInsertRawHTML":var key='tiny_mce_marker';this.execCommand('mceBeginUndoLevel');this.execCommand('mceInsertContent',false,key);var scrollX=this.getDoc().body.scrollLeft+this.getDoc().documentElement.scrollLeft;var scrollY=this.getDoc().body.scrollTop+this.getDoc().documentElement.scrollTop;var html=this.getBody().innerHTML;if((pos=html.indexOf(key))!=-1)tinyMCE.setInnerHTML(this.getBody(),html.substring(0,pos)+value+html.substring(pos+key.length));this.contentWindow.scrollTo(scrollX,scrollY);this.execCommand('mceEndUndoLevel');break;case "mceInsertContent":var insertHTMLFailed=false;this.getWin().focus();if(tinyMCE.isGecko||tinyMCE.isOpera){try{if(value.indexOf('<')==-1){var r=this.getRng();var n=this.getDoc().createTextNode(tinyMCE.entityDecode(value));var s=this.getSel();var r2=r.cloneRange();s.removeAllRanges();r.deleteContents();r.insertNode(n);r2.selectNode(n);r2.collapse(false);s.removeAllRanges();s.addRange(r2);}else{value=tinyMCE.fixGeckoBaseHREFBug(1,this.getDoc(),value);this.getDoc().execCommand('inserthtml',false,value);tinyMCE.fixGeckoBaseHREFBug(2,this.getDoc(),value);}}catch(ex){insertHTMLFailed=true;}if(!insertHTMLFailed){tinyMCE.triggerNodeChange();return;}}if(tinyMCE.isOpera&&insertHTMLFailed){this.getDoc().execCommand("insertimage",false,tinyMCE.uniqueURL);var ar=tinyMCE.getElementsByAttributeValue(this.getBody(),"img","src",tinyMCE.uniqueURL);ar[0].outerHTML=value;return;}if(!tinyMCE.isMSIE){var isHTML=value.indexOf('<')!=-1;var sel=this.getSel();var rng=this.getRng();if(isHTML){if(tinyMCE.isSafari){var tmpRng=this.getDoc().createRange();tmpRng.setStart(this.getBody(),0);tmpRng.setEnd(this.getBody(),0);value=tmpRng.createContextualFragment(value);}else value=rng.createContextualFragment(value);}else{var el=document.createElement("div");el.innerHTML=value;value=el.firstChild.nodeValue;value=doc.createTextNode(value);}if(tinyMCE.isSafari&&!isHTML){this.execCommand('InsertText',false,value.nodeValue);tinyMCE.triggerNodeChange();return true;}else if(tinyMCE.isSafari&&isHTML){rng.deleteContents();rng.insertNode(value);tinyMCE.triggerNodeChange();return true;}rng.deleteContents();if(rng.startContainer.nodeType==3){var node=rng.startContainer.splitText(rng.startOffset);node.parentNode.insertBefore(value,node);}else rng.insertNode(value);if(!isHTML){sel.selectAllChildren(doc.body);sel.removeAllRanges();var rng=doc.createRange();rng.selectNode(value);rng.collapse(false);sel.addRange(rng);}else rng.collapse(false);}else{var rng=doc.selection.createRange();var c=value.indexOf('"; + + default: // Unknown + return "[UNKNOWN NODETYPE " + node.nodeType + "]"; + } +}; + +TinyMCE.prototype.convertStringToXML = function(html_data) { + var output = ""; + + for (var i=0; i 127) + output += '&#' + chr + ";"; + else + output += String.fromCharCode(chr); + + continue; + } + + // Raw entities + if (tinyMCE.settings['entity_encoding'] == "raw") { + output += String.fromCharCode(chr); + continue; + } + + // Named entities + if (typeof(tinyMCE.settings['cleanup_entities']["c" + chr]) != 'undefined' && tinyMCE.settings['cleanup_entities']["c" + chr] != '') + output += '&' + tinyMCE.settings['cleanup_entities']["c" + chr] + ';'; + else + output += '' + String.fromCharCode(chr); + } + + return output; +}; + +TinyMCE.prototype._getCleanupElementName = function(chunk) { + var pos; + + if (chunk.charAt(0) == '+') + chunk = chunk.substring(1); + + if (chunk.charAt(0) == '-') + chunk = chunk.substring(1); + + if ((pos = chunk.indexOf('/')) != -1) + chunk = chunk.substring(0, pos); + + if ((pos = chunk.indexOf('[')) != -1) + chunk = chunk.substring(0, pos); + + return chunk; +}; + +TinyMCE.prototype._initCleanup = function() { + // Parse valid elements and attributes + var validElements = tinyMCE.settings["valid_elements"]; + validElements = validElements.split(','); + + // Handle extended valid elements + var extendedValidElements = tinyMCE.settings["extended_valid_elements"]; + extendedValidElements = extendedValidElements.split(','); + for (var i=0; i/gi, '>'); + + return html; + } + + if (on_save && tinyMCE.getParam("convert_fonts_to_spans")) + tinyMCE.convertFontsToSpans(doc); + + // Call custom cleanup code + tinyMCE._customCleanup(inst, on_save ? "get_from_editor_dom" : "insert_to_editor_dom", doc.body); + + // Move bgcolor to style + var n = doc.getElementsByTagName("font"); + for (var i=0; i[ \n\r]*[ \n\r]*

    ', '
    ', 'gi')); + tinyMCE.setInnerHTML(element, tinyMCE.regexpReplace(element.innerHTML, '', '', 'gi')); + } + + var html = this.cleanupNode(element); + + if (tinyMCE.settings['debug']) + tinyMCE.debug("Cleanup process executed in: " + (new Date().getTime()-startTime) + " ms."); + + // Remove pesky HR paragraphs and other crap + html = tinyMCE.regexpReplace(html, '


    ', '
    '); + html = tinyMCE.regexpReplace(html, '

     


     

    ', '
    '); + html = tinyMCE.regexpReplace(html, '\\s*
    \\s*', ' '); + html = tinyMCE.regexpReplace(html, '

    \\s*
    \\s*

    ', '

     

    '); + html = tinyMCE.regexpReplace(html, '

    \\s* \\s*
    \\s* \\s*

    ', '

     

    '); + html = tinyMCE.regexpReplace(html, '

    \\s* \\s*
    \\s*

    ', '

     

    '); + html = tinyMCE.regexpReplace(html, '

    \\s*
    \\s* \\s*

    ', '

     

    '); + + // Remove empty anchors + html = html.replace(new RegExp('(.*?)', 'gi'), '$1'); + + // Remove some mozilla crap + if (!tinyMCE.isMSIE) + html = html.replace(new RegExp('', 'g'), ""); + + if (tinyMCE.settings['remove_linebreaks']) + html = html.replace(new RegExp('\r|\n', 'g'), ' '); + + if (tinyMCE.getParam('apply_source_formatting')) { + html = html.replace(new RegExp('<(p|div)([^>]*)>', 'g'), "\n<$1$2>\n"); + html = html.replace(new RegExp('<\/(p|div)([^>]*)>', 'g'), "\n\n"); + html = html.replace(new RegExp('
    ', 'g'), "
    \n"); + } + + if (tinyMCE.settings['force_br_newlines']) { + var re = new RegExp('

     

    ', 'g'); + html = html.replace(re, "
    "); + } + + if (tinyMCE.isGecko && tinyMCE.settings['remove_lt_gt']) { + // Remove weridness! + var re = new RegExp('<>', 'g'); + html = html.replace(re, ""); + } + + // Call custom cleanup code + html = tinyMCE._customCleanup(inst, on_save ? "get_from_editor" : "insert_to_editor", html); + + // Emtpy node, return empty + var chk = tinyMCE.regexpReplace(html, "[ \t\r\n]", "").toLowerCase(); + if (chk == "
    " || chk == "
    " || chk == "

     

    " || chk == "

     

    " || chk == "

    ") + html = ""; + + if (tinyMCE.settings["preformatted"]) + return "
    " + html + "
    "; + + return html; +}; + +TinyMCE.prototype.insertLink = function(href, target, title, onclick, style_class) { + tinyMCE.execCommand('mceBeginUndoLevel'); + + if (this.selectedInstance && this.selectedElement && this.selectedElement.nodeName.toLowerCase() == "img") { + var doc = this.selectedInstance.getDoc(); + var linkElement = tinyMCE.getParentElement(this.selectedElement, "a"); + var newLink = false; + + if (!linkElement) { + linkElement = doc.createElement("a"); + newLink = true; + } + + var mhref = href; + var thref = eval(tinyMCE.settings['urlconverter_callback'] + "(href, linkElement);"); + mhref = tinyMCE.getParam('convert_urls') ? href : mhref; + + tinyMCE.setAttrib(linkElement, 'href', thref); + tinyMCE.setAttrib(linkElement, 'mce_href', mhref); + tinyMCE.setAttrib(linkElement, 'target', target); + tinyMCE.setAttrib(linkElement, 'title', title); + tinyMCE.setAttrib(linkElement, 'onclick', onclick); + tinyMCE.setAttrib(linkElement, 'class', style_class); + + if (newLink) { + linkElement.appendChild(this.selectedElement.cloneNode(true)); + this.selectedElement.parentNode.replaceChild(linkElement, this.selectedElement); + } + + return; + } + + if (!this.linkElement && this.selectedInstance) { + if (tinyMCE.isSafari) { + tinyMCE.execCommand("mceInsertContent", false, '' + this.selectedInstance.getSelectedHTML() + ''); + } else + this.selectedInstance.contentDocument.execCommand("createlink", false, tinyMCE.uniqueURL); + + tinyMCE.linkElement = this.getElementByAttributeValue(this.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL); + + var elementArray = this.getElementsByAttributeValue(this.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL); + + for (var i=0; i'; + + tinyMCE.execCommand("mceInsertContent", false, html); + } else { + if (!this.imgElement && this.selectedInstance) { + if (tinyMCE.isSafari) + tinyMCE.execCommand("mceInsertContent", false, ''); + else + this.selectedInstance.contentDocument.execCommand("insertimage", false, tinyMCE.uniqueURL); + + tinyMCE.imgElement = this.getElementByAttributeValue(this.selectedInstance.contentDocument.body, "img", "src", tinyMCE.uniqueURL); + } + } + + if (this.imgElement) { + var needsRepaint = false; + var msrc = src; + + src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, tinyMCE.imgElement);"); + + if (tinyMCE.getParam('convert_urls')) + msrc = src; + + if (onmouseover && onmouseover != "") + onmouseover = "this.src='" + eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseover, tinyMCE.imgElement);") + "';"; + + if (onmouseout && onmouseout != "") + onmouseout = "this.src='" + eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseout, tinyMCE.imgElement);") + "';"; + + // Use alt as title if it's undefined + if (typeof(title) == "undefined") + title = alt; + + if (width != this.imgElement.getAttribute("width") || height != this.imgElement.getAttribute("height") || align != this.imgElement.getAttribute("align")) + needsRepaint = true; + + tinyMCE.setAttrib(this.imgElement, 'src', src); + tinyMCE.setAttrib(this.imgElement, 'mce_src', msrc); + tinyMCE.setAttrib(this.imgElement, 'alt', alt); + tinyMCE.setAttrib(this.imgElement, 'title', title); + tinyMCE.setAttrib(this.imgElement, 'align', align); + tinyMCE.setAttrib(this.imgElement, 'border', border, true); + tinyMCE.setAttrib(this.imgElement, 'hspace', hspace, true); + tinyMCE.setAttrib(this.imgElement, 'vspace', vspace, true); + tinyMCE.setAttrib(this.imgElement, 'width', width, true); + tinyMCE.setAttrib(this.imgElement, 'height', height, true); + tinyMCE.setAttrib(this.imgElement, 'onmouseover', onmouseover); + tinyMCE.setAttrib(this.imgElement, 'onmouseout', onmouseout); + + // Fix for bug #989846 - Image resize bug + if (width && width != "") + this.imgElement.style.pixelWidth = width; + + if (height && height != "") + this.imgElement.style.pixelHeight = height; + + if (needsRepaint) + tinyMCE.selectedInstance.repaint(); + } + + tinyMCE.execCommand('mceEndUndoLevel'); +}; + +TinyMCE.prototype.getElementByAttributeValue = function(node, element_name, attrib, value) { + var elements = this.getElementsByAttributeValue(node, element_name, attrib, value); + if (elements.length == 0) + return null; + + return elements[0]; +}; + +TinyMCE.prototype.getElementsByAttributeValue = function(node, element_name, attrib, value) { + var elements = new Array(); + + if (node && node.nodeName.toLowerCase() == element_name) { + if (node.getAttribute(attrib) && node.getAttribute(attrib).indexOf(value) != -1) + elements[elements.length] = node; + } + + if (node && node.hasChildNodes()) { + for (var x=0, n=node.childNodes.length; x= strTok2.length) { + for (var i=0; i= strTok2.length || strTok1[i] != strTok2[i]) { + breakPoint = i + 1; + break; + } + } + } + + if (strTok1.length < strTok2.length) { + for (var i=0; i= strTok1.length || strTok1[i] != strTok2[i]) { + breakPoint = i + 1; + break; + } + } + } + + if (breakPoint == 1) + return targetURL.path; + + for (var i=0; i<(strTok1.length-(breakPoint-1)); i++) + outPath += "../"; + + for (var i=breakPoint-1; i=0; i--) { + if (baseURLParts[i].length == 0) + continue; + + newBaseURLParts[newBaseURLParts.length] = baseURLParts[i]; + } + baseURLParts = newBaseURLParts.reverse(); + + // Merge relURLParts chunks + var newRelURLParts = new Array(); + var numBack = 0; + for (var i=relURLParts.length-1; i>=0; i--) { + if (relURLParts[i].length == 0 || relURLParts[i] == ".") + continue; + + if (relURLParts[i] == '..') { + numBack++; + continue; + } + + if (numBack > 0) { + numBack--; + continue; + } + + newRelURLParts[newRelURLParts.length] = relURLParts[i]; + } + + relURLParts = newRelURLParts.reverse(); + + // Remove end from absolute path + var len = baseURLParts.length-numBack; + var absPath = (len <= 0 ? "" : "/") + baseURLParts.slice(0, len).join('/') + "/" + relURLParts.join('/'); + var start = "", end = ""; + + // Build output URL + relURL.protocol = baseURL.protocol; + relURL.host = baseURL.host; + relURL.port = baseURL.port; + + // Re-add trailing slash if it's removed + if (relURL.path.charAt(relURL.path.length-1) == "/") + absPath += "/"; + + relURL.path = absPath; + + return TinyMCE.prototype.serializeURL(relURL); +}; + +TinyMCE.prototype.getParam = function(name, default_value, strip_whitespace, split_chr) { + var value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name]; + + // Fix bool values + if (value == "true" || value == "false") + return (value == "true"); + + if (strip_whitespace) + value = tinyMCE.regexpReplace(value, "[ \t\r\n]", ""); + + if (typeof(split_chr) != "undefined" && split_chr != null) { + value = value.split(split_chr); + var outArray = new Array(); + + for (var i=0; i 0); + + if (tinyMCE.settings['custom_undo_redo']) { + undoIndex = inst.undoIndex; + undoLevels = inst.undoLevels.length; + } + + tinyMCE.executeCallback('handleNodeChangeCallback', '_handleNodeChange', 0, editorId, elm, undoIndex, undoLevels, inst.visualAid, anySelection, setup_content); + } + } + + if (this.selectedInstance && (typeof(focus) == "undefined" || focus)) + this.selectedInstance.contentWindow.focus(); +}; + +TinyMCE.prototype._customCleanup = function(inst, type, content) { + // Call custom cleanup + var customCleanup = tinyMCE.settings['cleanup_callback']; + if (customCleanup != "" && eval("typeof(" + customCleanup + ")") != "undefined") + content = eval(customCleanup + "(type, content, inst);"); + + // Trigger plugin cleanups + var plugins = tinyMCE.getParam('plugins', '', true, ','); + for (var i=0; i 0) + className += " "; + + className += classNames[i]; + } + + return className; +}; + +TinyMCE.prototype.handleVisualAid = function(el, deep, state, inst) { + if (!el) + return; + + var tableElement = null; + + switch (el.nodeName) { + case "TABLE": + var oldW = el.style.width; + var oldH = el.style.height; + var bo = tinyMCE.getAttrib(el, "border"); + + bo = bo == "" || bo == "0" ? true : false; + + tinyMCE.setAttrib(el, "class", tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el, "class"), state && bo)); + + el.style.width = oldW; + el.style.height = oldH; + + for (var y=0; y 0) { + tinyMCE.setAttrib(s[i], 'size', fSize); + s[i].style.fontSize = ''; + } + + var fFace = s[i].style.fontFamily; + if (fFace != null && fFace != "") { + tinyMCE.setAttrib(s[i], 'face', fFace); + s[i].style.fontFamily = ''; + } + + var fColor = s[i].style.color; + if (fColor != null && fColor != "") { + tinyMCE.setAttrib(s[i], 'color', tinyMCE.convertRGBToHex(fColor)); + s[i].style.color = ''; + } + } +}; + +TinyMCE.prototype.convertFontsToSpans = function(doc) { + var sizes = tinyMCE.getParam('font_size_style_values').replace(/\s+/, '').split(','); + + var h = doc.body.innerHTML; + h = h.replace(/ 0 && fSize < 8) { + if (fsClasses != null) + tinyMCE.setAttrib(s[i], 'class', fsClasses[fSize-1]); + else + s[i].style.fontSize = sizes[fSize-1]; + } + + s[i].removeAttribute('size'); + } + + if (fFace != "") { + s[i].style.fontFamily = fFace; + s[i].removeAttribute('face'); + } + + if (fColor != "") { + s[i].style.color = fColor; + s[i].removeAttribute('color'); + } + } +}; + +/* +TinyMCE.prototype.applyClassesToFonts = function(doc, size) { + var f = doc.getElementsByTagName("font"); + for (var i=0; i=0; x--) + tinyMCE.insertAfter(cn[x], an[i]); + } + } +}; + +TinyMCE.prototype._setHTML = function(doc, html_content) { + // Force closed anchors open + //html_content = html_content.replace(new RegExp('', 'gi'), ''); + + html_content = tinyMCE.cleanupHTMLCode(html_content); + + // Try innerHTML if it fails use pasteHTML in MSIE + try { + tinyMCE.setInnerHTML(doc.body, html_content); + } catch (e) { + if (this.isMSIE) + doc.body.createTextRange().pasteHTML(html_content); + } + + // Content duplication bug fix + if (tinyMCE.isMSIE && tinyMCE.settings['fix_content_duplication']) { + // Remove P elements in P elements + var paras = doc.getElementsByTagName("P"); + for (var i=0; i<\/o:p>", "
    "); + html = tinyMCE.regexpReplace(html, " <\/o:p>", ""); + html = tinyMCE.regexpReplace(html, "", ""); + html = tinyMCE.regexpReplace(html, "

    <\/p>", ""); + html = tinyMCE.regexpReplace(html, "

    <\/p>\r\n

    <\/p>", ""); + html = tinyMCE.regexpReplace(html, "

     <\/p>", "
    "); + html = tinyMCE.regexpReplace(html, "

    \s*(

    \s*)?", "

    "); + html = tinyMCE.regexpReplace(html, "<\/p>\s*(<\/p>\s*)?", "

    "); + } + + // Always set the htmlText output + tinyMCE.setInnerHTML(doc.body, html); + } + + tinyMCE.cleanupAnchors(doc); + + if (tinyMCE.getParam("convert_fonts_to_spans")) + tinyMCE.convertSpansToFonts(doc); +}; + +TinyMCE.prototype.getImageSrc = function(str) { + var pos = -1; + + if (!str) + return ""; + + if ((pos = str.indexOf('this.src=')) != -1) { + var src = str.substring(pos + 10); + + src = src.substring(0, src.indexOf('\'')); + + return src; + } + + return ""; +}; + +TinyMCE.prototype._getElementById = function(element_id) { + var elm = document.getElementById(element_id); + if (!elm) { + // Check for element in forms + for (var j=0; j 0) { + for (var x=0; x 0) + tinyMCE.cssClasses = output; + + return output; +}; + +TinyMCE.prototype.regexpReplace = function(in_str, reg_exp, replace_str, opts) { + if (in_str == null) + return in_str; + + if (typeof(opts) == "undefined") + opts = 'g'; + + var re = new RegExp(reg_exp, opts); + return in_str.replace(re, replace_str); +}; + +TinyMCE.prototype.trim = function(str) { + return str.replace(/^\s*|\s*$/g, ""); +}; + +TinyMCE.prototype.cleanupEventStr = function(str) { + str = "" + str; + str = str.replace('function anonymous()\n{\n', ''); + str = str.replace('\n}', ''); + str = str.replace(/^return true;/gi, ''); // Remove event blocker + + return str; +}; + +TinyMCE.prototype.getAbsPosition = function(node) { + var pos = new Object(); + + pos.absLeft = pos.absTop = 0; + + var parentNode = node; + while (parentNode) { + pos.absLeft += parentNode.offsetLeft; + pos.absTop += parentNode.offsetTop; + + parentNode = parentNode.offsetParent; + } + + return pos; +}; + +TinyMCE.prototype.getControlHTML = function(control_name) { + var themePlugins = tinyMCE.getParam('plugins', '', true, ','); + var templateFunction; + + // Is it defined in any plugins + for (var i=themePlugins.length; i>=0; i--) { + templateFunction = 'TinyMCE_' + themePlugins[i] + "_getControlHTML"; + if (eval("typeof(" + templateFunction + ")") != 'undefined') { + var html = eval(templateFunction + "('" + control_name + "');"); + if (html != "") + return tinyMCE.replaceVar(html, "pluginurl", tinyMCE.baseURL + "/plugins/" + themePlugins[i]); + } + } + + return eval('TinyMCE_' + tinyMCE.settings['theme'] + "_getControlHTML" + "('" + control_name + "');"); +}; + +TinyMCE.prototype._themeExecCommand = function(editor_id, element, command, user_interface, value) { + var themePlugins = tinyMCE.getParam('plugins', '', true, ','); + var templateFunction; + + // Is it defined in any plugins + for (var i=themePlugins.length; i>=0; i--) { + templateFunction = 'TinyMCE_' + themePlugins[i] + "_execCommand"; + if (eval("typeof(" + templateFunction + ")") != 'undefined') { + if (eval(templateFunction + "(editor_id, element, command, user_interface, value);")) + return true; + } + } + + // Theme funtion + templateFunction = 'TinyMCE_' + tinyMCE.settings['theme'] + "_execCommand"; + if (eval("typeof(" + templateFunction + ")") != 'undefined') + return eval(templateFunction + "(editor_id, element, command, user_interface, value);"); + + // Pass to normal + return false; +}; + +TinyMCE.prototype._getThemeFunction = function(suffix, skip_plugins) { + if (skip_plugins) + return 'TinyMCE_' + tinyMCE.settings['theme'] + suffix; + + var themePlugins = tinyMCE.getParam('plugins', '', true, ','); + var templateFunction; + + // Is it defined in any plugins + for (var i=themePlugins.length; i>=0; i--) { + templateFunction = 'TinyMCE_' + themePlugins[i] + suffix; + if (eval("typeof(" + templateFunction + ")") != 'undefined') + return templateFunction; + } + + return 'TinyMCE_' + tinyMCE.settings['theme'] + suffix; +}; + + +TinyMCE.prototype.isFunc = function(func_name) { + if (func_name == null || func_name == "") + return false; + + return eval("typeof(" + func_name + ")") != "undefined"; +}; + +TinyMCE.prototype.exec = function(func_name, args) { + var str = func_name + '('; + + // Add all arguments + for (var i=3; i 1 && tinyMCE.currentConfig != this.settings['index']) { + tinyMCE.settings = this.settings; + tinyMCE.currentConfig = this.settings['index']; + } +}; + +TinyMCEControl.prototype.convertAllRelativeURLs = function() { + var body = this.getBody(); + + // Convert all image URL:s to absolute URL + var elms = body.getElementsByTagName("img"); + for (var i=0; i 0) + rng.selectNodeContents(nodes[0]); + else + rng.selectNodeContents(node); + } else + rng.selectNode(node); + + if (collapse) { + // Special treatment of textnode collapse + if (!to_start && node.nodeType == 3) { + rng.setStart(node, node.nodeValue.length); + rng.setEnd(node, node.nodeValue.length); + } else + rng.collapse(to_start); + } + + sel.removeAllRanges(); + sel.addRange(rng); + } + + this.scrollToNode(node); + + // Set selected element + tinyMCE.selectedElement = null; + if (node.nodeType == 1) + tinyMCE.selectedElement = node; +}; + +TinyMCEControl.prototype.scrollToNode = function(node) { + // Scroll to node position + var pos = tinyMCE.getAbsPosition(node); + var doc = this.getDoc(); + var scrollX = doc.body.scrollLeft + doc.documentElement.scrollLeft; + var scrollY = doc.body.scrollTop + doc.documentElement.scrollTop; + var height = tinyMCE.isMSIE ? document.getElementById(this.editorId).style.pixelHeight : this.targetElement.clientHeight; + + // Only scroll if out of visible area + if (!tinyMCE.settings['auto_resize'] && !(pos.absTop > scrollY && pos.absTop < (scrollY - 25 + height))) + this.contentWindow.scrollTo(pos.absLeft, pos.absTop - height + 25); +}; + +TinyMCEControl.prototype.getBody = function() { + return this.getDoc().body; +}; + +TinyMCEControl.prototype.getDoc = function() { + return this.contentWindow.document; +}; + +TinyMCEControl.prototype.getWin = function() { + return this.contentWindow; +}; + +TinyMCEControl.prototype.getSel = function() { + if (tinyMCE.isMSIE && !tinyMCE.isOpera) + return this.getDoc().selection; + + var sel = this.contentWindow.getSelection(); + + // Fake getRangeAt + if (tinyMCE.isSafari && !sel.getRangeAt) { + var newSel = new Object(); + var doc = this.getDoc(); + + function getRangeAt(idx) { + var rng = new Object(); + + rng.startContainer = this.focusNode; + rng.endContainer = this.anchorNode; + rng.commonAncestorContainer = this.focusNode; + rng.createContextualFragment = function (html) { + // Seems to be a tag + if (html.charAt(0) == '<') { + var elm = doc.createElement("div"); + + elm.innerHTML = html; + + return elm.firstChild; + } + + return doc.createTextNode("UNSUPPORTED, DUE TO LIMITATIONS IN SAFARI!"); + }; + + rng.deleteContents = function () { + doc.execCommand("Delete", false, ""); + }; + + return rng; + } + + // Patch selection + + newSel.focusNode = sel.baseNode; + newSel.focusOffset = sel.baseOffset; + newSel.anchorNode = sel.extentNode; + newSel.anchorOffset = sel.extentOffset; + newSel.getRangeAt = getRangeAt; + newSel.text = "" + sel; + newSel.realSelection = sel; + + newSel.toString = function () {return this.text;}; + + return newSel; + } + + return sel; +}; + +TinyMCEControl.prototype.getRng = function() { + var sel = this.getSel(); + if (sel == null) + return null; + + if (tinyMCE.isMSIE && !tinyMCE.isOpera) + return sel.createRange(); + + if (tinyMCE.isSafari) { + var rng = this.getDoc().createRange(); + var sel = this.getSel().realSelection; + + rng.setStart(sel.baseNode, sel.baseOffset); + rng.setEnd(sel.extentNode, sel.extentOffset); + + return rng; + } + + return this.getSel().getRangeAt(0); +}; + +TinyMCEControl.prototype._insertPara = function(e) { + function isEmpty(para) { + function isEmptyHTML(html) { + return html.replace(new RegExp('[ \t\r\n]+', 'g'), '').toLowerCase() == ""; + } + + // Check for images + if (para.getElementsByTagName("img").length > 0) + return false; + + // Check for tables + if (para.getElementsByTagName("table").length > 0) + return false; + + // Check for HRs + if (para.getElementsByTagName("hr").length > 0) + return false; + + // Check all textnodes + var nodes = tinyMCE.getNodeTree(para, new Array(), 3); + for (var i=0; i <" + blockName + "> "; + paraAfter = body.childNodes[1]; + } + + this.selectNode(paraAfter, true, true); + + return true; + } + + // Place first part within new paragraph + if (startChop.nodeName == blockName) + rngBefore.setStart(startChop, 0); + else + rngBefore.setStartBefore(startChop); + + rngBefore.setEnd(startNode, startOffset); + paraBefore.appendChild(rngBefore.cloneContents()); + + // Place secound part within new paragraph + rngAfter.setEndAfter(endChop); + rngAfter.setStart(endNode, endOffset); + var contents = rngAfter.cloneContents(); + + if (contents.firstChild && contents.firstChild.nodeName == blockName) { +/* var nodes = contents.firstChild.childNodes; + for (var i=0; i 0) + rng.pasteHTML('
    ' + rng.htmlText + "
    "); + + tinyMCE.triggerNodeChange(); + return; + } + } + } + + switch (command) { + case "mceRepaint": + this.repaint(); + return true; + + case "mceStoreSelection": + this.selectionBookmark = this.getBookmark(); + return true; + + case "mceRestoreSelection": + this.moveToBookmark(this.selectionBookmark); + return true; + + case "InsertUnorderedList": + case "InsertOrderedList": + var tag = (command == "InsertUnorderedList") ? "ul" : "ol"; + + if (tinyMCE.isSafari) + this.execCommand("mceInsertContent", false, "<" + tag + ">
  •  
  • <" + tag + ">"); + else + this.getDoc().execCommand(command, user_interface, value); + + tinyMCE.triggerNodeChange(); + break; + + case "Strikethrough": + if (tinyMCE.isSafari) + this.execCommand("mceInsertContent", false, "" + this.getSelectedHTML() + ""); + else + this.getDoc().execCommand(command, user_interface, value); + + tinyMCE.triggerNodeChange(); + break; + + case "mceSelectNode": + this.selectNode(value); + tinyMCE.triggerNodeChange(); + tinyMCE.selectedNode = value; + break; + + case "FormatBlock": + if (value == null || value == "") { + var elm = tinyMCE.getParentElement(this.getFocusElement(), "p,div,h1,h2,h3,h4,h5,h6,pre,address"); + + if (elm) + this.execCommand("mceRemoveNode", false, elm); + } else + this.getDoc().execCommand("FormatBlock", false, value); + + tinyMCE.triggerNodeChange(); + + break; + + case "mceRemoveNode": + if (!value) + value = tinyMCE.getParentElement(this.getFocusElement()); + + if (tinyMCE.isMSIE) { + value.outerHTML = value.innerHTML; + } else { + var rng = value.ownerDocument.createRange(); + rng.setStartBefore(value); + rng.setEndAfter(value); + rng.deleteContents(); + rng.insertNode(rng.createContextualFragment(value.innerHTML)); + } + + tinyMCE.triggerNodeChange(); + + break; + + case "mceSelectNodeDepth": + var parentNode = this.getFocusElement(); + for (var i=0; parentNode; i++) { + if (parentNode.nodeName.toLowerCase() == "body") + break; + + if (parentNode.nodeName.toLowerCase() == "#text") { + i--; + parentNode = parentNode.parentNode; + continue; + } + + if (i == value) { + this.selectNode(parentNode, false); + tinyMCE.triggerNodeChange(); + tinyMCE.selectedNode = parentNode; + return; + } + + parentNode = parentNode.parentNode; + } + + break; + + case "SetStyleInfo": + var rng = this.getRng(); + var sel = this.getSel(); + var scmd = value['command']; + var sname = value['name']; + var svalue = value['value'] == null ? '' : value['value']; + //var svalue = value['value'] == null ? '' : value['value']; + var wrapper = value['wrapper'] ? value['wrapper'] : "span"; + var parentElm = null; + var invalidRe = new RegExp("^BODY|HTML$", "g"); + var invalidParentsRe = tinyMCE.settings['merge_styles_invalid_parents'] != '' ? new RegExp(tinyMCE.settings['merge_styles_invalid_parents'], "gi") : null; + + // Whole element selected check + if (tinyMCE.isMSIE) { + // Control range + if (rng.item) + parentElm = rng.item(0); + else { + var pelm = rng.parentElement(); + var prng = doc.selection.createRange(); + prng.moveToElementText(pelm); + + if (rng.htmlText == prng.htmlText || rng.boundingWidth == 0) { + if (invalidParentsRe == null || !invalidParentsRe.test(pelm.nodeName)) + parentElm = pelm; + } + } + } else { + var felm = this.getFocusElement(); + if (sel.isCollapsed || (/td|tr|tbody|table/ig.test(felm.nodeName) && sel.anchorNode == felm.parentNode)) + parentElm = felm; + } + + // Whole element selected + if (parentElm && !invalidRe.test(parentElm.nodeName)) { + if (scmd == "setstyle") + tinyMCE.setStyleAttrib(parentElm, sname, svalue); + + if (scmd == "setattrib") + tinyMCE.setAttrib(parentElm, sname, svalue); + + if (scmd == "removeformat") { + parentElm.style.cssText = ''; + tinyMCE.setAttrib(parentElm, 'class', ''); + } + + // Remove style/attribs from all children + var ch = tinyMCE.getNodeTree(parentElm, new Array(), 1); + for (var z=0; z=0; i--) { + var elm = nodes[i]; + var isNew = tinyMCE.getAttrib(elm, "mce_new") == "true"; + + elm.removeAttribute("mce_new"); + + // Is only child a element + if (elm.childNodes && elm.childNodes.length == 1 && elm.childNodes[0].nodeType == 1) { + //tinyMCE.debug("merge1" + isNew); + this._mergeElements(scmd, elm, elm.childNodes[0], isNew); + continue; + } + + // Is I the only child + if (elm.parentNode.childNodes.length == 1 && !invalidRe.test(elm.nodeName) && !invalidRe.test(elm.parentNode.nodeName)) { + //tinyMCE.debug("merge2" + isNew + "," + elm.nodeName + "," + elm.parentNode.nodeName); + if (invalidParentsRe == null || !invalidParentsRe.test(elm.parentNode.nodeName)) + this._mergeElements(scmd, elm.parentNode, elm, false); + } + } + + // Remove empty wrappers + var nodes = doc.getElementsByTagName(wrapper); + for (var i=nodes.length-1; i>=0; i--) { + var elm = nodes[i]; + var isEmpty = true; + + // Check if it has any attribs + var tmp = doc.createElement("body"); + tmp.appendChild(elm.cloneNode(false)); + + // Is empty span, remove it + tmp.innerHTML = tmp.innerHTML.replace(new RegExp('style=""|class=""', 'gi'), ''); + //tinyMCE.debug(tmp.innerHTML); + if (new RegExp('', 'gi').test(tmp.innerHTML)) { + for (var x=0; x 0) { + value = tinyMCE.replaceVar(value, "selection", selectedText); + tinyMCE.execCommand('mceInsertContent', false, value); + } + + tinyMCE.triggerNodeChange(); + break; + + case "mceSetAttribute": + if (typeof(value) == 'object') { + var targetElms = (typeof(value['targets']) == "undefined") ? "p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address" : value['targets']; + var targetNode = tinyMCE.getParentElement(this.getFocusElement(), targetElms); + + if (targetNode) { + targetNode.setAttribute(value['name'], value['value']); + tinyMCE.triggerNodeChange(); + } + } + break; + + case "mceSetCSSClass": + this.execCommand("SetStyleInfo", false, {command : "setattrib", name : "class", value : value}); + break; + + case "mceInsertRawHTML": + var key = 'tiny_mce_marker'; + + this.execCommand('mceBeginUndoLevel'); + + // Insert marker key + this.execCommand('mceInsertContent', false, key); + + // Store away scroll pos + var scrollX = this.getDoc().body.scrollLeft + this.getDoc().documentElement.scrollLeft; + var scrollY = this.getDoc().body.scrollTop + this.getDoc().documentElement.scrollTop; + + // Find marker and replace with RAW HTML + var html = this.getBody().innerHTML; + if ((pos = html.indexOf(key)) != -1) + tinyMCE.setInnerHTML(this.getBody(), html.substring(0, pos) + value + html.substring(pos + key.length)); + + // Restore scoll pos + this.contentWindow.scrollTo(scrollX, scrollY); + + this.execCommand('mceEndUndoLevel'); + + break; + + case "mceInsertContent": + var insertHTMLFailed = false; + this.getWin().focus(); + + if (tinyMCE.isGecko || tinyMCE.isOpera) { + try { + // Is plain text or HTML + if (value.indexOf('<') == -1) { + var r = this.getRng(); + var n = this.getDoc().createTextNode(tinyMCE.entityDecode(value)); + var s = this.getSel(); + var r2 = r.cloneRange(); + + // Insert text at cursor position + s.removeAllRanges(); + r.deleteContents(); + r.insertNode(n); + + // Move the cursor to the end of text + r2.selectNode(n); + r2.collapse(false); + s.removeAllRanges(); + s.addRange(r2); + } else { + value = tinyMCE.fixGeckoBaseHREFBug(1, this.getDoc(), value); + this.getDoc().execCommand('inserthtml', false, value); + tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value); + } + } catch (ex) { + insertHTMLFailed = true; + } + + if (!insertHTMLFailed) { + tinyMCE.triggerNodeChange(); + return; + } + } + + // Ugly hack in Opera due to non working "inserthtml" + if (tinyMCE.isOpera && insertHTMLFailed) { + this.getDoc().execCommand("insertimage", false, tinyMCE.uniqueURL); + var ar = tinyMCE.getElementsByAttributeValue(this.getBody(), "img", "src", tinyMCE.uniqueURL); + ar[0].outerHTML = value; + return; + } + + if (!tinyMCE.isMSIE) { + var isHTML = value.indexOf('<') != -1; + var sel = this.getSel(); + var rng = this.getRng(); + + if (isHTML) { + if (tinyMCE.isSafari) { + var tmpRng = this.getDoc().createRange(); + + tmpRng.setStart(this.getBody(), 0); + tmpRng.setEnd(this.getBody(), 0); + + value = tmpRng.createContextualFragment(value); + } else + value = rng.createContextualFragment(value); + } else { + // Setup text node + var el = document.createElement("div"); + el.innerHTML = value; + value = el.firstChild.nodeValue; + value = doc.createTextNode(value); + } + + // Insert plain text in Safari + if (tinyMCE.isSafari && !isHTML) { + this.execCommand('InsertText', false, value.nodeValue); + tinyMCE.triggerNodeChange(); + return true; + } else if (tinyMCE.isSafari && isHTML) { + rng.deleteContents(); + rng.insertNode(value); + tinyMCE.triggerNodeChange(); + return true; + } + + rng.deleteContents(); + + // If target node is text do special treatment, (Mozilla 1.3 fix) + if (rng.startContainer.nodeType == 3) { + var node = rng.startContainer.splitText(rng.startOffset); + node.parentNode.insertBefore(value, node); + } else + rng.insertNode(value); + + if (!isHTML) { + // Removes weird selection trails + sel.selectAllChildren(doc.body); + sel.removeAllRanges(); + + // Move cursor to end of content + var rng = doc.createRange(); + + rng.selectNode(value); + rng.collapse(false); + + sel.addRange(rng); + } else + rng.collapse(false); + } else { + var rng = doc.selection.createRange(); + var c = value.indexOf('