From d58f7cf02dc0c5ce2df2f0db00361fe673074be8 Mon Sep 17 00:00:00 2001 From: Patrick Seeger Date: Mon, 25 Jun 2012 23:31:16 +0200 Subject: =?UTF-8?q?=C3=84nderungen=20das=20alles=20tut,=20editor,=20cms?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protected/controllers/MyVereinController.php | 2 +- protected/controllers/UserController.php | 5 + protected/controllers/VeranstaltungController.php | 4 +- protected/extensions/extckeditor/ExtCKEditor.php | 316 ++++ protected/extensions/extckeditor/assets/.htaccess | 24 + .../extensions/extckeditor/assets/CHANGES.html | 1503 ++++++++++++++++++++ .../extckeditor/assets/adapters/jquery.js | 6 + .../extensions/extckeditor/assets/ckeditor.asp | 955 +++++++++++++ .../extensions/extckeditor/assets/ckeditor.js | 151 ++ .../extensions/extckeditor/assets/ckeditor.pack | 211 +++ .../extensions/extckeditor/assets/ckeditor.php | 29 + .../extckeditor/assets/ckeditor_basic.js | 8 + .../extckeditor/assets/ckeditor_basic_source.js | 20 + .../extckeditor/assets/ckeditor_php4.php | 566 ++++++++ .../extckeditor/assets/ckeditor_php5.php | 556 ++++++++ .../extckeditor/assets/ckeditor_source.js | 35 + protected/extensions/extckeditor/assets/config.js | 11 + .../extensions/extckeditor/assets/contents.css | 25 + .../extckeditor/assets/images/spacer.gif | Bin 0 -> 43 bytes .../extckeditor/assets/lang/_languages.js | 6 + .../extckeditor/assets/lang/_translationstatus.txt | 63 + protected/extensions/extckeditor/assets/lang/af.js | 6 + protected/extensions/extckeditor/assets/lang/ar.js | 6 + protected/extensions/extckeditor/assets/lang/bg.js | 6 + protected/extensions/extckeditor/assets/lang/bn.js | 6 + protected/extensions/extckeditor/assets/lang/bs.js | 6 + protected/extensions/extckeditor/assets/lang/ca.js | 6 + protected/extensions/extckeditor/assets/lang/cs.js | 6 + protected/extensions/extckeditor/assets/lang/cy.js | 6 + protected/extensions/extckeditor/assets/lang/da.js | 6 + protected/extensions/extckeditor/assets/lang/de.js | 6 + protected/extensions/extckeditor/assets/lang/el.js | 6 + .../extensions/extckeditor/assets/lang/en-au.js | 6 + .../extensions/extckeditor/assets/lang/en-ca.js | 6 + .../extensions/extckeditor/assets/lang/en-gb.js | 6 + protected/extensions/extckeditor/assets/lang/en.js | 6 + protected/extensions/extckeditor/assets/lang/eo.js | 6 + protected/extensions/extckeditor/assets/lang/es.js | 6 + protected/extensions/extckeditor/assets/lang/et.js | 6 + protected/extensions/extckeditor/assets/lang/eu.js | 6 + protected/extensions/extckeditor/assets/lang/fa.js | 6 + protected/extensions/extckeditor/assets/lang/fi.js | 6 + protected/extensions/extckeditor/assets/lang/fo.js | 6 + .../extensions/extckeditor/assets/lang/fr-ca.js | 6 + protected/extensions/extckeditor/assets/lang/fr.js | 6 + protected/extensions/extckeditor/assets/lang/gl.js | 6 + protected/extensions/extckeditor/assets/lang/gu.js | 6 + protected/extensions/extckeditor/assets/lang/he.js | 6 + protected/extensions/extckeditor/assets/lang/hi.js | 6 + protected/extensions/extckeditor/assets/lang/hr.js | 6 + protected/extensions/extckeditor/assets/lang/hu.js | 6 + protected/extensions/extckeditor/assets/lang/is.js | 6 + protected/extensions/extckeditor/assets/lang/it.js | 6 + protected/extensions/extckeditor/assets/lang/ja.js | 6 + protected/extensions/extckeditor/assets/lang/ka.js | 6 + protected/extensions/extckeditor/assets/lang/km.js | 6 + protected/extensions/extckeditor/assets/lang/ko.js | 6 + protected/extensions/extckeditor/assets/lang/lt.js | 6 + protected/extensions/extckeditor/assets/lang/lv.js | 6 + protected/extensions/extckeditor/assets/lang/mk.js | 6 + protected/extensions/extckeditor/assets/lang/mn.js | 6 + protected/extensions/extckeditor/assets/lang/ms.js | 6 + protected/extensions/extckeditor/assets/lang/nb.js | 6 + protected/extensions/extckeditor/assets/lang/nl.js | 6 + protected/extensions/extckeditor/assets/lang/no.js | 6 + protected/extensions/extckeditor/assets/lang/pl.js | 6 + .../extensions/extckeditor/assets/lang/pt-br.js | 6 + protected/extensions/extckeditor/assets/lang/pt.js | 6 + protected/extensions/extckeditor/assets/lang/ro.js | 6 + protected/extensions/extckeditor/assets/lang/ru.js | 6 + protected/extensions/extckeditor/assets/lang/sk.js | 6 + protected/extensions/extckeditor/assets/lang/sl.js | 6 + .../extensions/extckeditor/assets/lang/sr-latn.js | 6 + protected/extensions/extckeditor/assets/lang/sr.js | 6 + protected/extensions/extckeditor/assets/lang/sv.js | 6 + protected/extensions/extckeditor/assets/lang/th.js | 6 + protected/extensions/extckeditor/assets/lang/tr.js | 6 + protected/extensions/extckeditor/assets/lang/ug.js | 6 + protected/extensions/extckeditor/assets/lang/uk.js | 6 + protected/extensions/extckeditor/assets/lang/vi.js | 6 + .../extensions/extckeditor/assets/lang/zh-cn.js | 6 + protected/extensions/extckeditor/assets/lang/zh.js | 6 + .../assets/plugins/a11yhelp/dialogs/a11yhelp.js | 7 + .../plugins/a11yhelp/lang/_translationstatus.txt | 23 + .../extckeditor/assets/plugins/a11yhelp/lang/cs.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/cy.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/da.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/de.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/el.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/en.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/eo.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/fa.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/fi.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/fr.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/gu.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/he.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/it.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/mk.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/nb.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/nl.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/no.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/tr.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/ug.js | 6 + .../extckeditor/assets/plugins/a11yhelp/lang/vi.js | 6 + .../assets/plugins/a11yhelp/lang/zh-cn.js | 6 + .../assets/plugins/about/dialogs/about.js | 6 + .../assets/plugins/about/dialogs/logo_ckeditor.png | Bin 0 -> 2759 bytes .../extckeditor/assets/plugins/adobeair/plugin.js | 6 + .../extckeditor/assets/plugins/ajax/plugin.js | 6 + .../extckeditor/assets/plugins/autogrow/plugin.js | 6 + .../extckeditor/assets/plugins/bbcode/plugin.js | 9 + .../assets/plugins/clipboard/dialogs/paste.js | 7 + .../plugins/colordialog/dialogs/colordialog.js | 7 + .../plugins/devtools/lang/_translationstatus.txt | 27 + .../extckeditor/assets/plugins/devtools/lang/bg.js | 6 + .../extckeditor/assets/plugins/devtools/lang/cs.js | 6 + .../extckeditor/assets/plugins/devtools/lang/cy.js | 6 + .../extckeditor/assets/plugins/devtools/lang/da.js | 6 + .../extckeditor/assets/plugins/devtools/lang/de.js | 6 + .../extckeditor/assets/plugins/devtools/lang/el.js | 6 + .../extckeditor/assets/plugins/devtools/lang/en.js | 6 + .../extckeditor/assets/plugins/devtools/lang/eo.js | 6 + .../extckeditor/assets/plugins/devtools/lang/et.js | 6 + .../extckeditor/assets/plugins/devtools/lang/fa.js | 6 + .../extckeditor/assets/plugins/devtools/lang/fi.js | 6 + .../extckeditor/assets/plugins/devtools/lang/fr.js | 6 + .../extckeditor/assets/plugins/devtools/lang/gu.js | 6 + .../extckeditor/assets/plugins/devtools/lang/he.js | 6 + .../extckeditor/assets/plugins/devtools/lang/hr.js | 6 + .../extckeditor/assets/plugins/devtools/lang/it.js | 6 + .../extckeditor/assets/plugins/devtools/lang/nb.js | 6 + .../extckeditor/assets/plugins/devtools/lang/nl.js | 6 + .../extckeditor/assets/plugins/devtools/lang/no.js | 6 + .../extckeditor/assets/plugins/devtools/lang/pl.js | 6 + .../extckeditor/assets/plugins/devtools/lang/tr.js | 6 + .../extckeditor/assets/plugins/devtools/lang/ug.js | 6 + .../extckeditor/assets/plugins/devtools/lang/uk.js | 6 + .../extckeditor/assets/plugins/devtools/lang/vi.js | 6 + .../assets/plugins/devtools/lang/zh-cn.js | 6 + .../extckeditor/assets/plugins/devtools/plugin.js | 6 + .../assets/plugins/dialog/dialogDefinition.js | 4 + .../extckeditor/assets/plugins/div/dialogs/div.js | 8 + .../assets/plugins/docprops/dialogs/docprops.js | 10 + .../extckeditor/assets/plugins/docprops/plugin.js | 6 + .../assets/plugins/find/dialogs/find.js | 10 + .../assets/plugins/flash/dialogs/flash.js | 9 + .../assets/plugins/flash/images/placeholder.png | Bin 0 -> 256 bytes .../assets/plugins/forms/dialogs/button.js | 6 + .../assets/plugins/forms/dialogs/checkbox.js | 6 + .../assets/plugins/forms/dialogs/form.js | 6 + .../assets/plugins/forms/dialogs/hiddenfield.js | 6 + .../assets/plugins/forms/dialogs/radio.js | 6 + .../assets/plugins/forms/dialogs/select.js | 9 + .../assets/plugins/forms/dialogs/textarea.js | 6 + .../assets/plugins/forms/dialogs/textfield.js | 6 + .../assets/plugins/forms/images/hiddenfield.gif | Bin 0 -> 105 bytes .../assets/plugins/iframe/dialogs/iframe.js | 7 + .../assets/plugins/iframe/images/placeholder.png | Bin 0 -> 449 bytes .../assets/plugins/iframedialog/plugin.js | 6 + .../assets/plugins/image/dialogs/image.js | 13 + .../assets/plugins/link/dialogs/anchor.js | 6 + .../assets/plugins/link/dialogs/link.js | 12 + .../assets/plugins/link/images/anchor.gif | Bin 0 -> 184 bytes .../assets/plugins/liststyle/dialogs/liststyle.js | 7 + .../assets/plugins/pagebreak/images/pagebreak.gif | Bin 0 -> 54 bytes .../assets/plugins/pastefromword/filter/default.js | 11 + .../assets/plugins/pastetext/dialogs/pastetext.js | 6 + .../plugins/placeholder/dialogs/placeholder.js | 6 + .../placeholder/lang/_translationstatus.txt | 26 + .../assets/plugins/placeholder/lang/bg.js | 6 + .../assets/plugins/placeholder/lang/cs.js | 6 + .../assets/plugins/placeholder/lang/cy.js | 6 + .../assets/plugins/placeholder/lang/da.js | 6 + .../assets/plugins/placeholder/lang/de.js | 6 + .../assets/plugins/placeholder/lang/el.js | 6 + .../assets/plugins/placeholder/lang/en.js | 6 + .../assets/plugins/placeholder/lang/eo.js | 6 + .../assets/plugins/placeholder/lang/et.js | 6 + .../assets/plugins/placeholder/lang/fa.js | 6 + .../assets/plugins/placeholder/lang/fi.js | 6 + .../assets/plugins/placeholder/lang/fr.js | 6 + .../assets/plugins/placeholder/lang/he.js | 6 + .../assets/plugins/placeholder/lang/hr.js | 6 + .../assets/plugins/placeholder/lang/it.js | 6 + .../assets/plugins/placeholder/lang/nb.js | 6 + .../assets/plugins/placeholder/lang/nl.js | 6 + .../assets/plugins/placeholder/lang/no.js | 6 + .../assets/plugins/placeholder/lang/pl.js | 6 + .../assets/plugins/placeholder/lang/tr.js | 6 + .../assets/plugins/placeholder/lang/ug.js | 6 + .../assets/plugins/placeholder/lang/uk.js | 6 + .../assets/plugins/placeholder/lang/vi.js | 6 + .../assets/plugins/placeholder/lang/zh-cn.js | 6 + .../assets/plugins/placeholder/placeholder.gif | Bin 0 -> 96 bytes .../assets/plugins/placeholder/plugin.js | 6 + .../assets/plugins/scayt/dialogs/options.js | 8 + .../assets/plugins/scayt/dialogs/toolbar.css | 6 + .../plugins/showblocks/images/block_address.png | Bin 0 -> 171 bytes .../plugins/showblocks/images/block_blockquote.png | Bin 0 -> 181 bytes .../assets/plugins/showblocks/images/block_div.png | Bin 0 -> 136 bytes .../assets/plugins/showblocks/images/block_h1.png | Bin 0 -> 127 bytes .../assets/plugins/showblocks/images/block_h2.png | Bin 0 -> 134 bytes .../assets/plugins/showblocks/images/block_h3.png | Bin 0 -> 131 bytes .../assets/plugins/showblocks/images/block_h4.png | Bin 0 -> 133 bytes .../assets/plugins/showblocks/images/block_h5.png | Bin 0 -> 133 bytes .../assets/plugins/showblocks/images/block_h6.png | Bin 0 -> 129 bytes .../assets/plugins/showblocks/images/block_p.png | Bin 0 -> 119 bytes .../assets/plugins/showblocks/images/block_pre.png | Bin 0 -> 136 bytes .../assets/plugins/smiley/dialogs/smiley.js | 7 + .../assets/plugins/smiley/images/angel_smile.gif | Bin 0 -> 465 bytes .../assets/plugins/smiley/images/angry_smile.gif | Bin 0 -> 443 bytes .../assets/plugins/smiley/images/broken_heart.gif | Bin 0 -> 192 bytes .../plugins/smiley/images/confused_smile.gif | Bin 0 -> 464 bytes .../assets/plugins/smiley/images/cry_smile.gif | Bin 0 -> 468 bytes .../assets/plugins/smiley/images/devil_smile.gif | Bin 0 -> 436 bytes .../plugins/smiley/images/embaressed_smile.gif | Bin 0 -> 442 bytes .../assets/plugins/smiley/images/envelope.gif | Bin 0 -> 426 bytes .../assets/plugins/smiley/images/heart.gif | Bin 0 -> 183 bytes .../assets/plugins/smiley/images/kiss.gif | Bin 0 -> 241 bytes .../assets/plugins/smiley/images/lightbulb.gif | Bin 0 -> 368 bytes .../assets/plugins/smiley/images/omg_smile.gif | Bin 0 -> 451 bytes .../assets/plugins/smiley/images/regular_smile.gif | Bin 0 -> 450 bytes .../assets/plugins/smiley/images/sad_smile.gif | Bin 0 -> 460 bytes .../assets/plugins/smiley/images/shades_smile.gif | Bin 0 -> 449 bytes .../assets/plugins/smiley/images/teeth_smile.gif | Bin 0 -> 442 bytes .../assets/plugins/smiley/images/thumbs_down.gif | Bin 0 -> 408 bytes .../assets/plugins/smiley/images/thumbs_up.gif | Bin 0 -> 396 bytes .../assets/plugins/smiley/images/tounge_smile.gif | Bin 0 -> 446 bytes .../smiley/images/whatchutalkingabout_smile.gif | Bin 0 -> 452 bytes .../assets/plugins/smiley/images/wink_smile.gif | Bin 0 -> 458 bytes .../plugins/specialchar/dialogs/specialchar.js | 7 + .../specialchar/lang/_translationstatus.txt | 19 + .../assets/plugins/specialchar/lang/cs.js | 6 + .../assets/plugins/specialchar/lang/cy.js | 6 + .../assets/plugins/specialchar/lang/de.js | 6 + .../assets/plugins/specialchar/lang/en.js | 6 + .../assets/plugins/specialchar/lang/eo.js | 6 + .../assets/plugins/specialchar/lang/et.js | 6 + .../assets/plugins/specialchar/lang/fa.js | 6 + .../assets/plugins/specialchar/lang/fi.js | 6 + .../assets/plugins/specialchar/lang/fr.js | 6 + .../assets/plugins/specialchar/lang/hr.js | 6 + .../assets/plugins/specialchar/lang/it.js | 6 + .../assets/plugins/specialchar/lang/nb.js | 6 + .../assets/plugins/specialchar/lang/nl.js | 6 + .../assets/plugins/specialchar/lang/no.js | 6 + .../assets/plugins/specialchar/lang/tr.js | 6 + .../assets/plugins/specialchar/lang/ug.js | 6 + .../assets/plugins/specialchar/lang/zh-cn.js | 6 + .../assets/plugins/styles/styles/default.js | 6 + .../assets/plugins/stylesheetparser/plugin.js | 6 + .../assets/plugins/table/dialogs/table.js | 9 + .../assets/plugins/tableresize/plugin.js | 7 + .../assets/plugins/tabletools/dialogs/tableCell.js | 8 + .../assets/plugins/templates/dialogs/templates.js | 7 + .../assets/plugins/templates/templates/default.js | 54 + .../templates/templates/images/template1.gif | Bin 0 -> 375 bytes .../templates/templates/images/template2.gif | Bin 0 -> 333 bytes .../templates/templates/images/template3.gif | Bin 0 -> 422 bytes .../assets/plugins/uicolor/dialogs/uicolor.js | 7 + .../plugins/uicolor/lang/_translationstatus.txt | 27 + .../extckeditor/assets/plugins/uicolor/lang/bg.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/cs.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/cy.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/da.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/de.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/el.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/en.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/eo.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/et.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/fa.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/fi.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/fr.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/he.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/hr.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/it.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/mk.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/nb.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/nl.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/no.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/pl.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/tr.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/ug.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/uk.js | 6 + .../extckeditor/assets/plugins/uicolor/lang/vi.js | 6 + .../assets/plugins/uicolor/lang/zh-cn.js | 6 + .../extckeditor/assets/plugins/uicolor/plugin.js | 6 + .../extckeditor/assets/plugins/uicolor/uicolor.gif | Bin 0 -> 1108 bytes .../assets/plugins/uicolor/yui/assets/hue_bg.png | Bin 0 -> 1120 bytes .../plugins/uicolor/yui/assets/hue_thumb.png | Bin 0 -> 195 bytes .../plugins/uicolor/yui/assets/picker_mask.png | Bin 0 -> 12174 bytes .../plugins/uicolor/yui/assets/picker_thumb.png | Bin 0 -> 192 bytes .../assets/plugins/uicolor/yui/assets/yui.css | 6 + .../extckeditor/assets/plugins/uicolor/yui/yui.js | 76 + .../assets/plugins/wsc/dialogs/ciframe.html | 49 + .../assets/plugins/wsc/dialogs/tmpFrameset.html | 52 + .../extckeditor/assets/plugins/wsc/dialogs/wsc.css | 6 + .../extckeditor/assets/plugins/wsc/dialogs/wsc.js | 7 + .../extckeditor/assets/plugins/xml/plugin.js | 6 + .../extckeditor/assets/putCkeditorFilesHere.txt | 0 .../extckeditor/assets/skins/kama/dialog.css | 10 + .../extckeditor/assets/skins/kama/editor.css | 13 + .../extckeditor/assets/skins/kama/icons.png | Bin 0 -> 5598 bytes .../extckeditor/assets/skins/kama/icons_rtl.png | Bin 0 -> 5600 bytes .../assets/skins/kama/images/dialog_sides.gif | Bin 0 -> 48 bytes .../assets/skins/kama/images/dialog_sides.png | Bin 0 -> 178 bytes .../assets/skins/kama/images/dialog_sides_rtl.png | Bin 0 -> 181 bytes .../extckeditor/assets/skins/kama/images/mini.gif | Bin 0 -> 183 bytes .../assets/skins/kama/images/noimage.png | Bin 0 -> 2115 bytes .../assets/skins/kama/images/sprites.png | Bin 0 -> 7086 bytes .../assets/skins/kama/images/sprites_ie6.png | Bin 0 -> 2724 bytes .../assets/skins/kama/images/toolbar_start.gif | Bin 0 -> 105 bytes .../extckeditor/assets/skins/kama/skin.js | 7 + .../extckeditor/assets/skins/kama/templates.css | 6 + .../extckeditor/assets/skins/office2003/dialog.css | 9 + .../extckeditor/assets/skins/office2003/editor.css | 14 + .../extckeditor/assets/skins/office2003/icons.png | Bin 0 -> 5598 bytes .../assets/skins/office2003/icons_rtl.png | Bin 0 -> 5600 bytes .../skins/office2003/images/dialog_sides.gif | Bin 0 -> 48 bytes .../skins/office2003/images/dialog_sides.png | Bin 0 -> 178 bytes .../skins/office2003/images/dialog_sides_rtl.png | Bin 0 -> 181 bytes .../assets/skins/office2003/images/mini.gif | Bin 0 -> 183 bytes .../assets/skins/office2003/images/noimage.png | Bin 0 -> 2115 bytes .../assets/skins/office2003/images/sprites.png | Bin 0 -> 6119 bytes .../assets/skins/office2003/images/sprites_ie6.png | Bin 0 -> 2715 bytes .../extckeditor/assets/skins/office2003/skin.js | 6 + .../assets/skins/office2003/templates.css | 6 + .../extckeditor/assets/skins/v2/dialog.css | 9 + .../extckeditor/assets/skins/v2/editor.css | 13 + .../extckeditor/assets/skins/v2/icons.png | Bin 0 -> 5598 bytes .../extckeditor/assets/skins/v2/icons_rtl.png | Bin 0 -> 5600 bytes .../assets/skins/v2/images/dialog_sides.gif | Bin 0 -> 48 bytes .../assets/skins/v2/images/dialog_sides.png | Bin 0 -> 178 bytes .../assets/skins/v2/images/dialog_sides_rtl.png | Bin 0 -> 181 bytes .../extckeditor/assets/skins/v2/images/mini.gif | Bin 0 -> 183 bytes .../extckeditor/assets/skins/v2/images/noimage.png | Bin 0 -> 2115 bytes .../extckeditor/assets/skins/v2/images/sprites.png | Bin 0 -> 5389 bytes .../assets/skins/v2/images/sprites_ie6.png | Bin 0 -> 492 bytes .../assets/skins/v2/images/toolbar_start.gif | Bin 0 -> 105 bytes .../extensions/extckeditor/assets/skins/v2/skin.js | 6 + .../extckeditor/assets/skins/v2/templates.css | 6 + .../extckeditor/assets/themes/default/theme.js | 8 + protected/models/User.php | 7 +- protected/models/Verein.php | 2 +- protected/modules/cms/CmsModule.php | 39 + protected/modules/cms/components/MenuWidget.php | 36 + protected/modules/cms/components/Relation.php | 636 +++++++++ protected/modules/cms/components/SearchWidget.php | 10 + protected/modules/cms/components/views/advert.php | 16 + protected/modules/cms/components/views/search.php | 6 + .../modules/cms/controllers/DefaultController.php | 20 + .../cms/controllers/SitecontentController.php | 176 +++ protected/modules/cms/docs/cms.mwb | Bin 0 -> 5803 bytes protected/modules/cms/docs/install.txt | 64 + protected/modules/cms/docs/schema_mysql.sql | 17 + protected/modules/cms/messages/de/cms.php | 50 + protected/modules/cms/models/Cms.php | 77 + protected/modules/cms/models/Sitecontent.php | 92 ++ protected/modules/cms/views/default/index.php | 21 + protected/modules/cms/views/layouts/cms.php | 38 + protected/modules/cms/views/sitecontent/_form.php | 105 ++ .../modules/cms/views/sitecontent/_search.php | 49 + protected/modules/cms/views/sitecontent/_short.php | 34 + protected/modules/cms/views/sitecontent/_view.php | 34 + protected/modules/cms/views/sitecontent/admin.php | 71 + protected/modules/cms/views/sitecontent/create.php | 21 + protected/modules/cms/views/sitecontent/draw.php | 4 + protected/modules/cms/views/sitecontent/index.php | 25 + .../modules/cms/views/sitecontent/results.php | 19 + protected/modules/cms/views/sitecontent/update.php | 18 + protected/modules/cms/views/sitecontent/view.php | 47 + protected/views/mail/newVerein.php | 6 +- protected/views/speisTrank/_form.php | 10 +- protected/views/speisTrank/create.php | 2 +- protected/views/veranstaltung/_form.php | 10 +- protected/views/verein/_form.php | 22 +- 376 files changed, 8110 insertions(+), 21 deletions(-) create mode 100644 protected/extensions/extckeditor/ExtCKEditor.php create mode 100644 protected/extensions/extckeditor/assets/.htaccess create mode 100644 protected/extensions/extckeditor/assets/CHANGES.html create mode 100644 protected/extensions/extckeditor/assets/adapters/jquery.js create mode 100644 protected/extensions/extckeditor/assets/ckeditor.asp create mode 100644 protected/extensions/extckeditor/assets/ckeditor.js create mode 100644 protected/extensions/extckeditor/assets/ckeditor.pack create mode 100644 protected/extensions/extckeditor/assets/ckeditor.php create mode 100644 protected/extensions/extckeditor/assets/ckeditor_basic.js create mode 100644 protected/extensions/extckeditor/assets/ckeditor_basic_source.js create mode 100644 protected/extensions/extckeditor/assets/ckeditor_php4.php create mode 100644 protected/extensions/extckeditor/assets/ckeditor_php5.php create mode 100644 protected/extensions/extckeditor/assets/ckeditor_source.js create mode 100644 protected/extensions/extckeditor/assets/config.js create mode 100644 protected/extensions/extckeditor/assets/contents.css create mode 100644 protected/extensions/extckeditor/assets/images/spacer.gif create mode 100644 protected/extensions/extckeditor/assets/lang/_languages.js create mode 100644 protected/extensions/extckeditor/assets/lang/_translationstatus.txt create mode 100644 protected/extensions/extckeditor/assets/lang/af.js create mode 100644 protected/extensions/extckeditor/assets/lang/ar.js create mode 100644 protected/extensions/extckeditor/assets/lang/bg.js create mode 100644 protected/extensions/extckeditor/assets/lang/bn.js create mode 100644 protected/extensions/extckeditor/assets/lang/bs.js create mode 100644 protected/extensions/extckeditor/assets/lang/ca.js create mode 100644 protected/extensions/extckeditor/assets/lang/cs.js create mode 100644 protected/extensions/extckeditor/assets/lang/cy.js create mode 100644 protected/extensions/extckeditor/assets/lang/da.js create mode 100644 protected/extensions/extckeditor/assets/lang/de.js create mode 100644 protected/extensions/extckeditor/assets/lang/el.js create mode 100644 protected/extensions/extckeditor/assets/lang/en-au.js create mode 100644 protected/extensions/extckeditor/assets/lang/en-ca.js create mode 100644 protected/extensions/extckeditor/assets/lang/en-gb.js create mode 100644 protected/extensions/extckeditor/assets/lang/en.js create mode 100644 protected/extensions/extckeditor/assets/lang/eo.js create mode 100644 protected/extensions/extckeditor/assets/lang/es.js create mode 100644 protected/extensions/extckeditor/assets/lang/et.js create mode 100644 protected/extensions/extckeditor/assets/lang/eu.js create mode 100644 protected/extensions/extckeditor/assets/lang/fa.js create mode 100644 protected/extensions/extckeditor/assets/lang/fi.js create mode 100644 protected/extensions/extckeditor/assets/lang/fo.js create mode 100644 protected/extensions/extckeditor/assets/lang/fr-ca.js create mode 100644 protected/extensions/extckeditor/assets/lang/fr.js create mode 100644 protected/extensions/extckeditor/assets/lang/gl.js create mode 100644 protected/extensions/extckeditor/assets/lang/gu.js create mode 100644 protected/extensions/extckeditor/assets/lang/he.js create mode 100644 protected/extensions/extckeditor/assets/lang/hi.js create mode 100644 protected/extensions/extckeditor/assets/lang/hr.js create mode 100644 protected/extensions/extckeditor/assets/lang/hu.js create mode 100644 protected/extensions/extckeditor/assets/lang/is.js create mode 100644 protected/extensions/extckeditor/assets/lang/it.js create mode 100644 protected/extensions/extckeditor/assets/lang/ja.js create mode 100644 protected/extensions/extckeditor/assets/lang/ka.js create mode 100644 protected/extensions/extckeditor/assets/lang/km.js create mode 100644 protected/extensions/extckeditor/assets/lang/ko.js create mode 100644 protected/extensions/extckeditor/assets/lang/lt.js create mode 100644 protected/extensions/extckeditor/assets/lang/lv.js create mode 100644 protected/extensions/extckeditor/assets/lang/mk.js create mode 100644 protected/extensions/extckeditor/assets/lang/mn.js create mode 100644 protected/extensions/extckeditor/assets/lang/ms.js create mode 100644 protected/extensions/extckeditor/assets/lang/nb.js create mode 100644 protected/extensions/extckeditor/assets/lang/nl.js create mode 100644 protected/extensions/extckeditor/assets/lang/no.js create mode 100644 protected/extensions/extckeditor/assets/lang/pl.js create mode 100644 protected/extensions/extckeditor/assets/lang/pt-br.js create mode 100644 protected/extensions/extckeditor/assets/lang/pt.js create mode 100644 protected/extensions/extckeditor/assets/lang/ro.js create mode 100644 protected/extensions/extckeditor/assets/lang/ru.js create mode 100644 protected/extensions/extckeditor/assets/lang/sk.js create mode 100644 protected/extensions/extckeditor/assets/lang/sl.js create mode 100644 protected/extensions/extckeditor/assets/lang/sr-latn.js create mode 100644 protected/extensions/extckeditor/assets/lang/sr.js create mode 100644 protected/extensions/extckeditor/assets/lang/sv.js create mode 100644 protected/extensions/extckeditor/assets/lang/th.js create mode 100644 protected/extensions/extckeditor/assets/lang/tr.js create mode 100644 protected/extensions/extckeditor/assets/lang/ug.js create mode 100644 protected/extensions/extckeditor/assets/lang/uk.js create mode 100644 protected/extensions/extckeditor/assets/lang/vi.js create mode 100644 protected/extensions/extckeditor/assets/lang/zh-cn.js create mode 100644 protected/extensions/extckeditor/assets/lang/zh.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/dialogs/a11yhelp.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/_translationstatus.txt create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/cs.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/cy.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/da.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/de.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/el.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/en.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/eo.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/fa.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/fi.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/fr.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/gu.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/he.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/it.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/mk.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/nb.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/nl.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/no.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/tr.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/ug.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/vi.js create mode 100644 protected/extensions/extckeditor/assets/plugins/a11yhelp/lang/zh-cn.js create mode 100644 protected/extensions/extckeditor/assets/plugins/about/dialogs/about.js create mode 100644 protected/extensions/extckeditor/assets/plugins/about/dialogs/logo_ckeditor.png create mode 100644 protected/extensions/extckeditor/assets/plugins/adobeair/plugin.js create mode 100644 protected/extensions/extckeditor/assets/plugins/ajax/plugin.js create mode 100644 protected/extensions/extckeditor/assets/plugins/autogrow/plugin.js create mode 100644 protected/extensions/extckeditor/assets/plugins/bbcode/plugin.js create mode 100644 protected/extensions/extckeditor/assets/plugins/clipboard/dialogs/paste.js create mode 100644 protected/extensions/extckeditor/assets/plugins/colordialog/dialogs/colordialog.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/_translationstatus.txt create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/bg.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/cs.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/cy.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/da.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/de.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/el.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/en.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/eo.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/et.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/fa.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/fi.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/fr.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/gu.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/he.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/hr.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/it.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/nb.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/nl.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/no.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/pl.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/tr.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/ug.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/uk.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/vi.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/lang/zh-cn.js create mode 100644 protected/extensions/extckeditor/assets/plugins/devtools/plugin.js create mode 100644 protected/extensions/extckeditor/assets/plugins/dialog/dialogDefinition.js create mode 100644 protected/extensions/extckeditor/assets/plugins/div/dialogs/div.js create mode 100644 protected/extensions/extckeditor/assets/plugins/docprops/dialogs/docprops.js create mode 100644 protected/extensions/extckeditor/assets/plugins/docprops/plugin.js create mode 100644 protected/extensions/extckeditor/assets/plugins/find/dialogs/find.js create mode 100644 protected/extensions/extckeditor/assets/plugins/flash/dialogs/flash.js create mode 100644 protected/extensions/extckeditor/assets/plugins/flash/images/placeholder.png create mode 100644 protected/extensions/extckeditor/assets/plugins/forms/dialogs/button.js create mode 100644 protected/extensions/extckeditor/assets/plugins/forms/dialogs/checkbox.js create mode 100644 protected/extensions/extckeditor/assets/plugins/forms/dialogs/form.js create mode 100644 protected/extensions/extckeditor/assets/plugins/forms/dialogs/hiddenfield.js create mode 100644 protected/extensions/extckeditor/assets/plugins/forms/dialogs/radio.js create mode 100644 protected/extensions/extckeditor/assets/plugins/forms/dialogs/select.js create mode 100644 protected/extensions/extckeditor/assets/plugins/forms/dialogs/textarea.js create mode 100644 protected/extensions/extckeditor/assets/plugins/forms/dialogs/textfield.js create mode 100644 protected/extensions/extckeditor/assets/plugins/forms/images/hiddenfield.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/iframe/dialogs/iframe.js create mode 100644 protected/extensions/extckeditor/assets/plugins/iframe/images/placeholder.png create mode 100644 protected/extensions/extckeditor/assets/plugins/iframedialog/plugin.js create mode 100644 protected/extensions/extckeditor/assets/plugins/image/dialogs/image.js create mode 100644 protected/extensions/extckeditor/assets/plugins/link/dialogs/anchor.js create mode 100644 protected/extensions/extckeditor/assets/plugins/link/dialogs/link.js create mode 100644 protected/extensions/extckeditor/assets/plugins/link/images/anchor.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/liststyle/dialogs/liststyle.js create mode 100644 protected/extensions/extckeditor/assets/plugins/pagebreak/images/pagebreak.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/pastefromword/filter/default.js create mode 100644 protected/extensions/extckeditor/assets/plugins/pastetext/dialogs/pastetext.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/dialogs/placeholder.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/_translationstatus.txt create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/bg.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/cs.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/cy.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/da.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/de.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/el.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/en.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/eo.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/et.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/fa.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/fi.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/fr.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/he.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/hr.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/it.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/nb.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/nl.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/no.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/pl.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/tr.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/ug.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/uk.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/vi.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/lang/zh-cn.js create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/placeholder.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/placeholder/plugin.js create mode 100644 protected/extensions/extckeditor/assets/plugins/scayt/dialogs/options.js create mode 100644 protected/extensions/extckeditor/assets/plugins/scayt/dialogs/toolbar.css create mode 100644 protected/extensions/extckeditor/assets/plugins/showblocks/images/block_address.png create mode 100644 protected/extensions/extckeditor/assets/plugins/showblocks/images/block_blockquote.png create mode 100644 protected/extensions/extckeditor/assets/plugins/showblocks/images/block_div.png create mode 100644 protected/extensions/extckeditor/assets/plugins/showblocks/images/block_h1.png create mode 100644 protected/extensions/extckeditor/assets/plugins/showblocks/images/block_h2.png create mode 100644 protected/extensions/extckeditor/assets/plugins/showblocks/images/block_h3.png create mode 100644 protected/extensions/extckeditor/assets/plugins/showblocks/images/block_h4.png create mode 100644 protected/extensions/extckeditor/assets/plugins/showblocks/images/block_h5.png create mode 100644 protected/extensions/extckeditor/assets/plugins/showblocks/images/block_h6.png create mode 100644 protected/extensions/extckeditor/assets/plugins/showblocks/images/block_p.png create mode 100644 protected/extensions/extckeditor/assets/plugins/showblocks/images/block_pre.png create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/dialogs/smiley.js create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/angel_smile.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/angry_smile.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/broken_heart.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/confused_smile.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/cry_smile.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/devil_smile.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/embaressed_smile.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/envelope.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/heart.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/kiss.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/lightbulb.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/omg_smile.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/regular_smile.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/sad_smile.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/shades_smile.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/teeth_smile.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/thumbs_down.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/thumbs_up.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/tounge_smile.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/whatchutalkingabout_smile.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/smiley/images/wink_smile.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/dialogs/specialchar.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/_translationstatus.txt create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/cs.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/cy.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/de.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/en.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/eo.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/et.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/fa.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/fi.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/fr.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/hr.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/it.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/nb.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/nl.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/no.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/tr.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/ug.js create mode 100644 protected/extensions/extckeditor/assets/plugins/specialchar/lang/zh-cn.js create mode 100644 protected/extensions/extckeditor/assets/plugins/styles/styles/default.js create mode 100644 protected/extensions/extckeditor/assets/plugins/stylesheetparser/plugin.js create mode 100644 protected/extensions/extckeditor/assets/plugins/table/dialogs/table.js create mode 100644 protected/extensions/extckeditor/assets/plugins/tableresize/plugin.js create mode 100644 protected/extensions/extckeditor/assets/plugins/tabletools/dialogs/tableCell.js create mode 100644 protected/extensions/extckeditor/assets/plugins/templates/dialogs/templates.js create mode 100644 protected/extensions/extckeditor/assets/plugins/templates/templates/default.js create mode 100644 protected/extensions/extckeditor/assets/plugins/templates/templates/images/template1.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/templates/templates/images/template2.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/templates/templates/images/template3.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/dialogs/uicolor.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/_translationstatus.txt create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/bg.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/cs.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/cy.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/da.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/de.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/el.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/en.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/eo.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/et.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/fa.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/fi.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/fr.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/he.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/hr.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/it.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/mk.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/nb.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/nl.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/no.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/pl.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/tr.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/ug.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/uk.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/vi.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/lang/zh-cn.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/plugin.js create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/uicolor.gif create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/yui/assets/hue_bg.png create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/yui/assets/hue_thumb.png create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/yui/assets/picker_mask.png create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/yui/assets/picker_thumb.png create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/yui/assets/yui.css create mode 100644 protected/extensions/extckeditor/assets/plugins/uicolor/yui/yui.js create mode 100644 protected/extensions/extckeditor/assets/plugins/wsc/dialogs/ciframe.html create mode 100644 protected/extensions/extckeditor/assets/plugins/wsc/dialogs/tmpFrameset.html create mode 100644 protected/extensions/extckeditor/assets/plugins/wsc/dialogs/wsc.css create mode 100644 protected/extensions/extckeditor/assets/plugins/wsc/dialogs/wsc.js create mode 100644 protected/extensions/extckeditor/assets/plugins/xml/plugin.js create mode 100644 protected/extensions/extckeditor/assets/putCkeditorFilesHere.txt create mode 100644 protected/extensions/extckeditor/assets/skins/kama/dialog.css create mode 100644 protected/extensions/extckeditor/assets/skins/kama/editor.css create mode 100644 protected/extensions/extckeditor/assets/skins/kama/icons.png create mode 100644 protected/extensions/extckeditor/assets/skins/kama/icons_rtl.png create mode 100644 protected/extensions/extckeditor/assets/skins/kama/images/dialog_sides.gif create mode 100644 protected/extensions/extckeditor/assets/skins/kama/images/dialog_sides.png create mode 100644 protected/extensions/extckeditor/assets/skins/kama/images/dialog_sides_rtl.png create mode 100644 protected/extensions/extckeditor/assets/skins/kama/images/mini.gif create mode 100644 protected/extensions/extckeditor/assets/skins/kama/images/noimage.png create mode 100644 protected/extensions/extckeditor/assets/skins/kama/images/sprites.png create mode 100644 protected/extensions/extckeditor/assets/skins/kama/images/sprites_ie6.png create mode 100644 protected/extensions/extckeditor/assets/skins/kama/images/toolbar_start.gif create mode 100644 protected/extensions/extckeditor/assets/skins/kama/skin.js create mode 100644 protected/extensions/extckeditor/assets/skins/kama/templates.css create mode 100644 protected/extensions/extckeditor/assets/skins/office2003/dialog.css create mode 100644 protected/extensions/extckeditor/assets/skins/office2003/editor.css create mode 100644 protected/extensions/extckeditor/assets/skins/office2003/icons.png create mode 100644 protected/extensions/extckeditor/assets/skins/office2003/icons_rtl.png create mode 100644 protected/extensions/extckeditor/assets/skins/office2003/images/dialog_sides.gif create mode 100644 protected/extensions/extckeditor/assets/skins/office2003/images/dialog_sides.png create mode 100644 protected/extensions/extckeditor/assets/skins/office2003/images/dialog_sides_rtl.png create mode 100644 protected/extensions/extckeditor/assets/skins/office2003/images/mini.gif create mode 100644 protected/extensions/extckeditor/assets/skins/office2003/images/noimage.png create mode 100644 protected/extensions/extckeditor/assets/skins/office2003/images/sprites.png create mode 100644 protected/extensions/extckeditor/assets/skins/office2003/images/sprites_ie6.png create mode 100644 protected/extensions/extckeditor/assets/skins/office2003/skin.js create mode 100644 protected/extensions/extckeditor/assets/skins/office2003/templates.css create mode 100644 protected/extensions/extckeditor/assets/skins/v2/dialog.css create mode 100644 protected/extensions/extckeditor/assets/skins/v2/editor.css create mode 100644 protected/extensions/extckeditor/assets/skins/v2/icons.png create mode 100644 protected/extensions/extckeditor/assets/skins/v2/icons_rtl.png create mode 100644 protected/extensions/extckeditor/assets/skins/v2/images/dialog_sides.gif create mode 100644 protected/extensions/extckeditor/assets/skins/v2/images/dialog_sides.png create mode 100644 protected/extensions/extckeditor/assets/skins/v2/images/dialog_sides_rtl.png create mode 100644 protected/extensions/extckeditor/assets/skins/v2/images/mini.gif create mode 100644 protected/extensions/extckeditor/assets/skins/v2/images/noimage.png create mode 100644 protected/extensions/extckeditor/assets/skins/v2/images/sprites.png create mode 100644 protected/extensions/extckeditor/assets/skins/v2/images/sprites_ie6.png create mode 100644 protected/extensions/extckeditor/assets/skins/v2/images/toolbar_start.gif create mode 100644 protected/extensions/extckeditor/assets/skins/v2/skin.js create mode 100644 protected/extensions/extckeditor/assets/skins/v2/templates.css create mode 100644 protected/extensions/extckeditor/assets/themes/default/theme.js create mode 100644 protected/modules/cms/CmsModule.php create mode 100644 protected/modules/cms/components/MenuWidget.php create mode 100644 protected/modules/cms/components/Relation.php create mode 100644 protected/modules/cms/components/SearchWidget.php create mode 100644 protected/modules/cms/components/views/advert.php create mode 100644 protected/modules/cms/components/views/search.php create mode 100644 protected/modules/cms/controllers/DefaultController.php create mode 100644 protected/modules/cms/controllers/SitecontentController.php create mode 100644 protected/modules/cms/docs/cms.mwb create mode 100644 protected/modules/cms/docs/install.txt create mode 100644 protected/modules/cms/docs/schema_mysql.sql create mode 100644 protected/modules/cms/messages/de/cms.php create mode 100644 protected/modules/cms/models/Cms.php create mode 100644 protected/modules/cms/models/Sitecontent.php create mode 100644 protected/modules/cms/views/default/index.php create mode 100644 protected/modules/cms/views/layouts/cms.php create mode 100644 protected/modules/cms/views/sitecontent/_form.php create mode 100644 protected/modules/cms/views/sitecontent/_search.php create mode 100644 protected/modules/cms/views/sitecontent/_short.php create mode 100644 protected/modules/cms/views/sitecontent/_view.php create mode 100644 protected/modules/cms/views/sitecontent/admin.php create mode 100644 protected/modules/cms/views/sitecontent/create.php create mode 100644 protected/modules/cms/views/sitecontent/draw.php create mode 100644 protected/modules/cms/views/sitecontent/index.php create mode 100644 protected/modules/cms/views/sitecontent/results.php create mode 100644 protected/modules/cms/views/sitecontent/update.php create mode 100644 protected/modules/cms/views/sitecontent/view.php diff --git a/protected/controllers/MyVereinController.php b/protected/controllers/MyVereinController.php index e0e5b47..9812bff 100644 --- a/protected/controllers/MyVereinController.php +++ b/protected/controllers/MyVereinController.php @@ -1,6 +1,6 @@ performAjaxValidation($model); if (isset($_POST['User'])) { + $change = false; + if ($_POST['User']['password'] != "" && $_POST['User']['password'] != $model->password) { $change = true;} $model->attributes = $_POST['User']; + if($change) { + $model->password = $model->encryptPassword($_POST['User']['password']); + } if ($model->save()) { $this->redirect(array('view', 'id'=>$model->id)); } diff --git a/protected/controllers/VeranstaltungController.php b/protected/controllers/VeranstaltungController.php index 49ec10a..acac0be 100644 --- a/protected/controllers/VeranstaltungController.php +++ b/protected/controllers/VeranstaltungController.php @@ -66,7 +66,7 @@ class VeranstaltungController extends Controller $this->redirect(array('view','id'=>$model->id)); } - $standorte = Standort::model()->findAll(array("condition"=>"published=1 and type='Bühne'")); + $standorte = Standort::model()->findAll(array("condition"=>"published=1")); $vereine = Verein::model()->findAll(array("condition"=>"published=1")); $this->render('create',array( @@ -96,7 +96,7 @@ class VeranstaltungController extends Controller $this->redirect(array('view','id'=>$model->id)); } - $standorte = Standort::model()->findAll(array("condition"=>"published=1 and type='Bühne'")); + $standorte = Standort::model()->findAll(array("condition"=>"published=1 order by type, name")); $vereine = Verein::model()->findAll(array("condition"=>"published=1")); $this->render('update',array( diff --git a/protected/extensions/extckeditor/ExtCKEditor.php b/protected/extensions/extckeditor/ExtCKEditor.php new file mode 100644 index 0000000..ae4b607 --- /dev/null +++ b/protected/extensions/extckeditor/ExtCKEditor.php @@ -0,0 +1,316 @@ +'Arial, Helvetica, sans-serif', + 'Comic Sans MS'=>'Comic Sans MS, cursive', + 'Courier New'=>'Courier New, Courier, monospace', + 'Georgia'=>'Georgia, serif', + 'Lucida Sans Unicode'=>'Lucida Sans Unicode, Lucida Grande, sans-serif', + 'Tahoma'=>'Tahoma, Geneva, sans-serif', + 'Times New Roman'=>'Times New Roman, Times, serif', + 'Trebuchet MS'=>'Trebuchet MS, Helvetica, sans-serif', + 'Verdana'=>'Verdana, Geneva, sans-serif', + ); + + private $fontSizes = array( + '8'=>'8px', + '9'=>'9px', + '10'=>'10px', + '11'=>'11px', + '12'=>'12px', + '14'=>'14px', + '16'=>'16px', + '18'=>'18px', + '20'=>'20px', + '22'=>'22px', + '24'=>'24px', + '26'=>'26px', + '28'=>'28px', + '36'=>'36px', + '48'=>'48px', + '72'=>'72px' + ); + + private $toolbar=array(); + + private $ckSkin='kama'; + private $theme='default'; + + + public function __construct($owner=null) { + parent::__construct($owner); + $this->setLanguage(Yii::app()->language); + } + + public function setLanguage($value){ + $lang = (($p = strpos($value, '_')) !== false) ? str_replace('_', '-', $value) : $value; + if (in_array($lang, $this->allowedLanguages)) { + $this->language = $lang; + } + else { + $suffix = empty($lang) ? 'en' : ($p !== false) ? strtolower(substr($lang, 0, $p)) : strtolower($lang); + if (in_array($suffix, $this->allowedLanguages)) $this->language = $suffix; + } + if(isset($this->allowedLanguages[$value])) + $this->language=$value; + } + + public function getLanguage(){ + return ($this->language != "") ? $this->language : Yii::app()->getLanguage(); + // return $this->language; + } + + public function setOptions($value){ + if (!is_array($value)) + throw new CException(Yii::t(__CLASS__, 'options must be an array')); + + $this->options=$value; + } + + public function getOptions(){ + return $this->options; + } + + public function setHeight($value) + { + if (!preg_match("/[\d]+[px|\%]/", $value)) + throw new CException(Yii::t(__CLASS__, 'height must be a string of digits terminated by "%" or "px"')); + $this->height = $value; + } + + public function getHeight() + { + return $this->height; + } + + public function setWidth($value) + { + if (!preg_match("/[\d]+[px|\%]/", $value)) + throw new CException(Yii::t('ETinyMce', 'width must be a string of digits terminated by "%" or "px"')); + $this->width = $value; + } + + public function getWidth() + { + return $this->width; + } + + public function setFontFamilies($value) + { + if (!is_array($value)) + throw new CException(Yii::t(__CLASS__, 'fontFamilies must be an array of strings')); + $this->fontFamilies = $value; + } + + public function getFontFamilies() + { + return $this->fontFamilies; + } + + public function setFontSizes($value) + { + if (!is_array($value)) + throw new CException(Yii::t(__CLASS__, 'fontSizes must be an array of integers')); + $this->fontSizes = $value; + } + + public function getFontSizes() + { + return $this->fontSizes; + } + + public function setEditorTemplate($value) + { + if (!in_array($value, $this->allowedEditorTemplates)) + throw new CException(Yii::t(__CLASS__, 'editorTemplate must be one of {temp}', array('{temp}'=>implode(',', $this->validEditorTemplates)))); + $this->editorTemplate = $value; + } + + public function getEditorTemplate() + { + return $this->editorTemplate; + } + + public function setPlugins($value) + { + if (!is_array($value)) + throw new CException(Yii::t(__CLASS__, 'plugins must be an array of strings')); + $this->plugins = $value; + } + + public function getPlugins() + { + return $this->plugins; + } + + public function setContentCSS($value) + { + if (!is_string($value)) + throw new CException(Yii::t(__CLASS__, 'contentCSS must be an URL')); + $this->contentCSS = $value; + } + + public function getContentCSS() + { + return $this->contentCSS; + } + + public function setToolbar($value){ + if(is_array($value)||is_string($value)){ + $this->toolbar=$value; + }else throw new CException(Yii::t(__CLASS__, 'toolbar must be an array or string')); + } + + public function getToolbar() + { + return $this->toolbar; + } + + public function setSkin($value) + { + if (!is_string($value)) + throw new CException(Yii::t(__CLASS__, 'Skin must be a string')); + $this->ckSkin = $value; + } + + public function getSkin() + { + return $this->ckSkin; + } + + public function setTheme($value) + { + if (!is_string($value)) + throw new CException(Yii::t(__CLASS__, 'Theme must be a string')); + $this->theme = $value; + } + + public function getTheme() + { + return $this->theme; + } + + protected function makeOptions() + { + list($name,$id) = $this->resolveNameID(); + + $options['language'] = $this->language; + + // to make the content look like if it were in your target page + if ($this->contentCSS !== '') { + $options['contentsCss'] = $this->contentCSS; + } + + switch ($this->editorTemplate) { + case 'full': + $options['toolbar']='Full'; + break; + case 'basic': + $options['toolbar']='Basic'; + break; + default: + $options['toolbar']=$this->toolbar; + } + + $fontFamilies=''; + foreach($this->fontFamilies as $k=>$v){ + $fontFamilies.=$k.'/'.$v.';'; + } + $options['font_names']=$fontFamilies; + + $fontSizes=''; + foreach($this->fontSizes as $k=>$v){ + $fontSizes.=$k.'/'.$v.';'; + } + $options['fontSize_sizes']=$fontSizes; + + $options['extraPlugins'] = implode(',', $this->plugins); + + $options['skin']=$this->ckSkin; + $options['theme']=$this->theme; + // here any option is overriden by user's options + if (is_array($this->options)) { + $options = array_merge($options, $this->options); + } + + return CJavaScript::encode($options); + } + + public function run(){ + parent::run(); + + list($name, $id) = $this->resolveNameID(); + + $baseDir = dirname(__FILE__); + $assets = Yii::app()->getAssetManager()->publish($baseDir.DIRECTORY_SEPARATOR.'assets'); + + $options = $this->makeOptions(); + + $cs = Yii::app()->getClientScript(); + + $cs->registerScriptFile($assets.'/ckeditor.js'); + + $this->htmlOptions['id'] = $id; + if (!array_key_exists('style', $this->htmlOptions)) { + $this->htmlOptions['style'] = "width:{$this->width};height:{$this->height};"; + } + if (!array_key_exists('cols', $this->htmlOptions)) { + $this->htmlOptions['cols'] = self::COLS; + } + if (!array_key_exists('rows', $this->htmlOptions)) { + $this->htmlOptions['rows'] = self::ROWS; + } + + $js =<<registerScript('Yii.'.get_class($this).'#'.$id, $js, CClientScript::POS_LOAD); + + if($this->hasModel()) { + $html = CHtml::activeTextArea($this->model, $this->attribute, $this->htmlOptions); + } + else { + $html = CHtml::textArea($name, $this->value, $this->htmlOptions); + } + + echo $html; + + } +} +?> diff --git a/protected/extensions/extckeditor/assets/.htaccess b/protected/extensions/extckeditor/assets/.htaccess new file mode 100644 index 0000000..8d694ef --- /dev/null +++ b/protected/extensions/extckeditor/assets/.htaccess @@ -0,0 +1,24 @@ +# +# Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. +# For licensing, see LICENSE.html or http://ckeditor.com/license +# + +# +# On some specific Linux installations you could face problems with Firefox. +# It could give you errors when loading the editor saying that some illegal +# characters were found (three strange chars in the beginning of the file). +# This could happen if you map the .js or .css files to PHP, for example. +# +# Those characters are the Byte Order Mask (BOM) of the Unicode encoded files. +# All FCKeditor files are Unicode encoded. +# + +AddType application/x-javascript .js +AddType text/css .css + +# +# If PHP is mapped to handle XML files, you could have some issues. The +# following will disable it. +# + +AddType text/xml .xml diff --git a/protected/extensions/extckeditor/assets/CHANGES.html b/protected/extensions/extckeditor/assets/CHANGES.html new file mode 100644 index 0000000..78bcb13 --- /dev/null +++ b/protected/extensions/extckeditor/assets/CHANGES.html @@ -0,0 +1,1503 @@ + + + + + Changelog — CKEditor + + + + +

+ CKEditor Changelog +

+

+ CKEditor 3.6.3

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.6.2

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.6.1

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.6

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.5.4

+

+ Fixed issues:

+ +

+ CKEditor 3.5.3

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.5.2

+

+ Fixed issues:

+ +

+ CKEditor 3.5.1

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.5

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.4.3

+

+ Fixed issues:

+ +

+ CKEditor 3.4.2

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.4.1

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.4

+

+ Fixed issues:

+ +

+ CKEditor 3.4 Beta

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.3.2

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.3.1

+

+ Fixed issues:

+ +

+ CKEditor 3.3

+

+ New features:

+ +

+ CKEditor 3.2.2

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.2.1

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.2

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.1.1

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.1

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.0.2

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.0.1

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.0

+

+ New features:

+ +

+ Fixed issues:

+ +

+ CKEditor 3.0 RC

+

+ Changelog starts at this release.

+ + + diff --git a/protected/extensions/extckeditor/assets/adapters/jquery.js b/protected/extensions/extckeditor/assets/adapters/jquery.js new file mode 100644 index 0000000..04f8c94 --- /dev/null +++ b/protected/extensions/extckeditor/assets/adapters/jquery.js @@ -0,0 +1,6 @@ +/* +Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +(function(){CKEDITOR.config.jqueryOverrideVal=typeof CKEDITOR.config.jqueryOverrideVal=='undefined'?true:CKEDITOR.config.jqueryOverrideVal;var a=window.jQuery;if(typeof a=='undefined')return;a.extend(a.fn,{ckeditorGet:function(){var b=this.eq(0).data('ckeditorInstance');if(!b)throw 'CKEditor not yet initialized, use ckeditor() with callback.';return b;},ckeditor:function(b,c){if(!CKEDITOR.env.isCompatible)return this;if(!a.isFunction(b)){var d=c;c=b;b=d;}c=c||{};this.filter('textarea, div, p').each(function(){var e=a(this),f=e.data('ckeditorInstance'),g=e.data('_ckeditorInstanceLock'),h=this;if(f&&!g){if(b)b.apply(f,[this]);}else if(!g){if(c.autoUpdateElement||typeof c.autoUpdateElement=='undefined'&&CKEDITOR.config.autoUpdateElement)c.autoUpdateElementJquery=true;c.autoUpdateElement=false;e.data('_ckeditorInstanceLock',true);f=CKEDITOR.replace(h,c);e.data('ckeditorInstance',f);f.on('instanceReady',function(i){var j=i.editor;setTimeout(function(){if(!j.element){setTimeout(arguments.callee,100);return;}i.removeListener('instanceReady',this.callee);j.on('dataReady',function(){e.trigger('setData.ckeditor',[j]);});j.on('getData',function(l){e.trigger('getData.ckeditor',[j,l.data]);},999);j.on('destroy',function(){e.trigger('destroy.ckeditor',[j]);});if(j.config.autoUpdateElementJquery&&e.is('textarea')&&e.parents('form').length){var k=function(){e.ckeditor(function(){j.updateElement();});};e.parents('form').submit(k);e.parents('form').bind('form-pre-serialize',k);e.bind('destroy.ckeditor',function(){e.parents('form').unbind('submit',k);e.parents('form').unbind('form-pre-serialize',k);});}j.on('destroy',function(){e.data('ckeditorInstance',null);});e.data('_ckeditorInstanceLock',null);e.trigger('instanceReady.ckeditor',[j]);if(b)b.apply(j,[h]);},0);},null,null,9999);}else CKEDITOR.on('instanceReady',function(i){var j=i.editor;setTimeout(function(){if(!j.element){setTimeout(arguments.callee,100);return;}if(j.element.$==h)if(b)b.apply(j,[h]);},0);},null,null,9999);});return this;}});if(CKEDITOR.config.jqueryOverrideVal)a.fn.val=CKEDITOR.tools.override(a.fn.val,function(b){return function(c,d){var e=typeof c!='undefined',f;this.each(function(){var g=a(this),h=g.data('ckeditorInstance');if(!d&&g.is('textarea')&&h){if(e)h.setData(c);else{f=h.getData();return null;}}else if(e)b.call(g,c);else{f=b.call(g);return null;}return true;});return e?this:f;};});})(); diff --git a/protected/extensions/extckeditor/assets/ckeditor.asp b/protected/extensions/extckeditor/assets/ckeditor.asp new file mode 100644 index 0000000..9ae701f --- /dev/null +++ b/protected/extensions/extckeditor/assets/ckeditor.asp @@ -0,0 +1,955 @@ +<% + ' + ' Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. + ' For licensing, see LICENSE.html or http://ckeditor.com/license + +' Shared variable for all instances ("static") +dim CKEDITOR_initComplete +dim CKEDITOR_returnedEvents + + '' + ' \brief CKEditor class that can be used to create editor + ' instances in ASP pages on server side. + ' @see http://ckeditor.com + ' + ' Sample usage: + ' @code + ' editor = new CKEditor + ' editor.editor "editor1", "

Initial value.

", empty, empty + ' @endcode + +Class CKEditor + + '' + ' The version of %CKEditor. + private version + + '' + ' A constant string unique for each release of %CKEditor. + private mTimeStamp + + '' + ' URL to the %CKEditor installation directory (absolute or relative to document root). + ' If not set, CKEditor will try to guess it's path. + ' + ' Example usage: + ' @code + ' editor.basePath = "/ckeditor/" + ' @endcode + Public basePath + + '' + ' A boolean variable indicating whether CKEditor has been initialized. + ' Set it to true only if you have already included + ' <script> tag loading ckeditor.js in your website. + Public initialized + + '' + ' Boolean variable indicating whether created code should be printed out or returned by a function. + ' + ' Example 1: get the code creating %CKEditor instance and print it on a page with the "echo" function. + ' @code + ' editor = new CKEditor + ' editor.returnOutput = true + ' code = editor.editor("editor1", "

Initial value.

", empty, empty) + ' response.write "

Editor 1:

" + ' response.write code + ' @endcode + Public returnOutput + + '' + ' A Dictionary with textarea attributes. + ' + ' When %CKEditor is created with the editor() method, a HTML <textarea> element is created, + ' it will be displayed to anyone with JavaScript disabled or with incompatible browser. + public textareaAttributes + + '' + ' A string indicating the creation date of %CKEditor. + ' Do not change it unless you want to force browsers to not use previously cached version of %CKEditor. + public timestamp + + '' + ' A dictionary that holds the instance configuration. + private oInstanceConfig + + '' + ' A dictionary that holds the configuration for all the instances. + private oAllInstancesConfig + + '' + ' A dictionary that holds event listeners for the instance. + private oInstanceEvents + + '' + ' A dictionary that holds event listeners for all the instances. + private oAllInstancesEvents + + '' + ' A Dictionary that holds global event listeners (CKEDITOR object) + private oGlobalEvents + + + Private Sub Class_Initialize() + version = "3.6.3" + timeStamp = "C3HA5RM" + mTimeStamp = "C3HA5RM" + + Set oInstanceConfig = CreateObject("Scripting.Dictionary") + Set oAllInstancesConfig = CreateObject("Scripting.Dictionary") + + Set oInstanceEvents = CreateObject("Scripting.Dictionary") + Set oAllInstancesEvents = CreateObject("Scripting.Dictionary") + Set oGlobalEvents = CreateObject("Scripting.Dictionary") + + Set textareaAttributes = CreateObject("Scripting.Dictionary") + textareaAttributes.Add "rows", 8 + textareaAttributes.Add "cols", 60 + End Sub + + '' + ' Creates a %CKEditor instance. + ' In incompatible browsers %CKEditor will downgrade to plain HTML <textarea> element. + ' + ' @param name (string) Name of the %CKEditor instance (this will be also the "name" attribute of textarea element). + ' @param value (string) Initial value. + ' + ' Example usage: + ' @code + ' set editor = New CKEditor + ' editor.editor "field1", "

Initial value.

" + ' @endcode + ' + ' Advanced example: + ' @code + ' set editor = new CKEditor + ' set config = CreateObject("Scripting.Dictionary") + ' config.Add "toolbar", Array( _ + ' Array( "Source", "-", "Bold", "Italic", "Underline", "Strike" ), _ + ' Array( "Image", "Link", "Unlink", "Anchor" ) _ + ' ) + ' set events = CreateObject("Scripting.Dictionary") + ' events.Add "instanceReady", "function (evt) { alert('Loaded second editor: ' + evt.editor.name );}" + + ' editor.editor "field1", "

Initial value.

", config, events + ' @endcode + ' + public function editor(name, value) + dim attr, out, js, customConfig, extraConfig + dim attribute + + attr = "" + + for each attribute in textareaAttributes + attr = attr & " " & attribute & "=""" & replace( textareaAttributes( attribute ), """", """ ) & """" + next + + out = "" & vbcrlf + + if not(initialized) then + out = out & init() + end if + + set customConfig = configSettings() + js = returnGlobalEvents() + + extraConfig = (new JSON)( empty, customConfig, false ) + if extraConfig<>"" then extraConfig = ", " & extraConfig + js = js & "CKEDITOR.replace('" & name & "'" & extraConfig & ");" + + out = out & script(js) + + if not(returnOutput) then + response.write out + out = "" + end if + + editor = out + + oInstanceConfig.RemoveAll + oInstanceEvents.RemoveAll + end function + + '' + ' Replaces a <textarea> with a %CKEditor instance. + ' + ' @param id (string) The id or name of textarea element. + ' + ' Example 1: adding %CKEditor to <textarea name="article"></textarea> element: + ' @code + ' set editor = New CKEditor + ' editor.replace "article" + ' @endcode + ' + public function replaceInstance(id) + dim out, js, customConfig, extraConfig + + out = "" + if not(initialized) then + out = out & init() + end if + + set customConfig = configSettings() + js = returnGlobalEvents() + + extraConfig = (new JSON)( empty, customConfig, false ) + if extraConfig<>"" then extraConfig = ", " & extraConfig + js = js & "CKEDITOR.replace('" & id & "'" & extraConfig & ");" + + out = out & script(js) + + if not(returnOutput) then + response.write out + out = "" + end if + + replaceInstance = out + + oInstanceConfig.RemoveAll + oInstanceEvents.RemoveAll + end function + + '' + ' Replace all <textarea> elements available in the document with editor instances. + ' + ' @param className (string) If set, replace all textareas with class className in the page. + ' + ' Example 1: replace all <textarea> elements in the page. + ' @code + ' editor = new CKEditor + ' editor.replaceAll empty + ' @endcode + ' + ' Example 2: replace all <textarea class="myClassName"> elements in the page. + ' @code + ' editor = new CKEditor + ' editor.replaceAll 'myClassName' + ' @endcode + ' + function replaceAll(className) + dim out, js, customConfig + + out = "" + if not(initialized) then + out = out & init() + end if + + set customConfig = configSettings() + js = returnGlobalEvents() + + if (customConfig.Count=0) then + if (isEmpty(className)) then + js = js & "CKEDITOR.replaceAll();" + else + js = js & "CKEDITOR.replaceAll('" & className & "');" + end if + else + js = js & "CKEDITOR.replaceAll( function(textarea, config) {\n" + if not(isEmpty(className)) then + js = js & " var classRegex = new RegExp('(?:^| )' + '" & className & "' + '(?:$| )');\n" + js = js & " if (!classRegex.test(textarea.className))\n" + js = js & " return false;\n" + end if + js = js & " CKEDITOR.tools.extend(config, " & (new JSON)( empty, customConfig, false ) & ", true);" + js = js & "} );" + end if + + out = out & script(js) + + if not(returnOutput) then + response.write out + out = "" + end if + + replaceAll = out + + oInstanceConfig.RemoveAll + oInstanceEvents.RemoveAll + end function + + + '' + ' A Dictionary that holds the %CKEditor configuration for all instances + ' For the list of available options, see http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html + ' + ' Example usage: + ' @code + ' editor.config("height") = 400 + ' // Use @@ at the beggining of a string to ouput it without surrounding quotes. + ' editor.config("width") = "@@screen.width * 0.8" + ' @endcode + Public Property Let Config( configKey, configValue ) + oAllInstancesConfig.Add configKey, configValue + End Property + + '' + ' Configuration options for the next instance + ' + Public Property Let instanceConfig( configKey, configValue ) + oInstanceConfig.Add configKey, configValue + End Property + + '' + ' Adds event listener. + ' Events are fired by %CKEditor in various situations. + ' + ' @param eventName (string) Event name. + ' @param javascriptCode (string) Javascript anonymous function or function name. + ' + ' Example usage: + ' @code + ' editor.addEventHandler "instanceReady", "function (ev) { " & _ + ' " alert('Loaded: ' + ev.editor.name); " & _ + ' "}" + ' @endcode + ' + public sub addEventHandler(eventName, javascriptCode) + if not(oAllInstancesEvents.Exists( eventName ) ) then + oAllInstancesEvents.Add eventName, Array() + end if + + dim listeners, size + listeners = oAllInstancesEvents( eventName ) + size = ubound(listeners) + 1 + redim preserve listeners(size) + listeners(size) = javascriptCode + + oAllInstancesEvents( eventName ) = listeners +' '' Avoid duplicates. fixme... +' if (!in_array($javascriptCode, $this->_events[$event])) { +' $this->_events[$event][] = $javascriptCode; +' } + end sub + + '' + ' Clear registered event handlers. + ' Note: this function will have no effect on already created editor instances. + ' + ' @param eventName (string) Event name, if set to 'empty' all event handlers will be removed. + ' + public sub clearEventHandlers( eventName ) + if not(isEmpty( eventName )) then + oAllInstancesEvents.Remove eventName + else + oAllInstancesEvents.RemoveAll + end if + end sub + + + '' + ' Adds event listener only for the next instance. + ' Events are fired by %CKEditor in various situations. + ' + ' @param eventName (string) Event name. + ' @param javascriptCode (string) Javascript anonymous function or function name. + ' + ' Example usage: + ' @code + ' editor.addInstanceEventHandler "instanceReady", "function (ev) { " & _ + ' " alert('Loaded: ' + ev.editor.name); " & _ + ' "}" + ' @endcode + ' + public sub addInstanceEventHandler(eventName, javascriptCode) + if not(oInstanceEvents.Exists( eventName ) ) then + oInstanceEvents.Add eventName, Array() + end if + + dim listeners, size + listeners = oInstanceEvents( eventName ) + size = ubound(listeners) + 1 + redim preserve listeners(size) + listeners(size) = javascriptCode + + oInstanceEvents( eventName ) = listeners +' '' Avoid duplicates. fixme... +' if (!in_array($javascriptCode, $this->_events[$event])) { +' $this->_events[$event][] = $javascriptCode; +' } + end sub + + '' + ' Clear registered event handlers. + ' Note: this function will have no effect on already created editor instances. + ' + ' @param eventName (string) Event name, if set to 'empty' all event handlers will be removed. + ' + public sub clearInstanceEventHandlers( eventName ) + if not(isEmpty( eventName )) then + oInstanceEvents.Remove eventName + else + oInstanceEvents.RemoveAll + end if + end sub + + '' + ' Adds global event listener. + ' + ' @param event (string) Event name. + ' @param javascriptCode (string) Javascript anonymous function or function name. + ' + ' Example usage: + ' @code + ' editor.addGlobalEventHandler "dialogDefinition", "function (ev) { " & _ + ' " alert('Loading dialog: ' + ev.data.name); " & _ + ' "}" + ' @endcode + ' + public sub addGlobalEventHandler( eventName, javascriptCode) + if not(oGlobalEvents.Exists( eventName ) ) then + oGlobalEvents.Add eventName, Array() + end if + + dim listeners, size + listeners = oGlobalEvents( eventName ) + size = ubound(listeners) + 1 + redim preserve listeners(size) + listeners(size) = javascriptCode + + oGlobalEvents( eventName ) = listeners + +' // Avoid duplicates. +' if (!in_array($javascriptCode, $this->_globalEvents[$event])) { +' $this->_globalEvents[$event][] = $javascriptCode; +' } + end sub + + '' + ' Clear registered global event handlers. + ' Note: this function will have no effect if the event handler has been already printed/returned. + ' + ' @param eventName (string) Event name, if set to 'empty' all event handlers will be removed . + ' + public sub clearGlobalEventHandlers( eventName ) + if not(isEmpty( eventName )) then + oGlobalEvents.Remove eventName + else + oGlobalEvents.RemoveAll + end if + end sub + + '' + ' Prints javascript code. + ' + ' @param string js + ' + private function script(js) + script = "" & vbcrlf + end function + + '' + ' Returns the configuration array (global and instance specific settings are merged into one array). + ' + ' @param instanceConfig (Dictionary) The specific configurations to apply to editor instance. + ' @param instanceEvents (Dictionary) Event listeners for editor instance. + ' + private function configSettings() + dim mergedConfig, mergedEvents + set mergedConfig = cloneDictionary(oAllInstancesConfig) + set mergedEvents = cloneDictionary(oAllInstancesEvents) + + if not(isEmpty(oInstanceConfig)) then + set mergedConfig = mergeDictionary(mergedConfig, oInstanceConfig) + end if + + if not(isEmpty(oInstanceEvents)) then + for each eventName in oInstanceEvents + code = oInstanceEvents( eventName ) + + if not(mergedEvents.Exists( eventName)) then + mergedEvents.Add eventName, code + else + + dim listeners, size + listeners = mergedEvents( eventName ) + size = ubound(listeners) + if isArray( code ) then + addedCount = ubound(code) + redim preserve listeners( size + addedCount + 1 ) + for i = 0 to addedCount + listeners(size + i + 1) = code (i) + next + else + size = size + 1 + redim preserve listeners(size) + listeners(size) = code + end if + + mergedEvents( eventName ) = listeners + end if + next + + end if + + dim i, eventName, handlers, configON, ub, code + + if mergedEvents.Count>0 then + if mergedConfig.Exists( "on" ) then + set configON = mergedConfig.items( "on" ) + else + set configON = CreateObject("Scripting.Dictionary") + mergedConfig.Add "on", configOn + end if + + for each eventName in mergedEvents + handlers = mergedEvents( eventName ) + code = "" + + if isArray(handlers) then + uB = ubound(handlers) + if (uB = 0) then + code = handlers(0) + else + code = "function (ev) {" + for i=0 to uB + code = code & "(" & handlers(i) & ")(ev);" + next + code = code & "}" + end if + else + code = handlers + end if + ' Using @@ at the beggining to signal JSON that we don't want this quoted. + configON.Add eventName, "@@" & code + next + +' set mergedConfig.Item("on") = configOn + end if + + set configSettings = mergedConfig + end function + + '' + ' Returns a copy of a scripting.dictionary object + ' + private function cloneDictionary( base ) + dim newOne, tmpKey + + Set newOne = CreateObject("Scripting.Dictionary") + for each tmpKey in base + newOne.Add tmpKey , base( tmpKey ) + next + + set cloneDictionary = newOne + end function + + '' + ' Combines two scripting.dictionary objects + ' The base object isn't modified, and extra gets all the properties in base + ' + private function mergeDictionary(base, extra) + dim newOne, tmpKey + + for each tmpKey in base + if not(extra.Exists( tmpKey )) then + extra.Add tmpKey, base( tmpKey ) + end if + next + + set mergeDictionary = extra + end function + + '' + ' Return global event handlers. + ' + private function returnGlobalEvents() + dim out, eventName, handlers + dim handlersForEvent, handler, code, i + out = "" + + if (isempty(CKEDITOR_returnedEvents)) then + set CKEDITOR_returnedEvents = CreateObject("Scripting.Dictionary") + end if + + for each eventName in oGlobalEvents + handlers = oGlobalEvents( eventName ) + + if not(CKEDITOR_returnedEvents.Exists(eventName)) then + CKEDITOR_returnedEvents.Add eventName, CreateObject("Scripting.Dictionary") + end if + + set handlersForEvent = CKEDITOR_returnedEvents.Item( eventName ) + + ' handlersForEvent is another dictionary + ' and handlers is an array + + for i = 0 to ubound(handlers) + code = handlers( i ) + + ' Return only new events + if not(handlersForEvent.Exists( code )) then + if (out <> "") then out = out & vbcrlf + out = out & "CKEDITOR.on('" & eventName & "', " & code & ");" + handlersForEvent.Add code, code + end if + next + next + + returnGlobalEvents = out + end function + + '' + ' Initializes CKEditor (executed only once). + ' + private function init() + dim out, args, path, extraCode, file + out = "" + + if (CKEDITOR_initComplete) then + init = "" + exit function + end if + + if (initialized) then + CKEDITOR_initComplete = true + init = "" + exit function + end if + + args = "" + path = ckeditorPath() + + if (timestamp <> "") and (timestamp <> "%" & "TIMESTAMP%") then + args = "?t=" & timestamp + end if + + ' Skip relative paths... + if (instr(path, "..") <> 0) then + out = out & script("window.CKEDITOR_BASEPATH='" & path & "';") + end if + + out = out & "" & vbcrlf + + extraCode = "" + if (timestamp <> mTimeStamp) then + extraCode = extraCode & "CKEDITOR.timestamp = '" & timestamp & "';" + end if + if (extraCode <> "") then + out = out & script(extraCode) + end if + + CKEDITOR_initComplete = true + initialized = true + + init = out + end function + + private function ckeditorFileName() + ckeditorFileName = "ckeditor.js" + end function + + '' + ' Return path to ckeditor.js. + ' + private function ckeditorPath() + if (basePath <> "") then + ckeditorPath = basePath + else + ' In classic ASP we can't get the location of this included script + ckeditorPath = "/ckeditor/" + end if + + ' Try to check if that folder contains the CKEditor files: + ' If it's a full URL avoid checking it as it might point to an external server. + if (instr(ckeditorPath, "://") <> 0) then exit function + + dim filename, oFSO, exists + filename = server.mapPath(basePath & ckeditorFileName()) + set oFSO = Server.CreateObject("Scripting.FileSystemObject") + exists = oFSO.FileExists(filename) + set oFSO = nothing + + if not(exists) then + response.clear + response.write "

CKEditor path validation failed

" + response.write "

The path "" & ckeditorPath & "" doesn't include the CKEditor main file (" & ckeditorFileName() & ")

" + response.write "

Please, verify that you have set it correctly and/or adjust the 'basePath' property

" + response.write "

Checked for physical file: "" & filename & ""

" + response.end + end if + end function + +End Class + + + +' URL: http://www.webdevbros.net/2007/04/26/generate-json-from-asp-datatypes/ +'************************************************************************************************************** +'' @CLASSTITLE: JSON +'' @CREATOR: Michal Gabrukiewicz (gabru at grafix.at), Michael Rebec +'' @CONTRIBUTORS: - Cliff Pruitt (opensource at crayoncowboy.com) +'' - Sylvain Lafontaine +'' - Jef Housein +'' - Jeremy Brown +'' @CREATEDON: 2007-04-26 12:46 +'' @CDESCRIPTION: Comes up with functionality for JSON (http://json.org) to use within ASP. +'' Correct escaping of characters, generating JSON Grammer out of ASP datatypes and structures +'' Some examples (all use the toJSON() method but as it is the class' default method it can be left out): +'' +'' <% +'' 'simple number +'' output = (new JSON)("myNum", 2, false) +'' 'generates {"myNum": 2} +'' +'' 'array with different datatypes +'' output = (new JSON)("anArray", array(2, "x", null), true) +'' 'generates "anArray": [2, "x", null] +'' '(note: the last parameter was true, thus no surrounding brackets in the result) +'' % > +'' +'' @REQUIRES: - +'' @OPTIONEXPLICIT: yes +'' @VERSION: 1.5.1 + +'************************************************************************************************************** +class JSON + + 'private members + private output, innerCall + + '********************************************************************************************************** + '* constructor + '********************************************************************************************************** + public sub class_initialize() + newGeneration() + end sub + + '****************************************************************************************** + '' @SDESCRIPTION: STATIC! takes a given string and makes it JSON valid + '' @DESCRIPTION: all characters which needs to be escaped are beeing replaced by their + '' unicode representation according to the + '' RFC4627#2.5 - http://www.ietf.org/rfc/rfc4627.txt?number=4627 + '' @PARAM: val [string]: value which should be escaped + '' @RETURN: [string] JSON valid string + '****************************************************************************************** + public function escape(val) + dim cDoubleQuote, cRevSolidus, cSolidus + cDoubleQuote = &h22 + cRevSolidus = &h5C + cSolidus = &h2F + dim i, currentDigit + for i = 1 to (len(val)) + currentDigit = mid(val, i, 1) + if ascw(currentDigit) > &h00 and ascw(currentDigit) < &h1F then + currentDigit = escapequence(currentDigit) + elseif ascw(currentDigit) >= &hC280 and ascw(currentDigit) <= &hC2BF then + currentDigit = "\u00" + right(padLeft(hex(ascw(currentDigit) - &hC200), 2, 0), 2) + elseif ascw(currentDigit) >= &hC380 and ascw(currentDigit) <= &hC3BF then + currentDigit = "\u00" + right(padLeft(hex(ascw(currentDigit) - &hC2C0), 2, 0), 2) + else + select case ascw(currentDigit) + case cDoubleQuote: currentDigit = escapequence(currentDigit) + case cRevSolidus: currentDigit = escapequence(currentDigit) + case cSolidus: currentDigit = escapequence(currentDigit) + end select + end if + escape = escape & currentDigit + next + end function + + '****************************************************************************************************************** + '' @SDESCRIPTION: generates a representation of a name value pair in JSON grammer + '' @DESCRIPTION: It generates a name value pair which is represented as {"name": value} in JSON. + '' the generation is fully recursive. Thus the value can also be a complex datatype (array in dictionary, etc.) e.g. + '' + '' <% + '' set j = new JSON + '' j.toJSON "n", array(RS, dict, false), false + '' j.toJSON "n", array(array(), 2, true), false + '' % > + '' + '' @PARAM: name [string]: name of the value (accessible with javascript afterwards). leave empty to get just the value + '' @PARAM: val [variant], [int], [float], [array], [object], [dictionary]: value which needs + '' to be generated. Conversation of the data types is as follows:
+ '' - ASP datatype -> JavaScript datatype + '' - NOTHING, NULL -> null + '' - INT, DOUBLE -> number + '' - STRING -> string + '' - BOOLEAN -> bool + '' - ARRAY -> array + '' - DICTIONARY -> Represents it as name value pairs. Each key is accessible as property afterwards. json will look like "name": {"key1": "some value", "key2": "other value"} + '' - multidimensional array -> Generates a 1-dimensional array (flat) with all values of the multidimensional array + '' - request object -> every property and collection (cookies, form, querystring, etc) of the asp request object is exposed as an item of a dictionary. Property names are lowercase. e.g. servervariables. + '' - OBJECT -> name of the type (if unknown type) or all its properties (if class implements reflect() method) + '' Implement a reflect() function if you want your custom classes to be recognized. The function must return + '' a dictionary where the key holds the property name and the value its value. Example of a reflect function within a User class which has firstname and lastname properties + '' + '' <% + '' function reflect() + '' . set reflect = server.createObject("scripting.dictionary") + '' . reflect.add "firstname", firstname + '' . reflect.add "lastname", lastname + '' end function + '' % > + '' + '' Example of how to generate a JSON representation of the asp request object and access the HTTP_HOST server variable in JavaScript: + '' + '' + '' + '' @PARAM: nested [bool]: indicates if the name value pair is already nested within another? if yes then the {} are left out. + '' @RETURN: [string] returns a JSON representation of the given name value pair + '****************************************************************************************************************** + public default function toJSON(name, val, nested) + if not nested and not isEmpty(name) then write("{") + if not isEmpty(name) then write("""" & escape(name) & """: ") + generateValue(val) + if not nested and not isEmpty(name) then write("}") + toJSON = output + + if innerCall = 0 then newGeneration() + end function + + '****************************************************************************************************************** + '* generate + '****************************************************************************************************************** + private function generateValue(val) + if isNull(val) then + write("null") + elseif isArray(val) then + generateArray(val) + elseif isObject(val) then + dim tName : tName = typename(val) + if val is nothing then + write("null") + elseif tName = "Dictionary" or tName = "IRequestDictionary" then + generateDictionary(val) + elseif tName = "IRequest" then + set req = server.createObject("scripting.dictionary") + req.add "clientcertificate", val.ClientCertificate + req.add "cookies", val.cookies + req.add "form", val.form + req.add "querystring", val.queryString + req.add "servervariables", val.serverVariables + req.add "totalbytes", val.totalBytes + generateDictionary(req) + elseif tName = "IStringList" then + if val.count = 1 then + toJSON empty, val(1), true + else + generateArray(val) + end if + else + generateObject(val) + end if + else + 'bool + dim varTyp + varTyp = varType(val) + if varTyp = 11 then + if val then write("true") else write("false") + 'int, long, byte + elseif varTyp = 2 or varTyp = 3 or varTyp = 17 or varTyp = 19 then + write(cLng(val)) + 'single, double, currency + elseif varTyp = 4 or varTyp = 5 or varTyp = 6 or varTyp = 14 then + write(replace(cDbl(val), ",", ".")) + else + ' Using @@ at the beggining to signal JSON that we don't want this quoted. + if left(val, 2) = "@@" then + write( mid( val, 3 ) ) + else + write("""" & escape(val & "") & """") + end if + end if + end if + generateValue = output + end function + + '****************************************************************************************************************** + '* generateArray + '****************************************************************************************************************** + private sub generateArray(val) + dim item, i + write("[") + i = 0 + 'the for each allows us to support also multi dimensional arrays + for each item in val + if i > 0 then write(",") + generateValue(item) + i = i + 1 + next + write("]") + end sub + + '****************************************************************************************************************** + '* generateDictionary + '****************************************************************************************************************** + private sub generateDictionary(val) + innerCall = innerCall + 1 + if val.count = 0 then + toJSON empty, null, true + exit sub + end if + dim key, i + write("{") + i = 0 + for each key in val + if i > 0 then write(",") + toJSON key, val(key), true + i = i + 1 + next + write("}") + innerCall = innerCall - 1 + end sub + + '****************************************************************************************************************** + '* generateObject + '****************************************************************************************************************** + private sub generateObject(val) + dim props + on error resume next + set props = val.reflect() + if err = 0 then + on error goto 0 + innerCall = innerCall + 1 + toJSON empty, props, true + innerCall = innerCall - 1 + else + on error goto 0 + write("""" & escape(typename(val)) & """") + end if + end sub + + '****************************************************************************************************************** + '* newGeneration + '****************************************************************************************************************** + private sub newGeneration() + output = empty + innerCall = 0 + end sub + + '****************************************************************************************** + '* JsonEscapeSquence + '****************************************************************************************** + private function escapequence(digit) + escapequence = "\u00" + right(padLeft(hex(ascw(digit)), 2, 0), 2) + end function + + '****************************************************************************************** + '* padLeft + '****************************************************************************************** + private function padLeft(value, totalLength, paddingChar) + padLeft = right(clone(paddingChar, totalLength) & value, totalLength) + end function + + '****************************************************************************************** + '* clone + '****************************************************************************************** + private function clone(byVal str, n) + dim i + for i = 1 to n : clone = clone & str : next + end function + + '****************************************************************************************** + '* write + '****************************************************************************************** + private sub write(val) + output = output & val + end sub + +end class +%> diff --git a/protected/extensions/extckeditor/assets/ckeditor.js b/protected/extensions/extckeditor/assets/ckeditor.js new file mode 100644 index 0000000..b323cd3 --- /dev/null +++ b/protected/extensions/extckeditor/assets/ckeditor.js @@ -0,0 +1,151 @@ +/* +Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +(function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'C3HA5RM',version:'3.6.3',revision:'7474',rnd:Math.floor(Math.random()*900)+100,_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f=0?'&':'?')+'t='+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();var a=CKEDITOR;if(!a.event){a.event=function(){};a.event.implementOn=function(b){var c=a.event.prototype;for(var d in c){if(b[d]==undefined)b[d]=c[d];}};a.event.prototype=(function(){var b=function(d){var e=d.getPrivate&&d.getPrivate()||d._||(d._={});return e.events||(e.events={});},c=function(d){this.name=d;this.listeners=[];};c.prototype={getListenerIndex:function(d){for(var e=0,f=this.listeners;e=0;n--){if(k[n].priority<=h){k.splice(n+1,0,m);return;}}k.unshift(m);}},fire:(function(){var d=false,e=function(){d=true;},f=false,g=function(){f=true;};return function(h,i,j){var k=b(this)[h],l=d,m=f;d=f=false;if(k){var n=k.listeners;if(n.length){n=n.slice(0);for(var o=0;o=0)f.listeners.splice(g,1);}},hasListeners:function(d){var e=b(this)[d];return e&&e.listeners.length>0;}};})();}if(!a.editor){a.ELEMENT_MODE_NONE=0;a.ELEMENT_MODE_REPLACE=1;a.ELEMENT_MODE_APPENDTO=2;a.editor=function(b,c,d,e){var f=this;f._={instanceConfig:b,element:c,data:e};f.elementMode=d||0;a.event.call(f);f._init();};a.editor.replace=function(b,c){var d=b;if(typeof d!='object'){d=document.getElementById(b);if(d&&d.tagName.toLowerCase() in {style:1,script:1,base:1,link:1,meta:1,title:1})d=null;if(!d){var e=0,f=document.getElementsByName(b);while((d=f[e++])&&d.tagName.toLowerCase()!='textarea'){}}if(!d)throw '[CKEDITOR.editor.replace] The element with id or name "'+b+'" was not found.';}d.style.visibility='hidden';return new a.editor(c,d,1);};a.editor.appendTo=function(b,c,d){var e=b;if(typeof e!='object'){e=document.getElementById(b);if(!e)throw '[CKEDITOR.editor.appendTo] The element with id "'+b+'" was not found.';}return new a.editor(c,e,2,d);};a.editor.prototype={_init:function(){var b=a.editor._pending||(a.editor._pending=[]);b.push(this);},fire:function(b,c){return a.event.prototype.fire.call(this,b,c,this);},fireOnce:function(b,c){return a.event.prototype.fireOnce.call(this,b,c,this);}};a.event.implementOn(a.editor.prototype,true);}if(!a.env)a.env=(function(){var b=navigator.userAgent.toLowerCase(),c=window.opera,d={ie:/*@cc_on!@*/false,opera:!!c&&c.version,webkit:b.indexOf(' applewebkit/')>-1,air:b.indexOf(' adobeair/')>-1,mac:b.indexOf('macintosh')>-1,quirks:document.compatMode=='BackCompat',mobile:b.indexOf('mobile')>-1,iOS:/(ipad|iphone|ipod)/.test(b),isCustomDomain:function(){if(!this.ie)return false;var g=document.domain,h=window.location.hostname;return g!=h&&g!='['+h+']';},secure:location.protocol=='https:'};d.gecko=navigator.product=='Gecko'&&!d.webkit&&!d.opera;var e=0;if(d.ie){e=parseFloat(b.match(/msie (\d+)/)[1]);d.ie8=!!document.documentMode;d.ie8Compat=document.documentMode==8;d.ie9Compat=document.documentMode==9;d.ie7Compat=e==7&&!document.documentMode||document.documentMode==7;d.ie6Compat=e<7||d.quirks;}if(d.gecko){var f=b.match(/rv:([\d\.]+)/);if(f){f=f[1].split('.');e=f[0]*10000+(f[1]||0)*100+ +(f[2]||0);}}if(d.opera)e=parseFloat(c.version());if(d.air)e=parseFloat(b.match(/ adobeair\/(\d+)/)[1]);if(d.webkit)e=parseFloat(b.match(/ applewebkit\/(\d+)/)[1]);d.version=e;d.isCompatible=d.iOS&&e>=534||!d.mobile&&(d.ie&&e>=6||d.gecko&&e>=10801||d.opera&&e>=9.5||d.air&&e>=1||d.webkit&&e>=522||false);d.cssClass='cke_browser_'+(d.ie?'ie':d.gecko?'gecko':d.opera?'opera':d.webkit?'webkit':'unknown'); +if(d.quirks)d.cssClass+=' cke_browser_quirks';if(d.ie){d.cssClass+=' cke_browser_ie'+(d.version<7?'6':d.version>=8?document.documentMode:'7');if(d.quirks)d.cssClass+=' cke_browser_iequirks';}if(d.gecko&&e<10900)d.cssClass+=' cke_browser_gecko18';if(d.air)d.cssClass+=' cke_browser_air';return d;})();var b=a.env;var c=b.ie;if(a.status=='unloaded')(function(){a.event.implementOn(a);a.loadFullCore=function(){if(a.status!='basic_ready'){a.loadFullCore._load=1;return;}delete a.loadFullCore;var e=document.createElement('script');e.type='text/javascript';e.src=a.basePath+'ckeditor.js';document.getElementsByTagName('head')[0].appendChild(e);};a.loadFullCoreTimeout=0;a.replaceClass='ckeditor';a.replaceByClassEnabled=1;var d=function(e,f,g,h){if(b.isCompatible){if(a.loadFullCore)a.loadFullCore();var i=g(e,f,h);a.add(i);return i;}return null;};a.replace=function(e,f){return d(e,f,a.editor.replace);};a.appendTo=function(e,f,g){return d(e,f,a.editor.appendTo,g);};a.add=function(e){var f=this._.pending||(this._.pending=[]);f.push(e);};a.replaceAll=function(){var e=document.getElementsByTagName('textarea');for(var f=0;f'+g+'');else h.push('');}return h.join('');},htmlEncode:function(f){var g=function(k){var l=new d.element('span');l.setText(k);return l.getHtml();},h=g('\n').toLowerCase()=='
'?function(k){return g(k).replace(/
/gi,'\n');}:g,i=g('>')=='>'?function(k){return h(k).replace(/>/g,'>');}:h,j=g(' ')=='  '?function(k){return i(k).replace(/ /g,' ');}:i;this.htmlEncode=j;return this.htmlEncode(f);},htmlEncodeAttr:function(f){return f.replace(/"/g,'"').replace(//g,'>');},getNextNumber:(function(){var f=0;return function(){return++f;};})(),getNextId:function(){return 'cke_'+this.getNextNumber();},override:function(f,g){return g(f);},setTimeout:function(f,g,h,i,j){if(!j)j=window;if(!h)h=j;return j.setTimeout(function(){if(i)f.apply(h,[].concat(i));else f.apply(h);},g||0);},trim:(function(){var f=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(g){return g.replace(f,'');};})(),ltrim:(function(){var f=/^[ \t\n\r]+/g;return function(g){return g.replace(f,'');};})(),rtrim:(function(){var f=/[ \t\n\r]+$/g;return function(g){return g.replace(f,'');};})(),indexOf:Array.prototype.indexOf?function(f,g){return f.indexOf(g);}:function(f,g){for(var h=0,i=f.length;h',a.document);a.document.getBody().append(f);}if(!/%$/.test(g)){f.setStyle('width',g);return f.$.clientWidth;}return g;};})(),repeat:function(f,g){return new Array(g+1).join(f);},tryThese:function(){var f;for(var g=0,h=arguments.length;g8))&&i)h=i+':'+h;return new d.nodeList(this.$.getElementsByTagName(h));},getHead:function(){var h=this.$.getElementsByTagName('head')[0];if(!h)h=this.getDocumentElement().append(new d.element('head'),true);else h=new d.element(h);return(this.getHead=function(){return h;})();},getBody:function(){var h=new d.element(this.$.body);return(this.getBody=function(){return h;})();},getDocumentElement:function(){var h=new d.element(this.$.documentElement);return(this.getDocumentElement=function(){return h;})();},getWindow:function(){var h=new d.window(this.$.parentWindow||this.$.defaultView);return(this.getWindow=function(){return h;})();},write:function(h){var i=this;i.$.open('text/html','replace');b.isCustomDomain()&&(i.$.domain=document.domain);i.$.write(h);i.$.close();}});d.node=function(h){if(h){var i=h.nodeType==9?'document':h.nodeType==1?'element':h.nodeType==3?'text':h.nodeType==8?'comment':'domObject';return new d[i](h);}return this;};d.node.prototype=new d.domObject();a.NODE_ELEMENT=1;a.NODE_DOCUMENT=9;a.NODE_TEXT=3;a.NODE_COMMENT=8;a.NODE_DOCUMENT_FRAGMENT=11;a.POSITION_IDENTICAL=0;a.POSITION_DISCONNECTED=1; +a.POSITION_FOLLOWING=2;a.POSITION_PRECEDING=4;a.POSITION_IS_CONTAINED=8;a.POSITION_CONTAINS=16;e.extend(d.node.prototype,{appendTo:function(h,i){h.append(this,i);return h;},clone:function(h,i){var j=this.$.cloneNode(h),k=function(l){if(l.nodeType!=1)return;if(!i)l.removeAttribute('id',false);l.removeAttribute('data-cke-expando',false);if(h){var m=l.childNodes;for(var n=0;n]*>/g,''):i;},getOuterHtml:function(){var j=this;if(j.$.outerHTML)return j.$.outerHTML.replace(/<\?[^>]*>/,'');var i=j.$.ownerDocument.createElement('div');i.appendChild(j.$.cloneNode(true));return i.innerHTML;},setHtml:function(i){return this.$.innerHTML=i;},setText:function(i){h.prototype.setText=this.$.innerText!=undefined?function(j){return this.$.innerText=j;}:function(j){return this.$.textContent=j;};return this.setText(i);},getAttribute:(function(){var i=function(j){return this.$.getAttribute(j,2);};if(c&&(b.ie7Compat||b.ie6Compat))return function(j){var n=this;switch(j){case 'class':j='className';break;case 'http-equiv':j='httpEquiv';break;case 'name':return n.$.name;case 'tabindex':var k=i.call(n,j);if(k!==0&&n.$.tabIndex===0)k=null;return k;break;case 'checked':var l=n.$.attributes.getNamedItem(j),m=l.specified?l.nodeValue:n.$.checked;return m?'checked':null;case 'hspace':case 'value':return n.$[j];case 'style':return n.$.style.cssText;}return i.call(n,j);};else return i;})(),getChildren:function(){return new d.nodeList(this.$.childNodes);},getComputedStyle:c?function(i){return this.$.currentStyle[e.cssStyleToDomStyle(i)];}:function(i){return this.getWindow().$.getComputedStyle(this.$,'').getPropertyValue(i);},getDtd:function(){var i=f[this.getName()];this.getDtd=function(){return i;};return i;},getElementsByTag:g.prototype.getElementsByTag,getTabIndex:c?function(){var i=this.$.tabIndex;if(i===0&&!f.$tabIndex[this.getName()]&&parseInt(this.getAttribute('tabindex'),10)!==0)i=-1;return i;}:b.webkit?function(){var i=this.$.tabIndex;if(i==undefined){i=parseInt(this.getAttribute('tabindex'),10);if(isNaN(i))i=-1;}return i;}:function(){return this.$.tabIndex;},getText:function(){return this.$.textContent||this.$.innerText||'';},getWindow:function(){return this.getDocument().getWindow();},getId:function(){return this.$.id||null;},getNameAtt:function(){return this.$.name||null;},getName:function(){var i=this.$.nodeName.toLowerCase();if(c&&!(document.documentMode>8)){var j=this.$.scopeName;if(j!='HTML')i=j.toLowerCase()+':'+i;}return(this.getName=function(){return i;})();},getValue:function(){return this.$.value;},getFirst:function(i){var j=this.$.firstChild,k=j&&new d.node(j);if(k&&i&&!i(k))k=k.getNext(i);return k;},getLast:function(i){var j=this.$.lastChild,k=j&&new d.node(j);if(k&&i&&!i(k))k=k.getPrevious(i);return k;},getStyle:function(i){return this.$.style[e.cssStyleToDomStyle(i)]; +},is:function(){var i=this.getName();for(var j=0;j0&&(j>2||!k[i[0].nodeName]||j==2&&!k[i[1].nodeName]);},hasAttribute:(function(){function i(j){var k=this.$.attributes.getNamedItem(j);return!!(k&&k.specified);};return c&&b.version<8?function(j){if(j=='name')return!!this.$.name;return i.call(this,j);}:i;})(),hide:function(){this.setStyle('display','none');},moveChildren:function(i,j){var k=this.$;i=i.$;if(k==i)return;var l;if(j)while(l=k.lastChild)i.insertBefore(k.removeChild(l),i.firstChild);else while(l=k.firstChild)i.appendChild(k.removeChild(l));},mergeSiblings:(function(){function i(j,k,l){if(k&&k.type==1){var m=[];while(k.data('cke-bookmark')||k.isEmptyInlineRemoveable()){m.push(k);k=l?k.getNext():k.getPrevious();if(!k||k.type!=1)return; +}if(j.isIdentical(k)){var n=l?j.getLast():j.getFirst();while(m.length)m.shift().move(j,!l);k.moveChildren(j,!l);k.remove();if(n&&n.type==1)n.mergeSiblings();}}};return function(j){var k=this;if(!(j===false||f.$removeEmpty[k.getName()]||k.is('a')))return;i(k,k.getNext(),true);i(k,k.getPrevious());};})(),show:function(){this.setStyles({display:'',visibility:''});},setAttribute:(function(){var i=function(j,k){this.$.setAttribute(j,k);return this;};if(c&&(b.ie7Compat||b.ie6Compat))return function(j,k){var l=this;if(j=='class')l.$.className=k;else if(j=='style')l.$.style.cssText=k;else if(j=='tabindex')l.$.tabIndex=k;else if(j=='checked')l.$.checked=k;else i.apply(l,arguments);return l;};else if(b.ie8Compat&&b.secure)return function(j,k){if(j=='src'&&k.match(/^http:\/\//))try{i.apply(this,arguments);}catch(l){}else i.apply(this,arguments);return this;};else return i;})(),setAttributes:function(i){for(var j in i)this.setAttribute(j,i[j]);return this;},setValue:function(i){this.$.value=i;return this;},removeAttribute:(function(){var i=function(j){this.$.removeAttribute(j);};if(c&&(b.ie7Compat||b.ie6Compat))return function(j){if(j=='class')j='className';else if(j=='tabindex')j='tabIndex';i.call(this,j);};else return i;})(),removeAttributes:function(i){if(e.isArray(i))for(var j=0;j=100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+i+')');}else this.setStyle('opacity',i);},unselectable:b.gecko?function(){this.$.style.MozUserSelect='none';this.on('dragstart',function(i){i.data.preventDefault();});}:b.webkit?function(){this.$.style.KhtmlUserSelect='none';this.on('dragstart',function(i){i.data.preventDefault();});}:function(){if(c||b.opera){var i=this.$,j=i.getElementsByTagName('*'),k,l=0;i.unselectable='on';while(k=j[l++])switch(k.tagName.toLowerCase()){case 'iframe':case 'textarea':case 'input':case 'select':break;default:k.unselectable='on';}}},getPositionedAncestor:function(){var i=this;while(i.getName()!='html'){if(i.getComputedStyle('position')!='static')return i; +i=i.getParent();}return null;},getDocumentPosition:function(i){var D=this;var j=0,k=0,l=D.getDocument(),m=l.getBody(),n=l.$.compatMode=='BackCompat';if(document.documentElement.getBoundingClientRect){var o=D.$.getBoundingClientRect(),p=l.$,q=p.documentElement,r=q.clientTop||m.$.clientTop||0,s=q.clientLeft||m.$.clientLeft||0,t=true;if(c){var u=l.getDocumentElement().contains(D),v=l.getBody().contains(D);t=n&&v||!n&&u;}if(t){j=o.left+(!n&&q.scrollLeft||m.$.scrollLeft);j-=s;k=o.top+(!n&&q.scrollTop||m.$.scrollTop);k-=r;}}else{var w=D,x=null,y;while(w&&!(w.getName()=='body'||w.getName()=='html')){j+=w.$.offsetLeft-w.$.scrollLeft;k+=w.$.offsetTop-w.$.scrollTop;if(!w.equals(D)){j+=w.$.clientLeft||0;k+=w.$.clientTop||0;}var z=x;while(z&&!z.equals(w)){j-=z.$.scrollLeft;k-=z.$.scrollTop;z=z.getParent();}x=w;w=(y=w.$.offsetParent)?new h(y):null;}}if(i){var A=D.getWindow(),B=i.getWindow();if(!A.equals(B)&&A.$.frameElement){var C=new h(A.$.frameElement).getDocumentPosition(i);j+=C.x;k+=C.y;}}if(!document.documentElement.getBoundingClientRect)if(b.gecko&&!n){j+=D.$.clientLeft?1:0;k+=D.$.clientTop?1:0;}return{x:j,y:k};},scrollIntoView:function(i){var j=this.getParent();if(!j)return;do{var k=j.$.clientWidth&&j.$.clientWidth0)n(0,j===true?x.y:j===false?y.y:x.y<0?x.y:y.y);if(k&&(x.x<0||y.x>0))n(x.x<0?x.x:y.x,0);},setState:function(i){var j=this;switch(i){case 1:j.addClass('cke_on');j.removeClass('cke_off');j.removeClass('cke_disabled'); +break;case 0:j.addClass('cke_disabled');j.removeClass('cke_off');j.removeClass('cke_on');break;default:j.addClass('cke_off');j.removeClass('cke_on');j.removeClass('cke_disabled');break;}},getFrameDocument:function(){var i=this.$;try{i.contentWindow.document;}catch(j){i.src=i.src;if(c&&b.version<7)window.showModalDialog('javascript:document.write("")');}return i&&new g(i.contentWindow.document);},copyAttributes:function(i,j){var p=this;var k=p.$.attributes;j=j||{};for(var l=0;l0&&j)j=j.childNodes[i.shift()];return j?new d.node(j):null;},getChildCount:function(){return this.$.childNodes.length;},disableContextMenu:function(){this.on('contextmenu',function(i){if(!i.data.getTarget().hasClass('cke_enable_context_menu'))i.data.preventDefault();});},getDirection:function(i){var j=this;return i?j.getComputedStyle('direction')||j.getDirection()||j.getDocument().$.dir||j.getDocument().getBody().getDirection(1):j.getStyle('direction')||j.getAttribute('dir');},data:function(i,j){i='data-'+i;if(j===undefined)return this.getAttribute(i);else if(j===false)this.removeAttribute(i);else this.setAttribute(i,j);return null;}});(function(){var i={width:['border-left-width','border-right-width','padding-left','padding-right'],height:['border-top-width','border-bottom-width','padding-top','padding-bottom']};function j(k){var l=0;for(var m=0,n=i[k].length;m',bodyId:'',bodyClass:'',fullPage:false,height:200,plugins:'about,a11yhelp,basicstyles,bidi,blockquote,button,clipboard,colorbutton,colordialog,contextmenu,dialogadvtab,div,elementspath,enterkey,entities,filebrowser,find,flash,font,format,forms,horizontalrule,htmldataprocessor,iframe,image,indent,justify,keystrokes,link,list,liststyle,maximize,newpage,pagebreak,pastefromword,pastetext,popup,preview,print,removeformat,resize,save,scayt,smiley,showblocks,showborders,sourcearea,stylescombo,table,tabletools,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc',extraPlugins:'',removePlugins:'',protectedSource:[],tabIndex:0,theme:'default',skin:'kama',width:'',baseFloatZIndex:10000};var i=a.config;a.focusManager=function(j){if(j.focusManager)return j.focusManager;this.hasFocus=false;this._={editor:j};return this;};a.focusManager.prototype={focus:function(){var k=this;if(k._.timer)clearTimeout(k._.timer);if(!k.hasFocus){if(a.currentInstance)a.currentInstance.focusManager.forceBlur();var j=k._.editor;j.container.getChild(1).addClass('cke_focus');k.hasFocus=true;j.fire('focus');}},blur:function(){var j=this;if(j._.timer)clearTimeout(j._.timer);j._.timer=setTimeout(function(){delete j._.timer;j.forceBlur();},100);},forceBlur:function(){if(this.hasFocus){var j=this._.editor;j.container.getChild(1).removeClass('cke_focus'); +this.hasFocus=false;j.fire('blur');}}};(function(){var j={};a.lang={languages:{af:1,ar:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,el:1,'en-au':1,'en-ca':1,'en-gb':1,en:1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,'fr-ca':1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,is:1,it:1,ja:1,ka:1,km:1,ko:1,lt:1,lv:1,mn:1,ms:1,nb:1,nl:1,no:1,pl:1,'pt-br':1,pt:1,ro:1,ru:1,sk:1,sl:1,'sr-latn':1,sr:1,sv:1,th:1,tr:1,uk:1,vi:1,'zh-cn':1,zh:1},load:function(k,l,m){if(!k||!a.lang.languages[k])k=this.detect(l,k);if(!this[k])a.scriptLoader.load(a.getUrl('lang/'+k+'.js'),function(){m(k,this[k]);},this);else m(k,this[k]);},detect:function(k,l){var m=this.languages;l=l||navigator.userLanguage||navigator.language||k;var n=l.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),o=n[1],p=n[2];if(m[o+'-'+p])o=o+'-'+p;else if(!m[o])o=null;a.lang.detect=o?function(){return o;}:function(q){return q;};return o||k;}};})();a.scriptLoader=(function(){var j={},k={};return{load:function(l,m,n,o){var p=typeof l=='string';if(p)l=[l];if(!n)n=a;var q=l.length,r=[],s=[],t=function(y){if(m)if(p)m.call(n,y);else m.call(n,r,s);};if(q===0){t(true);return;}var u=function(y,z){(z?r:s).push(y);if(--q<=0){o&&a.document.getDocumentElement().removeStyle('cursor');t(z);}},v=function(y,z){j[y]=1;var A=k[y];delete k[y];for(var B=0;B1)return;var A=new h('script');A.setAttributes({type:'text/javascript',src:y});if(m)if(c)A.$.onreadystatechange=function(){if(A.$.readyState=='loaded'||A.$.readyState=='complete'){A.$.onreadystatechange=null;v(y,true);}};else{A.$.onload=function(){setTimeout(function(){v(y,true);},0);};A.$.onerror=function(){v(y,false);};}A.appendTo(a.document.getHead());};o&&a.document.getDocumentElement().setStyle('cursor','wait');for(var x=0;x1)return;var w=!p.css||!p.css.length,x=!p.js||!p.js.length,y=function(){if(w&&x){p._isLoaded=1;for(var B=0;B=0?x.langCode:J[0];if(!I.langEntries||!I.langEntries[L])G.push(a.getUrl(K+'lang/'+L+'.js'));else{e.extend(x.lang,I.langEntries[L]);L=null;}}F.push(L);E.push(I);}a.scriptLoader.load(G,function(){var M=['beforeInit','init','afterInit'];for(var N=0;N]+)>)|(?:!--([\\S|\\s]*?)-->)|(?:([^\\s>]+)\\s*((?:(?:\"[^\"]*\")|(?:'[^']*')|[^\"'>])*)\\/?>))",'g')};};(function(){var l=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,m={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};a.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(n){var A=this;var o,p,q=0,r;while(o=A._.htmlPartsRegex.exec(n)){var s=o.index;if(s>q){var t=n.substring(q,s);if(r)r.push(t);else A.onText(t);}q=A._.htmlPartsRegex.lastIndex;if(p=o[1]){p=p.toLowerCase();if(r&&f.$cdata[p]){A.onCDATA(r.join(''));r=null;}if(!r){A.onTagClose(p);continue;}}if(r){r.push(o[0]);continue;}if(p=o[3]){p=p.toLowerCase();if(/="/.test(p))continue;var u={},v,w=o[4],x=!!(w&&w.charAt(w.length-1)=='/');if(w)while(v=l.exec(w)){var y=v[1].toLowerCase(),z=v[2]||v[3]||v[4]||'';if(!z&&m[y])u[y]=y;else u[y]=z;}A.onTagOpen(p,u,x);if(!r&&f.$cdata[p])r=[];continue;}if(p=o[2])A.onComment(p);}if(n.length>q)A.onText(n.substring(q,n.length));}};})();a.htmlParser.comment=function(l){this.value=l;this._={isBlockLike:false};};a.htmlParser.comment.prototype={type:8,writeHtml:function(l,m){var n=this.value;if(m){if(!(n=m.onComment(n,this)))return;if(typeof n!='string'){n.parent=this.parent;n.writeHtml(l,m);return;}}l.comment(n);}};(function(){a.htmlParser.text=function(l){this.value=l;this._={isBlockLike:false};};a.htmlParser.text.prototype={type:3,writeHtml:function(l,m){var n=this.value; +if(m&&!(n=m.onText(n,this)))return;l.text(n);}};})();(function(){a.htmlParser.cdata=function(l){this.value=l;};a.htmlParser.cdata.prototype={type:3,writeHtml:function(l){l.write(this.value);}};})();a.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:true,hasInlineStarted:false};};(function(){var l=e.extend({table:1,ul:1,ol:1,dl:1},f.table,f.ul,f.ol,f.dl),m=c&&b.version<8?{dd:1,dt:1}:{},n={ol:1,ul:1},o=e.extend({},{html:1},f.html,f.body,f.head,{style:1,script:1});function p(q){return q.name=='a'&&q.attributes.href||f.$removeEmpty[q.name];};a.htmlParser.fragment.fromHtml=function(q,r,s){var t=new a.htmlParser(),u=s||new a.htmlParser.fragment(),v=[],w=[],x=u,y=false,z=false;function A(D){var E;if(v.length>0)for(var F=0;F=0;E--){if(D==v[E].name){v.splice(E,1);return;}}var F=[],G=[],H=x;while(H!=u&&H.name!=D){if(!H._.isBlockLike)G.unshift(H);F.push(H);H=H.returnPoint||H.parent;}if(H!=u){for(E=0;E0?t.children[r-1]:null;if(s){if(q._.isBlockLike&&s.type==3){s.value=e.rtrim(s.value);if(s.value.length===0){t.children.pop();t.add(q);return;}}s.next=q;}q.previous=s;q.parent=t;t.children.splice(r,0,q);t._.hasInlineStarted=q.type==3||q.type==1&&!q._.isBlockLike;},writeHtml:function(q,r){var s;this.filterChildren=function(){var t=new a.htmlParser.basicWriter();this.writeChildrenHtml.call(this,t,r,true);var u=t.getHtml();this.children=new a.htmlParser.fragment.fromHtml(u).children;s=1;};!this.name&&r&&r.onFragment(this);this.writeChildrenHtml(q,s?null:r);},writeChildrenHtml:function(q,r){for(var s=0;sn?1:0;};a.htmlParser.element.prototype={type:1,add:a.htmlParser.fragment.prototype.add,clone:function(){return new a.htmlParser.element(this.name,this.attributes);},writeHtml:function(m,n){var o=this.attributes,p=this,q=p.name,r,s,t,u;p.filterChildren=function(){if(!u){var B=new a.htmlParser.basicWriter();a.htmlParser.fragment.prototype.writeChildrenHtml.call(p,B,n);p.children=new a.htmlParser.fragment.fromHtml(B.getHtml(),0,p.clone()).children;u=1;}};if(n){for(;;){if(!(q=n.onElementName(q)))return;p.name=q;if(!(p=n.onElement(p)))return;p.parent=this.parent;if(p.name==q)break;if(p.type!=1){p.writeHtml(m,n);return;}q=p.name;if(!q){for(var v=0,w=this.children.length;v=0;u--){var x=r[u];if(x){x.pri=s;q.splice(t,0,x);}}}};function n(q,r,s){if(r)for(var t in r){var u=q[t];q[t]=o(u,r[t],s);if(!u)q.$length++;}};function o(q,r,s){if(r){r.pri=s;if(q){if(!q.splice){if(q.pri>s)q=[r,q];else q=[q,r];q.filter=p;}else m(q,r,s);return q;}else{r.filter=r;return r;}}};function p(q){var r=q.type||q instanceof a.htmlParser.fragment;for(var s=0;s');else this._.output.push('>');},attribute:function(l,m){if(typeof m=='string')m=e.htmlEncodeAttr(m);this._.output.push(' ',l,'="',m,'"');},closeTag:function(l){this._.output.push('');},text:function(l){this._.output.push(l);},comment:function(l){this._.output.push('');},write:function(l){this._.output.push(l);},reset:function(){this._.output=[];this._.indent=false;},getHtml:function(l){var m=this._.output.join('');if(l)this.reset();return m;}}});delete a.loadFullCore;a.instances={};a.document=new g(document);a.add=function(l){a.instances[l.name]=l;l.on('focus',function(){if(a.currentInstance!=l){a.currentInstance=l;a.fire('currentInstance');}});l.on('blur',function(){if(a.currentInstance==l){a.currentInstance=null;a.fire('currentInstance');}});};a.remove=function(l){delete a.instances[l.name];};a.on('instanceDestroyed',function(){if(e.isEmpty(this.instances))a.fire('reset');});a.TRISTATE_ON=1;a.TRISTATE_OFF=2;a.TRISTATE_DISABLED=0;d.comment=function(l,m){if(typeof l=='string')l=(m?m.$:document).createComment(l);d.domObject.call(this,l); +};d.comment.prototype=new d.node();e.extend(d.comment.prototype,{type:8,getOuterHtml:function(){return '';}});(function(){var l={address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,dd:1,legend:1,caption:1},m={body:1,div:1,table:1,tbody:1,tr:1,td:1,th:1,form:1,fieldset:1},n=function(o){var p=o.getChildren();for(var q=0,r=p.count();q0)v=v.getChild(z-1);else v=A(v,true)===false?null:v.getPreviousSourceNode(true,C,A);}else{v=w;if(v.type==1)if(!(v=v.getChild(y)))v=A(w,true)===false?null:w.getNextSourceNode(true,C,A);}if(v&&A(v)===false)v=null;}while(v&&!this._.end){this.current=v;if(!this.evaluator||this.evaluator(v)!==false){if(!t)return v;}else if(t&&this.evaluator)return false;v=v[D](false,C,A);}this.end();return this.current=null;};function m(s){var t,u=null;while(t=l.call(this,s))u=t;return u;};d.walker=e.createClass({$:function(s){this.range=s;this._={};},proto:{end:function(){this._.end=1;},next:function(){return l.call(this);},previous:function(){return l.call(this,1);},checkForward:function(){return l.call(this,0,1)!==false;},checkBackward:function(){return l.call(this,1,1)!==false;},lastForward:function(){return m.call(this);},lastBackward:function(){return m.call(this,1);},reset:function(){delete this.current;this._={};}}});var n={block:1,'list-item':1,table:1,'table-row-group':1,'table-header-group':1,'table-footer-group':1,'table-row':1,'table-column-group':1,'table-column':1,'table-cell':1,'table-caption':1};h.prototype.isBlockBoundary=function(s){var t=s?e.extend({},f.$block,s||{}):f.$block;return this.getComputedStyle('float')=='none'&&n[this.getComputedStyle('display')]||t[this.getName()];};d.walker.blockBoundary=function(s){return function(t,u){return!(t.type==1&&t.isBlockBoundary(s));};};d.walker.listItemBoundary=function(){return this.blockBoundary({br:1});};d.walker.bookmark=function(s,t){function u(v){return v&&v.getName&&v.getName()=='span'&&v.data('cke-bookmark');};return function(v){var w,x;w=v&&!v.getName&&(x=v.getParent())&&u(x);w=s?w:w||u(v);return!!(t^w);};};d.walker.whitespaces=function(s){return function(t){var u=t&&t.type==3&&!e.trim(t.getText());return!!(s^u);};};d.walker.invisible=function(s){var t=d.walker.whitespaces();return function(u){var v=t(u)||u.is&&!u.$.offsetHeight; +return!!(s^v);};};d.walker.nodeType=function(s,t){return function(u){return!!(t^u.type==s);};};d.walker.bogus=function(s,t){function u(v){return!p(v)&&!q(v);};return function(v){var w=v.getParent(),x=!c?v.is&&v.is('br'):v.getText&&o.test(v.getText());x=x&&w.isBlockBoundary()&&!!w.getLast(u);return!!(t^x);};};var o=/^[\t\r\n ]*(?: |\xa0)$/,p=d.walker.whitespaces(),q=d.walker.bookmark(),r=function(s){return q(s)||p(s)||s.type==1&&s.getName() in f.$inline&&!(s.getName() in f.$empty);};h.prototype.getBogus=function(){var s=this;do s=s.getPreviousSourceNode();while(r(s));if(s&&(!c?s.is&&s.is('br'):s.getText&&o.test(s.getText())))return s;return false;};})();d.range=function(l){var m=this;m.startContainer=null;m.startOffset=null;m.endContainer=null;m.endOffset=null;m.collapsed=true;m.document=l;};(function(){var l=function(u){u.collapsed=u.startContainer&&u.endContainer&&u.startContainer.equals(u.endContainer)&&u.startOffset==u.endOffset;},m=function(u,v,w,x){u.optimizeBookmark();var y=u.startContainer,z=u.endContainer,A=u.startOffset,B=u.endOffset,C,D;if(z.type==3)z=z.split(B);else if(z.getChildCount()>0)if(B>=z.getChildCount()){z=z.append(u.document.createText(''));D=true;}else z=z.getChild(B);if(y.type==3){y.split(A);if(y.equals(z))z=y.getNext();}else if(!A){y=y.getFirst().insertBeforeMe(u.document.createText(''));C=true;}else if(A>=y.getChildCount()){y=y.append(u.document.createText(''));C=true;}else y=y.getChild(A).getPrevious();var E=y.getParents(),F=z.getParents(),G,H,I;for(G=0;G0&&!K.equals(z))L=J.append(K.clone());if(!E[P]||K.$.parentNode!=E[P].$.parentNode){M=K.getPrevious();while(M){if(M.equals(E[P])||M.equals(y))break;N=M.getPrevious();if(v==2)J.$.insertBefore(M.$.cloneNode(true),J.$.firstChild);else{M.remove();if(v==1)J.$.insertBefore(M.$,J.$.firstChild);}M=N;}}if(J)J=L;}if(v==2){var Q=u.startContainer;if(Q.type==3){Q.$.data+=Q.$.nextSibling.data;Q.$.parentNode.removeChild(Q.$.nextSibling);}var R=u.endContainer;if(R.type==3&&R.$.nextSibling){R.$.data+=R.$.nextSibling.data;R.$.parentNode.removeChild(R.$.nextSibling);}}else{if(H&&I&&(y.$.parentNode!=H.$.parentNode||z.$.parentNode!=I.$.parentNode)){var S=I.getIndex(); +if(C&&I.$.parentNode==y.$.parentNode)S--;if(x&&H.type==1){var T=h.createFromHtml(' ',u.document);T.insertAfter(H);H.mergeSiblings(false);u.moveToBookmark({startNode:T});}else u.setStart(I.getParent(),S);}u.collapse(true);}if(C)y.remove();if(D&&z.$.parentNode)z.remove();},n={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1};function o(u){var v=false,w=d.walker.bookmark(true);return function(x){if(w(x))return true;if(x.type==3){if(x.hasAscendant('pre')||e.trim(x.getText()).length)return false;}else if(x.type==1)if(!n[x.getName()])if(!u&&!c&&x.getName()=='br'&&!v)v=true;else return false;return true;};};var p=d.walker.bogus();function q(u){return function(v){return!u&&p(v)||(v.type==3?!e.trim(v.getText())||!!v.getParent().data('cke-bookmark'):v.getName() in f.$removeEmpty);};};var r=new d.walker.whitespaces(),s=new d.walker.bookmark();function t(u){return!r(u)&&!s(u);};d.range.prototype={clone:function(){var v=this;var u=new d.range(v.document);u.startContainer=v.startContainer;u.startOffset=v.startOffset;u.endContainer=v.endContainer;u.endOffset=v.endOffset;u.collapsed=v.collapsed;return u;},collapse:function(u){var v=this;if(u){v.endContainer=v.startContainer;v.endOffset=v.startOffset;}else{v.startContainer=v.endContainer;v.startOffset=v.endOffset;}v.collapsed=true;},cloneContents:function(){var u=new d.documentFragment(this.document);if(!this.collapsed)m(this,2,u);return u;},deleteContents:function(u){if(this.collapsed)return;m(this,0,null,u);},extractContents:function(u){var v=new d.documentFragment(this.document);if(!this.collapsed)m(this,1,v,u);return v;},createBookmark:function(u){var A=this;var v,w,x,y,z=A.collapsed;v=A.document.createElement('span');v.data('cke-bookmark',1);v.setStyle('display','none');v.setHtml(' ');if(u){x='cke_bm_'+e.getNextNumber();v.setAttribute('id',x+'S');}if(!z){w=v.clone();w.setHtml(' ');if(u)w.setAttribute('id',x+'E');y=A.clone();y.collapse();y.insertNode(w);}y=A.clone();y.collapse(true);y.insertNode(v);if(w){A.setStartAfter(v);A.setEndBefore(w);}else A.moveToPosition(v,4);return{startNode:u?x+'S':v,endNode:u?x+'E':w,serializable:u,collapsed:z};},createBookmark2:function(u){var C=this;var v=C.startContainer,w=C.endContainer,x=C.startOffset,y=C.endOffset,z=C.collapsed,A,B;if(!v||!w)return{start:0,end:0};if(u){if(v.type==1){A=v.getChild(x); +if(A&&A.type==3&&x>0&&A.getPrevious().type==3){v=A;x=0;}if(A&&A.type==1)x=A.getIndex(1);}while(v.type==3&&(B=v.getPrevious())&&B.type==3){v=B;x+=B.getLength();}if(!z){if(w.type==1){A=w.getChild(y);if(A&&A.type==3&&y>0&&A.getPrevious().type==3){w=A;y=0;}if(A&&A.type==1)y=A.getIndex(1);}while(w.type==3&&(B=w.getPrevious())&&B.type==3){w=B;y+=B.getLength();}}}return{start:v.getAddress(u),end:z?null:w.getAddress(u),startOffset:x,endOffset:y,normalized:u,collapsed:z,is2:true};},moveToBookmark:function(u){var C=this;if(u.is2){var v=C.document.getByAddress(u.start,u.normalized),w=u.startOffset,x=u.end&&C.document.getByAddress(u.end,u.normalized),y=u.endOffset;C.setStart(v,w);if(x)C.setEnd(x,y);else C.collapse(true);}else{var z=u.serializable,A=z?C.document.getById(u.startNode):u.startNode,B=z?C.document.getById(u.endNode):u.endNode;C.setStartBefore(A);A.remove();if(B){C.setEndBefore(B);B.remove();}else C.collapse(true);}},getBoundaryNodes:function(){var z=this;var u=z.startContainer,v=z.endContainer,w=z.startOffset,x=z.endOffset,y;if(u.type==1){y=u.getChildCount();if(y>w)u=u.getChild(w);else if(y<1)u=u.getPreviousSourceNode();else{u=u.$;while(u.lastChild)u=u.lastChild;u=new d.node(u);u=u.getNextSourceNode()||u;}}if(v.type==1){y=v.getChildCount();if(y>x)v=v.getChild(x).getPreviousSourceNode(true);else if(y<1)v=v.getPreviousSourceNode();else{v=v.$;while(v.lastChild)v=v.lastChild;v=new d.node(v);}}if(u.getPosition(v)&2)u=v;return{startNode:u,endNode:v};},getCommonAncestor:function(u,v){var z=this;var w=z.startContainer,x=z.endContainer,y;if(w.equals(x)){if(u&&w.type==1&&z.startOffset==z.endOffset-1)y=w.getChild(z.startOffset);else y=w;}else y=w.getCommonAncestor(x);return v&&!y.is?y.getParent():y;},optimize:function(){var w=this;var u=w.startContainer,v=w.startOffset;if(u.type!=1)if(!v)w.setStartBefore(u);else if(v>=u.getLength())w.setStartAfter(u);u=w.endContainer;v=w.endOffset;if(u.type!=1)if(!v)w.setEndBefore(u);else if(v>=u.getLength())w.setEndAfter(u);},optimizeBookmark:function(){var w=this;var u=w.startContainer,v=w.endContainer;if(u.is&&u.is('span')&&u.data('cke-bookmark'))w.setStartAt(u,3);if(v&&v.is&&v.is('span')&&v.data('cke-bookmark'))w.setEndAt(v,4);},trim:function(u,v){var C=this;var w=C.startContainer,x=C.startOffset,y=C.collapsed;if((!u||y)&&w&&w.type==3){if(!x){x=w.getIndex();w=w.getParent();}else if(x>=w.getLength()){x=w.getIndex()+1;w=w.getParent();}else{var z=w.split(x);x=w.getIndex()+1;w=w.getParent();if(C.startContainer.equals(C.endContainer))C.setEnd(z,C.endOffset-C.startOffset); +else if(w.equals(C.endContainer))C.endOffset+=1;}C.setStart(w,x);if(y){C.collapse(true);return;}}var A=C.endContainer,B=C.endOffset;if(!(v||y)&&A&&A.type==3){if(!B){B=A.getIndex();A=A.getParent();}else if(B>=A.getLength()){B=A.getIndex()+1;A=A.getParent();}else{A.split(B);B=A.getIndex()+1;A=A.getParent();}C.setEnd(A,B);}},enlarge:function(u,v){switch(u){case 1:if(this.collapsed)return;var w=this.getCommonAncestor(),x=this.document.getBody(),y,z,A,B,C,D=false,E,F,G=this.startContainer,H=this.startOffset;if(G.type==3){if(H){G=!e.trim(G.substring(0,H)).length&&G;D=!!G;}if(G)if(!(B=G.getPrevious()))A=G.getParent();}else{if(H)B=G.getChild(H-1)||G.getLast();if(!B)A=G;}while(A||B){if(A&&!B){if(!C&&A.equals(w))C=true;if(!x.contains(A))break;if(!D||A.getComputedStyle('display')!='inline'){D=false;if(C)y=A;else this.setStartBefore(A);}B=A.getPrevious();}while(B){E=false;if(B.type==8){B=B.getPrevious();continue;}else if(B.type==3){F=B.getText();if(/[^\s\ufeff]/.test(F))B=null;E=/[\s\ufeff]$/.test(F);}else if((B.$.offsetWidth>0||v&&B.is('br'))&&!B.data('cke-bookmark'))if(D&&f.$removeEmpty[B.getName()]){F=B.getText();if(/[^\s\ufeff]/.test(F))B=null;else{var I=B.$.getElementsByTagName('*');for(var J=0,K;K=I[J++];){if(!f.$removeEmpty[K.nodeName.toLowerCase()]){B=null;break;}}}if(B)E=!!F.length;}else B=null;if(E)if(D){if(C)y=A;else if(A)this.setStartBefore(A);}else D=true;if(B){var L=B.getPrevious();if(!A&&!L){A=B;B=null;break;}B=L;}else A=null;}if(A)A=A.getParent();}G=this.endContainer;H=this.endOffset;A=B=null;C=D=false;if(G.type==3){G=!e.trim(G.substring(H)).length&&G;D=!(G&&G.getLength());if(G)if(!(B=G.getNext()))A=G.getParent();}else{B=G.getChild(H);if(!B)A=G;}while(A||B){if(A&&!B){if(!C&&A.equals(w))C=true;if(!x.contains(A))break;if(!D||A.getComputedStyle('display')!='inline'){D=false;if(C)z=A;else if(A)this.setEndAfter(A);}B=A.getNext();}while(B){E=false;if(B.type==3){F=B.getText();if(/[^\s\ufeff]/.test(F))B=null;E=/^[\s\ufeff]/.test(F);}else if(B.type==1){if((B.$.offsetWidth>0||v&&B.is('br'))&&!B.data('cke-bookmark'))if(D&&f.$removeEmpty[B.getName()]){F=B.getText();if(/[^\s\ufeff]/.test(F))B=null;else{I=B.$.getElementsByTagName('*');for(J=0;K=I[J++];){if(!f.$removeEmpty[K.nodeName.toLowerCase()]){B=null;break;}}}if(B)E=!!F.length;}else B=null;}else E=1;if(E)if(D)if(C)z=A;else this.setEndAfter(A);if(B){L=B.getNext();if(!A&&!L){A=B;B=null;break;}B=L;}else A=null;}if(A)A=A.getParent();}if(y&&z){w=y.contains(z)?z:y;this.setStartBefore(w);this.setEndAfter(w);}break;case 2:case 3:var M=new d.range(this.document); +x=this.document.getBody();M.setStartAt(x,1);M.setEnd(this.startContainer,this.startOffset);var N=new d.walker(M),O,P,Q=d.walker.blockBoundary(u==3?{br:1}:null),R=function(X){var Y=Q(X);if(!Y)O=X;return Y;},S=function(X){var Y=R(X);if(!Y&&X.is&&X.is('br'))P=X;return Y;};N.guard=R;A=N.lastBackward();O=O||x;this.setStartAt(O,!O.is('br')&&(!A&&this.checkStartOfBlock()||A&&O.contains(A))?1:4);if(u==3){var T=this.clone();N=new d.walker(T);var U=d.walker.whitespaces(),V=d.walker.bookmark();N.evaluator=function(X){return!U(X)&&!V(X);};var W=N.previous();if(W&&W.type==1&&W.is('br'))return;}M=this.clone();M.collapse();M.setEndAt(x,2);N=new d.walker(M);N.guard=u==3?S:R;O=null;A=N.lastForward();O=O||x;this.setEndAt(O,!A&&this.checkEndOfBlock()||A&&O.contains(A)?2:3);if(P)this.setEndAfter(P);}},shrink:function(u,v){if(!this.collapsed){u=u||2;var w=this.clone(),x=this.startContainer,y=this.endContainer,z=this.startOffset,A=this.endOffset,B=this.collapsed,C=1,D=1;if(x&&x.type==3)if(!z)w.setStartBefore(x);else if(z>=x.getLength())w.setStartAfter(x);else{w.setStartBefore(x);C=0;}if(y&&y.type==3)if(!A)w.setEndBefore(y);else if(A>=y.getLength())w.setEndAfter(y);else{w.setEndAfter(y);D=0;}var E=new d.walker(w),F=d.walker.bookmark();E.evaluator=function(J){return J.type==(u==1?1:3);};var G;E.guard=function(J,K){if(F(J))return true;if(u==1&&J.type==3)return false;if(K&&J.equals(G))return false;if(!K&&J.type==1)G=J;return true;};if(C){var H=E[u==1?'lastForward':'next']();H&&this.setStartAt(H,v?1:3);}if(D){E.reset();var I=E[u==1?'lastBackward':'previous']();I&&this.setEndAt(I,v?2:4);}return!!(C||D);}},insertNode:function(u){var y=this;y.optimizeBookmark();y.trim(false,true);var v=y.startContainer,w=y.startOffset,x=v.getChild(w);if(x)u.insertBefore(x);else v.append(u);if(u.getParent().equals(y.endContainer))y.endOffset++;y.setStartBefore(u);},moveToPosition:function(u,v){this.setStartAt(u,v);this.collapse(true);},selectNodeContents:function(u){this.setStart(u,0);this.setEnd(u,u.type==3?u.getLength():u.getChildCount());},setStart:function(u,v){var w=this;if(u.type==1&&f.$empty[u.getName()])v=u.getIndex(),u=u.getParent();w.startContainer=u;w.startOffset=v;if(!w.endContainer){w.endContainer=u;w.endOffset=v;}l(w);},setEnd:function(u,v){var w=this;if(u.type==1&&f.$empty[u.getName()])v=u.getIndex()+1,u=u.getParent();w.endContainer=u;w.endOffset=v;if(!w.startContainer){w.startContainer=u;w.startOffset=v;}l(w);},setStartAfter:function(u){this.setStart(u.getParent(),u.getIndex()+1);},setStartBefore:function(u){this.setStart(u.getParent(),u.getIndex()); +},setEndAfter:function(u){this.setEnd(u.getParent(),u.getIndex()+1);},setEndBefore:function(u){this.setEnd(u.getParent(),u.getIndex());},setStartAt:function(u,v){var w=this;switch(v){case 1:w.setStart(u,0);break;case 2:if(u.type==3)w.setStart(u,u.getLength());else w.setStart(u,u.getChildCount());break;case 3:w.setStartBefore(u);break;case 4:w.setStartAfter(u);}l(w);},setEndAt:function(u,v){var w=this;switch(v){case 1:w.setEnd(u,0);break;case 2:if(u.type==3)w.setEnd(u,u.getLength());else w.setEnd(u,u.getChildCount());break;case 3:w.setEndBefore(u);break;case 4:w.setEndAfter(u);}l(w);},fixBlock:function(u,v){var y=this;var w=y.createBookmark(),x=y.document.createElement(v);y.collapse(u);y.enlarge(2);y.extractContents().appendTo(x);x.trim();if(!c)x.appendBogus();y.insertNode(x);y.moveToBookmark(w);return x;},splitBlock:function(u){var E=this;var v=new d.elementPath(E.startContainer),w=new d.elementPath(E.endContainer),x=v.blockLimit,y=w.blockLimit,z=v.block,A=w.block,B=null;if(!x.equals(y))return null;if(u!='br'){if(!z){z=E.fixBlock(true,u);A=new d.elementPath(E.endContainer).block;}if(!A)A=E.fixBlock(false,u);}var C=z&&E.checkStartOfBlock(),D=A&&E.checkEndOfBlock();E.deleteContents();if(z&&z.equals(A))if(D){B=new d.elementPath(E.startContainer);E.moveToPosition(A,4);A=null;}else if(C){B=new d.elementPath(E.startContainer);E.moveToPosition(z,3);z=null;}else{A=E.splitElement(z);if(!c&&!z.is('ul','ol'))z.appendBogus();}return{previousBlock:z,nextBlock:A,wasStartOfBlock:C,wasEndOfBlock:D,elementPath:B};},splitElement:function(u){var x=this;if(!x.collapsed)return null;x.setEndAt(u,2);var v=x.extractContents(),w=u.clone(false);v.appendTo(w);w.insertAfter(u);x.moveToPosition(u,4);return w;},checkBoundaryOfElement:function(u,v){var w=v==1,x=this.clone();x.collapse(w);x[w?'setStartAt':'setEndAt'](u,w?1:2);var y=new d.walker(x);y.evaluator=q(w);return y[w?'checkBackward':'checkForward']();},checkStartOfBlock:function(){var A=this;var u=A.startContainer,v=A.startOffset;if(v&&u.type==3){var w=e.ltrim(u.substring(0,v));if(w.length)return false;}A.trim();var x=new d.elementPath(A.startContainer),y=A.clone();y.collapse(true);y.setStartAt(x.block||x.blockLimit,1);var z=new d.walker(y);z.evaluator=o(true);return z.checkBackward();},checkEndOfBlock:function(){var A=this;var u=A.endContainer,v=A.endOffset;if(u.type==3){var w=e.rtrim(u.substring(v));if(w.length)return false;}A.trim();var x=new d.elementPath(A.endContainer),y=A.clone();y.collapse(false);y.setEndAt(x.block||x.blockLimit,2); +var z=new d.walker(y);z.evaluator=o(false);return z.checkForward();},checkReadOnly:(function(){function u(v,w){while(v){if(v.type==1)if(v.getAttribute('contentEditable')=='false'&&!v.data('cke-editable'))return 0;else if(v.is('html')||v.getAttribute('contentEditable')=='true'&&(v.contains(w)||v.equals(w)))break;v=v.getParent();}return 1;};return function(){var v=this.startContainer,w=this.endContainer;return!(u(v,w)&&u(w,v));};})(),moveToElementEditablePosition:function(u,v){function w(y,z){var A;if(y.type==1&&y.isEditable(false)&&!f.$nonEditable[y.getName()])A=y[v?'getLast':'getFirst'](t);if(!z&&!A)A=y[v?'getPrevious':'getNext'](t);return A;};var x=0;while(u){if(u.type==3){this.moveToPosition(u,v?4:3);x=1;break;}if(u.type==1)if(u.isEditable()){this.moveToPosition(u,v?2:1);x=1;}u=w(u,x);}return!!x;},moveToElementEditStart:function(u){return this.moveToElementEditablePosition(u);},moveToElementEditEnd:function(u){return this.moveToElementEditablePosition(u,true);},getEnclosedNode:function(){var u=this.clone();u.optimize();if(u.startContainer.type!=1||u.endContainer.type!=1)return null;var v=new d.walker(u),w=d.walker.bookmark(true),x=d.walker.whitespaces(true),y=function(A){return x(A)&&w(A);};u.evaluator=y;var z=v.next();v.reset();return z&&z.equals(v.previous())?z:null;},getTouchedStartNode:function(){var u=this.startContainer;if(this.collapsed||u.type!=1)return u;return u.getChild(this.startOffset)||u;},getTouchedEndNode:function(){var u=this.endContainer;if(this.collapsed||u.type!=1)return u;return u.getChild(this.endOffset-1)||u;}};})();a.POSITION_AFTER_START=1;a.POSITION_BEFORE_END=2;a.POSITION_BEFORE_START=3;a.POSITION_AFTER_END=4;a.ENLARGE_ELEMENT=1;a.ENLARGE_BLOCK_CONTENTS=2;a.ENLARGE_LIST_ITEM_CONTENTS=3;a.START=1;a.END=2;a.STARTEND=3;a.SHRINK_ELEMENT=1;a.SHRINK_TEXT=2;(function(){d.rangeList=function(n){if(n instanceof d.rangeList)return n;if(!n)n=[];else if(n instanceof d.range)n=[n];return e.extend(n,l);};var l={createIterator:function(){var n=this,o=d.walker.bookmark(),p=function(s){return!(s.is&&s.is('tr'));},q=[],r;return{getNextRange:function(s){r=r==undefined?0:r+1;var t=n[r];if(t&&n.length>1){if(!r)for(var u=n.length-1;u>=0;u--)q.unshift(n[u].createBookmark(true));if(s){var v=0;while(n[r+v+1]){var w=t.document,x=0,y=w.getById(q[v].endNode),z=w.getById(q[v+1].startNode),A;while(1){A=y.getNextSourceNode(false);if(!z.equals(A)){if(o(A)||A.type==1&&A.isBlockBoundary()){y=A;continue;}}else x=1;break;}if(!x)break;v++;}}t.moveToBookmark(q.shift()); +while(v--){A=n[++r];A.moveToBookmark(q.shift());t.setEnd(A.endContainer,A.endOffset);}}return t;}};},createBookmarks:function(n){var s=this;var o=[],p;for(var q=0;q',a.document);l.appendTo(a.document.getHead());try{b.hc=l.getComputedStyle('border-top-color')==l.getComputedStyle('border-right-color');}catch(m){b.hc=false;}if(b.hc)b.cssClass+=' cke_hc';l.remove();})();j.load(i.corePlugins.split(','),function(){a.status='loaded';a.fire('loaded');var l=a._.pending;if(l){delete a._.pending;for(var m=0;m0){z=A.shift();while(!z.getParent().equals(D))z=z.getParent();if(!z.equals(H))E.push(z);H=z;}while(E.length>0){z=E.shift();if(z.getName()=='blockquote'){var I=new d.documentFragment(q.document);while(z.getFirst()){I.append(z.getFirst().remove());A.push(I.getLast());}I.replace(z);}else A.push(z);}var J=q.document.createElement('blockquote');J.insertBefore(A[0]);while(A.length>0){z=A.shift();J.append(z);}}else if(r==1){var K=[],L={};while(z=y.getNextParagraph()){var M=null,N=null;while(z.getParent()){if(z.getParent().getName()=='blockquote'){M=z.getParent();N=z;break;}z=z.getParent();}if(M&&N&&!N.getCustomData('blockquote_moveout')){K.push(N);h.setMarker(L,N,'blockquote_moveout',true);}}h.clearAllMarkers(L);var O=[],P=[];L={};while(K.length>0){var Q=K.shift();J=Q.getParent();if(!Q.getPrevious())Q.remove().insertBefore(J);else if(!Q.getNext())Q.remove().insertAfter(J);else{Q.breakParent(Q.getParent());P.push(Q.getNext());}if(!J.getCustomData('blockquote_processed')){P.push(J);h.setMarker(L,J,'blockquote_processed',true);}O.push(Q);}h.clearAllMarkers(L);for(F=P.length-1;F>=0;F--){J=P[F];if(o(J))J.remove();}if(q.config.enterMode==2){var R=true;while(O.length){Q=O.shift();if(Q.getName()=='div'){I=new d.documentFragment(q.document);var S=R&&Q.getPrevious()&&!(Q.getPrevious().type==1&&Q.getPrevious().isBlockBoundary());if(S)I.append(q.document.createElement('br'));var T=Q.getNext()&&!(Q.getNext().type==1&&Q.getNext().isBlockBoundary());while(Q.getFirst())Q.getFirst().remove().appendTo(I);if(T)I.append(q.document.createElement('br'));I.replace(Q);R=false;}}}}s.selectBookmarks(u);q.focus();}};j.add('blockquote',{init:function(q){q.addCommand('blockquote',p);q.ui.addButton('Blockquote',{label:q.lang.blockquote,command:'blockquote'});q.on('selectionChange',n);},requires:['domiterator']});})();j.add('button',{beforeInit:function(m){m.ui.addHandler('button',k.button.handler);}});a.UI_BUTTON='button'; +k.button=function(m){e.extend(this,m,{title:m.label,className:m.className||m.command&&'cke_button_'+m.command||'',click:m.click||(function(n){n.execCommand(m.command);})});this._={};};k.button.handler={create:function(m){return new k.button(m);}};(function(){k.button.prototype={render:function(m,n){var o=b,p=this._.id=e.getNextId(),q='',r=this.command,s;this._.editor=m;var t={id:p,button:this,editor:m,focus:function(){var z=a.document.getById(p);z.focus();},execute:function(){if(c&&b.version<7)e.setTimeout(function(){this.button.click(m);},0,this);else this.button.click(m);}},u=e.addFunction(function(z){if(t.onkey){z=new d.event(z);return t.onkey(t,z.getKeystroke())!==false;}}),v=e.addFunction(function(z){var A;if(t.onfocus)A=t.onfocus(t,new d.event(z))!==false;if(b.gecko&&b.version<10900)z.preventBubble();return A;});t.clickFn=s=e.addFunction(t.execute,t);if(this.modes){var w={};function x(){var z=m.mode;if(z){var A=this.modes[z]?w[z]!=undefined?w[z]:2:0;this.setState(m.readOnly&&!this.readOnly?0:A);}};m.on('beforeModeUnload',function(){if(m.mode&&this._.state!=0)w[m.mode]=this._.state;},this);m.on('mode',x,this);!this.readOnly&&m.on('readOnly',x,this);}else if(r){r=m.getCommand(r);if(r){r.on('state',function(){this.setState(r.state);},this);q+='cke_'+(r.state==1?'on':r.state==0?'disabled':'off');}}if(!r)q+='cke_off';if(this.className)q+=' '+this.className;n.push('','=10900&&!o.hc?'':'" href="javascript:void(\''+(this.title||'').replace("'",'')+"')\"",' title="',this.title,'" tabindex="-1" hidefocus="true" role="button" aria-labelledby="'+p+'_label"'+(this.hasArrow?' aria-haspopup="true"':''));if(o.opera||o.gecko&&o.mac)n.push(' onkeypress="return false;"');if(o.gecko)n.push(' onblur="this.style.cssText = this.style.cssText;"');n.push(' onkeydown="return CKEDITOR.tools.callFunction(',u,', event);" onfocus="return CKEDITOR.tools.callFunction(',v,', event);" '+(c?'onclick="return false;" onmouseup':'onclick')+'="CKEDITOR.tools.callFunction(',s,', this); return false;"> ',this.label,'');if(this.hasArrow)n.push(''+(b.hc?'▼':' ')+'');n.push('',''); +if(this.onRender)this.onRender();return t;},setState:function(m){if(this._.state==m)return false;this._.state=m;var n=a.document.getById(this._.id);if(n){n.setState(m);m==0?n.setAttribute('aria-disabled',true):n.removeAttribute('aria-disabled');m==1?n.setAttribute('aria-pressed',true):n.removeAttribute('aria-pressed');return true;}else return false;}};})();k.prototype.addButton=function(m,n){this.add(m,'button',n);};(function(){var m=function(y,z){var A=y.document,B=A.getBody(),C=false,D=function(){C=true;};B.on(z,D);(b.version>7?A.$:A.$.selection.createRange()).execCommand(z);B.removeListener(z,D);return C;},n=c?function(y,z){return m(y,z);}:function(y,z){try{return y.document.$.execCommand(z,false,null);}catch(A){return false;}},o=function(y){var z=this;z.type=y;z.canUndo=z.type=='cut';z.startDisabled=true;};o.prototype={exec:function(y,z){this.type=='cut'&&t(y);var A=n(y,this.type);if(!A)alert(y.lang.clipboard[this.type+'Error']);return A;}};var p={canUndo:false,exec:c?function(y){y.focus();if(!y.document.getBody().fire('beforepaste')&&!m(y,'paste')){y.fire('pasteDialog');return false;}}:function(y){try{if(!y.document.getBody().fire('beforepaste')&&!y.document.$.execCommand('Paste',false,null))throw 0;}catch(z){setTimeout(function(){y.fire('pasteDialog');},0);return false;}}},q=function(y){if(this.mode!='wysiwyg')return;switch(y.data.keyCode){case 1114112+86:case 2228224+45:var z=this.document.getBody();if(b.opera||b.gecko&&b.version<10900)z.fire('paste');return;case 1114112+88:case 2228224+46:var A=this;this.fire('saveSnapshot');setTimeout(function(){A.fire('saveSnapshot');},0);}};function r(y){y.cancel();};function s(y,z,A){var B=this.document;if(B.getById('cke_pastebin'))return;if(z=='text'&&y.data&&y.data.$.clipboardData){var C=y.data.$.clipboardData.getData('text/plain');if(C){y.data.preventDefault();A(C);return;}}var D=this.getSelection(),E=new d.range(B),F=new h(z=='text'?'textarea':b.webkit?'body':'div',B);F.setAttribute('id','cke_pastebin');b.webkit&&F.append(B.createText('\xa0'));B.getBody().append(F);F.setStyles({position:'absolute',top:D.getStartElement().getDocumentPosition().y+'px',width:'1px',height:'1px',overflow:'hidden'});F.setStyle(this.config.contentsLangDirection=='ltr'?'left':'right','-1000px');var G=D.createBookmarks();this.on('selectionChange',r,null,null,0);if(z=='text')F.$.focus();else{E.setStartAt(F,1);E.setEndAt(F,2);E.select(true);}var H=this;window.setTimeout(function(){H.document.getBody().focus();H.removeListener('selectionChange',r); +var I;F=b.webkit&&(I=F.getFirst())&&I.is&&I.hasClass('Apple-style-span')?I:F;D.selectBookmarks(G);F.remove();A(F['get'+(z=='text'?'Value':'Html')]());},0);};function t(y){if(!c||b.quirks)return;var z=y.getSelection(),A;if(z.getType()==3&&(A=z.getSelectedElement())){var B=z.getRanges()[0],C=y.document.createText('');C.insertBefore(A);B.setStartBefore(C);B.setEndAfter(A);z.selectRanges([B]);setTimeout(function(){if(A.getParent()){C.remove();z.selectElement(A);}},0);}};var u;function v(y,z){c&&(u=1);var A=2;try{A=z.document.$.queryCommandEnabled(y)?2:0;}catch(B){}u=0;return A;};var w;function x(){var z=this;if(z.mode!='wysiwyg')return;z.getCommand('cut').setState(w?0:v('Cut',z));z.getCommand('copy').setState(v('Copy',z));var y=w?0:b.webkit?2:v('Paste',z);z.fire('pasteState',y);};j.add('clipboard',{requires:['dialog','htmldataprocessor'],init:function(y){y.on('paste',function(A){var B=A.data;if(B.html)y.insertHtml(B.html);else if(B.text)y.insertText(B.text);setTimeout(function(){y.fire('afterPaste');},0);},null,null,1000);y.on('pasteDialog',function(A){setTimeout(function(){y.openDialog('paste');},0);});y.on('pasteState',function(A){y.getCommand('paste').setState(A.data);});function z(A,B,C,D){var E=y.lang[B];y.addCommand(B,C);y.ui.addButton(A,{label:E,command:B});if(y.addMenuItems)y.addMenuItem(B,{label:E,command:B,group:'clipboard',order:D});};z('Cut','cut',new o('cut'),1);z('Copy','copy',new o('copy'),4);z('Paste','paste',p,8);a.dialog.add('paste',a.getUrl(this.path+'dialogs/paste.js'));y.on('key',q,y);y.on('contentDom',function(){var A=y.document.getBody();A.on(!c?'paste':'beforepaste',function(B){if(u)return;var C=B.data&&B.data.$;if(c&&C&&!C.ctrlKey)return;var D={mode:'html'};y.fire('beforePaste',D);s.call(y,B,D.mode,function(E){if(!(E=e.trim(E.replace(/]+data-cke-bookmark[^<]*?<\/span>/ig,''))))return;var F={};F[D.mode]=E;y.fire('paste',F);});});if(c){A.on('contextmenu',function(){u=1;setTimeout(function(){u=0;},0);});A.on('paste',function(B){if(!y.document.getById('cke_pastebin')){B.data.preventDefault();u=0;p.exec(y);}});}A.on('beforecut',function(){!u&&t(y);});A.on('mouseup',function(){setTimeout(function(){x.call(y);},0);},y);A.on('keyup',x,y);});y.on('selectionChange',function(A){w=A.data.selection.getRanges()[0].checkReadOnly();x.call(y);});if(y.contextMenu)y.contextMenu.addListener(function(A,B){var C=B.getRanges()[0].checkReadOnly();return{cut:!C&&v('Cut',y),copy:v('Copy',y),paste:!C&&(b.webkit?2:v('Paste',y))};});}});})();j.add('colorbutton',{requires:['panelbutton','floatpanel','styles'],init:function(m){var n=m.config,o=m.lang.colorButton,p; +if(!b.hc){q('TextColor','fore',o.textColorTitle);q('BGColor','back',o.bgColorTitle);}function q(t,u,v){var w=e.getNextId()+'_colorBox';m.ui.add(t,'panelbutton',{label:v,title:v,className:'cke_button_'+t.toLowerCase(),modes:{wysiwyg:1},panel:{css:m.skin.editor.css,attributes:{role:'listbox','aria-label':o.panelTitle}},onBlock:function(x,y){y.autoSize=true;y.element.addClass('cke_colorblock');y.element.setHtml(r(x,u,w));y.element.getDocument().getBody().setStyle('overflow','hidden');k.fire('ready',this);var z=y.keys,A=m.lang.dir=='rtl';z[A?37:39]='next';z[40]='next';z[9]='next';z[A?39:37]='prev';z[38]='prev';z[2228224+9]='prev';z[32]='click';},onOpen:function(){var x=m.getSelection(),y=x&&x.getStartElement(),z=new d.elementPath(y),A;y=z.block||z.blockLimit||m.document.getBody();do A=y&&y.getComputedStyle(u=='back'?'background-color':'color')||'transparent';while(u=='back'&&A=='transparent'&&y&&(y=y.getParent()));if(!A||A=='transparent')A='#ffffff';this._.panel._.iframe.getFrameDocument().getById(w).setStyle('background-color',A);}});};function r(t,u,v){var w=[],x=n.colorButton_colors.split(','),y=e.addFunction(function(E,F){if(E=='?'){var G=arguments.callee;function H(J){this.removeListener('ok',H);this.removeListener('cancel',H);J.name=='ok'&&G(this.getContentElement('picker','selectedColor').getValue(),F);};m.openDialog('colordialog',function(){this.on('ok',H);this.on('cancel',H);});return;}m.focus();t.hide(false);m.fire('saveSnapshot');new a.style(n['colorButton_'+F+'Style'],{color:'inherit'}).remove(m.document);if(E){var I=n['colorButton_'+F+'Style'];I.childRule=F=='back'?function(J){return s(J);}:function(J){return!(J.is('a')||J.getElementsByTag('a').count())||s(J);};new a.style(I,{color:E}).apply(m.document);}m.fire('saveSnapshot');});w.push('
',o.auto,'
');for(var z=0;z');var A=x[z].split('/'),B=A[0],C=A[1]||B;if(!A[1])B='#'+B.replace(/^(.)(.)(.)$/,'$1$1$2$2$3$3');var D=m.lang.colors[C]||C;w.push(''); +}if(n.colorButton_enableMore===undefined||n.colorButton_enableMore)w.push('');w.push('
',o.more,'
');return w.join('');};function s(t){return t.getAttribute('contentEditable')=='false'||t.getAttribute('data-nostyle');};}});i.colorButton_colors='000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,B22222,A52A2A,DAA520,006400,40E0D0,0000CD,800080,808080,F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,A9A9A9,FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,FFF0F5,FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF';i.colorButton_foreStyle={element:'span',styles:{color:'#(color)'},overrides:[{element:'font',attributes:{color:null}}]};i.colorButton_backStyle={element:'span',styles:{'background-color':'#(color)'}};j.colordialog={init:function(m){m.addCommand('colordialog',new a.dialogCommand('colordialog'));a.dialog.add('colordialog',this.path+'dialogs/colordialog.js');}};j.add('colordialog',j.colordialog);j.add('contextmenu',{requires:['menu'],onLoad:function(){j.contextMenu=e.createClass({base:a.menu,$:function(m){this.base.call(this,m,{panel:{className:m.skinClass+' cke_contextmenu',attributes:{'aria-label':m.lang.contextmenu.options}}});},proto:{addTarget:function(m,n){if(b.opera&&!('oncontextmenu' in document.body)){var o;m.on('mousedown',function(s){s=s.data;if(s.$.button!=2){if(s.getKeystroke()==1114112+1)m.fire('contextmenu',s);return;}if(n&&(b.mac?s.$.metaKey:s.$.ctrlKey))return;var t=s.getTarget();if(!o){var u=t.getDocument();o=u.createElement('input');o.$.type='button';u.getBody().append(o);}o.setAttribute('style','position:absolute;top:'+(s.$.clientY-2)+'px;left:'+(s.$.clientX-2)+'px;width:5px;height:5px;opacity:0.01');});m.on('mouseup',function(s){if(o){o.remove();o=undefined;m.fire('contextmenu',s.data);}});}m.on('contextmenu',function(s){var t=s.data;if(n&&(b.webkit?p:b.mac?t.$.metaKey:t.$.ctrlKey))return;t.preventDefault();var u=t.getTarget().getDocument().getDocumentElement(),v=t.$.clientX,w=t.$.clientY;e.setTimeout(function(){this.open(u,null,v,w);},c?200:0,this);},this);if(b.opera)m.on('keypress',function(s){var t=s.data;if(t.$.keyCode===0)t.preventDefault();});if(b.webkit){var p,q=function(s){p=b.mac?s.data.$.metaKey:s.data.$.ctrlKey;},r=function(){p=0;};m.on('keydown',q);m.on('keyup',r);m.on('contextmenu',r); +}},open:function(m,n,o,p){this.editor.focus();m=m||a.document.getDocumentElement();this.show(m,n,o,p);}}});},beforeInit:function(m){m.contextMenu=new j.contextMenu(m);m.addCommand('contextMenu',{exec:function(){m.contextMenu.open(m.document.getBody());}});}});(function(){function m(o){var p=this.att,q=o&&o.hasAttribute(p)&&o.getAttribute(p)||'';if(q!==undefined)this.setValue(q);};function n(){var o;for(var p=0;p ';j.add('elementspath',{requires:['selection'],init:function(o){var p='cke_path_'+o.name,q,r=function(){if(!q)q=a.document.getById(p);return q;},s='cke_elementspath_'+e.getNextNumber()+'_';o._.elementsPath={idBase:s,filters:[]};o.on('themeSpace',function(x){if(x.data.space=='bottom')x.data.html+=''+o.lang.elementsPath.eleLabel+''+'
'+n+'
';});function t(x){o.focus();var y=o._.elementsPath.list[x];if(y.is('body')){var z=new d.range(o.document);z.selectNodeContents(y);z.select();}else o.getSelection().selectElement(y);};var u=e.addFunction(t),v=e.addFunction(function(x,y){var z=o._.elementsPath.idBase,A;y=new d.event(y);var B=o.lang.dir=='rtl';switch(y.getKeystroke()){case B?39:37:case 9:A=a.document.getById(z+(x+1));if(!A)A=a.document.getById(z+'0');A.focus();return false;case B?37:39:case 2228224+9:A=a.document.getById(z+(x-1));if(!A)A=a.document.getById(z+(o._.elementsPath.list.length-1));A.focus();return false;case 27:o.focus();return false;case 13:case 32:t(x);return false;}return true;});o.on('selectionChange',function(x){var y=b,z=x.data.selection,A=z.getStartElement(),B=[],C=x.editor,D=C._.elementsPath.list=[],E=C._.elementsPath.filters;while(A){var F=0,G;if(A.data('cke-display-name'))G=A.data('cke-display-name');else if(A.data('cke-real-element-type'))G=A.data('cke-real-element-type');else G=A.getName();for(var H=0;H',G,''+L+'','');}if(G=='body')break;A=A.getParent();}var M=r();M.setHtml(B.join('')+n);C.fire('elementsPathUpdate',{space:M});});function w(){q&&q.setHtml(n);delete o._.elementsPath.list;};o.on('readOnly',w);o.on('contentDomUnload',w);o.addCommand('elementsPathFocus',m.toolbarFocus);}});})();(function(){j.add('enterkey',{requires:['keystrokes','indent'],init:function(t){t.addCommand('enter',{modes:{wysiwyg:1},editorFocus:false,exec:function(v){r(v);}});t.addCommand('shiftEnter',{modes:{wysiwyg:1},editorFocus:false,exec:function(v){q(v);}});var u=t.keystrokeHandler.keystrokes;u[13]='enter';u[2228224+13]='shiftEnter';}});j.enterkey={enterBlock:function(t,u,v,w){v=v||s(t);if(!v)return;var x=v.document,y=v.checkStartOfBlock(),z=v.checkEndOfBlock(),A=new d.elementPath(v.startContainer),B=A.block;if(y&&z){if(B&&(B.is('li')||B.getParent().is('li'))){t.execCommand('outdent');return;}if(B&&B.getParent().is('blockquote')){B.breakParent(B.getParent());if(!B.getPrevious().getFirst(d.walker.invisible(1)))B.getPrevious().remove();if(!B.getNext().getFirst(d.walker.invisible(1)))B.getNext().remove();v.moveToElementEditStart(B);v.select();return;}}else if(B&&B.is('pre')){if(!z){n(t,u,v,w);return;}}else if(B&&f.$captionBlock[B.getName()]){n(t,u,v,w);return;}var C=u==3?'div':'p',D=v.splitBlock(C);if(!D)return;var E=D.previousBlock,F=D.nextBlock,G=D.wasStartOfBlock,H=D.wasEndOfBlock,I;if(F){I=F.getParent();if(I.is('li')){F.breakParent(I);F.move(F.getNext(),1);}}else if(E&&(I=E.getParent())&&I.is('li')){E.breakParent(I);I=E.getNext();v.moveToElementEditStart(I);E.move(E.getPrevious());}if(!G&&!H){if(F.is('li')&&(I=F.getFirst(d.walker.invisible(true)))&&I.is&&I.is('ul','ol'))(c?x.createText('\xa0'):x.createElement('br')).insertBefore(I);if(F)v.moveToElementEditStart(F);}else{var J,K;if(E){if(E.is('li')||!(p.test(E.getName())||E.is('pre')))J=E.clone();}else if(F)J=F.clone();if(!J){if(I&&I.is('li'))J=I;else{J=x.createElement(C);if(E&&(K=E.getDirection()))J.setAttribute('dir',K); +}}else if(w&&!J.is('li'))J.renameNode(C);var L=D.elementPath;if(L)for(var M=0,N=L.elements.length;M0;v--)u[v].deleteContents();return u[0];};})();(function(){var m='nbsp,gt,lt,amp',n='quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro',o='Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml',p='Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv'; +function q(r,s){var t={},u=[],v={nbsp:'\xa0',shy:'­',gt:'>',lt:'<',amp:'&',apos:"'",quot:'"'};r=r.replace(/\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g,function(A,B){var C=s?'&'+B+';':v[B],D=s?v[B]:'&'+B+';';t[C]=D;u.push(C);return '';});if(!s&&r){r=r.split(',');var w=document.createElement('div'),x;w.innerHTML='&'+r.join(';&')+';';x=w.innerHTML;w=null;for(var y=0;y0;case 'checked':return!!q.$.checked;case 'value':var p=q.getAttribute('type');return p=='checkbox'||p=='radio'?q.$.value!='on':q.$.value;}return m.apply(q,arguments);};});(function(){var m={canUndo:false,exec:function(o){var p=o.document.createElement('hr'),q=new d.range(o.document);o.insertElement(p);q.moveToPosition(p,4);var r=p.getNext();if(!r||r.type==1&&!r.isEditable())q.fixBlock(true,o.config.enterMode==3?'div':'p');q.select();}},n='horizontalrule';j.add(n,{init:function(o){o.addCommand(n,m);o.ui.addButton('HorizontalRule',{label:o.lang.horizontalrule,command:n});}});})();(function(){var m=/^[\t\r\n ]*(?: |\xa0)$/,n='{cke_protected}';function o(T){var U=T.children.length,V=T.children[U-1];while(V&&V.type==3&&!e.trim(V.value))V=T.children[--U];return V;};function p(T,U){var V=T.children,W=o(T);if(W){if((U||!c)&&W.type==1&&W.name=='br')V.pop();if(W.type==3&&m.test(W.value))V.pop();}};function q(T,U,V){if(!U&&(!V||typeof V=='function'&&V(T)===false))return false;if(U&&c&&(document.documentMode>7||T.name in f.tr||T.name in f.$listItem))return false;var W=o(T);return!W||W&&(W.type==1&&W.name=='br'||T.name=='form'&&W.name=='input');};function r(T,U){return function(V){p(V,!T);if(q(V,!T,U))if(T||c)V.add(new a.htmlParser.text('\xa0'));else V.add(new a.htmlParser.element('br',{}));};};var s=f,t=['caption','colgroup','col','thead','tfoot','tbody'],u=e.extend({},s.$block,s.$listItem,s.$tableContent);for(var v in u){if(!('br' in s[v]))delete u[v];}delete u.pre;var w={elements:{},attributeNames:[[/^on/,'data-cke-pa-on']]},x={elements:{}};for(v in u)x.elements[v]=r();var y={elementNames:[[/^cke:/,''],[/^\?xml:namespace$/,'']],attributeNames:[[/^data-cke-(saved|pa)-/,''],[/^data-cke-.*/,''],['hidefocus','']],elements:{$:function(T){var U=T.attributes; +if(U){if(U['data-cke-temp'])return false;var V=['name','href','src'],W;for(var X=0;Xe.indexOf(t,W.name)?1:-1:0;});},embed:function(T){var U=T.parent;if(U&&U.name=='object'){var V=U.attributes.width,W=U.attributes.height;V&&(T.attributes.width=V);W&&(T.attributes.height=W);}},param:function(T){T.children=[];T.isEmpty=true;return T;},a:function(T){if(!(T.children.length||T.attributes.name||T.attributes['data-cke-saved-name']))return false;},span:function(T){if(T.attributes['class']=='Apple-style-span')delete T.name;},pre:function(T){c&&p(T);},html:function(T){delete T.attributes.contenteditable;delete T.attributes['class'];},body:function(T){delete T.attributes.spellcheck;delete T.attributes.contenteditable;},style:function(T){var U=T.children[0];U&&U.value&&(U.value=e.trim(U.value));if(!T.attributes.type)T.attributes.type='text/css';},title:function(T){var U=T.children[0];U&&(U.value=T.attributes['data-cke-title']||'');}},attributes:{'class':function(T,U){return e.ltrim(T.replace(/(?:^|\s+)cke_[^\s]*/g,''))||false;}}};if(c)y.attributes.style=function(T,U){return T.replace(/(^|;)([^\:]+)/g,function(V){return V.toLowerCase();});};function z(T){var U=T.attributes;if(U.contenteditable!='false')U['data-cke-editable']=U.contenteditable?'true':1;U.contenteditable='false';};function A(T){var U=T.attributes;switch(U['data-cke-editable']){case 'true':U.contenteditable='true';break;case '1':delete U.contenteditable;break;}};for(v in {input:1,textarea:1}){w.elements[v]=z;y.elements[v]=A;}var B=/<(a|area|img|input)\b([^>]*)>/gi,C=/\b(on\w+|href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,D=/(?:])[^>]*>[\s\S]*<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,E=/([^<]*)<\/cke:encoded>/gi,F=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,G=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,H=/]*?)\/?>(?!\s*<\/cke:\1)/gi;function I(T){return T.replace(B,function(U,V,W){return '<'+V+W.replace(C,function(X,Y){if(!/^on/.test(Y)&&W.indexOf('data-cke-saved-'+Y)==-1)return ' data-cke-saved-'+X+' data-cke-'+a.rnd+'-'+X;return X;})+'>';});};function J(T){return T.replace(D,function(U){return ''+encodeURIComponent(U)+'';});};function K(T){return T.replace(E,function(U,V){return decodeURIComponent(V);});};function L(T){return T.replace(F,'$1cke:$2'); +};function M(T){return T.replace(G,'$1$2');};function N(T){return T.replace(H,'');};function O(T){return T.replace(/(]*>)(\r\n|\n)/g,'$1$2$2');};function P(T){return T.replace(//g,function(U){return '';});};function Q(T){return T.replace(//g,function(U,V){return decodeURIComponent(V);});};function R(T,U){var V=U._.dataStore;return T.replace(//g,function(W,X){return decodeURIComponent(X);}).replace(/\{cke_protected_(\d+)\}/g,function(W,X){return V&&V[X]||'';});};function S(T,U){var V=[],W=U.config.protectedSource,X=U._.dataStore||(U._.dataStore={id:1}),Y=/<\!--\{cke_temp(comment)?\}(\d*?)-->/g,Z=[//gi,//gi].concat(W);T=T.replace(//g,function(ab){return '';});for(var aa=0;aa';});T=T.replace(Y,function(ab,ac,ad){return '';});return T.replace(/(['"]).*?\1/g,function(ab){return ab.replace(//g,function(ac,ad){X[X.id]=decodeURIComponent(ad);return '{cke_protected_'+X.id++ +'}';});});};j.add('htmldataprocessor',{requires:['htmlwriter'],init:function(T){var U=T.dataProcessor=new a.htmlDataProcessor(T);U.writer.forceSimpleAmpersand=T.config.forceSimpleAmpersand;U.dataFilter.addRules(w);U.dataFilter.addRules(x);U.htmlFilter.addRules(y);var V={elements:{}};for(v in u)V.elements[v]=r(true,T.config.fillEmptyBlocks);U.htmlFilter.addRules(V);},onLoad:function(){!('fillEmptyBlocks' in i)&&(i.fillEmptyBlocks=1);}});a.htmlDataProcessor=function(T){var U=this;U.editor=T;U.writer=new a.htmlWriter();U.dataFilter=new a.htmlParser.filter();U.htmlFilter=new a.htmlParser.filter();};a.htmlDataProcessor.prototype={toHtml:function(T,U){T=S(T,this.editor);T=I(T);T=J(T);T=L(T);T=N(T);T=O(T);var V=new h('div');V.setHtml('a'+T);T=V.getHtml().substr(1);T=T.replace(new RegExp(' data-cke-'+a.rnd+'-','ig'),' ');T=M(T);T=K(T);T=Q(T);var W=a.htmlParser.fragment.fromHtml(T,U),X=new a.htmlParser.basicWriter();W.writeHtml(X,this.dataFilter);T=X.getHtml(true);T=P(T);return T;},toDataFormat:function(T,U){var V=this.writer,W=a.htmlParser.fragment.fromHtml(T,U); +V.reset();W.writeHtml(V,this.htmlFilter);var X=V.getHtml(true);X=Q(X);X=R(X,this.editor);return X;}};})();(function(){j.add('iframe',{requires:['dialog','fakeobjects'],init:function(m){var n='iframe',o=m.lang.iframe;a.dialog.add(n,this.path+'dialogs/iframe.js');m.addCommand(n,new a.dialogCommand(n));m.addCss('img.cke_iframe{background-image: url('+a.getUrl(this.path+'images/placeholder.png')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 80px;'+'height: 80px;'+'}');m.ui.addButton('Iframe',{label:o.toolbar,command:n});m.on('doubleclick',function(p){var q=p.data.element;if(q.is('img')&&q.data('cke-real-element-type')=='iframe')p.data.dialog='iframe';});if(m.addMenuItems)m.addMenuItems({iframe:{label:o.title,command:'iframe',group:'image'}});if(m.contextMenu)m.contextMenu.addListener(function(p,q){if(p&&p.is('img')&&p.data('cke-real-element-type')=='iframe')return{iframe:2};});},afterInit:function(m){var n=m.dataProcessor,o=n&&n.dataFilter;if(o)o.addRules({elements:{iframe:function(p){return m.createFakeParserElement(p,'cke_iframe','iframe',true);}}});}});})();(function(){j.add('image',{init:function(o){var p='image';a.dialog.add(p,this.path+'dialogs/image.js');o.addCommand(p,new a.dialogCommand(p));o.ui.addButton('Image',{label:o.lang.common.image,command:p});o.on('doubleclick',function(q){var r=q.data.element;if(r.is('img')&&!r.data('cke-realelement')&&!r.isReadOnly())q.data.dialog='image';});if(o.addMenuItems)o.addMenuItems({image:{label:o.lang.image.menu,command:'image',group:'image'}});if(o.contextMenu)o.contextMenu.addListener(function(q,r){if(m(o,q))return{image:2};});},afterInit:function(o){p('left');p('right');p('center');p('block');function p(q){var r=o.getCommand('justify'+q);if(r){if(q=='left'||q=='right')r.on('exec',function(s){var t=m(o),u;if(t){u=n(t);if(u==q){t.removeStyle('float');if(q==n(t))t.removeAttribute('align');}else t.setStyle('float',q);s.cancel();}});r.on('refresh',function(s){var t=m(o),u;if(t){u=n(t);this.setState(u==q?1:q=='right'||q=='left'?2:0);s.cancel();}});}};}});function m(o,p){if(!p){var q=o.getSelection();p=q.getType()==3&&q.getSelectedElement();}if(p&&p.is('img')&&!p.data('cke-realelement')&&!p.isReadOnly())return p;};function n(o){var p=o.getStyle('float');if(p=='inherit'||p=='none')p=0;if(!p)p=o.getAttribute('align');return p;};})();i.image_removeLinkByEmptyURL=true;(function(){var m={ol:1,ul:1},n=d.walker.whitespaces(true),o=d.walker.bookmark(false,true); +function p(t){var B=this;if(t.editor.readOnly)return null;var u=t.editor,v=t.data.path,w=v&&v.contains(m),x=v.block||v.blockLimit;if(w)return B.setState(2);if(!B.useIndentClasses&&B.name=='indent')return B.setState(2);if(!x)return B.setState(0);if(B.useIndentClasses){var y=x.$.className.match(B.classNameRegex),z=0;if(y){y=y[1];z=B.indentClassMap[y];}if(B.name=='outdent'&&!z||B.name=='indent'&&z==u.config.indentClasses.length)return B.setState(0);return B.setState(2);}else{var A=parseInt(x.getStyle(r(x)),10);if(isNaN(A))A=0;if(A<=0)return B.setState(0);return B.setState(2);}};function q(t,u){var w=this;w.name=u;w.useIndentClasses=t.config.indentClasses&&t.config.indentClasses.length>0;if(w.useIndentClasses){w.classNameRegex=new RegExp('(?:^|\\s+)('+t.config.indentClasses.join('|')+')(?=$|\\s)');w.indentClassMap={};for(var v=0;vY;T++)X[T].indent+=U;var aa=j.list.arrayToList(X,v,null,t.config.enterMode,M.getDirection());if(u.name=='outdent'){var ab;if((ab=M.getParent())&&ab.is('li')){var ac=aa.listNode.getChildren(),ad=[],ae=ac.count(),af;for(T=ae-1;T>=0;T--){if((af=ac.getItem(T))&&af.is&&af.is('li'))ad.push(af);}}}if(aa)aa.listNode.replace(M);if(ad&&ad.length)for(T=0;T0)M.addClass(t.config.indentClasses[P-1]);}else{var Q=r(M,N),R=parseInt(M.getStyle(Q),10);if(isNaN(R))R=0;var S=t.config.indentOffset||40;R+=(u.name=='indent'?1:-1)*S;if(R<0)return false;R=Math.max(R,0);R=Math.ceil(R/S)*S;M.setStyle(Q,R?R+(t.config.indentUnit||'px'):'');if(M.getAttribute('style')==='')M.removeAttribute('style');}h.setMarker(v,M,'indent_processed',1);return true;};var z=t.getSelection(),A=z.createBookmarks(1),B=z&&z.getRanges(1),C,D=B.createIterator();while(C=D.getNextRange()){var E=C.getCommonAncestor(),F=E;while(F&&!(F.type==1&&m[F.getName()]))F=F.getParent();if(!F){var G=C.getEnclosedNode();if(G&&G.type==1&&G.getName() in m){C.setStartAt(G,1);C.setEndAt(G,2);F=G;}}if(F&&C.startContainer.type==1&&C.startContainer.getName() in m){var H=new d.walker(C);H.evaluator=s;C.startContainer=H.next();}if(F&&C.endContainer.type==1&&C.endContainer.getName() in m){H=new d.walker(C);H.evaluator=s;C.endContainer=H.previous();}if(F){var I=F.getFirst(s),J=!!I.getNext(s),K=C.startContainer,L=I.equals(K)||I.contains(K);if(!(L&&(u.name=='indent'||u.useIndentClasses||parseInt(F.getStyle(r(F)),10))&&y(F,!J&&I.getDirection())))w(F);}else x();}h.clearAllMarkers(v);t.forceNextSelectionCheck();z.selectBookmarks(A);}};j.add('indent',{init:function(t){var u=t.addCommand('indent',new q(t,'indent')),v=t.addCommand('outdent',new q(t,'outdent'));t.ui.addButton('Indent',{label:t.lang.indent,command:'indent'});t.ui.addButton('Outdent',{label:t.lang.outdent,command:'outdent'});t.on('selectionChange',e.bind(p,u));t.on('selectionChange',e.bind(p,v));if(b.ie6Compat||b.ie7Compat)t.addCss('ul,ol{\tmargin-left: 0px;\tpadding-left: 40px;}');t.on('dirChanged',function(w){var x=new d.range(t.document);x.setStartBefore(w.data.node);x.setEndAfter(w.data.node);var y=new d.walker(x),z;while(z=y.next()){if(z.type==1){if(!z.equals(w.data.node)&&z.getDirection()){x.setStartAfter(z);y=new d.walker(x);continue;}var A=t.config.indentClasses;if(A){var B=w.data.dir=='ltr'?['_rtl','']:['','_rtl'];for(var C=0;C=0;z--){w=u[z].createIterator();w.enlargeBr=s!=2;while(x=w.getNextParagraph(s==1?'p':'div')){x.removeAttribute('align');x.removeStyle('text-align');var A=v&&(x.$.className=e.ltrim(x.$.className.replace(C.cssClassRegex,''))),B=C.state==2&&(!y||m(x,true)!=C.value);if(v){if(B)x.addClass(v);else if(!A)x.removeAttribute('class');}else if(B)x.setStyle('text-align',C.value);}}q.focus();q.forceNextSelectionCheck(); +r.selectBookmarks(t);},refresh:function(q){var r=q.block||q.blockLimit;this.setState(r.getName()!='body'&&m(r,this.editor.config.useComputedState)==this.value?1:2);}};j.add('justify',{init:function(q){var r=new o(q,'justifyleft','left'),s=new o(q,'justifycenter','center'),t=new o(q,'justifyright','right'),u=new o(q,'justifyblock','justify');q.addCommand('justifyleft',r);q.addCommand('justifycenter',s);q.addCommand('justifyright',t);q.addCommand('justifyblock',u);q.ui.addButton('JustifyLeft',{label:q.lang.justify.left,command:'justifyleft'});q.ui.addButton('JustifyCenter',{label:q.lang.justify.center,command:'justifycenter'});q.ui.addButton('JustifyRight',{label:q.lang.justify.right,command:'justifyright'});q.ui.addButton('JustifyBlock',{label:q.lang.justify.block,command:'justifyblock'});q.on('selectionChange',e.bind(n,r));q.on('selectionChange',e.bind(n,t));q.on('selectionChange',e.bind(n,s));q.on('selectionChange',e.bind(n,u));q.on('dirChanged',p);},requires:['domiterator']});})();j.add('keystrokes',{beforeInit:function(m){m.keystrokeHandler=new a.keystrokeHandler(m);m.specialKeys={};},init:function(m){var n=m.config.keystrokes,o=m.config.blockedKeystrokes,p=m.keystrokeHandler.keystrokes,q=m.keystrokeHandler.blockedKeystrokes;for(var r=0;r7))W.append(R.createText('\xa0'));W.append(ac.listNode);U=ac.nextIndex;}else if(aa.indent==-1&&!N&&aa.grandparent){if(m[aa.grandparent.getName()])W=aa.element.clone(false,true);else W=new d.documentFragment(R);var ad=aa.grandparent.getDirection(1)!=X,ae=W.type==11&&O!=2,af=aa.element,ag=af.getAttribute('class'),ah=af.getAttribute('style'),ai,aj=aa.contents.length;for(Q=0;QO[Q-1].indent+1){var U=O[Q-1].indent+1-O[Q].indent,V=O[Q].indent;while(O[Q]&&O[Q].indent>=V){O[Q].indent+=U;Q++;}Q--;}}var W=j.list.arrayToList(O,N,null,L.config.enterMode,M.root.getAttribute('dir')),X=W.listNode,Y,Z;function aa(ab){if((Y=X[ab?'getFirst':'getLast']())&&!(Y.is&&Y.isBlockBoundary())&&(Z=M.root[ab?'getPrevious':'getNext'](d.walker.whitespaces(true)))&&!(Z.is&&Z.isBlockBoundary({br:1})))L.document.createElement('br')[ab?'insertBefore':'insertAfter'](Y); +};aa(true);aa();X.replace(M.root);};function y(L,M){this.name=L;this.type=M;};var z=d.walker.nodeType(1);function A(L,M,N,O){var P,Q;while(P=L.getFirst(z)){if((Q=P.getDirection(1))!==M.getDirection(1))P.setAttribute('dir',Q);P.remove();N?P[O?'insertBefore':'insertAfter'](N):M.append(P,O);}};y.prototype={exec:function(L){var M=L.document,N=L.config,O=L.getSelection(),P=O&&O.getRanges(true);if(!P||P.length<1)return;if(this.state==2){var Q=M.getBody();if(!Q.getFirst(q)){N.enterMode==2?Q.appendBogus():P[0].fixBlock(1,N.enterMode==1?'p':'div');O.selectRanges(P);}else{var R=P.length==1&&P[0],S=R&&R.getEnclosedNode();if(S&&S.is&&this.type==S.getName())this.setState(1);}}var T=O.createBookmarks(true),U=[],V={},W=P.createIterator(),X=0;while((R=W.getNextRange())&&++X){var Y=R.getBoundaryNodes(),Z=Y.startNode,aa=Y.endNode;if(Z.type==1&&Z.getName()=='td')R.setStartAt(Y.startNode,1);if(aa.type==1&&aa.getName()=='td')R.setEndAt(Y.endNode,2);var ab=R.createIterator(),ac;ab.forceBrBreak=this.state==2;while(ac=ab.getNextParagraph()){if(ac.getCustomData('list_block'))continue;else h.setMarker(V,ac,'list_block',1);var ad=new d.elementPath(ac),ae=ad.elements,af=ae.length,ag=null,ah=0,ai=ad.blockLimit,aj;for(var ak=af-1;ak>=0&&(aj=ae[ak]);ak--){if(m[aj.getName()]&&ai.contains(aj)){ai.removeCustomData('list_group_object_'+X);var al=aj.getCustomData('list_group_object');if(al)al.contents.push(ac);else{al={root:aj,contents:[ac]};U.push(al);h.setMarker(V,aj,'list_group_object',al);}ah=1;break;}}if(ah)continue;var am=ai;if(am.getCustomData('list_group_object_'+X))am.getCustomData('list_group_object_'+X).contents.push(ac);else{al={root:am,contents:[ac]};h.setMarker(V,am,'list_group_object_'+X,al);U.push(al);}}}var an=[];while(U.length>0){al=U.shift();if(this.state==2){if(m[al.root.getName()])u.call(this,L,al,V,an);else w.call(this,L,al,an);}else if(this.state==1&&m[al.root.getName()])x.call(this,L,al,V);}for(ak=0;ak0)for(var u=t.length-1;u>=0;u--){var v=t[u][0],w=t[u][1];if(w)v.insertBefore(w);else v.appendTo(s);}};function o(s,t){var u=m(s),v={},w=s.$;if(!t){v['class']=w.className||'';w.className='';}v.inline=w.style.cssText||'';if(!t)w.style.cssText='position: static; overflow: visible';n(u);return v;};function p(s,t){var u=m(s),v=s.$;if('class' in t)v.className=t['class'];if('inline' in t)v.style.cssText=t.inline;n(u);};function q(s){var t=a.instances;for(var u in t){var v=t[u];if(v.mode=='wysiwyg'&&!v.readOnly){var w=v.document.getBody();w.setAttribute('contentEditable',false);w.setAttribute('contentEditable',true);}}if(s.focusManager.hasFocus){s.toolbox.focus();s.focus();}};function r(s){if(!c||b.version>6)return null;var t=h.createFromHtml('');return s.append(t,true);};j.add('maximize',{init:function(s){var t=s.lang,u=a.document,v=u.getWindow(),w,x,y,z;function A(){var C=v.getViewPaneSize();z&&z.setStyles({width:C.width+'px',height:C.height+'px'}); +s.resize(C.width,C.height,null,true);};var B=2;s.addCommand('maximize',{modes:{wysiwyg:!b.iOS,source:!b.iOS},readOnly:1,editorFocus:false,exec:function(){var C=s.container.getChild(1),D=s.getThemeSpace('contents');if(s.mode=='wysiwyg'){var E=s.getSelection();w=E&&E.getRanges();x=v.getScrollPosition();}else{var F=s.textarea.$;w=!c&&[F.selectionStart,F.selectionEnd];x=[F.scrollLeft,F.scrollTop];}if(this.state==2){v.on('resize',A);y=v.getScrollPosition();var G=s.container;while(G=G.getParent()){G.setCustomData('maximize_saved_styles',o(G));G.setStyle('z-index',s.config.baseFloatZIndex-1);}D.setCustomData('maximize_saved_styles',o(D,true));C.setCustomData('maximize_saved_styles',o(C,true));var H={overflow:b.webkit?'':'hidden',width:0,height:0};u.getDocumentElement().setStyles(H);!b.gecko&&u.getDocumentElement().setStyle('position','fixed');!(b.gecko&&b.quirks)&&u.getBody().setStyles(H);c?setTimeout(function(){v.$.scrollTo(0,0);},0):v.$.scrollTo(0,0);C.setStyle('position',b.gecko&&b.quirks?'fixed':'absolute');C.$.offsetLeft;C.setStyles({'z-index':s.config.baseFloatZIndex-1,left:'0px',top:'0px'});z=r(C);C.addClass('cke_maximized');A();var I=C.getDocumentPosition();C.setStyles({left:-1*I.x+'px',top:-1*I.y+'px'});b.gecko&&q(s);}else if(this.state==1){v.removeListener('resize',A);var J=[D,C];for(var K=0;K ');s.children.length=0;s.add(u);var v=s.attributes;delete v['aria-label'];delete v.contenteditable;delete v.title;}return t;}}},5);if(p)p.addRules({elements:{div:function(r){var s=r.attributes,t=s&&s.style,u=t&&r.children.length==1&&r.children[0],v=u&&u.name=='span'&&u.attributes.style;if(v&&/page-break-after\s*:\s*always/i.test(t)&&/display\s*:\s*none/i.test(v)){s.contenteditable='false';s['class']='cke_pagebreak';s['data-cke-display-name']='pagebreak';s['aria-label']=n;s.title=n;r.children.length=0;}}}});},requires:['fakeobjects']});j.pagebreakCmd={exec:function(m){var n=m.lang.pagebreakAlt,o=h.createFromHtml('
'+'
',m.document),p=m.getSelection().getRanges(true);m.fire('saveSnapshot');for(var q,r=p.length-1;r>=0;r--){q=p[r];if(r1&&n.substr(n.length-1,1)=='%')n=parseInt(window.screen.width*parseInt(n,10)/100,10);if(typeof o=='string'&&o.length>1&&o.substr(o.length-1,1)=='%')o=parseInt(window.screen.height*parseInt(o,10)/100,10);if(n<640)n=640;if(o<420)o=420;var q=parseInt((window.screen.height-o)/2,10),r=parseInt((window.screen.width-n)/2,10);p=(p||'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes')+',width='+n+',height='+o+',top='+q+',left='+r; +var s=window.open('',null,p,true);if(!s)return false;try{var t=navigator.userAgent.toLowerCase();if(t.indexOf(' chrome/18')==-1){s.moveTo(r,q);s.resizeTo(n,o);}s.focus();s.location.href=m;}catch(u){s=window.open(m,null,p,true);}return true;}});(function(){var m={modes:{wysiwyg:1,source:1},canUndo:false,readOnly:1,exec:function(o){var p,q=o.config,r=q.baseHref?'':'',s=b.isCustomDomain();if(q.fullPage)p=o.getData().replace(//,'$&'+r).replace(/[^>]*(?=<\/title>)/,'$& — '+o.lang.preview);else{var t=''+''+r+''+o.lang.preview+''+e.buildStyleHtml(o.config.contentsCss)+''+t+o.getData()+'';}var v=640,w=420,x=80;try{var y=window.screen;v=Math.round(y.width*0.8);w=Math.round(y.height*0.7);x=Math.round(y.width*0.1);}catch(C){}var z='';if(s){window._cke_htmlToLoad=p;z='javascript:void( (function(){document.open();document.domain="'+document.domain+'";'+'document.write( window.opener._cke_htmlToLoad );'+'document.close();'+'window.opener._cke_htmlToLoad = null;'+'})() )';}var A=window.open(z,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+v+',height='+w+',left='+x);if(!s){var B=A.document;B.open();B.write(p);B.close();b.webkit&&setTimeout(function(){B.body.innerHTML+='';},0);}}},n='preview';j.add(n,{init:function(o){o.addCommand(n,m);o.ui.addButton('Preview',{label:o.lang.preview,command:n});}});})();j.add('print',{init:function(m){var n='print',o=m.addCommand(n,j.print);m.ui.addButton('Print',{label:m.lang.print,command:n});}});j.print={exec:function(m){if(b.opera)return;else if(b.gecko)m.window.$.print();else m.document.$.execCommand('Print');},canUndo:false,readOnly:1,modes:{wysiwyg:!b.opera}};j.add('removeformat',{requires:['selection'],init:function(m){m.addCommand('removeFormat',j.removeformat.commands.removeformat);m.ui.addButton('RemoveFormat',{label:m.lang.removeFormat,command:'removeFormat'});m._.removeFormat={filters:[]};}});j.removeformat={commands:{removeformat:{exec:function(m){var n=m._.removeFormatRegex||(m._.removeFormatRegex=new RegExp('^(?:'+m.config.removeFormatTags.replace(/,/g,'|')+')$','i')),o=m._.removeAttributes||(m._.removeAttributes=m.config.removeFormatAttributes.split(',')),p=j.removeformat.filter,q=m.getSelection().getRanges(1),r=q.createIterator(),s; +while(s=r.getNextRange()){if(!s.collapsed)s.enlarge(1);var t=s.createBookmark(),u=t.startNode,v=t.endNode,w,x=function(z){var A=new d.elementPath(z),B=A.elements;for(var C=1,D;D=B[C];C++){if(D.equals(A.block)||D.equals(A.blockLimit))break;if(n.test(D.getName())&&p(m,D))z.breakParent(D);}};x(u);if(v){x(v);w=u.getNextSourceNode(true,1);while(w){if(w.equals(v))break;var y=w.getNextSourceNode(false,1);if(!(w.getName()=='img'&&w.data('cke-realelement'))&&p(m,w))if(n.test(w.getName()))w.remove(1);else{w.removeAttributes(o);m.fire('removeFormatCleanup',w);}w=y;}}s.moveToBookmark(t);}m.getSelection().selectRanges(q);}}},filter:function(m,n){var o=m._.removeFormat.filters;for(var p=0;pr.width&&(n.resize_minWidth=r.width);n.resize_minHeight>r.height&&(n.resize_minHeight=r.height);a.document.on('mousemove',u);a.document.on('mouseup',v);if(m.document){m.document.on('mousemove',u);m.document.on('mouseup',v);}});m.on('destroy',function(){e.removeFunction(w);});m.on('themeSpace',function(x){if(x.data.space=='bottom'){var y=''; +if(s&&!t)y=' cke_resizer_horizontal';if(!s&&t)y=' cke_resizer_vertical';var z='
';o=='ltr'&&y=='ltr'?x.data.html+=z:x.data.html=z+x.data.html;}},m,null,100);}}});(function(){var m={modes:{wysiwyg:1,source:1},readOnly:1,exec:function(o){var p=o.element.$.form;if(p)try{p.submit();}catch(q){if(p.submit.click)p.submit.click();}}},n='save';j.add(n,{init:function(o){var p=o.addCommand(n,m);p.modes={wysiwyg:!!o.element.$.form};o.ui.addButton('Save',{label:o.lang.save,command:n});}});})();(function(){var m='scaytcheck',n='';function o(t,u){var v=0,w;for(w in u){if(u[w]==t){v=1;break;}}return v;};var p=function(){var t=this,u=function(){var y=t.config,z={};z.srcNodeRef=t.document.getWindow().$.frameElement;z.assocApp='CKEDITOR.'+a.version+'@'+a.revision;z.customerid=y.scayt_customerid||'1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2';z.customDictionaryIds=y.scayt_customDictionaryIds||'';z.userDictionaryName=y.scayt_userDictionaryName||'';z.sLang=y.scayt_sLang||'en_US';z.onLoad=function(){if(!(c&&b.version<8))this.addStyle(this.selectorCss(),'padding-bottom: 2px !important;');if(t.focusManager.hasFocus&&!q.isControlRestored(t))this.focus();};z.onBeforeChange=function(){if(q.getScayt(t)&&!t.checkDirty())setTimeout(function(){t.resetDirty();},0);};var A=window.scayt_custom_params;if(typeof A=='object')for(var B in A)z[B]=A[B];if(q.getControlId(t))z.id=q.getControlId(t);var C=new window.scayt(z);C.afterMarkupRemove.push(function(E){new h(E,C.document).mergeSiblings();});var D=q.instances[t.name];if(D){C.sLang=D.sLang;C.option(D.option());C.paused=D.paused;}q.instances[t.name]=C;try{C.setDisabled(q.isPaused(t)===false);}catch(E){}t.fire('showScaytState');};t.on('contentDom',u);t.on('contentDomUnload',function(){var y=a.document.getElementsByTag('script'),z=/^dojoIoScript(\d+)$/i,A=/^https?:\/\/svc\.webspellchecker\.net\/spellcheck\/script\/ssrv\.cgi/i;for(var B=0;B=0){this.setState(0);q.loadEngine(t);}}};j.add('scayt',{requires:['menubutton'],beforeInit:function(t){var u=t.config.scayt_contextMenuItemsOrder||'suggest|moresuggest|control',v='';u=u.split('|');if(u&&u.length)for(var w=0;w tr > td, .%1 table.%2 > tr > th,','.%1 table.%2 > tbody > tr > td, .%1 table.%2 > tbody > tr > th,','.%1 table.%2 > thead > tr > td, .%1 table.%2 > thead > tr > th,','.%1 table.%2 > tfoot > tr > td, .%1 table.%2 > tfoot > tr > th','{','border : #d3d3d3 1px dotted','}']).join(''); +n=o.replace(/%2/g,m).replace(/%1/g,'cke_show_borders ');var p={preserveState:true,editorFocus:false,readOnly:1,exec:function(q){this.toggleState();this.refresh(q);},refresh:function(q){if(q.document){var r=this.state==1?'addClass':'removeClass';q.document.getBody()[r]('cke_show_borders');}}};j.add('showborders',{requires:['wysiwygarea'],modes:{wysiwyg:1},init:function(q){var r=q.addCommand('showborders',p);r.canUndo=false;if(q.config.startupShowBorders!==false)r.setState(1);q.addCss(n);q.on('mode',function(){if(r.state!=0)r.refresh(q);},null,null,100);q.on('contentDom',function(){if(r.state!=0)r.refresh(q);});q.on('removeFormatCleanup',function(s){var t=s.data;if(q.getCommand('showborders').state==1&&t.is('table')&&(!t.hasAttribute('border')||parseInt(t.getAttribute('border'),10)<=0))t.addClass(m);});},afterInit:function(q){var r=q.dataProcessor,s=r&&r.dataFilter,t=r&&r.htmlFilter;if(s)s.addRules({elements:{table:function(u){var v=u.attributes,w=v['class'],x=parseInt(v.border,10);if((!x||x<=0)&&(!w||w.indexOf(m)==-1))v['class']=(w||'')+' '+m;}}});if(t)t.addRules({elements:{table:function(u){var v=u.attributes,w=v['class'];w&&(v['class']=w.replace(m,'').replace(/\s{2}/,' ').replace(/^\s+|\s+$/,''));}}});}});a.on('dialogDefinition',function(q){var r=q.data.name;if(r=='table'||r=='tableProperties'){var s=q.data.definition,t=s.getContents('info'),u=t.get('txtBorder'),v=u.commit;u.commit=e.override(v,function(y){return function(z,A){y.apply(this,arguments);var B=parseInt(this.getValue(),10);A[!B||B<=0?'addClass':'removeClass'](m);};});var w=s.getContents('advanced'),x=w&&w.get('advCSSClasses');if(x){x.setup=e.override(x.setup,function(y){return function(){y.apply(this,arguments);this.setValue(this.getValue().replace(/cke_show_border/,''));};});x.commit=e.override(x.commit,function(y){return function(z,A){y.apply(this,arguments);if(!parseInt(A.getAttribute('border'),10))A.addClass('cke_show_border');};});}}});})();j.add('sourcearea',{requires:['editingblock'],init:function(m){var n=j.sourcearea,o=a.document.getWindow();m.on('editingBlockReady',function(){var p,q;m.addMode('source',{load:function(r,s){if(c&&b.version<8)r.setStyle('position','relative');m.textarea=p=new h('textarea');p.setAttributes({dir:'ltr',tabIndex:b.webkit?-1:m.tabIndex,role:'textbox','aria-label':m.lang.editorTitle.replace('%1',m.name)});p.addClass('cke_source');p.addClass('cke_enable_context_menu');m.readOnly&&p.setAttribute('readOnly','readonly');var t={width:b.ie7Compat?'99%':'100%',height:'100%',resize:'none',outline:'none','text-align':'left'}; +if(c){q=function(){p.hide();p.setStyle('height',r.$.clientHeight+'px');p.setStyle('width',r.$.clientWidth+'px');p.show();};m.on('resize',q);o.on('resize',q);setTimeout(q,0);}r.setHtml('');r.append(p);p.setStyles(t);m.fire('ariaWidget',p);p.on('blur',function(){m.focusManager.blur();});p.on('focus',function(){m.focusManager.focus();});m.mayBeDirty=true;this.loadData(s);var u=m.keystrokeHandler;if(u)u.attach(p);setTimeout(function(){m.mode='source';m.fire('mode',{previousMode:m._.previousMode});},b.gecko||b.webkit?100:0);},loadData:function(r){p.setValue(r);m.fire('dataReady');},getData:function(){return p.getValue();},getSnapshotData:function(){return p.getValue();},unload:function(r){p.clearCustomData();m.textarea=p=null;if(q){m.removeListener('resize',q);o.removeListener('resize',q);}if(c&&b.version<8)r.removeStyle('position');},focus:function(){p.focus();}});});m.on('readOnly',function(){if(m.mode=='source')if(m.readOnly)m.textarea.setAttribute('readOnly','readonly');else m.textarea.removeAttribute('readOnly');});m.addCommand('source',n.commands.source);if(m.ui.addButton)m.ui.addButton('Source',{label:m.lang.source,command:'source'});m.on('mode',function(){m.getCommand('source').setState(m.mode=='source'?1:2);});}});j.sourcearea={commands:{source:{modes:{wysiwyg:1,source:1},editorFocus:false,readOnly:1,exec:function(m){if(m.mode=='wysiwyg')m.fire('saveSnapshot');m.getCommand('source').setState(0);m.setMode(m.mode=='source'?'wysiwyg':'source');},canUndo:false}}};(function(){j.add('stylescombo',{requires:['richcombo','styles'],init:function(n){var o=n.config,p=n.lang.stylesCombo,q={},r=[],s;function t(u){n.getStylesSet(function(v){if(!r.length){var w,x;for(var y=0,z=v.length;y0)return;if(S.type==1&&m.test(S.getName())&&!S.getCustomData('selected_cell')){h.setMarker(J,S,'selected_cell',true);I.push(S);}};for(var L=0;L1&&V&&U[Y]==V[Y]){Z=U[Y];Z.rowSpan+=1;}else{Z=new h(U[Y]).clone();Z.removeAttribute('rowSpan');!c&&Z.appendBogus();X.append(Z);Z=Z.$;}Y+=Z.colSpan-1;}H?X.insertBefore(S):X.insertAfter(S);};function q(G){if(G instanceof d.selection){var H=n(G),I=H[0],J=I.getAscendant('table'),K=e.buildTableMap(J),L=H[0].getParent(),M=L.$.rowIndex,N=H[H.length-1],O=N.getParent().$.rowIndex+N.$.rowSpan-1,P=[];for(var Q=M;Q<=O;Q++){var R=K[Q],S=new h(J.$.rows[Q]);for(var T=0;T0?X[M-1]:null)||J.$.parentNode);for(Q=P.length;Q>=0;Q--)q(P[Q]);return Y;}else if(G instanceof h){J=G.getAscendant('table');if(J.$.rows.length==1)J.remove();else G.remove();}return null;};function r(G,H){var I=G.getParent(),J=I.$.cells,K=0;for(var L=0;LI)I=K;}return I;};function t(G,H){var I=n(G),J=I[0],K=J.getAscendant('table'),L=s(I,1),M=s(I),N=H?L:M,O=e.buildTableMap(K),P=[],Q=[],R=O.length;for(var S=0;S1&&Q.length&&Q[S]==P[S]){U=P[S];U.colSpan+=1;}else{U=new h(P[S]).clone();U.removeAttribute('colSpan');!c&&U.appendBogus();U[H?'insertBefore':'insertAfter'].call(U,new h(P[S]));U=U.$;}S+=U.rowSpan-1;}};function u(G){var H=n(G),I=H[0],J=H[H.length-1],K=I.getAscendant('table'),L=e.buildTableMap(K),M,N,O=[];for(var P=0,Q=L.length;P1){L=H[J-1]+1;break;}}if(!L)L=H[0]>0?H[0]-1:H[H.length-1]+1;var N=I.$.rows;for(J=0,K=N.length;J=0;K--)x(H[K]);if(J)z(J,true);else if(I)I.remove();}else if(G instanceof h){var L=G.getParent();if(L.getChildCount()==1)L.remove();else G.remove();}};function y(G){var H=G.getBogus();H&&H.remove();G.trim();};function z(G,H){var I=new d.range(G.getDocument());if(!I['moveToElementEdit'+(H?'End':'Start')](G)){I.selectNodeContents(G);I.collapse(H?false:true);}I.select(true);};function A(G,H,I){var J=G[H];if(typeof I=='undefined')return J;for(var K=0;J&&K1)J+=K[H].rowSpan-1;}return I;};function C(G,H,I){var J=n(G),K;if((H?J.length!=1:J.length<2)||(K=G.getCommonAncestor())&&K.type==1&&K.is('table'))return false;var L,M=J[0],N=M.getAscendant('table'),O=e.buildTableMap(N),P=O.length,Q=O[0].length,R=M.getParent().$.rowIndex,S=A(O,R,M);if(H){var T;try{var U=parseInt(M.getAttribute('rowspan'),10)||1,V=parseInt(M.getAttribute('colspan'),10)||1;T=O[H=='up'?R-U:H=='down'?R+U:R][H=='left'?S-V:H=='right'?S+V:S];}catch(an){return false;}if(!T||M.$==T)return false;J[H=='up'||H=='left'?'unshift':'push'](new h(T));}var W=M.getDocument(),X=R,Y=0,Z=0,aa=!I&&new d.documentFragment(W),ab=0;for(var ac=0;ac=Q)M.removeAttribute('rowSpan');else M.$.rowSpan=Y;if(Y>=P)M.removeAttribute('colSpan');else M.$.colSpan=Z;var ak=new d.nodeList(N.$.rows),al=ak.count();for(ac=al-1;ac>=0;ac--){var am=ak.getItem(ac);if(!am.$.cells.length){am.remove();al++;continue;}}return M;}else return Y*Z==ab;};function D(G,H){var I=n(G);if(I.length>1)return false;else if(H)return true;var J=I[0],K=J.getParent(),L=K.getAscendant('table'),M=e.buildTableMap(L),N=K.$.rowIndex,O=A(M,N,J),P=J.$.rowSpan,Q,R,S,T;if(P>1){R=Math.ceil(P/2);S=Math.floor(P/2);T=N+R;var U=new h(L.$.rows[T]),V=A(M,T),W;Q=J.clone();for(var X=0;XO){Q.insertBefore(new h(W));break;}else W=null;}if(!W)U.append(Q,true);}else{S=R=1;U=K.clone();U.insertAfter(K);U.append(Q=J.clone());var Y=A(M,N);for(var Z=0;Z1)return false;else if(H)return true;var J=I[0],K=J.getParent(),L=K.getAscendant('table'),M=e.buildTableMap(L),N=K.$.rowIndex,O=A(M,N,J),P=J.$.colSpan,Q,R,S;if(P>1){R=Math.ceil(P/2);S=Math.floor(P/2);}else{S=R=1;var T=B(M,O);for(var U=0;U0?2:0};}},tablecell_insertBefore:{label:H.cell.insertBefore,group:'tablecell',command:'cellInsertBefore',order:5},tablecell_insertAfter:{label:H.cell.insertAfter,group:'tablecell',command:'cellInsertAfter',order:10},tablecell_delete:{label:H.cell.deleteCell,group:'tablecell',command:'cellDelete',order:15},tablecell_merge:{label:H.cell.merge,group:'tablecell',command:'cellMerge',order:16},tablecell_merge_right:{label:H.cell.mergeRight,group:'tablecell',command:'cellMergeRight',order:17},tablecell_merge_down:{label:H.cell.mergeDown,group:'tablecell',command:'cellMergeDown',order:18},tablecell_split_horizontal:{label:H.cell.splitHorizontal,group:'tablecell',command:'cellHorizontalSplit',order:19},tablecell_split_vertical:{label:H.cell.splitVertical,group:'tablecell',command:'cellVerticalSplit',order:20},tablecell_properties:{label:H.cell.title,group:'tablecellproperties',command:'cellProperties',order:21},tablerow:{label:H.row.menu,group:'tablerow',order:1,getItems:function(){return{tablerow_insertBefore:2,tablerow_insertAfter:2,tablerow_delete:2};}},tablerow_insertBefore:{label:H.row.insertBefore,group:'tablerow',command:'rowInsertBefore',order:5},tablerow_insertAfter:{label:H.row.insertAfter,group:'tablerow',command:'rowInsertAfter',order:10},tablerow_delete:{label:H.row.deleteRow,group:'tablerow',command:'rowDelete',order:15},tablecolumn:{label:H.column.menu,group:'tablecolumn',order:1,getItems:function(){return{tablecolumn_insertBefore:2,tablecolumn_insertAfter:2,tablecolumn_delete:2}; +}},tablecolumn_insertBefore:{label:H.column.insertBefore,group:'tablecolumn',command:'columnInsertBefore',order:5},tablecolumn_insertAfter:{label:H.column.insertAfter,group:'tablecolumn',command:'columnInsertAfter',order:10},tablecolumn_delete:{label:H.column.deleteColumn,group:'tablecolumn',command:'columnDelete',order:15}});if(G.contextMenu)G.contextMenu.addListener(function(I,J){if(!I||I.isReadOnly())return null;while(I){if(I.getName() in F)return{tablecell:2,tablerow:2,tablecolumn:2};I=I.getParent();}return null;});},getSelectedCells:n};j.add('tabletools',j.tabletools);})();e.buildTableMap=function(m){var n=m.$.rows,o=-1,p=[];for(var q=0;qp&&(!s||!t||vt){s=v;t=u;}}else{if(q&&u==p){s=v;break;}if(ut)){s=v;t=u;}}}if(s)s.focus();};(function(){j.add('templates',{requires:['dialog'],init:function(o){a.dialog.add('templates',a.getUrl(this.path+'dialogs/templates.js'));o.addCommand('templates',new a.dialogCommand('templates'));o.ui.addButton('Templates',{label:o.lang.templates.button,command:'templates'});}});var m={},n={};a.addTemplates=function(o,p){m[o]=p;};a.getTemplates=function(o){return m[o];};a.loadTemplates=function(o,p){var q=[];for(var r=0,s=o.length;r':' style="display:none">');t.push('',o.lang.toolbars,'');var w=o.toolbox.toolbars,x=o.config.toolbar instanceof Array?o.config.toolbar:o.config['toolbar_'+o.config.toolbar];for(var y=0;y');v=0;}if(C==='/'){t.push('
');continue;}D=C.items||C;for(var E=0;E');B&&t.push('',B,'');t.push('');var I=w.push(A)-1;if(I>0){A.previous=w[I-1];A.previous.next=A;}}if(H){if(!v){t.push('');v=1;}}else if(v){t.push('');v=0;}var J=F.render(o,t);I=A.items.push(J)-1;if(I>0){J.previous=A.items[I-1];J.previous.next=J;}J.toolbar=A;J.onkey=q;J.onfocus=function(){if(!o.toolbox.focusCommandExecuted)o.focus();};}}if(v){t.push('');v=0;}if(A)t.push('');}t.push('');if(o.config.toolbarCanCollapse){var K=e.addFunction(function(){o.execCommand('toolbarCollapse');});o.on('destroy',function(){e.removeFunction(K);});var L=e.getNextId();o.addCommand('toolbarCollapse',{readOnly:1,exec:function(M){var N=a.document.getById(L),O=N.getPrevious(),P=M.getThemeSpace('contents'),Q=O.getParent(),R=parseInt(P.$.style.height,10),S=Q.$.offsetHeight,T=!O.isVisible();if(!T){O.hide();N.addClass('cke_toolbox_collapser_min');N.setAttribute('title',M.lang.toolbarExpand);}else{O.show();N.removeClass('cke_toolbox_collapser_min');N.setAttribute('title',M.lang.toolbarCollapse);}N.getFirst().setText(T?'▲':'◀');var U=Q.$.offsetHeight-S;P.setStyle('height',R-U+'px');M.fire('resize');},modes:{wysiwyg:1,source:1}});t.push('','','');}r.data.html+=t.join('');}});o.on('destroy',function(){var r,s=0,t,u,v;r=this.toolbox.toolbars;for(;s');return{};}};}});}});})();a.UI_SEPARATOR='separator';i.toolbarLocation='top';i.toolbar_Basic=[['Bold','Italic','-','NumberedList','BulletedList','-','Link','Unlink','-','About']];i.toolbar_Full=[{name:'document',items:['Source','-','Save','NewPage','DocProps','Preview','Print','-','Templates']},{name:'clipboard',items:['Cut','Copy','Paste','PasteText','PasteFromWord','-','Undo','Redo']},{name:'editing',items:['Find','Replace','-','SelectAll','-','SpellChecker','Scayt']},{name:'forms',items:['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField']},'/',{name:'basicstyles',items:['Bold','Italic','Underline','Strike','Subscript','Superscript','-','RemoveFormat']},{name:'paragraph',items:['NumberedList','BulletedList','-','Outdent','Indent','-','Blockquote','CreateDiv','-','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock','-','BidiLtr','BidiRtl']},{name:'links',items:['Link','Unlink','Anchor']},{name:'insert',items:['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak','Iframe']},'/',{name:'styles',items:['Styles','Format','Font','FontSize']},{name:'colors',items:['TextColor','BGColor']},{name:'tools',items:['Maximize','ShowBlocks','-','About']}];i.toolbar='Full';i.toolbarCanCollapse=true;(function(){j.add('undo',{requires:['selection','wysiwygarea'],init:function(s){var t=new o(s),u=s.addCommand('undo',{exec:function(){if(t.undo()){s.selectionChange();this.fire('afterUndo');}},state:0,canUndo:false}),v=s.addCommand('redo',{exec:function(){if(t.redo()){s.selectionChange();this.fire('afterRedo');}},state:0,canUndo:false});t.onChange=function(){u.setState(t.undoable()?2:0);v.setState(t.redoable()?2:0);};function w(x){if(t.enabled&&x.data.command.canUndo!==false)t.save();};s.on('beforeCommandExec',w);s.on('afterCommandExec',w);s.on('saveSnapshot',function(x){t.save(x.data&&x.data.contentOnly);});s.on('contentDom',function(){s.document.on('keydown',function(x){if(!x.data.$.ctrlKey&&!x.data.$.metaKey)t.type(x);});});s.on('beforeModeUnload',function(){s.mode=='wysiwyg'&&t.save(true);});s.on('mode',function(){t.enabled=s.readOnly?false:s.mode=='wysiwyg';t.onChange();});s.ui.addButton('Undo',{label:s.lang.undo,command:'undo'});s.ui.addButton('Redo',{label:s.lang.redo,command:'redo'}); +s.resetUndo=function(){t.reset();s.fire('saveSnapshot');};s.on('updateSnapshot',function(){if(t.currentImage)t.update();});}});j.undo={};var m=j.undo.Image=function(s){this.editor=s;s.fire('beforeUndoImage');var t=s.getSnapshot(),u=t&&s.getSelection();c&&t&&(t=t.replace(/\s+data-cke-expando=".*?"/g,''));this.contents=t;this.bookmarks=u&&u.createBookmarks2(true);s.fire('afterUndoImage');},n=/\b(?:href|src|name)="[^"]*?"/gi;m.prototype={equals:function(s,t){var u=this.contents,v=s.contents;if(c&&(b.ie7Compat||b.ie6Compat)){u=u.replace(n,'');v=v.replace(n,'');}if(u!=v)return false;if(t)return true;var w=this.bookmarks,x=s.bookmarks;if(w||x){if(!w||!x||w.length!=x.length)return false;for(var y=0;y25){this.save(false,null,false);this.modifiersCount=1;}}else if(!y){this.modifiersCount=0;this.typesCount++;if(this.typesCount>25){this.save(false,null,false);this.typesCount=1;}}},reset:function(){var s=this;s.lastKeystroke=0;s.snapshots=[];s.index=-1;s.limit=s.editor.config.undoStackSize||20;s.currentImage=null;s.hasUndo=false;s.hasRedo=false;s.resetType();},resetType:function(){var s=this;s.typing=false;delete s.lastKeystroke;s.typesCount=0;s.modifiersCount=0;},fireChange:function(){var s=this;s.hasUndo=!!s.getNextImage(true);s.hasRedo=!!s.getNextImage(false);s.resetType();s.onChange();},save:function(s,t,u){var w=this;var v=w.snapshots;if(!t)t=new m(w.editor);if(t.contents===false)return false;if(w.currentImage&&t.equals(w.currentImage,s))return false;v.splice(w.index+1,v.length-w.index-1);if(v.length==w.limit)v.shift(); +w.index=v.push(t)-1;w.currentImage=t;if(u!==false)w.fireChange();return true;},restoreImage:function(s){var w=this;var t=w.editor,u;if(s.bookmarks){t.focus();u=t.getSelection();}w.editor.loadSnapshot(s.contents);if(s.bookmarks)u.selectBookmarks(s.bookmarks);else if(c){var v=w.editor.document.getBody().$.createTextRange();v.collapse(true);v.select();}w.index=s.index;w.update();w.fireChange();},getNextImage:function(s){var x=this;var t=x.snapshots,u=x.currentImage,v,w;if(u)if(s)for(w=x.index-1;w>=0;w--){v=t[w];if(!u.equals(v,true)){v.index=w;return v;}}else for(w=x.index+1;w]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi,n=d.walker.whitespaces(true);function o(C){return C.isBlockBoundary()&&f.$empty[C.getName()];};function p(C){return function(D){if(this.mode=='wysiwyg'){this.focus();var E=this.getSelection(),F=E.isLocked;F&&E.unlock();this.fire('saveSnapshot');C.call(this,D.data);F&&this.getSelection().lock();e.setTimeout(function(){this.fire('saveSnapshot');},0,this);}};};function q(C){var L=this;if(L.dataProcessor)C=L.dataProcessor.toHtml(C);if(!C)return;var D=L.getSelection(),E=D.getRanges()[0];if(E.checkReadOnly())return;if(b.opera){var F=new d.elementPath(E.startContainer);if(F.block){var G=a.htmlParser.fragment.fromHtml(C,false).children;for(var H=0,I=G.length;H'+O+'';});G=G.replace(/\n/g,'
');if(!(F||c))G=G.replace(new RegExp('
(?=)'),function(M){return e.repeat(M,2);});if(b.gecko||b.webkit){var I=new d.elementPath(D.getStartElement()),J=[];for(var K=0;K/));else if(L in f.$block)break;}G=J.join('')+G;}q.call(this,G);};function s(C){var D=this.getSelection(),E=D.getRanges(),F=C.getName(),G=f.$block[F],H=D.isLocked;if(H)D.unlock();var I,J,K,L;for(var M=E.length-1;M>=0;M--){I=E[M];if(!I.checkReadOnly()){I.deleteContents(1);J=!M&&C||C.clone(1);var N,O;if(G)while((N=I.getCommonAncestor(0,1))&&(O=f[N.getName()])&&!(O&&O[F])){if(N.getName() in f.span)I.splitElement(N);else if(I.checkStartOfBlock()&&I.checkEndOfBlock()){I.setStartBefore(N);I.collapse(true);N.remove();}else I.splitBlock();}I.insertNode(J);if(!K)K=J;}}if(K){I.moveToPosition(K,4);if(G){var P=K.getNext(n),Q=P&&P.type==1&&P.getName();if(Q&&f.$block[Q]&&f[Q]['#'])I.moveToElementEditStart(P);}}D.selectRanges([I]);if(H)this.getSelection().lock();};function t(C){if(!C.checkDirty())setTimeout(function(){C.resetDirty();},0);};var u=d.walker.whitespaces(true),v=d.walker.bookmark(false,true);function w(C){return u(C)&&v(C);};function x(C){return C.type==3&&e.trim(C.getText()).match(/^(?: |\xa0)$/);};function y(C){if(C.isLocked){C.unlock();setTimeout(function(){C.lock();},0);}};function z(C){return C.getOuterHtml().match(m);};u=d.walker.whitespaces(true);function A(C){var D=C.window,E=C.document,F=C.document.getBody(),G=F.getFirst(),H=F.getChildren().count();if(!H||H==1&&G.type==1&&G.hasAttribute('_moz_editor_bogus_node')){t(C);var I=C.element.getDocument(),J=I.getDocumentElement(),K=J.$.scrollTop,L=J.$.scrollLeft,M=E.$.createEvent('KeyEvents');M.initKeyEvent('keypress',true,true,D.$,false,false,false,false,0,32);E.$.dispatchEvent(M);if(K!=J.$.scrollTop||L!=J.$.scrollLeft)I.getWindow().$.scrollTo(L,K);H&&F.getFirst().remove();E.getBody().appendBogus();var N=new d.range(E);N.setStartAt(F,1);N.select();}};function B(C){var D=C.editor,E=C.data.path,F=E.blockLimit,G=C.data.selection,H=G.getRanges()[0],I=D.document.getBody(),J=D.config.enterMode; +if(b.gecko){A(D);var K=E.block||E.blockLimit,L=K&&K.getLast(w);if(K&&K.isBlockBoundary()&&!(L&&L.type==1&&L.isBlockBoundary())&&!K.is('pre')&&!K.getBogus())K.appendBogus();}if(D.config.autoParagraph!==false&&J!=2&&H.collapsed&&F.getName()=='body'&&!E.block){var M=H.fixBlock(true,D.config.enterMode==3?'div':'p');if(c){var N=M.getFirst(w);N&&x(N)&&N.remove();}if(z(M)){var O=M.getNext(u);if(O&&O.type==1&&!o(O)){H.moveToElementEditStart(O);M.remove();}else{O=M.getPrevious(u);if(O&&O.type==1&&!o(O)){H.moveToElementEditEnd(O);M.remove();}}}H.select();C.cancel();}var P=new d.range(D.document);P.moveToElementEditEnd(D.document.getBody());var Q=new d.elementPath(P.startContainer);if(!Q.blockLimit.is('body')){var R;if(J!=2)R=I.append(D.document.createElement(J==1?'p':'div'));else R=I;if(!c)R.appendBogus();}};j.add('wysiwygarea',{requires:['editingblock'],init:function(C){var D=C.config.enterMode!=2&&C.config.autoParagraph!==false?C.config.enterMode==3?'div':'p':false,E=C.lang.editorTitle.replace('%1',C.name),F=a.document.getWindow(),G;C.on('editingBlockReady',function(){var L,M,N,O,P,Q,R,S=b.isCustomDomain(),T=function(W){if(M)M.remove();var X='document.open();'+(S?'document.domain="'+document.domain+'";':'')+'document.close();';X=b.air?'javascript:void(0)':c?'javascript:void(function(){'+encodeURIComponent(X)+'}())':'';M=h.createFromHtml('');if(document.location.protocol=='chrome:')a.event.useCapture=true;M.on('load',function(Y){P=1;Y.removeListener();var Z=M.getFrameDocument();Z.write(W);b.air&&V(Z.getWindow().$);});if(document.location.protocol=='chrome:')a.event.useCapture=false;L.append(M);if(b.webkit){R=function(){M.hide();M.setSize('width',L.getSize('width'));M.show();};F.on('resize',R);}};G=e.addFunction(V);var U='';function V(W){if(!P)return;P=0;C.fire('ariaWidget',M);var X=W.document,Y=X.body,Z=X.getElementById('cke_actscrpt');Z&&Z.parentNode.removeChild(Z);Y.spellcheck=!C.config.disableNativeSpellChecker;var aa=!C.readOnly;if(c){Y.hideFocus=true;Y.disabled=true;Y.contentEditable=aa;Y.removeAttribute('disabled');}else setTimeout(function(){if(b.gecko&&b.version>=10900||b.opera)X.$.body.contentEditable=aa;else if(b.webkit)X.$.body.parentNode.contentEditable=aa; +else X.$.designMode=aa?'off':'on';},0);aa&&b.gecko&&e.setTimeout(A,0,null,C);W=C.window=new d.window(W);X=C.document=new g(X);aa&&X.on('dblclick',function(af){var ag=af.data.getTarget(),ah={element:ag,dialog:''};C.fire('doubleclick',ah);ah.dialog&&C.openDialog(ah.dialog);});c&&X.on('click',function(af){var ag=af.data.getTarget();if(ag.is('input')){var ah=ag.getAttribute('type');if(ah=='submit'||ah=='reset')af.data.preventDefault();}});if(!(c||b.opera))X.on('mousedown',function(af){var ag=af.data.getTarget();if(ag.is('img','hr','input','textarea','select'))C.getSelection().selectElement(ag);});if(b.gecko)X.on('mouseup',function(af){if(af.data.$.button==2){var ag=af.data.getTarget();if(!ag.getOuterHtml().replace(m,'')){var ah=new d.range(X);ah.moveToElementEditStart(ag);ah.select(true);}}});X.on('click',function(af){af=af.data;if(af.getTarget().is('a')&&af.$.button!=2)af.preventDefault();});if(b.webkit){X.on('mousedown',function(){ac=1;});X.on('click',function(af){if(af.data.getTarget().is('input','select'))af.data.preventDefault();});X.on('mouseup',function(af){if(af.data.getTarget().is('input','textarea'))af.data.preventDefault();});}var ab=c?M:W;ab.on('blur',function(){C.focusManager.blur();});var ac;ab.on('focus',function(){var af=C.document;if(aa&&b.gecko&&b.version>=10900)K();else if(b.opera)af.getBody().focus();else if(b.webkit)if(!ac){C.document.getDocumentElement().focus();ac=1;}C.focusManager.focus();});var ad=C.keystrokeHandler;ad.blockedKeystrokes[8]=!aa;ad.attach(X);X.getDocumentElement().addClass(X.$.compatMode);aa&&X.on('keydown',function(af){var ag=af.data.getKeystroke();if(ag in {8:1,46:1}){var ah=C.getSelection(),ai=ah.getSelectedElement(),aj=ah.getRanges()[0];if(ai){C.fire('saveSnapshot');aj.moveToPosition(ai,3);ai.remove();aj.select();C.fire('saveSnapshot');af.data.preventDefault();return;}}if(ag==33||ag==34)if(b.gecko){var ak=X.getBody();if(W.$.innerHeight>ak.$.offsetHeight){aj=new d.range(X);aj[ag==33?'moveToElementEditStart':'moveToElementEditEnd'](ak);aj.select();af.data.preventDefault();}}});if(c&&X.$.compatMode=='CSS1Compat'){var ae={33:1,34:1};X.on('keydown',function(af){if(af.data.getKeystroke() in ae)setTimeout(function(){C.getSelection().scrollIntoView();},0);});}if(c&&C.config.enterMode!=1)X.on('selectionchange',function(){var af=X.getBody(),ag=C.getSelection(),ah=ag&&ag.getRanges()[0];if(ah&&af.getHtml().match(/^

 <\/p>$/i)&&ah.startContainer.equals(af))setTimeout(function(){ah=C.getSelection().getRanges()[0];if(!ah.startContainer.equals('body')){af.getFirst().remove(1); +ah.moveToElementEditEnd(af);ah.select(1);}},0);});if(C.contextMenu)C.contextMenu.addTarget(X,C.config.browserContextMenuOnCtrl!==false);setTimeout(function(){C.fire('contentDom');if(Q){C.mode='wysiwyg';C.fire('mode',{previousMode:C._.previousMode});Q=false;}N=false;if(O){C.focus();O=false;}setTimeout(function(){C.fire('dataReady');},0);try{C.document.$.execCommand('enableInlineTableEditing',false,!C.config.disableNativeTableHandles);}catch(af){}if(C.config.disableObjectResizing)try{C.document.$.execCommand('enableObjectResizing',false,false);}catch(ag){C.document.getBody().on(c?'resizestart':'resize',function(ah){ah.data.preventDefault();});}if(c)setTimeout(function(){if(C.document){var ah=C.document.$.body;ah.runtimeStyle.marginBottom='0px';ah.runtimeStyle.marginBottom='';}},1000);},0);};C.addMode('wysiwyg',{load:function(W,X,Y){L=W;if(c&&b.quirks)W.setStyle('position','relative');C.mayBeDirty=true;Q=true;if(Y)this.loadSnapshotData(X);else this.loadData(X);},loadData:function(W){N=true;C._.dataStore={id:1};var X=C.config,Y=X.fullPage,Z=X.docType,aa='';!Y&&(aa=e.buildStyleHtml(C.config.contentsCss)+aa);var ab=X.baseHref?'':'';if(Y)W=W.replace(/]*>/i,function(ac){C.docType=Z=ac;return '';}).replace(/<\?xml\s[^\?]*\?>/i,function(ac){C.xmlDeclaration=ac;return '';});if(C.dataProcessor)W=C.dataProcessor.toHtml(W,D);if(Y){if(!/]/.test(W))W=''+W;if(!/]/.test(W))W=''+W+'';if(!/]/.test(W))W=W.replace(/]*>/,'$&');else if(!/]/.test(W))W=W.replace(/]*>/,'$&');ab&&(W=W.replace(//,'$&'+ab));W=W.replace(/<\/head\s*>/,aa+'$&');W=Z+W;}else W=X.docType+''+''+''+E+''+ab+aa+''+''+W+'';if(b.gecko)W=W.replace(/
(?=\s*<\/(:?html|body)>)/,'$&
');W+=U;this.onDispose();T(W);},getData:function(){var W=C.config,X=W.fullPage,Y=X&&C.docType,Z=X&&C.xmlDeclaration,aa=M.getFrameDocument(),ab=X?aa.getDocumentElement().getOuterHtml():aa.getBody().getHtml();if(b.gecko)ab=ab.replace(/
(?=\s*(:?$|<\/body>))/,'');if(C.dataProcessor)ab=C.dataProcessor.toDataFormat(ab,D);if(W.ignoreEmptyParagraph)ab=ab.replace(m,function(ac,ad){return ad; +});if(Z)ab=Z+'\n'+ab;if(Y)ab=Y+'\n'+ab;return ab;},getSnapshotData:function(){return M.getFrameDocument().getBody().getHtml();},loadSnapshotData:function(W){M.getFrameDocument().getBody().setHtml(W);},onDispose:function(){if(!C.document)return;C.document.getDocumentElement().clearCustomData();C.document.getBody().clearCustomData();C.window.clearCustomData();C.document.clearCustomData();M.clearCustomData();M.remove();},unload:function(W){this.onDispose();if(R)F.removeListener('resize',R);C.window=C.document=M=L=O=null;C.fire('contentDomUnload');},focus:function(){var W=C.window;if(N)O=true;else if(W){b.air?setTimeout(function(){W.focus();},0):W.focus();C.selectionChange();}}});C.on('insertHtml',p(q),null,null,20);C.on('insertElement',p(s),null,null,20);C.on('insertText',p(r),null,null,20);C.on('selectionChange',function(W){if(C.readOnly)return;var X=C.getSelection();if(X&&!X.isLocked){var Y=C.checkDirty();C.fire('saveSnapshot',{contentOnly:1});B.call(this,W);C.fire('updateSnapshot');!Y&&C.resetDirty();}},null,null,1);});var H;C.on('contentDom',function(){var L=C.document.getElementsByTag('title').getItem(0);L.data('cke-title',C.document.$.title);C.document.$.title=E;});C.on('readOnly',function(){if(C.mode=='wysiwyg'){var L=C.getMode();L.loadData(L.getData());}});if(a.document.$.documentMode>=8){C.addCss('html.CSS1Compat [contenteditable=false]{ min-height:0 !important;}');var I=[];for(var J in f.$removeEmpty)I.push('html.CSS1Compat '+J+'[contenteditable=false]');C.addCss(I.join(',')+'{ display:inline-block;}');}else if(b.gecko){C.addCss('html { height: 100% !important; }');C.addCss('img:-moz-broken { -moz-force-broken-image-icon : 1;\twidth : 24px; height : 24px; }');}else if(c&&b.version<8&&C.config.contentsLangDirection=='ltr')C.addCss('body{margin-right:0;}');C.addCss('html {\t_overflow-y: scroll; cursor: text;\t*cursor:auto;}');C.addCss('img, input, textarea { cursor: default;}');function K(L){if(C.readOnly)return;e.tryThese(function(){C.document.$.designMode='on';setTimeout(function(){C.document.$.designMode='off';if(a.currentInstance==C)C.document.getBody().focus();},50);},function(){C.document.$.designMode='off';var M=C.document.getBody();M.setAttribute('contentEditable',false);M.setAttribute('contentEditable',true);!L&&K(1);});};C.on('insertElement',function(L){var M=L.data;if(M.type==1&&(M.is('input')||M.is('textarea'))){var N=M.getAttribute('contenteditable')=='false';if(!N){M.data('cke-editable',M.hasAttribute('contenteditable')?'true':'1');M.setAttribute('contenteditable',false); +}}});}});if(b.gecko)(function(){var C=document.body;if(!C)window.addEventListener('load',arguments.callee,false);else{var D=C.getAttribute('onpageshow');C.setAttribute('onpageshow',(D?D+';':'')+'event.persisted && (function(){'+'var allInstances = CKEDITOR.instances, editor, doc;'+'for ( var i in allInstances )'+'{'+'\teditor = allInstances[ i ];'+'\tdoc = editor.document;'+'\tif ( doc )'+'\t{'+'\t\tdoc.$.designMode = "off";'+'\t\tdoc.$.designMode = "on";'+'\t}'+'}'+'})();');}})();})();i.disableObjectResizing=false;i.disableNativeTableHandles=true;i.disableNativeSpellChecker=true;i.ignoreEmptyParagraph=true;j.add('wsc',{requires:['dialog'],init:function(m){var n='checkspell',o=m.addCommand(n,new a.dialogCommand(n));o.modes={wysiwyg:!b.opera&&!b.air&&document.domain==window.location.hostname};m.ui.addButton('SpellChecker',{label:m.lang.spellCheck.toolbar,command:n});a.dialog.add(n,this.path+'dialogs/wsc.js');}});i.wsc_customerId=i.wsc_customerId||'1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk';i.wsc_customLoaderScript=i.wsc_customLoaderScript||null;a.DIALOG_RESIZE_NONE=0;a.DIALOG_RESIZE_WIDTH=1;a.DIALOG_RESIZE_HEIGHT=2;a.DIALOG_RESIZE_BOTH=3;(function(){var m=e.cssLength;function n(S){return!!this._.tabs[S][0].$.offsetHeight;};function o(){var W=this;var S=W._.currentTabId,T=W._.tabIdList.length,U=e.indexOf(W._.tabIdList,S)+T;for(var V=U-1;V>U-T;V--){if(n.call(W,W._.tabIdList[V%T]))return W._.tabIdList[V%T];}return null;};function p(){var W=this;var S=W._.currentTabId,T=W._.tabIdList.length,U=e.indexOf(W._.tabIdList,S);for(var V=U+1;V1){ah._.tabBarMode=true;ah._.tabs[ah._.currentTabId][0].focus();aa=1;}else if((as==37||as==39)&&ah._.tabBarMode){av=as==(at?39:37)?o.call(ah):p.call(ah);ah.selectPage(av);ah._.tabs[av][0].focus();aa=1;}else if((as==13||as==32)&&ah._.tabBarMode){aw.selectPage(aw._.currentTabId);aw._.tabBarMode=false;aw._.currentFocusIndex=-1;ak(1);aa=1;}if(aa){ar.stop();ar.data.preventDefault();}};function am(ar){aa&&ar.data.preventDefault();};var an=this._.element;this.on('show',function(){an.on('keydown',al,this,null,0);if(b.opera||b.gecko&&b.mac)an.on('keypress',am,this);});this.on('hide',function(){an.removeListener('keydown',al);if(b.opera||b.gecko&&b.mac)an.removeListener('keypress',am);ai(function(ar){s.apply(ar);});});this.on('iframeAdded',function(ar){var as=new g(ar.data.iframe.$.contentWindow.document);as.on('keydown',al,this,null,0);});this.on('show',function(){var av=this;aj();if(S.config.dialog_startupFocusTab&&ah._.pageCount>1){ah._.tabBarMode=true;ah._.tabs[ah._.currentTabId][0].focus();}else if(!av._.hasFocus){av._.currentFocusIndex=-1;if(U.onFocus){var ar=U.onFocus.call(av);ar&&ar.focus();}else ak(1);if(av._.editor.mode=='wysiwyg'&&c){var as=S.document.$.selection,at=as.createRange();if(at)if(at.parentElement&&at.parentElement().ownerDocument==S.document.$||at.item&&at.item(0).ownerDocument==S.document.$){var au=document.body.createTextRange();au.moveToElementText(av.getElement().getFirst().$);au.collapse(true);au.select();}}}},this,null,4294967295);if(b.ie6Compat)this.on('load',function(ar){var as=this.getElement(),at=as.getFirst();at.remove();at.appendTo(as);},this);A(this);B(this);new d.text(U.title,a.document).appendTo(this.parts.title);for(Z=0;Z0?U:0)+'px'};ab[X?'right':'left']=(T>0?T:0)+'px';W.setStyles(ab);V&&(ac._.moved=1);};})(),getPosition:function(){return e.extend({},this._.position);},show:function(){var S=this._.element,T=this.definition;if(!(S.getParent()&&S.getParent().equals(a.document.getBody())))S.appendTo(a.document.getBody());else S.setStyle('display','block');if(b.gecko&&b.version<10900){var U=this.parts.dialog;U.setStyle('position','absolute');setTimeout(function(){U.setStyle('position','fixed');},0);}this.resize(this._.contentSize&&this._.contentSize.width||T.width||T.minWidth,this._.contentSize&&this._.contentSize.height||T.height||T.minHeight);this.reset();this.selectPage(this.definition.contents[0].id); +if(a.dialog._.currentZIndex===null)a.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex;this._.element.getFirst().setStyle('z-index',a.dialog._.currentZIndex+=10);if(a.dialog._.currentTop===null){a.dialog._.currentTop=this;this._.parentDialog=null;G(this._.editor);}else{this._.parentDialog=a.dialog._.currentTop;var V=this._.parentDialog.getElement().getFirst();V.$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/2);a.dialog._.currentTop=this;}S.on('keydown',K);S.on(b.opera?'keypress':'keyup',L);for(var W in {keyup:1,keydown:1,keypress:1})S.on(W,R);M(this,this,'\x1b',null,function(){var X=this.getButton('cancel');if(X)X.click();else if(this.fire('cancel',{hide:true}).hide!==false)this.hide();});this._.hasFocus=false;e.setTimeout(function(){this.layout();this.parts.dialog.setStyle('visibility','');this.fireOnce('load',{});k.fire('ready',this);this.fire('show',{});this._.editor.fire('dialogShow',this);this.foreach(function(X){X.setInitValue&&X.setInitValue();});},100,this);},layout:function(){var U=this;var S=a.document.getWindow().getViewPaneSize(),T=U.getSize();U.move(U._.moved?U._.position.x:(S.width-T.width)/2,U._.moved?U._.position.y:(S.height-T.height)/2);},foreach:function(S){var V=this;for(var T in V._.contents)for(var U in V._.contents[T])S.call(V,V._.contents[T][U]);return V;},reset:(function(){var S=function(T){if(T.reset)T.reset(1);};return function(){this.foreach(S);return this;};})(),setupContent:function(){var S=arguments;this.foreach(function(T){if(T.setup)T.setup.apply(T,S);});},commitContent:function(){var S=arguments;this.foreach(function(T){if(c&&this._.currentFocusIndex==T.focusIndex)T.getInputElement().$.blur();if(T.commit)T.commit.apply(T,S);});},hide:function(){if(!this.parts.dialog.isVisible())return;this.fire('hide',{});this._.editor.fire('dialogHide',this);var S=this._.element;S.setStyle('display','none');this.parts.dialog.setStyle('visibility','hidden');N(this);while(a.dialog._.currentTop!=this)a.dialog._.currentTop.hide();if(!this._.parentDialog)H();else{var T=this._.parentDialog.getElement().getFirst();T.setStyle('z-index',parseInt(T.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2));}a.dialog._.currentTop=this._.parentDialog;if(!this._.parentDialog){a.dialog._.currentZIndex=null;S.removeListener('keydown',K);S.removeListener(b.opera?'keypress':'keyup',L);for(var U in {keyup:1,keydown:1,keypress:1})S.removeListener(U,R);var V=this._.editor;V.focus();if(V.mode=='wysiwyg'&&c){var W=V.getSelection(); +W&&W.unlock(true);}}else a.dialog._.currentZIndex-=10;delete this._.parentDialog;this.foreach(function(X){X.resetInitValue&&X.resetInitValue();});},addPage:function(S){var ae=this;var T=[],U=S.label?' title="'+e.htmlEncode(S.label)+'"':'',V=S.elements,W=a.dialog._.uiElementBuilders.vbox.build(ae,{type:'vbox',className:'cke_dialog_page_contents',children:S.elements,expand:!!S.expand,padding:S.padding,style:S.style||'width: 100%;height:100%'},T),X=h.createFromHtml(T.join(''));X.setAttribute('role','tabpanel');var Y=b,Z='cke_'+S.id+'_'+e.getNextNumber(),aa=h.createFromHtml(['0?' cke_last':'cke_first',U,!!S.hidden?' style="display:none"':'',' id="',Z,'"',Y.gecko&&Y.version>=10900&&!Y.hc?'':' href="javascript:void(0)"',' tabIndex="-1"',' hidefocus="true"',' role="tab">',S.label,''].join(''));X.setAttribute('aria-labelledby',Z);ae._.tabs[S.id]=[aa,X];ae._.tabIdList.push(S.id);!S.hidden&&ae._.pageCount++;ae._.lastTab=aa;ae.updateStyle();var ab=ae._.contents[S.id]={},ac,ad=W.getChild();while(ac=ad.shift()){ab[ac.id]=ac;if(typeof ac.getChild=='function')ad.push.apply(ad,ac.getChild());}X.setAttribute('name',S.id);X.appendTo(ae.parts.contents);aa.unselectable();ae.parts.tabs.append(aa);if(S.accessKey){M(ae,ae,'CTRL+'+S.accessKey,P,O);ae._.accessKeyMap['CTRL+'+S.accessKey]=S.id;}},selectPage:function(S){if(this._.currentTabId==S)return;if(this.fire('selectPage',{page:S,currentPage:this._.currentTabId})===true)return;for(var T in this._.tabs){var U=this._.tabs[T][0],V=this._.tabs[T][1];if(T!=S){U.removeClass('cke_dialog_tab_selected');V.hide();}V.setAttribute('aria-hidden',T!=S);}var W=this._.tabs[S];W[0].addClass('cke_dialog_tab_selected');if(b.ie6Compat||b.ie7Compat){q(W[1]);W[1].show();setTimeout(function(){q(W[1],1);},0);}else W[1].show();this._.currentTabId=S;this._.currentTabIndex=e.indexOf(this._.tabIdList,S);},updateStyle:function(){this.parts.dialog[(this._.pageCount===1?'add':'remove')+'Class']('cke_single_page');},hidePage:function(S){var U=this;var T=U._.tabs[S]&&U._.tabs[S][0];if(!T||U._.pageCount==1||!T.isVisible())return;else if(S==U._.currentTabId)U.selectPage(o.call(U));T.hide();U._.pageCount--;U.updateStyle();},showPage:function(S){var U=this;var T=U._.tabs[S]&&U._.tabs[S][0];if(!T)return;T.show();U._.pageCount++;U.updateStyle();},getElement:function(){return this._.element;},getName:function(){return this._.name;},getContentElement:function(S,T){var U=this._.contents[S];return U&&U[T];},getValueOf:function(S,T){return this.getContentElement(S,T).getValue(); +},setValueOf:function(S,T,U){return this.getContentElement(S,T).setValue(U);},getButton:function(S){return this._.buttons[S];},click:function(S){return this._.buttons[S].click();},disableButton:function(S){return this._.buttons[S].disable();},enableButton:function(S){return this._.buttons[S].enable();},getPageCount:function(){return this._.pageCount;},getParentEditor:function(){return this._.editor;},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement();},addFocusable:function(S,T){var V=this;if(typeof T=='undefined'){T=V._.focusList.length;V._.focusList.push(new t(V,S,T));}else{V._.focusList.splice(T,0,new t(V,S,T));for(var U=T+1;Uad.width-ac.width-X)ai=ad.width-ac.width+(W.lang.dir=='rtl'?0:Y[1]);else ai=U.x;if(U.y+Y[0]ad.height-ac.height-X)aj=ad.height-ac.height+Y[2];else aj=U.y;S.move(ai,aj,1);ab.data.preventDefault();};function aa(ab){a.document.removeListener('mousemove',Z);a.document.removeListener('mouseup',aa);if(b.ie6Compat){var ac=E.getChild(0).getFrameDocument();ac.removeListener('mousemove',Z);ac.removeListener('mouseup',aa);}};S.parts.title.on('mousedown',function(ab){T={x:ab.data.$.screenX,y:ab.data.$.screenY};a.document.on('mousemove',Z);a.document.on('mouseup',aa);U=S.getPosition();if(b.ie6Compat){var ac=E.getChild(0).getFrameDocument();ac.on('mousemove',Z);ac.on('mouseup',aa);}ab.data.preventDefault();},S);};function B(S){var T=S.definition,U=T.resizable;if(U==0)return;var V=S.getParentEditor(),W,X,Y,Z,aa,ab,ac=e.addFunction(function(af){aa=S.getSize();var ag=S.parts.contents,ah=ag.$.getElementsByTagName('iframe').length;if(ah){ab=h.createFromHtml('

');ag.append(ab);}X=aa.height-S.parts.contents.getSize('height',!(b.gecko||b.opera||c&&b.quirks));W=aa.width-S.parts.contents.getSize('width',1);Z={x:af.screenX,y:af.screenY};Y=a.document.getWindow().getViewPaneSize();a.document.on('mousemove',ad);a.document.on('mouseup',ae);if(b.ie6Compat){var ai=E.getChild(0).getFrameDocument();ai.on('mousemove',ad);ai.on('mouseup',ae);}af.preventDefault&&af.preventDefault(); +});S.on('load',function(){var af='';if(U==1)af=' cke_resizer_horizontal';else if(U==2)af=' cke_resizer_vertical';var ag=h.createFromHtml('
');S.parts.footer.append(ag,1);});V.on('destroy',function(){e.removeFunction(ac);});function ad(af){var ag=V.lang.dir=='rtl',ah=(af.data.$.screenX-Z.x)*(ag?-1:1),ai=af.data.$.screenY-Z.y,aj=aa.width,ak=aa.height,al=aj+ah*(S._.moved?1:2),am=ak+ai*(S._.moved?1:2),an=S._.element.getFirst(),ao=ag&&an.getComputedStyle('right'),ap=S.getPosition();if(ap.y+am>Y.height)am=Y.height-ap.y;if((ag?ao:ap.x)+al>Y.width)al=Y.width-(ag?ao:ap.x);if(U==1||U==3)aj=Math.max(T.minWidth||0,al-W);if(U==2||U==3)ak=Math.max(T.minHeight||0,am-X);S.resize(aj,ak);if(!S._.moved)S.layout();af.data.preventDefault();};function ae(){a.document.removeListener('mouseup',ae);a.document.removeListener('mousemove',ad);if(ab){ab.remove();ab=null;}if(b.ie6Compat){var af=E.getChild(0).getFrameDocument();af.removeListener('mouseup',ae);af.removeListener('mousemove',ad);}};};var C,D={},E;function F(S){S.data.preventDefault(1);};function G(S){var T=a.document.getWindow(),U=S.config,V=U.dialog_backgroundCoverColor||'white',W=U.dialog_backgroundCoverOpacity,X=U.baseFloatZIndex,Y=e.genKey(V,W,X),Z=D[Y];if(!Z){var aa=['
'];if(b.ie6Compat){var ab=b.isCustomDomain(),ac="";aa.push('');}aa.push('
');Z=h.createFromHtml(aa.join(''));Z.setOpacity(W!=undefined?W:0.5);Z.on('keydown',F);Z.on('keypress',F);Z.on('keyup',F);Z.appendTo(a.document.getBody());D[Y]=Z;}else Z.show();E=Z;var ad=function(){var ag=T.getViewPaneSize();Z.setStyles({width:ag.width+'px',height:ag.height+'px'});},ae=function(){var ag=T.getScrollPosition(),ah=a.dialog._.currentTop;Z.setStyles({left:ag.x+'px',top:ag.y+'px'});if(ah)do{var ai=ah.getPosition(); +ah.move(ai.x,ai.y);}while(ah=ah._.parentDialog)};C=ad;T.on('resize',ad);ad();if(!(b.mac&&b.webkit))Z.focus();if(b.ie6Compat){var af=function(){ae();arguments.callee.prevScrollHandler.apply(this,arguments);};T.$.setTimeout(function(){af.prevScrollHandler=window.onscroll||(function(){});window.onscroll=af;},0);ae();}};function H(){if(!E)return;var S=a.document.getWindow();E.hide();S.removeListener('resize',C);if(b.ie6Compat)S.$.setTimeout(function(){var T=window.onscroll&&window.onscroll.prevScrollHandler;window.onscroll=T||null;},0);C=null;};function I(){for(var S in D)D[S].remove();D={};};var J={},K=function(S){var T=S.data.$.ctrlKey||S.data.$.metaKey,U=S.data.$.altKey,V=S.data.$.shiftKey,W=String.fromCharCode(S.data.$.keyCode),X=J[(T?'CTRL+':'')+(U?'ALT+':'')+(V?'SHIFT+':'')+W];if(!X||!X.length)return;X=X[X.length-1];X.keydown&&X.keydown.call(X.uiElement,X.dialog,X.key);S.data.preventDefault();},L=function(S){var T=S.data.$.ctrlKey||S.data.$.metaKey,U=S.data.$.altKey,V=S.data.$.shiftKey,W=String.fromCharCode(S.data.$.keyCode),X=J[(T?'CTRL+':'')+(U?'ALT+':'')+(V?'SHIFT+':'')+W];if(!X||!X.length)return;X=X[X.length-1];if(X.keyup){X.keyup.call(X.uiElement,X.dialog,X.key);S.data.preventDefault();}},M=function(S,T,U,V,W){var X=J[U]||(J[U]=[]);X.push({uiElement:S,dialog:T,key:U,keyup:W||S.accessKeyUp,keydown:V||S.accessKeyDown});},N=function(S){for(var T in J){var U=J[T];for(var V=U.length-1;V>=0;V--){if(U[V].dialog==S||U[V].uiElement==S)U.splice(V,1);}if(U.length===0)delete J[T];}},O=function(S,T){if(S._.accessKeyMap[T])S.selectPage(S._.accessKeyMap[T]);},P=function(S,T){},Q={27:1,13:1},R=function(S){if(S.data.getKeystroke() in Q)S.data.stopPropagation();};(function(){k.dialog={uiElement:function(S,T,U,V,W,X,Y){if(arguments.length<4)return;var Z=(V.call?V(T):V)||'div',aa=['<',Z,' '],ab=(W&&W.call?W(T):W)||{},ac=(X&&X.call?X(T):X)||{},ad=(Y&&Y.call?Y.call(this,S,T):Y)||'',ae=this.domId=ac.id||e.getNextId()+'_uiElement',af=this.id=T.id,ag;ac.id=ae;var ah={};if(T.type)ah['cke_dialog_ui_'+T.type]=1;if(T.className)ah[T.className]=1;if(T.disabled)ah.cke_disabled=1;var ai=ac['class']&&ac['class'].split?ac['class'].split(' '):[];for(ag=0;ag=0;ag--){if(ak[ag]==='')ak.splice(ag,1);}if(ak.length>0)ac.style=(ac.style?ac.style+'; ':'')+ak.join('; ');for(ag in ac)aa.push(ag+'="'+e.htmlEncode(ac[ag])+'" ');aa.push('>',ad,'');U.push(aa.join(''));(this._||(this._={})).dialog=S;if(typeof T.isChanged=='boolean')this.isChanged=function(){return T.isChanged;};if(typeof T.isChanged=='function')this.isChanged=T.isChanged;if(typeof T.setValue=='function')this.setValue=e.override(this.setValue,function(an){return function(ao){an.call(this,T.setValue.call(this,ao));};});if(typeof T.getValue=='function')this.getValue=e.override(this.getValue,function(an){return function(){return T.getValue.call(this,an.call(this));};});a.event.implementOn(this);this.registerEvents(T);if(this.accessKeyUp&&this.accessKeyDown&&T.accessKey)M(this,S,'CTRL+'+T.accessKey);var am=this;S.on('load',function(){var an=am.getInputElement();if(an){var ao=am.type in {checkbox:1,ratio:1}&&c&&b.version<8?'cke_dialog_ui_focused':'';an.on('focus',function(){S._.tabBarMode=false;S._.hasFocus=true;am.fire('focus');ao&&this.addClass(ao);});an.on('blur',function(){am.fire('blur');ao&&this.removeClass(ao);});}});if(this.keyboardFocusable){this.tabIndex=T.tabIndex||0;this.focusIndex=S._.focusList.push(this)-1;this.on('focus',function(){S._.currentFocusIndex=am.focusIndex;});}e.extend(this,T);},hbox:function(S,T,U,V,W){if(arguments.length<4)return;this._||(this._={});var X=this._.children=T,Y=W&&W.widths||null,Z=W&&W.height||null,aa={},ab,ac=function(){var ae=[''];for(ab=0;ab0)ae.push('style="'+ag.join('; ')+'" ');ae.push('>',U[ab],'');}ae.push('');return ae.join('');},ad={role:'presentation'};W&&W.align&&(ad.align=W.align);k.dialog.uiElement.call(this,S,W||{type:'hbox'},V,'table',aa,ad,ac);},vbox:function(S,T,U,V,W){if(arguments.length<3)return;this._||(this._={});var X=this._.children=T,Y=W&&W.width||null,Z=W&&W.heights||null,aa=function(){var ab=['');for(var ac=0;ac');}ab.push('
0)ab.push('style="',ad.join('; '),'" ');ab.push(' class="cke_dialog_ui_vbox_child">',U[ac],'
');return ab.join('');};k.dialog.uiElement.call(this,S,W||{type:'vbox'},V,'div',null,{role:'presentation'},aa);}};})();k.dialog.uiElement.prototype={getElement:function(){return a.document.getById(this.domId);},getInputElement:function(){return this.getElement();},getDialog:function(){return this._.dialog;},setValue:function(S,T){this.getInputElement().setValue(S);!T&&this.fire('change',{value:S});return this;},getValue:function(){return this.getInputElement().getValue();},isChanged:function(){return false;},selectParentTab:function(){var V=this;var S=V.getInputElement(),T=S,U;while((T=T.getParent())&&T.$.className.search('cke_dialog_page_contents')==-1){}if(!T)return V;U=T.getAttribute('name');if(V._.dialog._.currentTabId!=U)V._.dialog.selectPage(U);return V;},focus:function(){this.selectParentTab().getInputElement().focus();return this;},registerEvents:function(S){var T=/^on([A-Z]\w+)/,U,V=function(X,Y,Z,aa){Y.on('load',function(){X.getInputElement().on(Z,aa,X);});};for(var W in S){if(!(U=W.match(T)))continue;if(this.eventProcessors[W])this.eventProcessors[W].call(this,this._.dialog,S[W]);else V(this,this._.dialog,U[1].toLowerCase(),S[W]);}return this;},eventProcessors:{onLoad:function(S,T){S.on('load',T,this);},onShow:function(S,T){S.on('show',T,this);},onHide:function(S,T){S.on('hide',T,this);}},accessKeyDown:function(S,T){this.focus();},accessKeyUp:function(S,T){},disable:function(){var S=this.getElement(),T=this.getInputElement();T.setAttribute('disabled','true');S.addClass('cke_disabled');},enable:function(){var S=this.getElement(),T=this.getInputElement();T.removeAttribute('disabled');S.removeClass('cke_disabled');},isEnabled:function(){return!this.getElement().hasClass('cke_disabled');},isVisible:function(){return this.getInputElement().isVisible();},isFocusable:function(){if(!this.isEnabled()||!this.isVisible())return false; +return true;}};k.dialog.hbox.prototype=e.extend(new k.dialog.uiElement(),{getChild:function(S){var T=this;if(arguments.length<1)return T._.children.concat();if(!S.splice)S=[S];if(S.length<2)return T._.children[S[0]];else return T._.children[S[0]]&&T._.children[S[0]].getChild?T._.children[S[0]].getChild(S.slice(1,S.length)):null;}},true);k.dialog.vbox.prototype=new k.dialog.hbox();(function(){var S={build:function(T,U,V){var W=U.children,X,Y=[],Z=[];for(var aa=0;aa',T||U.name,'');return V.join('');}};a.style.getStyleText=function(T){var U=T._ST;if(U)return U;U=T.styles;var V=T.attributes&&T.attributes.style||'',W='';if(V.length)V=V.replace(o,';');for(var X in U){var Y=U[X],Z=(X+':'+Y).replace(o,';');if(Y=='inherit')W+=Z;else V+=Z;}if(V.length)V=P(V);V+=W;return T._ST=V;};function s(T){var U,V;while(T=T.getParent()){if(T.getName()=='body')break;if(T.getAttribute('data-nostyle'))U=T;else if(!V){var W=T.getAttribute('contentEditable');if(W=='false')U=T;else if(W=='true')V=1;}}return U;};function t(T){var ay=this;var U=T.document;if(T.collapsed){var V=J(ay,U);T.insertNode(V);T.moveToPosition(V,2);return;}var W=ay.element,X=ay._.definition,Y,Z=X.ignoreReadonly,aa=Z||X.includeReadonly;if(aa==undefined)aa=U.getCustomData('cke_includeReadonly');var ab=f[W]||(Y=true,f.span);T.enlarge(1,1);T.trim();var ac=T.createBookmark(),ad=ac.startNode,ae=ac.endNode,af=ad,ag;if(!Z){var ah=s(ad),ai=s(ae);if(ah)af=ah.getNextSourceNode(true);if(ai)ae=ai;}if(af.getPosition(ae)==2)af=0;while(af){var aj=false;if(af.equals(ae)){af=null;aj=true;}else{var ak=af.type,al=ak==1?af.getName():null,am=al&&af.getAttribute('contentEditable')=='false',an=al&&af.getAttribute('data-nostyle'); +if(al&&af.data('cke-bookmark')){af=af.getNextSourceNode(true);continue;}if(!al||ab[al]&&!an&&(!am||aa)&&(af.getPosition(ae)|4|0|8)==4+0+8&&(!X.childRule||X.childRule(af))){var ao=af.getParent();if(ao&&((ao.getDtd()||f.span)[W]||Y)&&(!X.parentRule||X.parentRule(ao))){if(!ag&&(!al||!f.$removeEmpty[al]||(af.getPosition(ae)|4|0|8)==4+0+8)){ag=new d.range(U);ag.setStartBefore(af);}if(ak==3||am||ak==1&&!af.getChildCount()){var ap=af,aq;while((aj=!ap.getNext(q))&&(aq=ap.getParent(),ab[aq.getName()])&&(aq.getPosition(ad)|2|0|8)==2+0+8&&(!X.childRule||X.childRule(aq)))ap=aq;ag.setEndAfter(ap);}}else aj=true;}else aj=true;af=af.getNextSourceNode(an||am);}if(aj&&ag&&!ag.collapsed){var ar=J(ay,U),as=ar.hasAttributes(),at=ag.getCommonAncestor(),au={styles:{},attrs:{},blockedStyles:{},blockedAttrs:{}},av,aw,ax;while(ar&&at){if(at.getName()==W){for(av in X.attributes){if(au.blockedAttrs[av]||!(ax=at.getAttribute(aw)))continue;if(ar.getAttribute(av)==ax)au.attrs[av]=1;else au.blockedAttrs[av]=1;}for(aw in X.styles){if(au.blockedStyles[aw]||!(ax=at.getStyle(aw)))continue;if(ar.getStyle(aw)==ax)au.styles[aw]=1;else au.blockedStyles[aw]=1;}}at=at.getParent();}for(av in au.attrs)ar.removeAttribute(av);for(aw in au.styles)ar.removeStyle(aw);if(as&&!ar.hasAttributes())ar=null;if(ar){ag.extractContents().appendTo(ar);G(ay,ar);ag.insertNode(ar);ar.mergeSiblings();if(!c)ar.$.normalize();}else{ar=new h('span');ag.extractContents().appendTo(ar);ag.insertNode(ar);G(ay,ar);ar.remove(true);}ag=null;}}T.moveToBookmark(ac);T.shrink(2);};function u(T){T.enlarge(1,1);var U=T.createBookmark(),V=U.startNode;if(T.collapsed){var W=new d.elementPath(V.getParent()),X;for(var Y=0,Z;Y'+V+'';else T.setHtml(V);U.remove();};function B(T){var U=/(\S\s*)\n(?:\s|(]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi,V=T.getName(),W=C(T.getOuterHtml(),U,function(Y,Z,aa){return Z+''+aa+'
';}),X=[];W.replace(/([\s\S]*?)<\/pre>/gi,function(Y,Z){X.push(Z);});return X;};function C(T,U,V){var W='',X='';T=T.replace(/(^]+data-cke-bookmark.*?\/span>)|(]+data-cke-bookmark.*?\/span>$)/gi,function(Y,Z,aa){Z&&(W=Z);aa&&(X=aa);return '';});return W+T.replace(U,V)+X;};function D(T,U){var V;if(T.length>1)V=new d.documentFragment(U.getDocument());for(var W=0;W');X=X.replace(/[ \t]{2,}/g,function(Z){return e.repeat(' ',Z.length-1)+' ';});if(V){var Y=U.clone();Y.setHtml(X);V.append(Y);}else U.setHtml(X);}return V||U;};function E(T,U){var V=T.getBogus();V&&V.remove();var W=T.getHtml();W=C(W,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,'');W=W.replace(/[ \t\r\n]*(]*>)[ \t\r\n]*/gi,'$1');W=W.replace(/([ \t\n\r]+| )/g,' ');W=W.replace(/]*>/gi,'\n');if(c){var X=T.getDocument().createElement('div');X.append(U);U.$.outerHTML='
'+W+'
';U.copyAttributes(X.getFirst());U=X.getFirst().remove();}else U.setHtml(W);return U;};function F(T,U){var V=T._.definition,W=V.attributes,X=V.styles,Y=N(T)[U.getName()],Z=e.isEmpty(W)&&e.isEmpty(X);for(var aa in W){if((aa=='class'||T._.definition.fullMatch)&&U.getAttribute(aa)!=O(aa,W[aa]))continue;Z=U.hasAttribute(aa);U.removeAttribute(aa);}for(var ab in X){if(T._.definition.fullMatch&&U.getStyle(ab)!=O(ab,X[ab],true))continue;Z=Z||!!U.getStyle(ab);U.removeStyle(ab);}H(U,Y,m[U.getName()]);if(Z)!f.$block[U.getName()]||T._.enterMode==2&&!U.hasAttributes()?I(U):U.renameNode(T._.enterMode==1?'p':'div');};function G(T,U){var V=T._.definition,W=V.attributes,X=V.styles,Y=N(T),Z=U.getElementsByTag(T.element);for(var aa=Z.count();--aa>=0;)F(T,Z.getItem(aa));for(var ab in Y){if(ab!=T.element){Z=U.getElementsByTag(ab);for(aa=Z.count()-1;aa>=0;aa--){var ac=Z.getItem(aa);H(ac,Y[ab]);}}}};function H(T,U,V){var W=U&&U.attributes;if(W)for(var X=0;X0)H+=(F.$.offsetWidth||0)-(F.$.clientWidth||0)+3;H+=4;F.setStyle('width',H+'px');v.element.addClass('cke_frameLoaded');var I=v.element.$.scrollHeight;if(c&&b.quirks&&I>0)I+=(F.$.offsetHeight||0)-(F.$.clientHeight||0)+3;F.setStyle('height',I+'px');u._.currentBlock.element.setStyle('display','none').removeStyle('display');}else F.removeStyle('height');if(A)B-=w.$.offsetWidth;w.setStyle('left',B+'px');var J=u.element,K=J.getWindow(),L=w.$.getBoundingClientRect(),M=K.getViewPaneSize(),N=L.width||L.right-L.left,O=L.height||L.bottom-L.top,P=A?L.right:M.width-L.left,Q=A?M.width-L.right:L.left; +if(A){if(PN)B+=N;else if(M.width>N)B-=L.left;else B=B-L.right+M.width;}else if(PN)B-=N;else if(M.width>N)B=B-L.right+M.width;else B-=L.left;var R=M.height-L.top,S=L.top;if(RO)C-=O;else if(M.height>O)C=C-L.bottom+M.height;else C-=L.top;if(c){var T=new h(w.$.offsetParent),U=T;if(U.getName()=='html')U=U.getDocument().getBody();if(U.getComputedStyle('direction')=='rtl')if(b.ie8Compat)B-=w.getDocument().getDocumentElement().$.scrollLeft*2;else B-=T.$.scrollWidth-T.$.clientWidth;}var V=w.getFirst(),W;if(W=V.getCustomData('activePanel'))W.onHide&&W.onHide.call(this,1);V.setCustomData('activePanel',this);w.setStyles({top:C+'px',left:B+'px'});w.setOpacity(1);},this);u.isLoaded?E():u.onLoad=E;e.setTimeout(function(){x.$.contentWindow.focus();this.allowBlur(true);},0,this);},b.air?200:0,this);this.visible=1;if(this.onShow)this.onShow.call(this);n=0;},hide:function(p){var r=this;if(r.visible&&(!r.onHide||r.onHide.call(r)!==true)){r.hideChild();b.gecko&&r._.iframe.getFrameDocument().$.activeElement.blur();r.element.setStyle('display','none');r.visible=0;r.element.getFirst().removeCustomData('activePanel');var q=p!==false&&r._.returnFocus;if(q){if(b.webkit&&q.type)q.getWindow().$.focus();q.focus();}}},allowBlur:function(p){var q=this._.panel;if(p!=undefined)q.allowBlur=p;return q.allowBlur;},showAsChild:function(p,q,r,s,t,u){if(this._.activeChild==p&&p._.panel._.offsetParentId==r.getId())return;this.hideChild();p.onHide=e.bind(function(){e.setTimeout(function(){if(!this._.focused)this.hide();},0,this);},this);this._.activeChild=p;this._.focused=false;p.showBlock(q,r,s,t,u);if(b.ie7Compat||b.ie8&&b.ie6Compat)setTimeout(function(){p.element.getChild(0).$.style.cssText+='';},100);},hideChild:function(){var p=this._.activeChild;if(p){delete p.onHide;delete p._.returnFocus;delete this._.activeChild;p.hide();}}}});a.on('instanceDestroyed',function(){var p=e.isEmpty(a.instances);for(var q in m){var r=m[q];if(p)r.destroy();else r.element.hide();}p&&(m={});});})();j.add('menu',{beforeInit:function(m){var n=m.config.menu_groups.split(','),o=m._.menuGroups={},p=m._.menuItems={};for(var q=0;q'],B=r.length,C=B&&r[0].group;for(var D=0;D');C=E.group;}E.render(this,D,A);}A.push('');u.setHtml(A.join(''));k.fire('ready',this);if(this.parent)this.parent._.panel.showAsChild(t,this.id,n,o,p,q);else t.showBlock(this.id,n,o,p,q);s.fire('menuShow',[t]);},addListener:function(n){this._.listeners.push(n);},hide:function(n){var o=this;o._.onHide&&o._.onHide();o._.panel&&o._.panel.hide(n);}}});function m(n){n.sort(function(o,p){if(o.groupp.group)return 1;return o.orderp.order?1:0;});};a.menuItem=e.createClass({$:function(n,o,p){var q=this;e.extend(q,p,{order:0,className:'cke_button_'+o});q.group=n._.menuGroups[q.group];q.editor=n;q.name=o;},proto:{render:function(n,o,p){var w=this;var q=n.id+String(o),r=typeof w.state=='undefined'?2:w.state,s=' cke_'+(r==1?'on':r==0?'disabled':'off'),t=w.label;if(w.className)s+=' '+w.className;var u=w.getItems;p.push(''+''+''); +if(u)p.push('','&#',w.editor.lang.dir=='rtl'?'9668':'9658',';','');p.push(t,'');}}});})();i.menu_groups='clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div';(function(){var m;j.add('editingblock',{init:function(n){if(!n.config.editingBlock)return;n.on('themeSpace',function(o){if(o.data.space=='contents')o.data.html+='
';});n.on('themeLoaded',function(){n.fireOnce('editingBlockReady');});n.on('uiReady',function(){n.setMode(n.config.startupMode);});n.on('afterSetData',function(){if(!m){function o(){m=true;n.getMode().loadData(n.getData());m=false;};if(n.mode)o();else n.on('mode',function(){if(n.mode){o();n.removeListener('mode',arguments.callee);}});}});n.on('beforeGetData',function(){if(!m&&n.mode){m=true;n.setData(n.getMode().getData(),null,1);m=false;}});n.on('getSnapshot',function(o){if(n.mode)o.data=n.getMode().getSnapshotData();});n.on('loadSnapshot',function(o){if(n.mode)n.getMode().loadSnapshotData(o.data);});n.on('mode',function(o){o.removeListener();b.webkit&&n.container.on('focus',function(){n.focus();});if(n.config.startupFocus)n.focus();setTimeout(function(){n.fireOnce('instanceReady');a.fire('instanceReady',null,n);},0);});n.on('destroy',function(){var o=this;if(o.mode)o._.modes[o.mode].unload(o.getThemeSpace('contents'));});}});a.editor.prototype.mode='';a.editor.prototype.addMode=function(n,o){o.name=n;(this._.modes||(this._.modes={}))[n]=o;};a.editor.prototype.setMode=function(n){this.fire('beforeSetMode',{newMode:n});var o,p=this.getThemeSpace('contents'),q=this.checkDirty();if(this.mode){if(n==this.mode)return;this._.previousMode=this.mode;this.fire('beforeModeUnload');var r=this.getMode();o=r.getData();r.unload(p);this.mode='';}p.setHtml('');var s=this.getMode(n);if(!s)throw '[CKEDITOR.editor.setMode] Unknown mode "'+n+'".';if(!q)this.on('mode',function(){this.resetDirty();this.removeListener('mode',arguments.callee);});s.load(p,typeof o!='string'?this.getData():o);};a.editor.prototype.getMode=function(n){return this._.modes&&this._.modes[n||this.mode];};a.editor.prototype.focus=function(){this.forceNextSelectionCheck();var n=this.getMode();if(n)n.focus();};})();i.startupMode='wysiwyg';i.editingBlock=true;(function(){function m(){var C=this;try{var z=C.getSelection();if(!z||!z.document.getWindow().$)return;var A=z.getStartElement(),B=new d.elementPath(A); +if(!B.compare(C._.selectionPreviousPath)){C._.selectionPreviousPath=B;C.fire('selectionChange',{selection:z,path:B,element:A});}}catch(D){}};var n,o;function p(){o=true;if(n)return;q.call(this);n=e.setTimeout(q,200,this);};function q(){n=null;if(o){e.setTimeout(m,0,this);o=false;}};function r(z){function A(E){return E&&E.type==1&&E.getName() in f.$removeEmpty;};function B(E){var F=z.document.getBody();return!E.is('body')&&F.getChildCount()==1;};var C=z.startContainer,D=z.startOffset;if(C.type==3)return false;return!e.trim(C.getHtml())?A(C)||B(C):A(C.getChild(D-1))||A(C.getChild(D));};var s={modes:{wysiwyg:1,source:1},readOnly:c||b.webkit,exec:function(z){switch(z.mode){case 'wysiwyg':z.document.$.execCommand('SelectAll',false,null);z.forceNextSelectionCheck();z.selectionChange();break;case 'source':var A=z.textarea.$;if(c)A.createTextRange().execCommand('SelectAll');else{A.selectionStart=0;A.selectionEnd=A.value.length;}A.focus();}},canUndo:false};function t(z){w(z);var A=z.createText('​');z.setCustomData('cke-fillingChar',A);return A;};function u(z){return z&&z.getCustomData('cke-fillingChar');};function v(z){var A=z&&u(z);if(A)if(A.getCustomData('ready'))w(z);else A.setCustomData('ready',1);};function w(z){var A=z&&z.removeCustomData('cke-fillingChar');if(A){var B,C=z.getSelection().getNative(),D=C&&C.type!='None'&&C.getRangeAt(0);if(A.getLength()>1&&D&&D.intersectsNode(A.$)){B=[C.anchorOffset,C.focusOffset];var E=C.anchorNode==A.$&&C.anchorOffset>0,F=C.focusNode==A.$&&C.focusOffset>0;E&&B[0]--;F&&B[1]--;x(C)&&B.unshift(B.pop());}A.setText(A.getText().replace(/\u200B/g,''));if(B){var G=C.getRangeAt(0);G.setStart(G.startContainer,B[0]);G.setEnd(G.startContainer,B[1]);C.removeAllRanges();C.addRange(G);}}};function x(z){if(!z.isCollapsed){var A=z.getRangeAt(0);A.setStart(z.anchorNode,z.anchorOffset);A.setEnd(z.focusNode,z.focusOffset);return A.collapsed;}};j.add('selection',{init:function(z){if(b.webkit){z.on('selectionChange',function(){v(z.document);});z.on('beforeSetMode',function(){w(z.document);});var A,B;function C(){var E=z.document,F=u(E);if(F){var G=E.$.defaultView.getSelection();if(G.type=='Caret'&&G.anchorNode==F.$)B=1;A=F.getText();F.setText(A.replace(/\u200B/g,''));}};function D(){var E=z.document,F=u(E);if(F){F.setText(A);if(B){E.$.defaultView.getSelection().setPosition(F.$,F.getLength());B=0;}}};z.on('beforeUndoImage',C);z.on('afterUndoImage',D);z.on('beforeGetData',C,null,null,0);z.on('getData',D);}z.on('contentDom',function(){var E=z.document,F=E.getBody(),G=E.getDocumentElement(); +if(c){var H,I,J=1;F.on('focusin',function(N){if(N.data.$.srcElement.nodeName!='BODY')return;var O=E.getCustomData('cke_locked_selection');if(O){O.unlock(1);O.lock();}else if(H&&J){try{H.select();}catch(P){}H=null;}});F.on('focus',function(){I=1;M();});F.on('beforedeactivate',function(N){if(N.data.$.toElement)return;I=0;J=1;});c&&z.on('blur',function(){try{E.$.selection.empty();}catch(N){}});G.on('mousedown',function(){J=0;});G.on('mouseup',function(){J=1;});var K;F.on('mousedown',function(N){if(N.data.$.button==2){var O=z.document.$.selection;if(O.type=='None')K=z.window.getScrollPosition();}L();});F.on('mouseup',function(N){if(N.data.$.button==2&&K){z.document.$.documentElement.scrollLeft=K.x;z.document.$.documentElement.scrollTop=K.y;}K=null;I=1;setTimeout(function(){M(true);},0);});F.on('keydown',L);F.on('keyup',function(){I=1;M();});if((b.ie7Compat||b.ie6Compat)&&E.$.compatMode!='BackCompat')G.on('mousedown',function(N){N=N.data.$;function O(Q){Q=Q.data.$;if(P){var R=F.$.createTextRange();R.moveToPoint(Q.x,Q.y);P.setEndPoint(P.compareEndPoints('StartToStart',R)<0?'EndToEnd':'StartToStart',R);P.select();}};if(N.yF.$.offsetTop+F.$.clientHeight&&N.x0)L=M-1;else if(N<0)K=M+1;else if(b.ie9Compat&&H.tagName=='BR'){var Q=F.defaultView.getSelection();return{container:Q[D?'anchorNode':'focusNode'],offset:Q[D?'anchorOffset':'focusOffset']};}else return{container:E,offset:A(H)};}if(M==-1||M==G.length-1&&N<0){J.moveToElementText(E);J.setEndPoint('StartToStart',C);O=J.text.replace(/(\r\n|\r)/g,'\n').length;G=E.childNodes;if(!O){H=G[G.length-1];if(H.nodeType!=3)return{container:E,offset:G.length};else return{container:H,offset:H.nodeValue.length}; +}var R=G.length;while(O>0&&R>0){I=G[--R];if(I.nodeType==3){P=I;O-=I.nodeValue.length;}}return{container:P,offset:-O};}else{J.collapse(N>0?true:false);J.setEndPoint(N>0?'StartToStart':'EndToStart',C);O=J.text.replace(/(\r\n|\r)/g,'\n').length;if(!O)return{container:E,offset:A(H)+(N>0?0:1)};while(O>0)try{I=H[N>0?'previousSibling':'nextSibling'];if(I.nodeType==3){O-=I.nodeValue.length;P=I;}H=I;}catch(S){return{container:E,offset:A(H)};}return{container:P,offset:N>0?-O:P.nodeValue.length+O};}};return function(){var M=this;var C=M.getNative(),D=C&&C.createRange(),E=M.getType(),F;if(!C)return[];if(E==2){F=new d.range(M.document);var G=B(D,true);F.setStart(new d.node(G.container),G.offset);G=B(D);F.setEnd(new d.node(G.container),G.offset);if(F.endContainer.getPosition(F.startContainer)&4&&F.endOffset<=F.startContainer.getIndex())F.collapse();return[F];}else if(E==3){var H=[];for(var I=0;I=H.getLength())L.setStartAfter(H);else L.setStartBefore(H);if(I&&I.type==3)if(!K)L.setEndBefore(I);else L.setEndAfter(I);var M=new d.walker(L);M.evaluator=function(N){if(N.type==1&&N.isReadOnly()){var O=E.clone();E.setEndBefore(N);if(E.collapsed)C.splice(D--,1);if(!(N.getPosition(L.endContainer)&16)){O.setStartAfter(N);if(!O.collapsed)C.splice(D+1,0,O);}return true;}return false;};M.next();}}return B.ranges;};})(),getStartElement:function(){var G=this;var z=G._.cache; +if(z.startElement!==undefined)return z.startElement;var A,B=G.getNative();switch(G.getType()){case 3:return G.getSelectedElement();case 2:var C=G.getRanges()[0];if(C){if(!C.collapsed){C.optimize();while(1){var D=C.startContainer,E=C.startOffset;if(E==(D.getChildCount?D.getChildCount():D.getLength())&&!D.isBlockBoundary())C.setStartAfter(D);else break;}A=C.startContainer;if(A.type!=1)return A.getParent();A=A.getChild(C.startOffset);if(!A||A.type!=1)A=C.startContainer;else{var F=A.getFirst();while(F&&F.type==1){A=F;F=F.getFirst();}}}else{A=C.startContainer;if(A.type!=1)A=A.getParent();}A=A.$;}}return z.startElement=A?new h(A):null;},getSelectedElement:function(){var z=this._.cache;if(z.selectedElement!==undefined)return z.selectedElement;var A=this,B=e.tryThese(function(){return A.getNative().createRange().item(0);},function(){var C,D,E=A.getRanges()[0],F=E.getCommonAncestor(1,1),G={table:1,ul:1,ol:1,dl:1};for(var H in G){if(C=F.getAscendant(H,1))break;}if(C){var I=new d.range(this.document);I.setStartAt(C,1);I.setEnd(E.startContainer,E.startOffset);var J=e.extend(G,f.$listItem,f.$tableContent),K=new d.walker(I),L=function(M,N){return function(O,P){if(O.type==3&&(!e.trim(O.getText())||O.getParent().data('cke-bookmark')))return true;var Q;if(O.type==1){Q=O.getName();if(Q=='br'&&N&&O.equals(O.getParent().getBogus()))return true;if(P&&Q in J||Q in f.$removeEmpty)return true;}M.halted=1;return false;};};K.guard=L(K);if(K.checkBackward()&&!K.halted){K=new d.walker(I);I.setStart(E.endContainer,E.endOffset);I.setEndAt(C,2);K.guard=L(K,1);if(K.checkForward()&&!K.halted)D=C.$;}}if(!D)throw 0;return D;},function(){var C=A.getRanges()[0],D,E;for(var F=2;F&&!((D=C.getEnclosedNode())&&D.type==1&&y[D.getName()]&&(E=D));F--)C.shrink(1);return E.$;});return z.selectedElement=B?new h(B):null;},getSelectedText:function(){var z=this._.cache;if(z.selectedText!==undefined)return z.selectedText;var A='',B=this.getNative();if(this.getType()==2)A=c?B.createRange().text:B.toString();return z.selectedText=A;},lock:function(){var z=this;z.getRanges();z.getStartElement();z.getSelectedElement();z.getSelectedText();z._.cache.nativeSel={};z.isLocked=1;z.document.setCustomData('cke_locked_selection',z);},unlock:function(z){var E=this;var A=E.document,B=A.getCustomData('cke_locked_selection');if(B){A.setCustomData('cke_locked_selection',null);if(z){var C=B.getSelectedElement(),D=!C&&B.getRanges();E.isLocked=0;E.reset();A.getBody().focus();if(C)E.selectElement(C);else E.selectRanges(D);}}if(!B||!z){E.isLocked=0; +E.reset();}},reset:function(){this._.cache={};},selectElement:function(z){var B=this;if(B.isLocked){var A=new d.range(B.document);A.setStartBefore(z);A.setEndAfter(z);B._.cache.selectedElement=z;B._.cache.startElement=z;B._.cache.ranges=new d.rangeList(A);B._.cache.type=3;return;}A=new d.range(z.getDocument());A.setStartBefore(z);A.setEndAfter(z);A.select();B.document.fire('selectionchange');B.reset();},selectRanges:function(z){var N=this;if(N.isLocked){N._.cache.selectedElement=null;N._.cache.startElement=z[0]&&z[0].getTouchedStartNode();N._.cache.ranges=new d.rangeList(z);N._.cache.type=2;return;}if(c){if(z.length>1){var A=z[z.length-1];z[0].setEnd(A.endContainer,A.endOffset);z.length=1;}if(z[0])z[0].select();N.reset();}else{var B=N.getNative();if(!B)return;if(z.length){B.removeAllRanges();b.webkit&&w(N.document);}for(var C=0;C=0){I.collapse(1);J.setEnd(I.endContainer.$,I.endOffset);}else throw O;}B.addRange(J);}N.document.fire('selectionchange');N.reset();}},createBookmarks:function(z){return this.getRanges().createBookmarks(z);},createBookmarks2:function(z){return this.getRanges().createBookmarks2(z);},selectBookmarks:function(z){var A=[];for(var B=0;B','','',this.label,'','=10900&&!o.hc?'':" href=\"javascript:void('"+this.label+"')\"",' role="button" aria-labelledby="',p,'_label" aria-describedby="',p,'_text" aria-haspopup="true"'); +if(b.opera||b.gecko&&b.mac)n.push(' onkeypress="return false;"');if(b.gecko)n.push(' onblur="this.style.cssText = this.style.cssText;"');n.push(' onkeydown="CKEDITOR.tools.callFunction( ',t,', event, this );" onfocus="return CKEDITOR.tools.callFunction(',u,', event);" '+(c?'onclick="return false;" onmouseup':'onclick')+'="CKEDITOR.tools.callFunction(',q,', this); return false;">'+this.label+''+''+''+(b.hc?'▼':b.air?' ':'')+''+''+''+'');if(this.onRender)this.onRender();return r;},createPanel:function(m){if(this._.panel)return;var n=this._.panelDefinition,o=this._.panelDefinition.block,p=n.parent||a.document.getBody(),q=new k.floatPanel(m,p,n),r=q.addListBlock(this.id,o),s=this;q.onShow=function(){if(s.className)this.element.getFirst().addClass(s.className+'_panel');s.setState(1);r.focus(!s.multiSelect&&s.getValue());s._.on=1;if(s.onOpen)s.onOpen();};q.onHide=function(t){if(s.className)this.element.getFirst().removeClass(s.className+'_panel');s.setState(s.modes&&s.modes[m.mode]?2:0);s._.on=0;if(!t&&s.onClose)s.onClose();};q.onEscape=function(){q.hide();};r.onClick=function(t,u){s.document.getWindow().focus();if(s.onClick)s.onClick.call(s,t,u);if(u)s.setValue(t,s._.items[t]);else s.setValue('');q.hide(false);};this._.panel=q;this._.list=r;q.getBlock(this.id).onHide=function(){s._.on=0;s.setState(2);};if(this.init)this.init();},setValue:function(m,n){var p=this;p._.value=m;var o=p.document.getById('cke_'+p.id+'_text');if(o){if(!(m||n)){n=p.label;o.addClass('cke_inline_label');}else o.removeClass('cke_inline_label');o.setHtml(typeof n!='undefined'?n:m);}},getValue:function(){return this._.value||'';},unmarkAll:function(){this._.list.unmarkAll();},mark:function(m){this._.list.mark(m);},hideItem:function(m){this._.list.hideItem(m);},hideGroup:function(m){this._.list.hideGroup(m);},showAll:function(){this._.list.showAll();},add:function(m,n,o){this._.items[m]=o||m;this._.list.add(m,n,o);},startGroup:function(m){this._.list.startGroup(m);},commit:function(){var m=this;if(!m._.committed){m._.list.commit();m._.committed=1;k.fire('ready',m);}m._.committed=1;},setState:function(m){var n=this;if(n._.state==m)return;n.document.getById('cke_'+n.id).setState(m);n._.state=m;}}});k.prototype.addRichCombo=function(m,n){this.add(m,'richcombo',n);};j.add('htmlwriter');a.htmlWriter=e.createClass({base:a.htmlParser.basicWriter,$:function(){var o=this; +o.base();o.indentationChars='\t';o.selfClosingEnd=' />';o.lineBreakChars='\n';o.forceSimpleAmpersand=0;o.sortAttributes=1;o._.indent=0;o._.indentation='';o._.inPre=0;o._.rules={};var m=f;for(var n in e.extend({},m.$nonBodyContent,m.$block,m.$listItem,m.$tableContent))o.setRules(n,{indent:1,breakBeforeOpen:1,breakAfterOpen:1,breakBeforeClose:!m[n]['#'],breakAfterClose:1});o.setRules('br',{breakAfterOpen:1});o.setRules('title',{indent:0,breakAfterOpen:0});o.setRules('style',{indent:0,breakBeforeClose:1});o.setRules('pre',{indent:0});},proto:{openTag:function(m,n){var p=this;var o=p._.rules[m];if(p._.indent)p.indentation();else if(o&&o.breakBeforeOpen){p.lineBreak();p.indentation();}p._.output.push('<',m);},openTagClose:function(m,n){var p=this;var o=p._.rules[m];if(n)p._.output.push(p.selfClosingEnd);else{p._.output.push('>');if(o&&o.indent)p._.indentation+=p.indentationChars;}if(o&&o.breakAfterOpen)p.lineBreak();m=='pre'&&(p._.inPre=1);},attribute:function(m,n){if(typeof n=='string'){this.forceSimpleAmpersand&&(n=n.replace(/&/g,'&'));n=e.htmlEncodeAttr(n);}this._.output.push(' ',m,'="',n,'"');},closeTag:function(m){var o=this;var n=o._.rules[m];if(n&&n.indent)o._.indentation=o._.indentation.substr(o.indentationChars.length);if(o._.indent)o.indentation();else if(n&&n.breakBeforeClose){o.lineBreak();o.indentation();}o._.output.push('');m=='pre'&&(o._.inPre=0);if(n&&n.breakAfterClose)o.lineBreak();},text:function(m){var n=this;if(n._.indent){n.indentation();!n._.inPre&&(m=e.ltrim(m));}n._.output.push(m);},comment:function(m){if(this._.indent)this.indentation();this._.output.push('');},lineBreak:function(){var m=this;if(!m._.inPre&&m._.output.length>0)m._.output.push(m.lineBreakChars);m._.indent=1;},indentation:function(){var m=this;if(!m._.inPre)m._.output.push(m._.indentation);m._.indent=0;},setRules:function(m,n){var o=this._.rules[m];if(o)e.extend(o,n,true);else this._.rules[m]=n;}}});j.add('menubutton',{requires:['button','menu'],beforeInit:function(m){m.ui.addHandler('menubutton',k.menuButton.handler);}});a.UI_MENUBUTTON='menubutton';(function(){var m=function(n){var o=this._;if(o.state===0)return;o.previousState=o.state;var p=o.menu;if(!p){p=o.menu=new a.menu(n,{panel:{className:n.skinClass+' cke_contextmenu',attributes:{'aria-label':n.lang.common.options}}});p.onHide=e.bind(function(){this.setState(this.modes&&this.modes[n.mode]?o.previousState:0);},this);if(this.onMenu)p.addListener(this.onMenu);}if(o.on){p.hide();return;}this.setState(1); +p.show(a.document.getById(this._.id),4);};k.menuButton=e.createClass({base:k.button,$:function(n){var o=n.panel;delete n.panel;this.base(n);this.hasArrow=true;this.click=m;},statics:{handler:{create:function(n){return new k.menuButton(n);}}}});})();j.add('dialogui');(function(){var m=function(u){var x=this;x._||(x._={});x._['default']=x._.initValue=u['default']||'';x._.required=u.required||false;var v=[x._];for(var w=1;w',v.label,'','');else{var D={type:'hbox',widths:v.widths,padding:0,children:[{type:'html',html:'
+ + Results in a drop down list in which the user can choose between + all available Users in the Database. The shown field of the + Table "User" is "username" in this example. + + You can choose the Style of your Widget in the 'style' option. + Note that a Many_Many Relation always gets rendered as a Listbox, + since you can select multiple Elements. + + 'fields' can be an array or an string. + If you pass an array to 'fields', the Widget will display every field in + this array. If you want to show further sub-relations, separate the values + with '.', for example: 'fields' => 'array('parent.grandparent.description') + + Optional Parameters: + + You can use 'field' => 'post_userid' if the field in the model + that represents the foreign model is called different than in the + relation + + Use 'relatedPk' => 'id_of_user' if the primary Key of the Foreign + Model differs from the one given in the relation. + + Normally you shouldn´t use this fields cause the Widget get the relations + automatically from the relation. + + Use 'allowEmpty' to let the user be able to choose no parent. If you + set this to a string, this string will be displayed with the available + choices. + + With 'showAddButton' => 'false' you can disable the 'create new Foreignkey' + Button generated beside the Selectbox. + + Define the AddButtonString with 'addButtonString' => 'Add...'. This string + is set default to '+' + + When using the '+' button you most likely want to return to where you came. + To accomplish this, we pass a 'returnTo' parameter by $_GET. + The Controller can send the user back to where he came from this way: + +
+ 	if($model->save())
+ 		if(isset($_GET['returnTo'])) 
+ 			$this->redirect(array(urldecode($_GET['returnTo'])));
+ 	
+ + Using the 'style' option we can configure how our Widget gets rendered. + The following styles are available: + Selectbox (default), Listbox, Checkbox and in MANY_MANY relations 'twopane' + The style is case insensitive so one can use dropdownlist or dropDownList. + + Use the option 'createAction' if the action to add additional foreign Model + options differs from 'create'. + + With 'parentObjects' you can limit the Parent Elements that are being shown. + It takes an array of elements that could be returned from an scope or + an SQL Query. + + The parentObjects can be grouped, for example, with + 'groupParentsBy' => 'city' + + Use the option 'htmlOptions' to pass any html Options to the + Selectbox/Listbox form element. + + Full Example: +
+  $this->widget('application.components.Relation', array(
+   'model' => 'Post',
+   'field' => 'Userid',
+   'style' => 'ListBox',
+   'parentObjects' => Parentmodel::model()->findAll('userid = 17'),
+   'groupParentsBy' => 'city',
+   'relation' => 'user',
+   'relatedPk' => 'id_of_user',
+   'fields' => array( 'username', 'username.group.groupid' ),
+   'delimiter' => ' -> ', // default: ' | '
+   'returnTo' => 'model/create',
+   'addButtonLink' => 'othercontroller/otheraction', // default: ''
+   'showAddButton' => 'click here to add a new User', // default: ''
+   'htmlOptions' => array('style' => 'width: 100px;')
+  ));
+  
+ + + @author Herbert Maschke + @version 1.0rc5 + @since 1.1 + */ + +class Relation extends CWidget +{ + // this Variable holds an instance of the Object + protected $_model; + + // this Variable holds an instance of the related Object + protected $_relatedModel; + + // draw the relation of which model? + public $model; + + // which relation should be rendered? + public $relation; + + public $field; + + // the Primary Key of the foreign Model + public $relatedPk; + + // a field or an array of fields that determine which field values + // should be rendered in the selection + public $fields; + + // if this is set, the User is able to select no related model + // if this is set to a string, this string will be presented + public $allowEmpty = 0; + + // Preselect which items? + public $preselect = array(); + + // disable this to hide the Add Button + // set this to a string to set the String to be displayed + public $showAddButton = true; + public $addButtonLink = ''; + // Set this to false to generate a Link rather than a LinkButton + // This is useful when Javascript is not available + public $useLinkButton = true; + + // use this to set the link where the user should return to after + // clicking the add Button + public $returnLink; + + // How should a data row be rendered. {id} will be replaced by the id of + // the model. You can also insert every field that is available in the + // parent object. + // Use {fields} to display all fields delimited by $this->delimiter + // Use {func0} to {funcX} to evaluate user-contributed functions with the + // $functions array. Example: + // + // 'functions' => array( "CHtml::checkBoxList('parent{id}', '', + // CHtml::listData(Othermodel::model()->findAll(), 'id', 'title'));",), + // 'template' => '#{id} : {fields} ({title}) Allowed other Models: {func0}', + public $template = '{fields}'; + + // User-Contributed functions to be evaluated in template + public $functions = array(); + + // how should multiple fields be delimited + public $delimiter = " | "; + + // style of the selection Widget + public $style = "dropDownList"; + public $htmlOptions = array(); + public $parentObjects = 0; + public $orderParentsBy = 0; + public $groupParentsBy = 0; + + // override this for complicated MANY_MANY relations: + public $manyManyTable = ''; + public $manyManyTableLeft = ''; + public $manyManyTableRight = ''; + + public function init() + { + if(!is_object($this->model)) + { + if(!$this->_model = new $this->model) + throw new CException( + Yii::t('yii','Relation widget is not able to instantiate the given Model')); + } + else + { + $this->_model = $this->model; + } + + // Instantiate Model and related Model + foreach($this->_model->relations() as $key => $value) + { + if(strcmp($this->relation,$key) == 0) + { + // $key = Name of the Relation + // $value[0] = Type of the Relation + // $value[1] = Related Model + // $value[2] = Related Field or Many_Many Table + switch($value[0]) + { + case 'CBelongsToRelation': + case 'CHasOneRelation': + $this->_relatedModel = new $value[1]; + if(!isset($this->field)) + { + $this->field = $value[2]; + } + break; + case 'CManyManyRelation': + preg_match_all('/^.*\(/', $value[2], $matches); + $this->manyManyTable = substr($matches[0][0], 0, strlen($matches[0][0]) -1); + preg_match_all('/\(.*,/', $value[2], $matches); + $this->manyManyTableLeft = substr($matches[0][0], 1, strlen($matches[0][0]) - 2); + preg_match_all('/,.*\)/', $value[2], $matches); + $this->manyManyTableRight = substr($matches[0][0], 2, strlen($matches[0][0]) - 3); + + $this->_relatedModel = new $value[1]; + break; + } + } + } + + if(!is_object($this->_relatedModel)) + throw new CException( + Yii::t('yii','Relation widget cannot find the given Relation('.$this->relation.')')); + + if(!isset($this->relatedPk) || $this->relatedPk == "") + { + $this->relatedPk = $this->_relatedModel->tableSchema->primaryKey; + } + + if(!isset($this->fields) || $this->fields == "" || $this->fields == array()) + throw new CException(Yii::t('yii','Widget "Relation" has been run without fields Option(string or array)')); + } + + // Check if model-value contains '.' and generate -> directives: + public function getModelData($model, $field) + { + if(strstr($field, '.')) + { + $data = explode('.', $field); + $value = $model->getRelated($data[0])->$data[1]; + } else + $value = $model->$field; + + return $value; + } + + /** + * This function fetches all needed data of the related Object and returns them + * in an array that is prepared for use in ListData. + */ + public function getRelatedData() + { + /* At first we determine, if we want to display all parent Objects, or + * if the User supplied an list of Objects */ + if(is_object($this->parentObjects)) // a single Element + { + $parentobjects = array($this->parentObjects); + } + else if(is_array($this->parentObjects)) // Only show this elements + { + $parentobjects = $this->parentObjects; + } + else // Show all Parent elements + { + $parentobjects = CActiveRecord::model(get_class($this->_relatedModel))->findAll(); + } + + if($this->allowEmpty) + if(is_string($this->allowEmpty)) + $dataArray[0] = $this->allowEmpty; + else + $dataArray[0] = Yii::t('app', 'None'); + + foreach($parentobjects as $obj) + { + if(!is_array($this->fields)) + $this->fields = array($this->fields); + + $fields = ''; + foreach($this->fields as $field) + { + $rule = sprintf('{%s}',$field); + $rules[$rule] = $obj->$field; + $fields .= $this->getModelData($obj, $field); + if(count($this->fields) >1) + $fields .= $this->delimiter; + } + + $defaultrules = array( + '{fields}' => $fields, + '{id}' => $obj->{$obj->tableSchema->primaryKey}); + + // Look for user-contributed functions and evaluate them + if($this->functions != array()) + { + foreach($this->functions as $key => $function) + { + $funcrules[sprintf('{func%d}', $key)] = CComponent::evaluateExpression( + strtr($function, $defaultrules)); + } + } + + // Merge the evaluated rules, if exist + if(isset($funcrules)) + $rules = array_merge($rules, $funcrules); + + // Merge the default rules into our ruleset + $rules = array_merge($rules, $defaultrules); + + // Apply the rules to the template + $value = strtr($this->template, $rules); + + if($this->groupParentsBy != '') + { + $dataArray[$obj->{$this->groupParentsBy}][$obj->{$this->relatedPk}] = $value; + } + else + { + $dataArray[$obj->{$this->relatedPk}] = $value; + } + } + + if(!isset($dataArray) || !is_array($dataArray)) + $dataArray = array(); + + return $dataArray; + } + + + /** + * Retrieves the Assigned Objects of the MANY_MANY related Table + */ + public function getAssignedObjects() + { + if(!$this->_model->{$this->_model->tableSchema->primaryKey}) + return array(); + + $sql = sprintf("select * from %s where %s = %s", + $this->manyManyTable, + $this->manyManyTableLeft, + $this->_model->{$this->_model->tableSchema->primaryKey}); + + $result = Yii::app()->db->createCommand($sql)->queryAll(); + + foreach($result as $foreignObject) { + $id = $foreignObject[$this->manyManyTableRight]; + $objects[$id] = $this->_relatedModel->findByPk($id); + } + + return isset($objects) ? $objects : array(); + } + + /** + * Retrieves the not Assigned Objects of the MANY_MANY related Table + * This is used in the two-pane style view. + */ + public function getNotAssignedObjects() + { + foreach($this->getRelatedData() as $key => $value) + { + if(!array_key_exists($key, $this->getAssignedObjects())) + { + $objects[$key] = $this->_relatedModel->findByPk($key); + } + } + + return $objects ? $objects : array(); + } + + /** + * Gets the Values of the given Object or Objects depending on the + * $this->fields the widget requests + */ + public function getObjectValues($objects) + { + if(is_array($objects)) { + foreach($objects as $object) + { + $attributeValues[$object->primaryKey] = $object->{$this->fields}; + } + } + else if(is_object($objects)) + { + $attributeValues[$object->primaryKey] = $objects->{$this->fields}; + } + + return isset($attributeValues) ? $attributeValues : array(); + } + + /* + * How will the Listbox of the MANY_MANY Assignment be called? + */ + public function getListBoxName($ajax = false) + { + if($ajax) + { + return sprintf('%s_%s', + get_class($this->_model), + get_class($this->_relatedModel) + ); + } + else + { + return sprintf('%s[%s]', + get_class($this->_model), + get_class($this->_relatedModel) + ); + } + } + + public function renderBelongsToSelection() { + if(strcasecmp($this->style, "dropDownList") == 0) + echo CHtml::ActiveDropDownList( + $this->_model, + $this->field, + $this->getRelatedData(), + $this->htmlOptions); + else if(strcasecmp($this->style, "listbox") == 0) + echo CHtml::ActiveListBox( + $this->_model, + $this->field, + $this->getRelatedData(), + $this->htmlOptions); + else if(strcasecmp($this->style, "checkbox") == 0) + echo CHtml::ActiveCheckBoxList( + $this->_model, + $this->field, + $this->getRelatedData(), + $this->htmlOptions); + + } + + public function renderManyManySelection() { + if(strcasecmp($this->style, 'twopane') == 0) + $this->renderTwoPaneSelection(); + else if(strcasecmp($this->style, 'checkbox') == 0) + $this->renderCheckBoxListSelection(); + else if(strcasecmp($this->style, 'dropDownList') == 0) + $this->renderManyManyDropDownListSelection(); + else + $this->renderOnePaneSelection(); + } + + + /* + * Renders one dropDownList per selectable related Element. + * The users can add additional entries with the + and remove entries + * with the - Button . + */ + public function renderManyManyDropDownListSelection() + { + $i = 0; + foreach($this->_relatedModel->findAll() as $obj) + { + $i++; + $isAssigned = $this->isAssigned($obj->id); + + echo CHtml::openTag('div', array( + 'id' => 'div' . $i, + 'style' => $isAssigned ? '' : 'display:none;', + )); + echo CHtml::dropDownList('rel-' . $obj->id . "-" . $this->getListBoxName(), + $isAssigned ? $obj->id : 0, + CHtml::listData( + array_merge( + array('0' => $this->allowEmpty), + $this->_relatedModel->findAll()), + $this->relatedPk, + $this->fields + ) + ); + echo CHtml::closeTag('div'); + } + + $jsadd = ' + i = 1; + maxi = '.$i.'; + $(\'#add\').click(function() { +$(\'#div\' + i).show(); +if(i <= maxi) ++i; +}); +'; + + $jssub = ' +$(\'#sub\').click(function() { +if(i > 2) --i; +$(\'#div\' + i).hide(); +}); +'; + + Yii::app()->clientScript->registerScript('addbutton', $jsadd); + Yii::app()->clientScript->registerScript('subbutton', $jssub); + + echo CHtml::button('+', array('id' => 'add')); + echo ' '; + echo CHtml::button('-', array('id' => 'sub')); + echo ' '; + } + + public function isAssigned($id) + { + return in_array($id, array_keys($this->getAssignedObjects())); + } + + public static function retrieveValues($data, $field) + { + $returnArray = array(); + + foreach($data as $key => $value) + { + if(strpos($key, 'rel') !== false) + { + if(isset($value[$field])) + $returnArray[] = $value[$field]; + } + } + + return $returnArray; + } + + +public function renderCheckBoxListSelection() +{ + $keys = array_keys($this->getAssignedObjects()); + + if(isset($this->preselect)) + $keys = $this->preselect; + + echo CHtml::CheckBoxList($this->getListBoxName(), + $keys, + $this->getRelatedData(), + $this->htmlOptions); + } + + + public function renderOnePaneSelection() + { + $keys = array_keys($this->getAssignedObjects()); + + echo CHtml::ListBox($this->getListBoxName(), + $keys, + $this->getRelatedData(), + array('multiple' => 'multiple')); + } + + public function handleAjaxRequest($_POST) { + print_r($_POST); + } + + public function renderTwoPaneSelection() + { + echo CHtml::ListBox($this->getListBoxName(), + array(), + $this->getObjectValues($this->getAssignedObjects()), + array('multiple' => 'multiple')); + + $ajax = + array( + 'type'=>'POST', + 'data'=>array('yeah'), + 'update'=>'#' . $this->getListBoxName(true), + ); + + echo CHtml::ajaxSubmitButton('<<', + array('assign'), + $ajax + ); + + $ajax = + array( + 'type'=>'POST', + 'update'=>'#not_'.$this->getListBoxName(true) + ); + + echo CHtml::ajaxSubmitButton('>>', + array('assign','revoke'=>1), + $ajax);//, + //$data['revoke']); + + + echo CHtml::ListBox('not_' . $this->getListBoxName(), + array(), + $this->getObjectValues($this->getNotAssignedObjects()), + array('multiple' => 'multiple')); + } + +public function run() +{ + if($this->manyManyTable != '') + $this->renderManyManySelection(); + else + $this->renderBelongsToSelection(); + + if($this->showAddButton !== false) + { + $this->renderAddButton(); + } +} +protected function renderAddButton() +{ + if(!isset($this->returnLink) or $this->returnLink == "") + $this->returnLink = $this->model->tableSchema->name . "/create"; + + if($this->addButtonLink != '') + $link = $this->addButtonLink; + else + $link = array( + $this->_relatedModel->tableSchema->name . "/create", + 'returnTo' => $this->returnLink); + + + if(!$this->useLinkButton) + { + echo CHtml::Link( + is_string($this->showAddButton) ? $this->showAddButton : 'New', $link + ); + } + else + { + echo CHtml::LinkButton( + is_string($this->showAddButton) ? $this->showAddButton : 'New', + array('submit' => $link)); + } + +} +} + diff --git a/protected/modules/cms/components/SearchWidget.php b/protected/modules/cms/components/SearchWidget.php new file mode 100644 index 0000000..eee7332 --- /dev/null +++ b/protected/modules/cms/components/SearchWidget.php @@ -0,0 +1,10 @@ +render('search'); + } +} +?> diff --git a/protected/modules/cms/components/views/advert.php b/protected/modules/cms/components/views/advert.php new file mode 100644 index 0000000..676348f --- /dev/null +++ b/protected/modules/cms/components/views/advert.php @@ -0,0 +1,16 @@ +getAssetManager()->publish(Yii::getPathOfAlias('CmsAssets')); +$file = $url . DIRECTORY_SEPARATOR . 'jquery.jshowoff.min.js'; +Yii::app()->clientScript->registerScriptFile($file); +Yii::app()->clientScript->registerScript('advertising', "$('#adverts').jshowoff({links: false, controls:false});"); + +echo '
'; +foreach($adverts as $advert) { + echo ''; +} + +echo '
'; +?> +
diff --git a/protected/modules/cms/components/views/search.php b/protected/modules/cms/components/views/search.php new file mode 100644 index 0000000..1163abd --- /dev/null +++ b/protected/modules/cms/components/views/search.php @@ -0,0 +1,6 @@ + 10)); +echo CHtml::submitButton('Suche'); +echo CHtml::endForm(); +?> diff --git a/protected/modules/cms/controllers/DefaultController.php b/protected/modules/cms/controllers/DefaultController.php new file mode 100644 index 0000000..b76d17b --- /dev/null +++ b/protected/modules/cms/controllers/DefaultController.php @@ -0,0 +1,20 @@ +layout = Yii::app()->controller->module->layout; + return true; + } + + public function actionIndex() + { + $this->render('index'); + } + public function actionAdmin() + { + $this->render('admin'); + } + +} diff --git a/protected/modules/cms/controllers/SitecontentController.php b/protected/modules/cms/controllers/SitecontentController.php new file mode 100644 index 0000000..72dde78 --- /dev/null +++ b/protected/modules/cms/controllers/SitecontentController.php @@ -0,0 +1,176 @@ +layout = Yii::app()->controller->module->layout; + return true; + } + public function accessRules() + { + return array( + array('deny', + 'actions'=>array('*'), + 'users'=>array('*'), + ), + array('allow', + 'actions'=>array('*'), + 'roles'=>array('admin'), + ) + ); + } + public function actionSearch() + { + $q = new CDbCriteria(); + $q->addSearchCondition('content',$_POST['search']); + $results = Sitecontent::model()->findAll($q); + $q = new CDbCriteria(); + $q->addSearchCondition('beschreibung',$_POST['search']); + $results = Verein::model()->findAll($q); + + $this->render('results', array( + 'results' => $results, + 'search' => $_POST['search'])); + } + + public static function getContent($id) { + if($model = Sitecontent::model()->findByPk($id)) { + return $model->content; + } + } + + public function filters() + { + return array('accessControl'); + } + + public function actionView() + { + $model = $this->loadContent(); + + $this->breadcrumbs = array($model->title); + if($model->depth == 1) { + $this->menu = CMS::getMenuPoints($model->id); + } elseif ($model->depth == 2){ + $this->menu = CMS::getMenuPoints($model->oparent->id); + } + $this->render('view', array( + 'sitecontent' => $model, + )); + } + + public function actionCreate() + { + $model=new Sitecontent; + + $this->performAjaxValidation($model); + + if(isset($_POST['Sitecontent'])) + { + $model->attributes=$_POST['Sitecontent']; + $model->createtime = time(); + $model->updatetime = time(); + + if(isset(Yii::app()->user->id)) + $model->authorid = Yii::app()->user->id; + + if($model->save()) + $this->redirect(array('admin')); + } + + if(isset($_GET['position'])) + $model->position = $_GET['position']; + + $this->render('create',array( + 'model'=>$model, + )); + } + + public function actionUpdate() + { + $model=$this->loadContent(); + + $this->performAjaxValidation($model); + + if(isset($_POST['Sitecontent'])) + { + $model->attributes=$_POST['Sitecontent']; + $model->updatetime = time(); + if($model->save()) + $this->redirect(array('admin')); + } + + $this->render('update',array( + 'model'=>$model, + )); + } + + public function actionDelete() + { + if(Yii::app()->request->isPostRequest) + { + $this->loadContent()->delete(); + + if(!isset($_POST['ajax'])) + $this->redirect(array('index')); + } + else + throw new CHttpException(400,Yii::t('App','Invalid request. Please do not repeat this request again.')); + } + + public function actionIndex() + { + $dataProvider=new CActiveDataProvider('Sitecontent'); + $this->render('index',array( + 'dataProvider'=>$dataProvider, + )); + } + + public function actionAdmin() + { + $model=new Sitecontent('search'); + if(isset($_GET['Sitecontent'])) + $model->attributes=$_GET['Sitecontent']; + + $this->render('admin',array( + 'model'=>$model, + )); + } + + public function loadContent() + { + if($this->_model===null) + { + if(isset($_GET['id']) && is_array(@$_GET['id'])) + $this->_model = Sitecontent::model()->find('id = :id and language = :language', array( + ':id' => $_GET['id']['id'], + ':language' => $_GET['id']['language'], + )); + if(isset($_GET['id']) && !is_array($_GET['id'])) + $this->_model = Sitecontent::model()->find('id = :id', array( + ':id' => $_GET['id'], + )); + + if($this->_model === null) + $this->_model = Sitecontent::model()->find("title_url = :page", array( + ':page' => $_GET['page'])); + if($this->_model===null) + throw new CHttpException(404,Yii::t('App','We are sorry. The requested page does not exist.')); + } + return $this->_model; + } + + protected function performAjaxValidation($model) + { + if(isset($_POST['ajax']) && $_POST['ajax']==='sitecontent-form') + { + echo CActiveForm::validate($model); + Yii::app()->end(); + } + } +} diff --git a/protected/modules/cms/docs/cms.mwb b/protected/modules/cms/docs/cms.mwb new file mode 100644 index 0000000..07682c5 Binary files /dev/null and b/protected/modules/cms/docs/cms.mwb differ diff --git a/protected/modules/cms/docs/install.txt b/protected/modules/cms/docs/install.txt new file mode 100644 index 0000000..72b92dc --- /dev/null +++ b/protected/modules/cms/docs/install.txt @@ -0,0 +1,64 @@ +How to install this Content Management Module in your Yii application: + +1.) Extract the archive into your protected/modules folder. + +2.) Import the docs/schema_mysql.sql to the mysql Database that your +Application runs. Only one table, called 'sitecontent', will be inserted. + +$ mysql -u root -p < docs/schema_mysql.sql -D database_name + +Add the module to your application Configuration. +[...] +'modules' => array( + 'cms' => array( + 'languages' => array('en', 'de') // <-- languages you want to allow + ) + ), +[...] + +If you want to use the layout of your existing Web Application, set the layout +to an empty string, or null: + + 'layout' => null, + +Otherwise an lightweight default layout of the cms will be used. + +Administrate your Content by using +http://app/index.php?r=cms/sitecontent/admin + +or, when using a Route configuration, possibly + +http://app/index.php/cms/sitecontent/admin + +Please not that a 'sitecontent'-entry acts as a sitecontent as well as a +menu point. + +In order to let your Application render the content at appropriate places, +do is like this: + +// This will render a
  • -based Menu containing all child elements of +// the menu points. +Cms::renderMenuPoints($id_of_the_sitecontent_page); + +Use Cms::render($page, $language) to render sitecontent everywhere you want +in your views, models or controllers: + +// render sitecontent page 3 + + +// render sitecontent page with the url_title footer + + +// render sitecontent page with the url_title footer in _french_. +// note that, by default, cms::render tries to resolve the page in the +// language of Yii::app()->language: + + + +Please also read CmsModule.php for additional configuration options. + +Feel free to contact me at: +skype: herbertmaschke +icq: 38541423 +email: thyseus@gmail.com +yii-forum username: thyseus diff --git a/protected/modules/cms/docs/schema_mysql.sql b/protected/modules/cms/docs/schema_mysql.sql new file mode 100644 index 0000000..372f837 --- /dev/null +++ b/protected/modules/cms/docs/schema_mysql.sql @@ -0,0 +1,17 @@ +CREATE TABLE IF NOT EXISTS `sitecontent` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `parent` int(11) NOT NULL, + `authorid` varchar(255) DEFAULT NULL, + `language` varchar(5) NOT NULL, + `position` int(10) unsigned NOT NULL, + `keywords` varchar(255) NULL, + `description` varchar(255) NULL, + `title_url` varchar(80) NOT NULL, + `title_browser` varchar(80) NOT NULL, + `title` varchar(255) NOT NULL, + `content` text NOT NULL, + `createtime` int(11) DEFAULT NULL, + `updatetime` int(11) DEFAULT NULL, + PRIMARY KEY (`id`, `language`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + diff --git a/protected/modules/cms/messages/de/cms.php b/protected/modules/cms/messages/de/cms.php new file mode 100644 index 0000000..ea84286 --- /dev/null +++ b/protected/modules/cms/messages/de/cms.php @@ -0,0 +1,50 @@ + 'Suchergebnisse', + 'Promote' => 'Bewerben', + 'Results:' => 'Treffer:', + 'No results found' => 'Keine Treffer gefunden', + 'Search' => 'Suche', + 'search' => 'Suche', + 'Menustructure' => 'Menüstruktur', + 'Parent' => 'Übergeordneter Menüpunkt', + 'Sort order' => 'Sortierreihenfolge', + 'Title' => 'Titel', + 'Show Menu Structure' => 'Menüstruktur anzeigen', + 'Manage the Menu structure' => 'Menüstruktur verwalten', + 'Manage Menustructure' => 'Menüstruktur verwalten', + 'Create new Menupoint' => 'Neuen Menüpunkt hinzufügen', + 'Manage Sitecontent' => 'Seiteninhalt verwalten', + 'Create new Sitecontent' => 'Neuen Seiteninhalt erstellen', + 'Create new sitecontent here' => 'Hier neuen Seiteninhalt erstellen', + 'Edit this sitecontent' => 'Diesen Seiteninhalt bearbeiten', + 'Sort' => 'Sortierung', + 'Content' => 'Inhalt', + 'Author' => 'Autor', + 'Createtime' => 'Erstellt am', + 'Updatetime' => 'Zuletzt geändert am', + 'Sitecontent' => 'Seiteninhalt', + 'Manage' => 'Verwaltung', + 'Root' => 'Wurzelebene', + 'View Menustructure' => 'Menüstruktur anzeigen', + 'Create new Menuentry' => 'Neuen Menüpunkt anlegen', + 'View Entry' => 'Menüpunkt anzeigen', + 'This Menuentry has the following Sitecontent' => 'Dieser Menüeintrag besitzt folgende Seiteninhalte', + 'This Menuentry has no Sitecontent yet' => 'Dieser Menüeintrag besitzt noch keine Seiteninhalte', + 'Welcome to your CMS' => 'Willkommen zum Content Management System', + 'Update menupoint' => 'Menüpunkt bearbeiten', + 'Create sitecontent' => 'Seiteninhalt erstellen', + 'Create menupoint' => 'Menüpunkt erstellen', + 'Save sitecontent' => 'Seiteninhalt speichern', + 'Save menupoint' => 'Menüpunkt speichern', + 'Create' => 'Erstellen', + 'Save' => 'Speichern', + 'Update' => 'Bearbeite', + 'Language' => 'Sprache', + '' => '', + '' => '', + '' => '', + '' => '', + '' => '', +); +?> diff --git a/protected/modules/cms/models/Cms.php b/protected/modules/cms/models/Cms.php new file mode 100644 index 0000000..e07ad4e --- /dev/null +++ b/protected/modules/cms/models/Cms.php @@ -0,0 +1,77 @@ +getModule('cms'); + + } + public static function t($string, $params = array()) + { + Yii::import('application.modules.cms.CmsModule'); + return Yii::t('CmsModule.cms', $string, $params); + } + + public static function render($id = null, $return = false, $lang = null) { + if($lang === null) + $lang = Yii::app()->language; + + $column = 'id'; + if(!is_numeric($id)) + $column = 'title_url'; + + if($id) { + $sitecontent = Sitecontent::model()->find( + $column . ' = :id and language = :lang', array( + ':id' => $id, + ':lang' => $lang)); + + // If the sitecontent is not available in the requested language, + // try to fallback to the first natural found sitecontent in the db + if(!$sitecontent) + $sitecontent = Sitecontent::model()->find( + $column .' = :id', array( + ':id' => $id)); + + if(!$sitecontent && Yii::app()->getModule('cms')->strict404raising) + throw new CHttpException(404); + else if (!$sitecontent) { + $sitecontent = new Sitecontent(); + $sitecontent->content = ""; + } + else if($return) + return $sitecontent->content; + else + echo $sitecontent->content; + } + } + + public static function renderMenuPoints($id) { + if(is_numeric($id)) + $sitecontent = Sitecontent::model()->findByAttributes(array('id'=> $id)); + $childs = $sitecontent->childs; + if($childs) { + foreach($sitecontent->childs as $child) { + printf('
  • %s
  • ', + CHtml::link($child->title, array( + '/cms/sitecontent/view', 'page' => $child->title_url) )); + } + } + } + public static function getMenuPoints($id) { + $tmp=array(); + if(is_numeric($id)) + $sitecontent = Sitecontent::model()->findByAttributes(array('id'=> $id)); + $childs = $sitecontent->childs; + if($childs) { + + foreach($sitecontent->childs as $child) { + Yii::trace("Lala","Debug"); + $tmp = array_merge($tmp,array(array('label'=>$child->title, 'url'=>array('/cms/sitecontent/view', 'page'=>$child->title_url)))); + } + } + return $tmp; + } +} diff --git a/protected/modules/cms/models/Sitecontent.php b/protected/modules/cms/models/Sitecontent.php new file mode 100644 index 0000000..17e6f0f --- /dev/null +++ b/protected/modules/cms/models/Sitecontent.php @@ -0,0 +1,92 @@ +controller->module->enableHtmlPurifier) { + $purifier = new CHtmlPurifier(); + $this->content = $purifier->purify($this->content); + } + return parent::beforeValidate(); + } + + public function tableName() + { + return 'sitecontent'; + } + + public function rules() + { + return array( + array('position, title, language, depth', 'required'), + array('parent, depth, position, createtime, updatetime', 'numerical', 'integerOnly'=>true), + array('title, keywords, description', 'length', 'max'=>255), + array('content, title_url, title_browser', 'safe'), + array('title, keywords, description, content, language', 'safe', 'on'=>'search'), + ); + } + + public function relations() + { + return array( + 'oparent' => array(self::BELONGS_TO, 'Sitecontent', 'parent'), + 'childs' => array(self::HAS_MANY, 'Sitecontent', 'parent'), + ); + } + + public function attributeLabels() + { + return array( + 'id' => '#', + 'parent' => Yii::t('CmsModule.cms', 'Parent'), + 'position' => Yii::t('CmsModule.cms', 'Position'), + 'title' => Yii::t('CmsModule.cms', 'Title'), + 'title_url' => Yii::t('CmsModule.cms', 'URL title'), + 'title_browser' => Yii::t('CmsModule.cms', 'Browser title'), + 'content' => Yii::t('CmsModule.cms', 'Content'), + 'authorid' => Yii::t('CmsModule.cms', 'Authorid'), + 'createtime' => Yii::t('CmsModule.cms', 'Createtime'), + 'updatetime' => Yii::t('CmsModule.cms', 'Updatetime'), + 'language' => Yii::t('CmsModule.cms', 'Language'), + 'depth' => Yii::t('CmsModule.cms', 'Depth'), + ); + } + + public function search() + { + $criteria=new CDbCriteria; + + $criteria->compare('id',$this->id); + $criteria->compare('position',$this->position); + $criteria->compare('language',$this->language); + $criteria->compare('title',$this->title,true); + $criteria->compare('keywords',$this->keywords,true); + $criteria->compare('description',$this->description,true); + $criteria->compare('content',$this->content,true); + $criteria->compare('authorid',$this->authorid); + $criteria->compare('createtime',$this->createtime); + $criteria->compare('updatetime',$this->updatetime); + //$criteria->compare('depth',$this->depth); + + return new CActiveDataProvider('Sitecontent', array( + 'criteria'=>$criteria, + )); + } + + public function beforeSave() { + if ($this->parent > 0){ + $this->depth = $this->oparent->depth + 1; + + } + return parent::beforeSave(); + } +} diff --git a/protected/modules/cms/views/default/index.php b/protected/modules/cms/views/default/index.php new file mode 100644 index 0000000..327a9e0 --- /dev/null +++ b/protected/modules/cms/views/default/index.php @@ -0,0 +1,21 @@ +breadcrumbs=array( + $this->module->id, +); + +$this->menu = array( + array( + 'label' => Cms::t('Manage Sitecontent'), + 'url' => array('sitecontent/admin') + ), + array( + 'label' => Cms::t('Create new Sitecontent'), + 'url' => array('sitecontent/create') + ), +); + +?> + +

    + + diff --git a/protected/modules/cms/views/layouts/cms.php b/protected/modules/cms/views/layouts/cms.php new file mode 100644 index 0000000..5398422 --- /dev/null +++ b/protected/modules/cms/views/layouts/cms.php @@ -0,0 +1,38 @@ + + + + + + + <?php echo CHtml::encode($this->pageTitle); ?> + + + + widget('zii.widgets.CBreadcrumbs', array( + 'links'=>$this->breadcrumbs, + )); ?> + + + +
    +widget('zii.widgets.CMenu',array( + 'items'=>$this->menu + ) +); +?> +
    + +
    + + + + + + + + +clientScript->registerCssFile(Yii::app()->baseUrl.'/css/form.css'); ?> diff --git a/protected/modules/cms/views/sitecontent/_form.php b/protected/modules/cms/views/sitecontent/_form.php new file mode 100644 index 0000000..6c8d056 --- /dev/null +++ b/protected/modules/cms/views/sitecontent/_form.php @@ -0,0 +1,105 @@ +getModule('cms')->rtepath != false) +Yii::app()->clientScript-> registerScriptFile(Yii::app()->getModule('cms')->rtepath, CClientScript::POS_HEAD); +if(Yii::app()->getModule('cms')->rteadapter != false) +Yii::app()->clientScript-> registerScriptFile(Yii::app()->getModule('cms')->rteadapter, CClientScript::POS_HEAD); + +?> + +
    + +beginWidget('CActiveForm', array( + 'id'=>'sitecontent-form', + 'enableAjaxValidation'=>true, + )); ?> + +errorSummary($model); ?> + +
    +labelEx($model,'parent'); ?> +findAll(), + 'id', + 'title'), + array( + 'empty' => array( + '0' => ' - '))); ?> +error($model,'header'); ?> +
    + +
    +labelEx($model,'position'); ?> + +position, + $position); ?> +error($model,'position'); ?> +
    + +
    +labelEx($model,'id'); ?> +textField($model,'id',array('size'=>5,'maxlength'=>11)); ?> +error($model,'id'); ?> +
    + + +
    +labelEx($model,'title'); ?> +textField($model,'title',array('size'=>60,'maxlength'=>255)); ?> +error($model,'title'); ?> +
    + +
    +labelEx($model,'keywords'); ?> +textField($model,'keywords',array('size'=>60,'maxlength'=>255)); ?> +error($model,'keywords'); ?> +
    + +
    +labelEx($model,'description'); ?> +textField($model,'description',array('size'=>60,'maxlength'=>255)); ?> +error($model,'description'); ?> +
    + +
    +labelEx($model,'title_browser'); ?> +textField($model,'title_browser',array('size'=>60,'maxlength'=>80)); ?> +error($model,'title_browser'); ?> +
    + +
    +labelEx($model,'title_url'); ?> +textField($model,'title_url',array('size'=>60,'maxlength'=>80)); ?> +error($model,'title_url'); ?> +
    + +
    +labelEx($model,'language'); ?> +dropDownList($model,'language',Yii::app()->controller->module->languages); ?> +error($model,'language'); ?> +
    + + +
    +labelEx($model,'content'); ?> +widget('application.extensions.extckeditor.ExtCKEditor', array( +'model'=>$model, +'attribute'=>'content', // model atribute +'language'=>'DE', /* default lang, If not declared the language of the project will be used in case of using multiple languages */ +'editorTemplate'=>'full', // Toolbar settings (full, basic, advanced) +)); ?> +textArea($model,'content',array('rows'=>6, 'cols'=>50)); ?> +clientScript->registerScript("ckeditor", "$('#Sitecontent_content').ckeditor();"); ?> +error($model,'content'); ?> +
    + +
    +isNewRecord + ? Yii::t('CmsModule.cms', 'Create sitecontent') + : Yii::t('CmsModule.cms', 'Save sitecontent')); ?> +
    + +endWidget(); ?> + +
    diff --git a/protected/modules/cms/views/sitecontent/_search.php b/protected/modules/cms/views/sitecontent/_search.php new file mode 100644 index 0000000..e67934a --- /dev/null +++ b/protected/modules/cms/views/sitecontent/_search.php @@ -0,0 +1,49 @@ +
    + +beginWidget('CActiveForm', array( + 'action'=>Yii::app()->createUrl($this->route), + 'method'=>'get', +)); ?> + +
    + label($model,'id'); ?> + textField($model,'id'); ?> +
    + +
    + label($model,'position'); ?> + textField($model,'position'); ?> +
    + +
    + label($model,'title'); ?> + textField($model,'title',array('size'=>60,'maxlength'=>255)); ?> +
    + +
    + label($model,'content'); ?> + textArea($model,'content',array('rows'=>6, 'cols'=>50)); ?> +
    + +
    + label($model,'authorid'); ?> + textField($model,'authorid'); ?> +
    + +
    + label($model,'createtime'); ?> + textField($model,'createtime'); ?> +
    + +
    + label($model,'updatetime'); ?> + textField($model,'updatetime'); ?> +
    + +
    + +
    + +endWidget(); ?> + +
    diff --git a/protected/modules/cms/views/sitecontent/_short.php b/protected/modules/cms/views/sitecontent/_short.php new file mode 100644 index 0000000..0352c04 --- /dev/null +++ b/protected/modules/cms/views/sitecontent/_short.php @@ -0,0 +1,34 @@ +
    + + getAttributeLabel('id')); ?>: + id), array('view', 'id'=>$data->id)); ?> +
    + + getAttributeLabel('position')); ?>: + position); ?> +
    + + getAttributeLabel('title')); ?>: + title); ?> +
    + + getAttributeLabel('content')); ?>: + content); ?> +
    + + getAttributeLabel('authorid')); ?>: + authorid); ?> +
    + + getAttributeLabel('createtime')); ?>: + createtime); ?> +
    + + getAttributeLabel('updatetime')); ?>: + updatetime); ?> +
    + + */ ?> + +
    diff --git a/protected/modules/cms/views/sitecontent/_view.php b/protected/modules/cms/views/sitecontent/_view.php new file mode 100644 index 0000000..0352c04 --- /dev/null +++ b/protected/modules/cms/views/sitecontent/_view.php @@ -0,0 +1,34 @@ +
    + + getAttributeLabel('id')); ?>: + id), array('view', 'id'=>$data->id)); ?> +
    + + getAttributeLabel('position')); ?>: + position); ?> +
    + + getAttributeLabel('title')); ?>: + title); ?> +
    + + getAttributeLabel('content')); ?>: + content); ?> +
    + + getAttributeLabel('authorid')); ?>: + authorid); ?> +
    + + getAttributeLabel('createtime')); ?>: + createtime); ?> +
    + + getAttributeLabel('updatetime')); ?>: + updatetime); ?> +
    + + */ ?> + +
    diff --git a/protected/modules/cms/views/sitecontent/admin.php b/protected/modules/cms/views/sitecontent/admin.php new file mode 100644 index 0000000..4a5ab8c --- /dev/null +++ b/protected/modules/cms/views/sitecontent/admin.php @@ -0,0 +1,71 @@ +breadcrumbs=array( + Cms::t('Sitecontent')=>array('index'), + Cms::t('Manage'), +); + +$this->menu=array( + array( + 'label'=>Cms::t('Manage Sitecontent'), + 'url'=>array('sitecontent/admin') + ), + array( + 'label'=>Cms::t('Create new Sitecontent'), + 'url'=>array('create')), + ); + +Yii::app()->clientScript->registerScript('search', " +$('.search-button').click(function(){ + $('.search-form').toggle(); + return false; +}); +$('.search-form form').submit(function(){ + $.fn.yiiGridView.update('sitecontent-grid', { + data: $(this).serialize() + }); + return false; +}); +"); +?> + +

    + +'search-button')); ?> + + +widget('zii.widgets.grid.CGridView', array( + 'id'=>'sitecontent-grid', + 'dataProvider'=>$model->search(), + 'filter'=>$model, + 'columns'=>array( + 'id', + array( + 'name' => 'language', + 'filter' => Yii::app()->controller->module->languages, + ), + 'title', + 'keywords', + 'description', + array( + 'name'=>'createtime', + 'value'=>'date(Yii::app()->controller->module->dateformat, $data->createtime)', + 'filter' => false, + ), + array( + 'name'=>'updatetime', + 'value'=>'date(Yii::app()->controller->module->dateformat, $data->updatetime)', + 'filter' => false, + ), + 'position', + array( + 'class'=>'CButtonColumn', + ), + ), + )); ?> + + diff --git a/protected/modules/cms/views/sitecontent/create.php b/protected/modules/cms/views/sitecontent/create.php new file mode 100644 index 0000000..88ff27e --- /dev/null +++ b/protected/modules/cms/views/sitecontent/create.php @@ -0,0 +1,21 @@ +breadcrumbs=array( + Yii::t('CmsModule.cms', 'Sitecontent')=>array('admin'), + Yii::t('CmsModule.cms', 'Create'), +); + +$this->menu=array( + array( + 'label'=>Yii::t('CmsModule.cms', 'Manage Menustructure'), + 'url'=>array('menustructure/admin') + ), + array( + 'label'=>Yii::t('CmsModule.cms', 'Manage Sitecontent'), + 'url'=>array('sitecontent/admin') + ), +); +?> + +

    + +renderPartial('_form', array('model'=>$model)); ?> diff --git a/protected/modules/cms/views/sitecontent/draw.php b/protected/modules/cms/views/sitecontent/draw.php new file mode 100644 index 0000000..9c34a12 --- /dev/null +++ b/protected/modules/cms/views/sitecontent/draw.php @@ -0,0 +1,4 @@ +

    title?>

    +content); +echo $sitecontent->content; +?> diff --git a/protected/modules/cms/views/sitecontent/index.php b/protected/modules/cms/views/sitecontent/index.php new file mode 100644 index 0000000..0d1f003 --- /dev/null +++ b/protected/modules/cms/views/sitecontent/index.php @@ -0,0 +1,25 @@ +breadcrumbs=array( + 'Sitecontents', +); + +$this->menu=array( + array( + 'label'=>Yii::t('CmsModule.cms', 'Manage Menustructure'), + 'url'=>array('menustructure/admin') + ), + array( + 'label'=>Yii::t('CmsModule.cms', 'Manage Sitecontent'), + 'url'=>array('sitecontent/admin') + ), + array('label'=>Yii::t('App', 'Create').' Sitecontent', 'url'=>array('create')), + array('label'=>Yii::t('App', 'Manage').' Sitecontent', 'url'=>array('admin')), +); +?> + +

    Sitecontents

    + +widget('zii.widgets.CListView', array( + 'dataProvider'=>$dataProvider, + 'itemView'=>'_view', +)); ?> diff --git a/protected/modules/cms/views/sitecontent/results.php b/protected/modules/cms/views/sitecontent/results.php new file mode 100644 index 0000000..ed55117 --- /dev/null +++ b/protected/modules/cms/views/sitecontent/results.php @@ -0,0 +1,19 @@ +breadcrumbs = array(Yii::t('CmsModule.cms', 'Search results')); + +if($results != array()) { + printf('

    %s %s

    ', + count($results), + Yii::t('CmsModule.cms', 'Results:')); + + echo '
      '; + foreach($results as $result) { + printf('
    • %s
    • ', + CHtml::link($result->title, array( + '//cms/sitecontent/view', 'id' => $result->id, 'highlight' => $search))); + } + echo '
    '; +} else { + echo Yii::t('CmsModule.cms', 'No results found'); +} +?> diff --git a/protected/modules/cms/views/sitecontent/update.php b/protected/modules/cms/views/sitecontent/update.php new file mode 100644 index 0000000..5ed7e8d --- /dev/null +++ b/protected/modules/cms/views/sitecontent/update.php @@ -0,0 +1,18 @@ +breadcrumbs=array( + Yii::t('CmsModule.cms', 'Sitecontent')=>array('admin'), + $model->id=>array('view','id'=>$model->id), + Yii::t('CmsModule.cms', 'Update'), +); + +$this->menu=array( + array( + 'label'=>Yii::t('CmsModule.cms', 'Manage Sitecontent'), + 'url'=>array('sitecontent/admin') + ), +); +?> + +

    title; ?>

    + +renderPartial('_form', array('model'=>$model)); ?> diff --git a/protected/modules/cms/views/sitecontent/view.php b/protected/modules/cms/views/sitecontent/view.php new file mode 100644 index 0000000..c75f610 --- /dev/null +++ b/protected/modules/cms/views/sitecontent/view.php @@ -0,0 +1,47 @@ +pageTitle = $sc->title . ' - ' . Yii::app()->name; +if(isset($menu)) + $this->pageTitle = $menu->title. ' - ' . Yii::app()->name; + +if(Yii::app()->user->id == 1) // is admin +{ + if(is_object($sitecontent)) + { + $this->renderPartial('draw', array('sitecontent' => $sitecontent)); + echo "
    "; + echo CHtml::link(Yii::t('CmsModule.cms', 'Edit this sitecontent'), + array('/cms/sitecontent/update', 'id' => $sitecontent->id)); + } + else if ($sitecontent == array()) + { + echo CHtml::link(Yii::t('CmsModule.cms', 'Create new sitecontent here'), + array('/cms/sitecontent/create', 'position' => $menu->id)); + + } else if (is_array($sitecontent)) + { + foreach($sitecontent as $sc) + { + $this->renderPartial('draw', array('sitecontent' => $sc)); + echo "
    "; + echo CHtml::link(Yii::t('CmsModule.cms', 'Edit this sitecontent'), + array('/cms/sitecontent/update', 'id' => $sc->id)); + } + } +} +else +{ + if(!is_null($sitecontent)) + if(is_object($sitecontent)) + $this->renderPartial('draw', array('sitecontent' => $sitecontent)); + else + foreach($sitecontent as $sc) + { + $this->renderPartial('draw', array('sitecontent' => $sc)); + } + +} + +if(isset($menu)) + $this->breadcrumbs = array($menu->title); + diff --git a/protected/views/mail/newVerein.php b/protected/views/mail/newVerein.php index 13362fa..6f3afd4 100644 --- a/protected/views/mail/newVerein.php +++ b/protected/views/mail/newVerein.php @@ -20,15 +20,13 @@ Benutzername: Passwort: - Bitte halten Sie Ihr Passwort vertraulich, mit ihm können alle Ihre Daten auf der Homepage geändert werden. Sollten Sie Fragen bezüglich der Altstadtfesthomepage haben, wenden Sie sich bitte direkt an uns: info@astaf.de oder 07151 273649 (Patrick Seeger) -Am Beispiel des Computerclubs Waiblingen sehen Sie eine vollständig -ausgefüllte Vereinspräsentation mit Angeboten und (wenigen) Terminen. -http://www.astaf.de/index.php?option=showVerein&task=details?id=8 + +Bitte beachten Sie, dass Ihre Änderungen nicht sofort auf der Homepage angezeigt werden. Mit freundlichen Grüßen Das Altstadtfest Homepageteam diff --git a/protected/views/speisTrank/_form.php b/protected/views/speisTrank/_form.php index ca1ba6f..cd1ea4c 100644 --- a/protected/views/speisTrank/_form.php +++ b/protected/views/speisTrank/_form.php @@ -23,7 +23,7 @@
    labelEx($model,'beschreibung'); ?> - widget('application.extensions.tinymce.ETinyMce', + widget('application.extensions.tinymce.ETinyMce', array( 'name'=>'beschreibung', "value"=>$model->beschreibung, @@ -32,7 +32,13 @@ "language"=>"de", "height"=>"200px", ) - ); + );*/ + $this->widget('application.extensions.extckeditor.ExtCKEditor', array( + 'model'=>$model, + 'attribute'=>'beschreibung', // model atribute + 'language'=>'DE', /* default lang, If not declared the language of the project will be used in case of using multiple languages */ + 'editorTemplate'=>'basic', // Toolbar settings (full, basic, advanced) +)); ?> error($model,'beschreibung'); ?>
    diff --git a/protected/views/speisTrank/create.php b/protected/views/speisTrank/create.php index bf77319..b2d72bd 100644 --- a/protected/views/speisTrank/create.php +++ b/protected/views/speisTrank/create.php @@ -11,4 +11,4 @@ $this->menu=array(

    Kulinarisches Angebot erstellen

    -renderPartial('_form', array('model'=>$model, 'kategorien'=>$kategorien, 'einheiten'=>$einheiten)); ?> \ No newline at end of file +renderPartial('_form', array('model'=>$model, 'kategorien'=>$kategorien));/*, 'einheiten'=>$einheiten));*/ ?> \ No newline at end of file diff --git a/protected/views/veranstaltung/_form.php b/protected/views/veranstaltung/_form.php index 833c693..5f5b6bf 100644 --- a/protected/views/veranstaltung/_form.php +++ b/protected/views/veranstaltung/_form.php @@ -63,7 +63,13 @@
    labelEx($model,'beschreibung'); ?> - widget('application.extensions.tinymce.ETinyMce', + widget('application.extensions.extckeditor.ExtCKEditor', array( + 'model'=>$model, + 'attribute'=>'beschreibung', // model atribute + 'language'=>'DE', /* default lang, If not declared the language of the project will be used in case of using multiple languages */ + 'editorTemplate'=>'basic', // Toolbar settings (full, basic, advanced) + )); + /*$this->widget('application.extensions.tinymce.ETinyMce', array( 'name'=>'beschreibung', "value"=>$model->beschreibung, @@ -73,7 +79,7 @@ "height"=>"200px", ) ); - ?> + */?> error($model,'beschreibung'); ?>
    diff --git a/protected/views/verein/_form.php b/protected/views/verein/_form.php index dbda2db..5b6bf46 100644 --- a/protected/views/verein/_form.php +++ b/protected/views/verein/_form.php @@ -49,7 +49,7 @@
    labelEx($model,'kontaktdaten'); ?> - widget('application.extensions.tinymce.ETinyMce', + widget('application.extensions.tinymce.ETinyMce', array( 'name'=>'kontaktdaten', "value"=>$model->kontaktdaten, @@ -59,14 +59,26 @@ "height"=>"150px", ) ); - ?> - textArea($model,'kontaktdaten',array('rows'=>6, 'cols'=>50)); */?> + */?> + textArea($model,'kontaktdaten',array('rows'=>6, 'cols'=>50));*/ ?> + widget('application.extensions.extckeditor.ExtCKEditor', array( +'model'=>$model, +'attribute'=>'kontaktdaten', // model atribute +'language'=>'DE', /* default lang, If not declared the language of the project will be used in case of using multiple languages */ +'editorTemplate'=>'basic', // Toolbar settings (full, basic, advanced) +)); ?> error($model,'kontaktdaten'); ?>
    labelEx($model,'beschreibung'); ?> - widget('application.extensions.tinymce.ETinyMce', + widget('application.extensions.extckeditor.ExtCKEditor', array( +'model'=>$model, +'attribute'=>'beschreibung', // model atribute +'language'=>'DE', /* default lang, If not declared the language of the project will be used in case of using multiple languages */ +'editorTemplate'=>'basic', // Toolbar settings (full, basic, advanced) +)); ?> + widget('application.extensions.tinymce.ETinyMce', array( 'name'=>'beschreibung', "value"=>$model->beschreibung, @@ -75,7 +87,7 @@ "language"=>"de", "height"=>"200px", ) - ); + );*/ ?> textArea($model,'beschreibung',array('rows'=>6, 'cols'=>50)); */?> error($model,'beschreibung'); ?> -- cgit v1.0-28-g1787