├── .gitignore ├── Changes ├── Makefile.PL ├── README ├── cidercms.yml ├── cidercms_test.yml ├── lib ├── Catalyst │ ├── Authentication │ │ └── Store │ │ │ └── CiderCMS.pm │ └── DispatchType │ │ └── CiderCMS.pm ├── CiderCMS.pm ├── CiderCMS │ ├── Attribute.pm │ ├── Attribute │ │ ├── Boolean.pm │ │ ├── Controller.pm │ │ ├── Date.pm │ │ ├── DateTime.pm │ │ ├── Email.pm │ │ ├── File.pm │ │ ├── Image.pm │ │ ├── Integer.pm │ │ ├── Object.pm │ │ ├── Password.pm │ │ ├── Plaintext.pm │ │ ├── Recipient.pm │ │ ├── String.pm │ │ ├── Text.pm │ │ ├── Time.pm │ │ └── Title.pm │ ├── Controller │ │ ├── Content.pm │ │ ├── Content │ │ │ ├── Management.pm │ │ │ └── Management │ │ │ │ └── Gallery.pm │ │ ├── Custom │ │ │ ├── Registration.pm │ │ │ └── Reservation.pm │ │ ├── Root.pm │ │ ├── System.pm │ │ ├── System │ │ │ ├── Publish.pm │ │ │ └── Types.pm │ │ └── User.pm │ ├── Model │ │ └── DB.pm │ ├── Object.pm │ ├── Search.pm │ ├── Test.pm │ ├── User.pm │ └── View │ │ └── Petal.pm └── Petal │ └── Utils │ └── Reverse.pm ├── root ├── favicon.ico ├── initial_schema.sql ├── static │ ├── css │ │ ├── calendar.css │ │ └── management.css │ ├── images │ │ ├── btn_120x50_built.png │ │ ├── btn_120x50_built_shadow.png │ │ ├── btn_120x50_powered.png │ │ ├── btn_120x50_powered_shadow.png │ │ ├── btn_88x31_built.png │ │ ├── btn_88x31_built_shadow.png │ │ ├── btn_88x31_powered.png │ │ ├── btn_88x31_powered_shadow.png │ │ ├── calendar │ │ │ ├── cal.gif │ │ │ ├── next_mon.gif │ │ │ ├── next_year.gif │ │ │ ├── no_cal.gif │ │ │ ├── pixel.gif │ │ │ ├── prev_mon.gif │ │ │ ├── prev_year.gif │ │ │ ├── shade_bl.png │ │ │ ├── shade_bm.png │ │ │ ├── shade_br.png │ │ │ ├── shade_mr.png │ │ │ └── shade_tr.png │ │ ├── catalyst_logo.png │ │ └── icons │ │ │ ├── add.png │ │ │ ├── copy.png │ │ │ ├── cut.png │ │ │ ├── delete.png │ │ │ ├── edit.png │ │ │ ├── folder-new.png │ │ │ └── paste.png │ └── js │ │ ├── calendar.js │ │ ├── scripts.js │ │ └── tiny_mce │ │ ├── langs │ │ └── en.js │ │ ├── license.txt │ │ ├── plugins │ │ ├── advhr │ │ │ ├── css │ │ │ │ └── advhr.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── js │ │ │ │ └── rule.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ └── rule.htm │ │ ├── advimage │ │ │ ├── css │ │ │ │ └── advimage.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── image.htm │ │ │ ├── img │ │ │ │ └── sample.gif │ │ │ ├── js │ │ │ │ └── image.js │ │ │ └── langs │ │ │ │ └── en_dlg.js │ │ ├── advlink │ │ │ ├── css │ │ │ │ └── advlink.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── js │ │ │ │ └── advlink.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ └── link.htm │ │ ├── advlist │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── autoresize │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── autosave │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ └── langs │ │ │ │ └── en.js │ │ ├── bbcode │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── contextmenu │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── directionality │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── emotions │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── emotions.htm │ │ │ ├── img │ │ │ │ ├── smiley-cool.gif │ │ │ │ ├── smiley-cry.gif │ │ │ │ ├── smiley-embarassed.gif │ │ │ │ ├── smiley-foot-in-mouth.gif │ │ │ │ ├── smiley-frown.gif │ │ │ │ ├── smiley-innocent.gif │ │ │ │ ├── smiley-kiss.gif │ │ │ │ ├── smiley-laughing.gif │ │ │ │ ├── smiley-money-mouth.gif │ │ │ │ ├── smiley-sealed.gif │ │ │ │ ├── smiley-smile.gif │ │ │ │ ├── smiley-surprised.gif │ │ │ │ ├── smiley-tongue-out.gif │ │ │ │ ├── smiley-undecided.gif │ │ │ │ ├── smiley-wink.gif │ │ │ │ └── smiley-yell.gif │ │ │ ├── js │ │ │ │ └── emotions.js │ │ │ └── langs │ │ │ │ └── en_dlg.js │ │ ├── example │ │ │ ├── dialog.htm │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── img │ │ │ │ └── example.gif │ │ │ ├── js │ │ │ │ └── dialog.js │ │ │ └── langs │ │ │ │ ├── en.js │ │ │ │ └── en_dlg.js │ │ ├── fullpage │ │ │ ├── css │ │ │ │ └── fullpage.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── fullpage.htm │ │ │ ├── js │ │ │ │ └── fullpage.js │ │ │ └── langs │ │ │ │ └── en_dlg.js │ │ ├── fullscreen │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ └── fullscreen.htm │ │ ├── iespell │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── inlinepopups │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── skins │ │ │ │ └── clearlooks2 │ │ │ │ │ ├── img │ │ │ │ │ ├── alert.gif │ │ │ │ │ ├── button.gif │ │ │ │ │ ├── buttons.gif │ │ │ │ │ ├── confirm.gif │ │ │ │ │ ├── corners.gif │ │ │ │ │ ├── horizontal.gif │ │ │ │ │ └── vertical.gif │ │ │ │ │ └── window.css │ │ │ └── template.htm │ │ ├── insertdatetime │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── layer │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── legacyoutput │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── media │ │ │ ├── css │ │ │ │ ├── content.css │ │ │ │ └── media.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── img │ │ │ │ ├── flash.gif │ │ │ │ ├── flv_player.swf │ │ │ │ ├── quicktime.gif │ │ │ │ ├── realmedia.gif │ │ │ │ ├── shockwave.gif │ │ │ │ ├── trans.gif │ │ │ │ └── windowsmedia.gif │ │ │ ├── js │ │ │ │ ├── embed.js │ │ │ │ └── media.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ └── media.htm │ │ ├── nonbreaking │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── noneditable │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── pagebreak │ │ │ ├── css │ │ │ │ └── content.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ └── img │ │ │ │ ├── pagebreak.gif │ │ │ │ └── trans.gif │ │ ├── paste │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── js │ │ │ │ ├── pastetext.js │ │ │ │ └── pasteword.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ ├── pastetext.htm │ │ │ └── pasteword.htm │ │ ├── preview │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── example.html │ │ │ ├── jscripts │ │ │ │ └── embed.js │ │ │ └── preview.html │ │ ├── print │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── save │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── searchreplace │ │ │ ├── css │ │ │ │ └── searchreplace.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── js │ │ │ │ └── searchreplace.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ └── searchreplace.htm │ │ ├── spellchecker │ │ │ ├── css │ │ │ │ └── content.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ └── img │ │ │ │ └── wline.gif │ │ ├── style │ │ │ ├── css │ │ │ │ └── props.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── js │ │ │ │ └── props.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ └── props.htm │ │ ├── tabfocus │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── table │ │ │ ├── cell.htm │ │ │ ├── css │ │ │ │ ├── cell.css │ │ │ │ ├── row.css │ │ │ │ └── table.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── js │ │ │ │ ├── cell.js │ │ │ │ ├── merge_cells.js │ │ │ │ ├── row.js │ │ │ │ └── table.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ ├── merge_cells.htm │ │ │ ├── row.htm │ │ │ └── table.htm │ │ ├── template │ │ │ ├── blank.htm │ │ │ ├── css │ │ │ │ └── template.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── js │ │ │ │ └── template.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ └── template.htm │ │ ├── visualchars │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── wordcount │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ └── xhtmlxtras │ │ │ ├── abbr.htm │ │ │ ├── acronym.htm │ │ │ ├── attributes.htm │ │ │ ├── cite.htm │ │ │ ├── css │ │ │ ├── attributes.css │ │ │ └── popup.css │ │ │ ├── del.htm │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── ins.htm │ │ │ ├── js │ │ │ ├── abbr.js │ │ │ ├── acronym.js │ │ │ ├── attributes.js │ │ │ ├── cite.js │ │ │ ├── del.js │ │ │ ├── element_common.js │ │ │ └── ins.js │ │ │ └── langs │ │ │ └── en_dlg.js │ │ ├── themes │ │ ├── advanced │ │ │ ├── about.htm │ │ │ ├── anchor.htm │ │ │ ├── charmap.htm │ │ │ ├── color_picker.htm │ │ │ ├── editor_template.js │ │ │ ├── editor_template_src.js │ │ │ ├── image.htm │ │ │ ├── img │ │ │ │ ├── colorpicker.jpg │ │ │ │ └── icons.gif │ │ │ ├── js │ │ │ │ ├── about.js │ │ │ │ ├── anchor.js │ │ │ │ ├── charmap.js │ │ │ │ ├── color_picker.js │ │ │ │ ├── image.js │ │ │ │ ├── link.js │ │ │ │ └── source_editor.js │ │ │ ├── langs │ │ │ │ ├── en.js │ │ │ │ └── en_dlg.js │ │ │ ├── link.htm │ │ │ ├── skins │ │ │ │ ├── default │ │ │ │ │ ├── content.css │ │ │ │ │ ├── dialog.css │ │ │ │ │ ├── img │ │ │ │ │ │ ├── buttons.png │ │ │ │ │ │ ├── items.gif │ │ │ │ │ │ ├── menu_arrow.gif │ │ │ │ │ │ ├── menu_check.gif │ │ │ │ │ │ ├── progress.gif │ │ │ │ │ │ └── tabs.gif │ │ │ │ │ └── ui.css │ │ │ │ └── o2k7 │ │ │ │ │ ├── content.css │ │ │ │ │ ├── dialog.css │ │ │ │ │ ├── img │ │ │ │ │ ├── button_bg.png │ │ │ │ │ ├── button_bg_black.png │ │ │ │ │ └── button_bg_silver.png │ │ │ │ │ ├── ui.css │ │ │ │ │ ├── ui_black.css │ │ │ │ │ └── ui_silver.css │ │ │ └── source_editor.htm │ │ └── simple │ │ │ ├── editor_template.js │ │ │ ├── editor_template_src.js │ │ │ ├── img │ │ │ └── icons.gif │ │ │ ├── langs │ │ │ └── en.js │ │ │ └── skins │ │ │ ├── default │ │ │ ├── content.css │ │ │ └── ui.css │ │ │ └── o2k7 │ │ │ ├── content.css │ │ │ ├── img │ │ │ └── button_bg.png │ │ │ └── ui.css │ │ ├── tiny_mce.js │ │ ├── tiny_mce_popup.js │ │ ├── tiny_mce_src.js │ │ └── utils │ │ ├── editable_selects.js │ │ ├── form_utils.js │ │ ├── mctabs.js │ │ └── validate.js └── templates │ ├── attributes │ ├── boolean.zpt │ ├── controller.zpt │ ├── date.zpt │ ├── datetime.zpt │ ├── email.zpt │ ├── file.zpt │ ├── image.zpt │ ├── integer.zpt │ ├── object.zpt │ ├── password.zpt │ ├── plaintext.zpt │ ├── recipient.zpt │ ├── string.zpt │ ├── text.zpt │ ├── time.zpt │ └── title.zpt │ ├── custom │ └── reservation │ │ ├── reservations.zpt │ │ └── reserve.zpt │ ├── edit.zpt │ ├── error.zpt │ ├── index.zpt │ ├── login.zpt │ ├── manage.zpt │ ├── manage_layout.zpt │ ├── system │ ├── create.zpt │ └── types │ │ ├── create.zpt │ │ ├── edit.zpt │ │ └── index.zpt │ └── types │ └── site.zpt ├── runtests ├── script ├── cidercms_cgi.pl ├── cidercms_create.pl ├── cidercms_fastcgi.pl ├── cidercms_server.pl ├── cidercms_test.pl ├── clean_sort_ids.pl └── cleanup_test_schemas.pl └── t ├── 00prepare.t ├── 01app.t ├── 02pod.t ├── 03podcoverage.t ├── 04controller_System.t ├── 99style.t ├── Attribute-Boolean.t ├── Attribute-Date.t ├── Attribute-DateTime.t ├── Attribute-Email.t ├── Attribute-File.t ├── Attribute-Image.t ├── Attribute-Integer.t ├── Attribute-Object.t ├── Attribute-Plaintext.t ├── Attribute-Recipient.t ├── Attribute-Time.t ├── authentication.t ├── controller_Content-Management.t ├── controller_Content.t ├── controller_Content_env_instance.t ├── controller_Root.t ├── controller_System-Types.t ├── custom_registration.t ├── custom_reservation.t ├── gallery_import.t ├── model_DB.t ├── move.t ├── paste.t ├── perlcriticrc ├── publishing.t ├── test.example ├── import │ ├── Test1.jpg │ └── Test2.jpg ├── static │ └── css │ │ └── styles.css └── templates │ ├── index.zpt │ └── types │ ├── airplane.zpt │ ├── contact.zpt │ ├── date_test.zpt │ ├── datetime_test.zpt │ ├── email_test.zpt │ ├── file.zpt │ ├── folder.zpt │ ├── gallery.zpt │ ├── gallery_image.zpt │ ├── image.zpt │ ├── image_test.zpt │ ├── integer_test.zpt │ ├── news.zpt │ ├── plaintext_test.zpt │ ├── registration.zpt │ ├── site.zpt │ ├── textarea.zpt │ ├── textfield.zpt │ └── time_test.zpt └── view_Petal.t /.gitignore: -------------------------------------------------------------------------------- 1 | Makefile.old 2 | META.yml 3 | MYMETA.json 4 | MYMETA.yml 5 | Makefile 6 | Makefile.old 7 | blib/ 8 | cover_db/ 9 | inc/ 10 | pm_to_blib 11 | root/instances/ 12 | import.sh 13 | .prove 14 | .*.swp 15 | -------------------------------------------------------------------------------- /Changes: -------------------------------------------------------------------------------- 1 | This file documents the revision history for Perl extension CiderCMS. 2 | 3 | 0.01 2009-09-08 21:43:42 4 | - initial revision, generated by Catalyst 5 | -------------------------------------------------------------------------------- /Makefile.PL: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env perl 2 | # IMPORTANT: if you delete this file your app will not work as 3 | # expected. You have been warned. 4 | use inc::Module::Install; 5 | 6 | name 'CiderCMS'; 7 | all_from 'lib/CiderCMS.pm'; 8 | 9 | requires 'Catalyst::Runtime' => '5.90070'; 10 | requires 'Catalyst::Plugin::ConfigLoader'; 11 | requires 'Catalyst::Plugin::Static::Simple'; 12 | requires 'Catalyst::Plugin::Unicode::Encoding'; 13 | requires 'Catalyst::Plugin::Session'; 14 | requires 'Catalyst::Plugin::Session::State::Cookie'; 15 | requires 'Catalyst::Plugin::Session::Store::FastMmap'; 16 | requires 'Catalyst::Action::RenderView'; 17 | requires 'parent'; 18 | requires 'Config::General'; # This should reflect the config file format you've chosen 19 | # See Catalyst::Plugin::ConfigLoader for supported formats 20 | requires 'Catalyst::Model::DBI'; 21 | requires 'Catalyst::View::Petal'; 22 | requires 'Petal::Utils'; 23 | requires 'Catalyst::Plugin::FormValidator'; 24 | requires 'DateTime'; 25 | requires 'DateTime::Format::ISO8601'; 26 | requires 'DateTime::Format::Flexible'; 27 | requires 'DateTime::Span'; 28 | requires 'Digest::SHA'; 29 | requires 'Module::Pluggable'; 30 | requires 'Image::Imlib2'; 31 | requires 'File::Path'; 32 | requires 'File::Copy'; 33 | requires 'File::Temp'; 34 | requires 'File::Find'; 35 | requires 'File::Slurp'; 36 | requires 'Cwd'; 37 | requires 'MIME::Lite'; 38 | requires 'Email::Sender::Simple'; 39 | requires 'Email::Stuffer'; 40 | requires 'Regexp::Common::URI'; 41 | requires 'Regexp::Common::Email::Address'; 42 | catalyst_ignore('root'); # avoid copying root/static/instances 43 | catalyst; 44 | 45 | install_script glob('script/*.pl'); 46 | auto_install; 47 | WriteAll; 48 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | CiderCMS is a flexible CMS for small to mid sized websites. 2 | 3 | The basic idea is that the user can define "types" which can be thought equal 4 | to database tables (which get created) consisting of attributes (columns) 5 | with a template for output and an auto-generated (but customizable) management 6 | interface. 7 | 8 | Data is stored in a hierarchical tree like a folder/document/text structure 9 | which reflects the organization of a typical website. 10 | 11 | This app needs Module::Install for installation. Then install via standard 12 | perl Makefile.PL && make 13 | 14 | Run script/cidercms_server.pl to test the application. 15 | 16 | Start with http://localhost:3000/system/create to create the first instance. 17 | The test suite creates a full test instance named test.example and populates it. 18 | -------------------------------------------------------------------------------- /cidercms.yml: -------------------------------------------------------------------------------- 1 | name: CiderCMS 2 | 3 | Plugin::Authentication: 4 | default: 5 | credential: 6 | class: Password 7 | password_type: hashed 8 | password_hash_type: SHA-256 9 | store: 10 | class: CiderCMS 11 | 12 | registration_rules: | 13 | Regeln 14 | 15 | Eintragungen sind bis maximal 12 Stunden vor dem jeweiligen Termin möglich. 16 | 17 | Minimum der Reservierungsdauer sind 30 Minuten. 18 | 19 | Tank- und Pflegezeiten unmittelbar nach dem Flug sind in die Reservierung mit 20 | einzurechnen. 21 | 22 | Reservierungen, bei denen das Flugzeug über Nacht nicht im Heimathangar steht, 23 | sind mit dem Linzer Vorstand abzustimmen. 24 | 25 | Wenn das Flugzeug nicht innerhalb der ersten 15 Minuten des Reservierungs- 26 | zeitraumes durch den Reservierenden in Anspruch genommen wird, verfällt die 27 | Reservierung und das Flugzeug steht im betreffenden Zeitraum frei zur Verfügung. 28 | Zeitliche Überziehungen (zu spätes Zurückkommen) gehen zu Lasten der nächsten 29 | Reservierung (sollte unmittelbar eine anschließen). 30 | 31 | Nicht „reservierte“ Flugzeiten können so wie bisher in Anspruch genommen werden. 32 | 33 | Der Pilot muss sich vor Flugantritt davon überzeugen, dass für den von ihm 34 | geplanten Zeitraum keine Reservierung vorliegt. Das Flugzeug muss aber 35 | spätestens bei Beginn des nächsten Reservierungszeitraumes bereitstehen 36 | (Tankzeiten unmittelbar nach dem Flug sind mit einzurechnen). 37 | 38 | Reservierungen, die nicht in Anspruch genommen werden können, müssen vom 39 | Reservierenden so lange als möglich im Vorhinein wieder storniert werden. 40 | Steht ein Flugzeug aus z.B. Wartungsgründen nicht zur Verfügung, so ist dies 41 | in der Reservierungsliste mit „UNKLAR“ gekennzeichnet. Bei bereits vorliegenden 42 | Reservierungen werden die Betroffenen per Mail (Adresse bei der Registrierung 43 | angegeben) verständigt. 44 | -------------------------------------------------------------------------------- /cidercms_test.yml: -------------------------------------------------------------------------------- 1 | registration_email_whitelist: 2 | - test@localhost 3 | -------------------------------------------------------------------------------- /lib/CiderCMS/Attribute/Boolean.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Attribute::Boolean; 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use base qw(CiderCMS::Attribute); 7 | 8 | =head1 NAME 9 | 10 | CiderCMS::Attribute::Boolean - Boolean attribute 11 | 12 | =head1 SYNOPSIS 13 | 14 | See L 15 | 16 | =head1 DESCRIPTION 17 | 18 | Simple boolean attribute 19 | 20 | =head1 METHODs 21 | 22 | =head2 db_type 23 | 24 | =cut 25 | 26 | sub db_type { 27 | return 'boolean'; 28 | } 29 | 30 | =head1 AUTHOR 31 | 32 | Stefan Seifert 33 | 34 | =head1 LICENSE 35 | 36 | This library is free software, you can redistribute it and/or modify 37 | it under the same terms as Perl itself. 38 | 39 | =cut 40 | 41 | 1; 42 | 43 | -------------------------------------------------------------------------------- /lib/CiderCMS/Attribute/Controller.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Attribute::Controller; 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use base qw(CiderCMS::Attribute); 7 | 8 | =head1 NAME 9 | 10 | CiderCMS::Attribute::Controller - Hook for using custom controllers. 11 | 12 | =head1 SYNOPSIS 13 | 14 | See L 15 | 16 | =head1 DESCRIPTION 17 | 18 | Simple string attribute 19 | 20 | =head1 METHODs 21 | 22 | =head2 db_type 23 | 24 | =cut 25 | 26 | sub db_type { 27 | return; 28 | } 29 | 30 | =head1 AUTHOR 31 | 32 | Stefan Seifert 33 | 34 | =head1 LICENSE 35 | 36 | This library is free software, you can redistribute it and/or modify 37 | it under the same terms as Perl itself. 38 | 39 | =cut 40 | 41 | 1; 42 | 43 | -------------------------------------------------------------------------------- /lib/CiderCMS/Attribute/Email.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Attribute::Email; 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use base qw(CiderCMS::Attribute::String); 7 | 8 | use Regexp::Common qw(Email::Address); 9 | 10 | =head1 NAME 11 | 12 | CiderCMS::Attribute::Email - Email attribute 13 | 14 | =head1 SYNOPSIS 15 | 16 | See L 17 | 18 | =head1 DESCRIPTION 19 | 20 | Simple attribute for Email addresses 21 | 22 | =head1 METHODs 23 | 24 | =head2 validate 25 | 26 | Check if email address looks valid. 27 | 28 | =cut 29 | 30 | sub validate { 31 | my ($self, $data) = @_; 32 | 33 | my $email = $data->{ $self->id }; 34 | return 'missing' if $self->{mandatory} and not $email; 35 | return 'invalid' if $email and $email !~ /\A($RE{Email}{Address})\z/; 36 | return; 37 | } 38 | 39 | =head1 AUTHOR 40 | 41 | Stefan Seifert 42 | 43 | =head1 LICENSE 44 | 45 | This library is free software, you can redistribute it and/or modify 46 | it under the same terms as Perl itself. 47 | 48 | =cut 49 | 50 | 1; 51 | -------------------------------------------------------------------------------- /lib/CiderCMS/Attribute/File.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Attribute::File; 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use File::Path qw(mkpath rmtree); 7 | 8 | use base qw(CiderCMS::Attribute); 9 | 10 | =head1 NAME 11 | 12 | CiderCMS::Attribute::File - File attribute 13 | 14 | =head1 SYNOPSIS 15 | 16 | See L 17 | 18 | =head1 DESCRIPTION 19 | 20 | File attribute 21 | 22 | =head1 METHODs 23 | 24 | =head2 data() 25 | 26 | Returns an URI for this file 27 | 28 | =cut 29 | 30 | sub data { 31 | my ($self) = @_; 32 | 33 | return unless $self->{data}; 34 | return $self->{object}->uri_static . "/$self->{id}/$self->{data}"; 35 | } 36 | 37 | =head2 prepare_update() 38 | 39 | =cut 40 | 41 | sub prepare_update { 42 | my ($self) = @_; 43 | 44 | if (my $upload = $self->{c}->req->upload($self->{id})) { 45 | $self->set_data($upload->basename); 46 | } 47 | 48 | return; 49 | } 50 | 51 | =head2 post_update() 52 | 53 | =cut 54 | 55 | sub post_update { 56 | my ($self) = @_; 57 | 58 | if (my $upload = $self->{c}->req->upload($self->{id})) { 59 | my $path = $self->fs_path; 60 | 61 | rmtree($path); 62 | mkpath($path); 63 | 64 | $upload->copy_to("$path/$self->{data}"); 65 | } 66 | 67 | return; 68 | } 69 | 70 | =head2 fs_path() 71 | 72 | Returns the file system path to this attribute. 73 | 74 | =cut 75 | 76 | sub fs_path { 77 | my ($self) = @_; 78 | 79 | return $self->{object}->fs_path . "/$self->{id}"; 80 | } 81 | 82 | =head2 db_type 83 | 84 | =cut 85 | 86 | sub db_type { 87 | return 'varchar'; 88 | } 89 | 90 | =head1 AUTHOR 91 | 92 | Stefan Seifert 93 | 94 | =head1 LICENSE 95 | 96 | This library is free software, you can redistribute it and/or modify 97 | it under the same terms as Perl itself. 98 | 99 | =cut 100 | 101 | 1; 102 | -------------------------------------------------------------------------------- /lib/CiderCMS/Attribute/Image.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Attribute::Image; 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use File::Path qw(mkpath rmtree); 7 | use Image::Imlib2; 8 | 9 | use base qw(CiderCMS::Attribute::File); 10 | 11 | =head1 NAME 12 | 13 | CiderCMS::Attribute::Image - Image attribute 14 | 15 | =head1 SYNOPSIS 16 | 17 | See L 18 | 19 | =head1 DESCRIPTION 20 | 21 | Image attribute 22 | 23 | =head1 METHODs 24 | 25 | =head2 thumbnail($width, $height) 26 | 27 | Returns the URL of a thumbnail conforming to the given size constraints. 28 | 29 | =cut 30 | 31 | sub thumbnail { 32 | my ($self, $width, $height) = @_; 33 | 34 | return unless $self->{data}; 35 | 36 | my $path = $self->fs_path; 37 | my $thumb_name = $self->{data}; 38 | $thumb_name =~ s/(\. \w+) \z/_${width}_${height}$1/xm; 39 | 40 | unless (-e "$path/$thumb_name") { 41 | my $image = eval { Image::Imlib2->load("$path/$self->{data}"); }; 42 | warn $@ if $@; 43 | return '#nonexisting' unless $image; 44 | 45 | if ($width and $height) { 46 | (($image->width / $width > $image->height / $height) ? $height : $width) = 0; 47 | } 48 | 49 | my $thumb = $image->create_scaled_image($width, $height); 50 | $thumb->set_quality(90); 51 | $thumb->save("$path/$thumb_name"); 52 | } 53 | 54 | return $self->{object}->uri_static . "/$self->{id}/$thumb_name"; 55 | } 56 | 57 | =head1 AUTHOR 58 | 59 | Stefan Seifert 60 | 61 | =head1 LICENSE 62 | 63 | This library is free software, you can redistribute it and/or modify 64 | it under the same terms as Perl itself. 65 | 66 | =cut 67 | 68 | 1; 69 | -------------------------------------------------------------------------------- /lib/CiderCMS/Attribute/Integer.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Attribute::Integer; 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use base qw(CiderCMS::Attribute); 7 | 8 | =head1 NAME 9 | 10 | CiderCMS::Attribute::Integer - Integer attribute 11 | 12 | =head1 SYNOPSIS 13 | 14 | See L 15 | 16 | =head1 DESCRIPTION 17 | 18 | Simple integer attribute 19 | 20 | =head1 METHODs 21 | 22 | =head2 db_type 23 | 24 | =cut 25 | 26 | sub db_type { 27 | return 'integer'; 28 | } 29 | 30 | =head2 set_data($data) 31 | 32 | Sets this attributes data to the given value. 33 | 34 | =cut 35 | 36 | sub set_data { 37 | my ($self, $data) = @_; 38 | 39 | return $self->{data} = $data if defined $data and $data ne ''; 40 | return $self->{data} = undef; 41 | } 42 | 43 | =head2 validate 44 | 45 | Check if $data is a valid number. 46 | 47 | =cut 48 | 49 | sub validate { 50 | my ($self, $data) = @_; 51 | 52 | my $number = $data->{ $self->id }; 53 | return 'missing' if $self->{mandatory} and (not defined $number or $number eq ''); 54 | return 'invalid' if $number and $number =~ /\D/; 55 | return; 56 | } 57 | 58 | =head1 AUTHOR 59 | 60 | Stefan Seifert 61 | 62 | =head1 LICENSE 63 | 64 | This library is free software, you can redistribute it and/or modify 65 | it under the same terms as Perl itself. 66 | 67 | =cut 68 | 69 | 1; 70 | -------------------------------------------------------------------------------- /lib/CiderCMS/Attribute/Password.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Attribute::Password; 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use base qw(CiderCMS::Attribute::String); 7 | 8 | use Digest::SHA qw(sha256_hex); 9 | 10 | =head1 NAME 11 | 12 | CiderCMS::Attribute::Password - Password attribute 13 | 14 | =head1 SYNOPSIS 15 | 16 | See L 17 | 18 | =head1 DESCRIPTION 19 | 20 | Password attribute. Stores the password securely (using SHA-256). 21 | 22 | =head1 METHODs 23 | 24 | =head2 set_data($data) 25 | 26 | Sets this attributes data to the given value. 27 | 28 | =cut 29 | 30 | sub set_data { 31 | my ($self, $data) = @_; 32 | 33 | return $self->{data} = defined $data ? sha256_hex($data) : undef; 34 | } 35 | 36 | =head1 AUTHOR 37 | 38 | Stefan Seifert 39 | 40 | =head1 LICENSE 41 | 42 | This library is free software, you can redistribute it and/or modify 43 | it under the same terms as Perl itself. 44 | 45 | =cut 46 | 47 | 1; 48 | -------------------------------------------------------------------------------- /lib/CiderCMS/Attribute/Plaintext.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Attribute::Plaintext; 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use base qw(CiderCMS::Attribute::String); 7 | 8 | =head1 NAME 9 | 10 | CiderCMS::Attribute::Plaintext - Plain text attribute 11 | 12 | =head1 SYNOPSIS 13 | 14 | See L 15 | 16 | =head1 DESCRIPTION 17 | 18 | HTML code attribute. 19 | 20 | =head1 METHODs 21 | 22 | =head1 AUTHOR 23 | 24 | Stefan Seifert 25 | 26 | =head1 LICENSE 27 | 28 | This library is free software, you can redistribute it and/or modify 29 | it under the same terms as Perl itself. 30 | 31 | =cut 32 | 33 | 1; 34 | -------------------------------------------------------------------------------- /lib/CiderCMS/Attribute/Recipient.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Attribute::Recipient; 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use base qw(CiderCMS::Attribute); 7 | 8 | use MIME::Lite; 9 | 10 | =head1 NAME 11 | 12 | CiderCMS::Attribute::Recipient - Recipient attribute 13 | 14 | =head1 SYNOPSIS 15 | 16 | See L 17 | 18 | =head1 DESCRIPTION 19 | 20 | Recipient attribute. This attribute can send a posted form as email to a recipient. 21 | 22 | =head1 METHODs 23 | 24 | =head2 db_type 25 | 26 | =cut 27 | 28 | sub db_type { 29 | return 'varchar'; 30 | } 31 | 32 | =head2 data 33 | 34 | If called from within the management interface, it just returns the data. 35 | If called from the website, it checks for a parameter named "send" and if present, sends an email containing the form data to the given recipient. 36 | The email uses the parent object's "subject" or alternatively "title" attributes as subject. If both are unavailable it's just "Submitted form". 37 | 38 | =cut 39 | 40 | sub data { 41 | my ($self) = @_; 42 | 43 | my $params = $self->{c}->req->params; 44 | if (delete $params->{send}) { 45 | my $mail = MIME::Lite->new( 46 | From => 'nine@detonation.org', 47 | To => $self->{data}, 48 | Subject => ($self->{object}->property('subject') or $self->{object}->property('title') or 'Submitted form'), 49 | Data => (join "\n", map { "$_: $params->{$_}" } sort keys %$params), 50 | ); 51 | 52 | $mail->send; 53 | } 54 | 55 | return $self->{c}->stash->{management} ? $self->{data} : '', 56 | } 57 | 58 | =head1 AUTHOR 59 | 60 | Stefan Seifert 61 | 62 | =head1 LICENSE 63 | 64 | This library is free software, you can redistribute it and/or modify 65 | it under the same terms as Perl itself. 66 | 67 | =cut 68 | 69 | 1; 70 | -------------------------------------------------------------------------------- /lib/CiderCMS/Attribute/String.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Attribute::String; 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use base qw(CiderCMS::Attribute); 7 | 8 | =head1 NAME 9 | 10 | CiderCMS::Attribute::String - String attribute 11 | 12 | =head1 SYNOPSIS 13 | 14 | See L 15 | 16 | =head1 DESCRIPTION 17 | 18 | Simple string attribute 19 | 20 | =head1 METHODs 21 | 22 | =head2 db_type 23 | 24 | =cut 25 | 26 | sub db_type { 27 | return 'varchar'; 28 | } 29 | 30 | =head2 validate 31 | 32 | Check if string is not empty. 33 | 34 | =cut 35 | 36 | sub validate { 37 | my ($self, $data) = @_; 38 | 39 | return 'missing' if $self->{mandatory} and not $data->{ $self->id }; 40 | return; 41 | } 42 | 43 | =head2 filter_matches($value) 44 | 45 | Returns true if this attribute matches the given filter value. 46 | For now simply matches for equality. 47 | 48 | =cut 49 | 50 | sub filter_matches { 51 | my ($self, $value) = @_; 52 | 53 | return not defined $self->data unless defined $value; 54 | return unless defined $self->data; 55 | 56 | return $value eq $self->data; 57 | } 58 | 59 | =head1 AUTHOR 60 | 61 | Stefan Seifert 62 | 63 | =head1 LICENSE 64 | 65 | This library is free software, you can redistribute it and/or modify 66 | it under the same terms as Perl itself. 67 | 68 | =cut 69 | 70 | 1; 71 | -------------------------------------------------------------------------------- /lib/CiderCMS/Attribute/Text.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Attribute::Text; 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use base qw(CiderCMS::Attribute::String); 7 | 8 | =head1 NAME 9 | 10 | CiderCMS::Attribute::Text - Text attribute 11 | 12 | =head1 SYNOPSIS 13 | 14 | See L 15 | 16 | =head1 DESCRIPTION 17 | 18 | HTML text attribute. 19 | 20 | =head1 METHODs 21 | 22 | =head1 AUTHOR 23 | 24 | Stefan Seifert 25 | 26 | =head1 LICENSE 27 | 28 | This library is free software, you can redistribute it and/or modify 29 | it under the same terms as Perl itself. 30 | 31 | =cut 32 | 33 | 1; 34 | -------------------------------------------------------------------------------- /lib/CiderCMS/Attribute/Title.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Attribute::Title; 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use base qw(CiderCMS::Attribute::String); 7 | 8 | =head1 NAME 9 | 10 | CiderCMS::Attribute::Title - Title attribute 11 | 12 | =head1 SYNOPSIS 13 | 14 | See L 15 | 16 | =head1 DESCRIPTION 17 | 18 | Title attributes are String attributes that can produce a dcid 19 | 20 | =head1 METHODs 21 | 22 | =head2 prepare_update 23 | 24 | =cut 25 | 26 | sub prepare_update { 27 | my ($self) = @_; 28 | 29 | my $dcid = lc $self->{data}; 30 | $dcid =~ s/[^a-z0-9_\.-]/_/gxm; 31 | 32 | $self->{object}{dcid} = $dcid; 33 | 34 | return; 35 | } 36 | 37 | =head1 AUTHOR 38 | 39 | Stefan Seifert 40 | 41 | =head1 LICENSE 42 | 43 | This library is free software, you can redistribute it and/or modify 44 | it under the same terms as Perl itself. 45 | 46 | =cut 47 | 48 | 1; 49 | -------------------------------------------------------------------------------- /lib/CiderCMS/Controller/Content.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Controller::Content; 2 | 3 | use strict; 4 | use warnings; 5 | use parent 'Catalyst::Controller'; 6 | 7 | =head1 NAME 8 | 9 | CiderCMS::Controller::Content - Catalyst Controller 10 | 11 | =head1 DESCRIPTION 12 | 13 | Controller for initializing and displaying content according to the URI path. 14 | 15 | =head1 METHODS 16 | 17 | =head2 auto 18 | 19 | Check user access to the context node. 20 | 21 | =cut 22 | 23 | sub auto : Private { 24 | my ( $self, $c ) = @_; 25 | 26 | my $objects = $c->stash->{parents}; 27 | 28 | if ($objects and @$objects and not $objects->[-1]->user_has_access) { 29 | $c->detach($c->user ? '/user/access_denied' : '/user/login'); 30 | } 31 | 32 | return 1; 33 | } 34 | 35 | =head2 index_html 36 | 37 | Renders the page. 38 | 39 | =cut 40 | 41 | sub index_html : CiderCMS('index.html') Args(0) { 42 | my ( $self, $c ) = @_; 43 | 44 | $c->stash({ 45 | template => 'index.zpt', 46 | content => $c->stash->{context}->render, 47 | }); 48 | 49 | return; 50 | } 51 | 52 | =head2 index 53 | 54 | Forwards to index_html for URIs without file name. 55 | 56 | =cut 57 | 58 | sub index : CiderCMS('') Args(0) { 59 | my ($self, $c) = @_; 60 | 61 | return $self->index_html($c); 62 | } 63 | 64 | =head1 AUTHOR 65 | 66 | Stefan Seifert 67 | 68 | =head1 LICENSE 69 | 70 | This library is free software. You can redistribute it and/or modify 71 | it under the same terms as Perl itself. 72 | 73 | =cut 74 | 75 | 1; 76 | -------------------------------------------------------------------------------- /lib/CiderCMS/Controller/Content/Management/Gallery.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Controller::Content::Management::Gallery; 2 | 3 | use strict; 4 | use warnings; 5 | use parent 'Catalyst::Controller'; 6 | 7 | use File::Copy qw(move); 8 | use File::Path qw(mkpath); 9 | use File::Basename; 10 | 11 | =head1 NAME 12 | 13 | CiderCMS::Controller::Content::Management::Gallery - Catalyst Controller 14 | 15 | =head1 DESCRIPTION 16 | 17 | Management methods for image galleries. 18 | 19 | =head1 METHODS 20 | 21 | =head2 import 22 | 23 | Bulk import images into the gallery. 24 | 25 | =cut 26 | 27 | sub import : CiderCMS('import') { 28 | my ( $self, $c ) = @_; 29 | 30 | my $context = $c->stash->{context}; 31 | 32 | my $after; 33 | foreach (glob $c->fs_path_for_instance . '/../import/*') { 34 | my $image = CiderCMS::Object->new({c => $c, type => 'gallery_image', parent => $context->{id}, parent_attr => 'images', level => $context->{level} + 1, data => {image => basename($_)}}); 35 | $image->insert({after => $after}); 36 | 37 | my $path = $image->attribute('image')->fs_path; 38 | mkpath($path); 39 | move($_, $path); 40 | 41 | $after = $image; 42 | } 43 | 44 | return $c->res->redirect($context->uri_management); 45 | } 46 | 47 | =head2 manage_actions 48 | 49 | =cut 50 | 51 | CiderCMS->register_management_action(__PACKAGE__, sub { 52 | my ($self, $c) = @_; 53 | 54 | return {title => 'Import images', uri => $c->stash->{context}->uri . '/import'} if $c->stash->{context}{type} eq 'gallery'; 55 | 56 | return; 57 | }); 58 | 59 | =head1 AUTHOR 60 | 61 | Stefan Seifert 62 | 63 | =head1 LICENSE 64 | 65 | This library is free software. You can redistribute it and/or modify 66 | it under the same terms as Perl itself. 67 | 68 | =cut 69 | 70 | 1; 71 | -------------------------------------------------------------------------------- /lib/CiderCMS/Controller/User.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Controller::User; 2 | use Moose; 3 | use namespace::autoclean; 4 | 5 | BEGIN {extends 'Catalyst::Controller'; } 6 | 7 | =head1 NAME 8 | 9 | CiderCMS::Controller::User - Catalyst Controller 10 | 11 | =head1 DESCRIPTION 12 | 13 | Catalyst Controller. 14 | 15 | =head1 METHODS 16 | 17 | =head2 login 18 | 19 | Shows a login page. 20 | 21 | =cut 22 | 23 | sub login : Private { 24 | my ( $self, $c ) = @_; 25 | 26 | my $params = $c->req->params; 27 | my $referer = delete $params->{referer}; 28 | 29 | if (%$params) { 30 | if ($c->authenticate($params)) { 31 | return $c->res->redirect($referer // $c->stash->{uri_raw}); 32 | } 33 | else { 34 | $c->stash({ 35 | %$params, 36 | message => 'Invalid username/password', 37 | }); 38 | } 39 | } 40 | 41 | $c->stash({ 42 | referer => $referer // $c->stash->{uri_raw}, 43 | template => 'login.zpt', 44 | }); 45 | 46 | return; 47 | } 48 | 49 | =head2 logout 50 | 51 | See L 52 | 53 | =cut 54 | 55 | =head1 AUTHOR 56 | 57 | Stefan Seifert 58 | 59 | =head1 LICENSE 60 | 61 | This library is free software. You can redistribute it and/or modify 62 | it under the same terms as Perl itself. 63 | 64 | =cut 65 | 66 | __PACKAGE__->meta->make_immutable; 67 | 68 | 1; 69 | -------------------------------------------------------------------------------- /lib/CiderCMS/Search.pm: -------------------------------------------------------------------------------- 1 | package CiderCMS::Search; 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use Hash::Merge qw(merge); 7 | use Scalar::Util qw(weaken); 8 | use List::MoreUtils qw(natatime); 9 | 10 | =head1 NAME 11 | 12 | CiderCMS::Search - Queries 13 | 14 | =head1 SYNOPSIS 15 | 16 | See L 17 | 18 | =head1 DESCRIPTION 19 | 20 | =head1 METHODS 21 | 22 | =head2 new({c => $c, filters => $filters}) 23 | 24 | =cut 25 | 26 | sub new { 27 | my ($class, $params) = @_; 28 | $class = ref $class if ref $class; 29 | 30 | my $self = bless $params, $class; 31 | 32 | # weaken($self->{c}); 33 | 34 | return $self; 35 | } 36 | 37 | sub search { 38 | my ($self, $params) = @_; 39 | 40 | return $self->new(merge({ %$self }, $params)); 41 | } 42 | 43 | sub sort { 44 | my ($self, @keys) = @_; 45 | 46 | return $self->new(merge({sort => \@keys}, { %$self })); 47 | } 48 | 49 | sub list { 50 | my ($self) = @_; 51 | 52 | my @objects = 53 | $self->{c}->model('DB')->object_children($self->{c}, $self->{parent}, $self->{parent_attr}); 54 | 55 | my $filters = $self->{filters}; 56 | 57 | @objects = grep { 58 | my $object = $_; 59 | my $matches = 1; 60 | my $i = natatime 2, @$filters; 61 | 62 | while ($matches and my ($filter, $value) = $i->()) { 63 | $matches &&= $filter eq 'type' 64 | ? $object->{type} eq $value 65 | : $object->attribute($filter)->filter_matches($value) 66 | } 67 | 68 | $matches; 69 | } @objects; 70 | 71 | if ($self->{sort}) { 72 | my @sort_keys = @{ $self->{sort} }; 73 | @objects = sort { 74 | foreach (@sort_keys) { 75 | my $res = $a->property($_) cmp $b->property($_); 76 | return $res if $res; 77 | } 78 | return 0; 79 | } @objects; 80 | } 81 | 82 | return wantarray ? @objects : \@objects; 83 | } 84 | 85 | 1; 86 | -------------------------------------------------------------------------------- /lib/Petal/Utils/Reverse.pm: -------------------------------------------------------------------------------- 1 | package Petal::Utils::Reverse; 2 | 3 | use strict; 4 | use warnings::register; 5 | 6 | =head1 NAME 7 | 8 | Petal::Utils::Reverse - Petal modifier for reversing lists 9 | 10 | =head1 DESCRIPTION 11 | 12 | Reverse elements returned from an array. 13 | 14 | =head1 SYNOPSIS 15 | 16 | Basic Usage: 17 | reverse: 18 | list - a list 19 | 20 | Example: 21 |
22 |

Fact

23 |
24 | 25 | =cut 26 | 27 | use Carp; 28 | 29 | use base qw( Petal::Utils::Base ); 30 | 31 | =head1 constants 32 | 33 | =head2 name 34 | =head2 aliases 35 | 36 | =cut 37 | 38 | use constant name => 'reverse'; 39 | use constant aliases => qw(); 40 | 41 | our $VERSION = ((require Petal::Utils), $Petal::Utils::VERSION)[1]; 42 | our $REVISION = 1; 43 | 44 | =head1 METHODS 45 | 46 | =head2 process 47 | 48 | Check user access to the context node. 49 | 50 | =cut 51 | 52 | sub process { 53 | my $class = shift; 54 | my $hash = shift; 55 | my $args = shift || confess( "'reverse' expects 1 variable (got nothing)!" ); 56 | 57 | my @args = $class->split_args( $args ); 58 | my $key = $args[0] || confess( "1st arg to 'reverse' should be an array (got nothing)!" ); 59 | 60 | my $arrayref = $hash->fetch($key); 61 | return [reverse @$arrayref]; 62 | } 63 | 64 | =head1 AUTHOR 65 | 66 | Stefan Seifert 67 | 68 | =head1 LICENSE 69 | 70 | This library is free software. You can redistribute it and/or modify 71 | it under the same terms as Perl itself. 72 | 73 | =cut 74 | 75 | 1; 76 | -------------------------------------------------------------------------------- /root/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/favicon.ico -------------------------------------------------------------------------------- /root/static/images/btn_120x50_built.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/btn_120x50_built.png -------------------------------------------------------------------------------- /root/static/images/btn_120x50_built_shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/btn_120x50_built_shadow.png -------------------------------------------------------------------------------- /root/static/images/btn_120x50_powered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/btn_120x50_powered.png -------------------------------------------------------------------------------- /root/static/images/btn_120x50_powered_shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/btn_120x50_powered_shadow.png -------------------------------------------------------------------------------- /root/static/images/btn_88x31_built.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/btn_88x31_built.png -------------------------------------------------------------------------------- /root/static/images/btn_88x31_built_shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/btn_88x31_built_shadow.png -------------------------------------------------------------------------------- /root/static/images/btn_88x31_powered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/btn_88x31_powered.png -------------------------------------------------------------------------------- /root/static/images/btn_88x31_powered_shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/btn_88x31_powered_shadow.png -------------------------------------------------------------------------------- /root/static/images/calendar/cal.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/calendar/cal.gif -------------------------------------------------------------------------------- /root/static/images/calendar/next_mon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/calendar/next_mon.gif -------------------------------------------------------------------------------- /root/static/images/calendar/next_year.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/calendar/next_year.gif -------------------------------------------------------------------------------- /root/static/images/calendar/no_cal.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/calendar/no_cal.gif -------------------------------------------------------------------------------- /root/static/images/calendar/pixel.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/calendar/pixel.gif -------------------------------------------------------------------------------- /root/static/images/calendar/prev_mon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/calendar/prev_mon.gif -------------------------------------------------------------------------------- /root/static/images/calendar/prev_year.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/calendar/prev_year.gif -------------------------------------------------------------------------------- /root/static/images/calendar/shade_bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/calendar/shade_bl.png -------------------------------------------------------------------------------- /root/static/images/calendar/shade_bm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/calendar/shade_bm.png -------------------------------------------------------------------------------- /root/static/images/calendar/shade_br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/calendar/shade_br.png -------------------------------------------------------------------------------- /root/static/images/calendar/shade_mr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/calendar/shade_mr.png -------------------------------------------------------------------------------- /root/static/images/calendar/shade_tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/calendar/shade_tr.png -------------------------------------------------------------------------------- /root/static/images/catalyst_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/catalyst_logo.png -------------------------------------------------------------------------------- /root/static/images/icons/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/icons/add.png -------------------------------------------------------------------------------- /root/static/images/icons/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/icons/copy.png -------------------------------------------------------------------------------- /root/static/images/icons/cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/icons/cut.png -------------------------------------------------------------------------------- /root/static/images/icons/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/icons/delete.png -------------------------------------------------------------------------------- /root/static/images/icons/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/icons/edit.png -------------------------------------------------------------------------------- /root/static/images/icons/folder-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/icons/folder-new.png -------------------------------------------------------------------------------- /root/static/images/icons/paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/images/icons/paste.png -------------------------------------------------------------------------------- /root/static/js/scripts.js: -------------------------------------------------------------------------------- 1 | 'use strict;' 2 | 3 | function find_selected_ids() { 4 | var checkboxes = document.querySelectorAll('input.cidercms_multi_selector'); 5 | var ids = []; 6 | [].forEach.call(checkboxes, function (checkbox) { 7 | if (checkbox.checked) 8 | ids.push(checkbox.getAttribute('data-id')); 9 | }); 10 | return ids; 11 | } 12 | 13 | function cut(id) { 14 | var selected = find_selected_ids(); 15 | if (selected.length) 16 | id = selected.join(',') 17 | document.cookie = 'id=' + id + '; path=/' 18 | return; 19 | } 20 | 21 | function paste(link, after) { 22 | var ids = document.cookie.match(/\bid=(\d+(,\d+)*)/)[1].split(','); 23 | 24 | var href = link.href; 25 | ids.forEach(function(id) { 26 | href += ';id=' + id; 27 | }); 28 | if (after) 29 | href += ';after=' + after; 30 | location.href = href; 31 | return false; 32 | } 33 | 34 | document.addEventListener("DOMContentLoaded", function() { 35 | var edit_object_form = document.getElementById('edit_object_form'); 36 | if (edit_object_form) { 37 | edit_object_form.onsubmit = function() { 38 | var password = edit_object_form.querySelector('label.password input'); 39 | var repeat = edit_object_form.querySelector('label.password_repeat input'); 40 | if (password && repeat) { 41 | var repeat_error = repeat.parentNode.querySelector('.repeat_error'); 42 | if (password.value == repeat.value) { 43 | repeat_error.style.display = ''; 44 | return true; 45 | } 46 | else { 47 | repeat_error.style.display = 'block'; 48 | alert(false); 49 | return false; 50 | } 51 | } 52 | } 53 | } 54 | }, false); 55 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/advhr/css/advhr.css: -------------------------------------------------------------------------------- 1 | input.radio {border:1px none #000; background:transparent; vertical-align:middle;} 2 | .panel_wrapper div.current {height:80px;} 3 | #width {width:50px; vertical-align:middle;} 4 | #width2 {width:50px; vertical-align:middle;} 5 | #size {width:100px;} 6 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/advhr/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.AdvancedHRPlugin",{init:function(a,b){a.addCommand("mceAdvancedHr",function(){a.windowManager.open({file:b+"/rule.htm",width:250+parseInt(a.getLang("advhr.delta_width",0)),height:160+parseInt(a.getLang("advhr.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("advhr",{title:"advhr.advhr_desc",cmd:"mceAdvancedHr"});a.onNodeChange.add(function(d,c,e){c.setActive("advhr",e.nodeName=="HR")});a.onClick.add(function(c,d){d=d.target;if(d.nodeName==="HR"){c.selection.select(d)}})},getInfo:function(){return{longname:"Advanced HR",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advhr",tinymce.plugins.AdvancedHRPlugin)})(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/advhr/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.AdvancedHRPlugin', { 13 | init : function(ed, url) { 14 | // Register commands 15 | ed.addCommand('mceAdvancedHr', function() { 16 | ed.windowManager.open({ 17 | file : url + '/rule.htm', 18 | width : 250 + parseInt(ed.getLang('advhr.delta_width', 0)), 19 | height : 160 + parseInt(ed.getLang('advhr.delta_height', 0)), 20 | inline : 1 21 | }, { 22 | plugin_url : url 23 | }); 24 | }); 25 | 26 | // Register buttons 27 | ed.addButton('advhr', { 28 | title : 'advhr.advhr_desc', 29 | cmd : 'mceAdvancedHr' 30 | }); 31 | 32 | ed.onNodeChange.add(function(ed, cm, n) { 33 | cm.setActive('advhr', n.nodeName == 'HR'); 34 | }); 35 | 36 | ed.onClick.add(function(ed, e) { 37 | e = e.target; 38 | 39 | if (e.nodeName === 'HR') 40 | ed.selection.select(e); 41 | }); 42 | }, 43 | 44 | getInfo : function() { 45 | return { 46 | longname : 'Advanced HR', 47 | author : 'Moxiecode Systems AB', 48 | authorurl : 'http://tinymce.moxiecode.com', 49 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr', 50 | version : tinymce.majorVersion + "." + tinymce.minorVersion 51 | }; 52 | } 53 | }); 54 | 55 | // Register plugin 56 | tinymce.PluginManager.add('advhr', tinymce.plugins.AdvancedHRPlugin); 57 | })(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/advhr/js/rule.js: -------------------------------------------------------------------------------- 1 | var AdvHRDialog = { 2 | init : function(ed) { 3 | var dom = ed.dom, f = document.forms[0], n = ed.selection.getNode(), w; 4 | 5 | w = dom.getAttrib(n, 'width'); 6 | f.width.value = w ? parseInt(w) : (dom.getStyle('width') || ''); 7 | f.size.value = dom.getAttrib(n, 'size') || parseInt(dom.getStyle('height')) || ''; 8 | f.noshade.checked = !!dom.getAttrib(n, 'noshade') || !!dom.getStyle('border-width'); 9 | selectByValue(f, 'width2', w.indexOf('%') != -1 ? '%' : 'px'); 10 | }, 11 | 12 | update : function() { 13 | var ed = tinyMCEPopup.editor, h, f = document.forms[0], st = ''; 14 | 15 | h = 'd.autoresize_min_height){i=f}g.setStyle(g.get(a.id+"_ifr"),"height",i+"px");if(d.throbbing){a.setProgressState(false);a.setProgressState(true)}}d.editor=a;d.autoresize_min_height=a.getElement().offsetHeight;a.onChange.add(b);a.onSetContent.add(b);a.onPaste.add(b);a.onKeyUp.add(b);a.onPostRender.add(b);if(a.getParam("autoresize_on_init",true)){a.onInit.add(function(f,e){f.setProgressState(true);d.throbbing=true;f.getBody().style.overflowY="hidden"});a.onLoadContent.add(function(f,e){b();setTimeout(function(){b();f.setProgressState(false);d.throbbing=false},1250)})}a.addCommand("mceAutoResize",b)},getInfo:function(){return{longname:"Auto Resize",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autoresize",tinymce.plugins.AutoResizePlugin)})(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/autosave/langs/en.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.autosave',{ 2 | restore_content: "Restore auto-saved content", 3 | warning_message: "If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?" 4 | }); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/directionality/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.Directionality",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceDirectionLTR",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="ltr"){a.dom.setAttrib(d,"dir","ltr")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addCommand("mceDirectionRTL",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="rtl"){a.dom.setAttrib(d,"dir","rtl")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});a.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});a.onNodeChange.add(c._nodeChange,c)},getInfo:function(){return{longname:"Directionality",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(a){a.create("tinymce.plugins.EmotionsPlugin",{init:function(b,c){b.addCommand("mceEmotion",function(){b.windowManager.open({file:c+"/emotions.htm",width:250+parseInt(b.getLang("emotions.delta_width",0)),height:160+parseInt(b.getLang("emotions.delta_height",0)),inline:1},{plugin_url:c})});b.addButton("emotions",{title:"emotions.emotions_desc",cmd:"mceEmotion"})},getInfo:function(){return{longname:"Emotions",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions",version:a.majorVersion+"."+a.minorVersion}}});a.PluginManager.add("emotions",a.plugins.EmotionsPlugin)})(tinymce); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function(tinymce) { 12 | tinymce.create('tinymce.plugins.EmotionsPlugin', { 13 | init : function(ed, url) { 14 | // Register commands 15 | ed.addCommand('mceEmotion', function() { 16 | ed.windowManager.open({ 17 | file : url + '/emotions.htm', 18 | width : 250 + parseInt(ed.getLang('emotions.delta_width', 0)), 19 | height : 160 + parseInt(ed.getLang('emotions.delta_height', 0)), 20 | inline : 1 21 | }, { 22 | plugin_url : url 23 | }); 24 | }); 25 | 26 | // Register buttons 27 | ed.addButton('emotions', {title : 'emotions.emotions_desc', cmd : 'mceEmotion'}); 28 | }, 29 | 30 | getInfo : function() { 31 | return { 32 | longname : 'Emotions', 33 | author : 'Moxiecode Systems AB', 34 | authorurl : 'http://tinymce.moxiecode.com', 35 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions', 36 | version : tinymce.majorVersion + "." + tinymce.minorVersion 37 | }; 38 | } 39 | }); 40 | 41 | // Register plugin 42 | tinymce.PluginManager.add('emotions', tinymce.plugins.EmotionsPlugin); 43 | })(tinymce); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-cool.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-cool.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-cry.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-cry.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-embarassed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-embarassed.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-frown.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-frown.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-innocent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-innocent.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-kiss.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-kiss.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-sealed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-sealed.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-smile.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-surprised.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-surprised.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-undecided.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-undecided.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-wink.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-wink.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/img/smiley-yell.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/emotions/img/smiley-yell.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/js/emotions.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | 3 | var EmotionsDialog = { 4 | init : function(ed) { 5 | tinyMCEPopup.resizeToInnerSize(); 6 | }, 7 | 8 | insert : function(file, title) { 9 | var ed = tinyMCEPopup.editor, dom = ed.dom; 10 | 11 | tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', { 12 | src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file, 13 | alt : ed.getLang(title), 14 | title : ed.getLang(title), 15 | border : 0 16 | })); 17 | 18 | tinyMCEPopup.close(); 19 | } 20 | }; 21 | 22 | tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog); 23 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/emotions/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.emotions_dlg',{ 2 | title:"Insert emotion", 3 | desc:"Emotions", 4 | cool:"Cool", 5 | cry:"Cry", 6 | embarassed:"Embarassed", 7 | foot_in_mouth:"Foot in mouth", 8 | frown:"Frown", 9 | innocent:"Innocent", 10 | kiss:"Kiss", 11 | laughing:"Laughing", 12 | money_mouth:"Money mouth", 13 | sealed:"Sealed", 14 | smile:"Smile", 15 | surprised:"Surprised", 16 | tongue_out:"Tongue out", 17 | undecided:"Undecided", 18 | wink:"Wink", 19 | yell:"Yell" 20 | }); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/example/dialog.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {#example_dlg.title} 5 | 6 | 7 | 8 | 9 | 10 |
11 |

Here is a example dialog.

12 |

Selected text:

13 |

Custom arg:

14 | 15 |
16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/example/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.PluginManager.requireLangPack("example");tinymce.create("tinymce.plugins.ExamplePlugin",{init:function(a,b){a.addCommand("mceExample",function(){a.windowManager.open({file:b+"/dialog.htm",width:320+parseInt(a.getLang("example.delta_width",0)),height:120+parseInt(a.getLang("example.delta_height",0)),inline:1},{plugin_url:b,some_custom_arg:"custom arg"})});a.addButton("example",{title:"example.desc",cmd:"mceExample",image:b+"/img/example.gif"});a.onNodeChange.add(function(d,c,e){c.setActive("example",e.nodeName=="IMG")})},createControl:function(b,a){return null},getInfo:function(){return{longname:"Example plugin",author:"Some author",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example",version:"1.0"}}});tinymce.PluginManager.add("example",tinymce.plugins.ExamplePlugin)})(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/example/img/example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/example/img/example.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/example/js/dialog.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | 3 | var ExampleDialog = { 4 | init : function() { 5 | var f = document.forms[0]; 6 | 7 | // Get the selected contents as text and place it in the input 8 | f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'}); 9 | f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg'); 10 | }, 11 | 12 | insert : function() { 13 | // Insert the contents from the input into the document 14 | tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value); 15 | tinyMCEPopup.close(); 16 | } 17 | }; 18 | 19 | tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog); 20 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/example/langs/en.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.example',{ 2 | desc : 'This is just a template button' 3 | }); 4 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/example/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.example_dlg',{ 2 | title : 'This is just a example title' 3 | }); 4 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/iespell/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.IESpell",{init:function(a,b){var c=this,d;if(!tinymce.isIE){return}c.editor=a;a.addCommand("mceIESpell",function(){try{d=new ActiveXObject("ieSpell.ieSpellExtension");d.CheckDocumentNode(a.getDoc().documentElement)}catch(f){if(f.number==-2146827859){a.windowManager.confirm(a.getLang("iespell.download"),function(e){if(e){window.open("http://www.iespell.com/download.php","ieSpellDownload","")}})}else{a.windowManager.alert("Error Loading ieSpell: Exception "+f.number)}}});a.addButton("iespell",{title:"iespell.iespell_desc",cmd:"mceIESpell"})},getInfo:function(){return{longname:"IESpell (IE Only)",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("iespell",tinymce.plugins.IESpell)})(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/iespell/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.IESpell', { 13 | init : function(ed, url) { 14 | var t = this, sp; 15 | 16 | if (!tinymce.isIE) 17 | return; 18 | 19 | t.editor = ed; 20 | 21 | // Register commands 22 | ed.addCommand('mceIESpell', function() { 23 | try { 24 | sp = new ActiveXObject("ieSpell.ieSpellExtension"); 25 | sp.CheckDocumentNode(ed.getDoc().documentElement); 26 | } catch (e) { 27 | if (e.number == -2146827859) { 28 | ed.windowManager.confirm(ed.getLang("iespell.download"), function(s) { 29 | if (s) 30 | window.open('http://www.iespell.com/download.php', 'ieSpellDownload', ''); 31 | }); 32 | } else 33 | ed.windowManager.alert("Error Loading ieSpell: Exception " + e.number); 34 | } 35 | }); 36 | 37 | // Register buttons 38 | ed.addButton('iespell', {title : 'iespell.iespell_desc', cmd : 'mceIESpell'}); 39 | }, 40 | 41 | getInfo : function() { 42 | return { 43 | longname : 'IESpell (IE Only)', 44 | author : 'Moxiecode Systems AB', 45 | authorurl : 'http://tinymce.moxiecode.com', 46 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell', 47 | version : tinymce.majorVersion + "." + tinymce.minorVersion 48 | }; 49 | } 50 | }); 51 | 52 | // Register plugin 53 | tinymce.PluginManager.add('iespell', tinymce.plugins.IESpell); 54 | })(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/insertdatetime/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.InsertDateTime",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertDate",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_dateFormat",a.getLang("insertdatetime.date_fmt")));a.execCommand("mceInsertContent",false,d)});a.addCommand("mceInsertTime",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_timeFormat",a.getLang("insertdatetime.time_fmt")));a.execCommand("mceInsertContent",false,d)});a.addButton("insertdate",{title:"insertdatetime.insertdate_desc",cmd:"mceInsertDate"});a.addButton("inserttime",{title:"insertdatetime.inserttime_desc",cmd:"mceInsertTime"})},getInfo:function(){return{longname:"Insert date/time",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getDateTime:function(e,a){var c=this.editor;function b(g,d){g=""+g;if(g.length·':" ")});a.addButton("nonbreaking",{title:"nonbreaking.nonbreaking_desc",cmd:"mceNonBreaking"});if(a.getParam("nonbreaking_force_tab")){a.onKeyDown.add(function(d,f){if(tinymce.isIE&&f.keyCode==9){d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");tinymce.dom.Event.cancel(f)}})}},getInfo:function(){return{longname:"Nonbreaking space",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("nonbreaking",tinymce.plugins.Nonbreaking)})(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/nonbreaking/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.Nonbreaking', { 13 | init : function(ed, url) { 14 | var t = this; 15 | 16 | t.editor = ed; 17 | 18 | // Register commands 19 | ed.addCommand('mceNonBreaking', function() { 20 | ed.execCommand('mceInsertContent', false, (ed.plugins.visualchars && ed.plugins.visualchars.state) ? '·' : ' '); 21 | }); 22 | 23 | // Register buttons 24 | ed.addButton('nonbreaking', {title : 'nonbreaking.nonbreaking_desc', cmd : 'mceNonBreaking'}); 25 | 26 | if (ed.getParam('nonbreaking_force_tab')) { 27 | ed.onKeyDown.add(function(ed, e) { 28 | if (tinymce.isIE && e.keyCode == 9) { 29 | ed.execCommand('mceNonBreaking'); 30 | ed.execCommand('mceNonBreaking'); 31 | ed.execCommand('mceNonBreaking'); 32 | tinymce.dom.Event.cancel(e); 33 | } 34 | }); 35 | } 36 | }, 37 | 38 | getInfo : function() { 39 | return { 40 | longname : 'Nonbreaking space', 41 | author : 'Moxiecode Systems AB', 42 | authorurl : 'http://tinymce.moxiecode.com', 43 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking', 44 | version : tinymce.majorVersion + "." + tinymce.minorVersion 45 | }; 46 | } 47 | 48 | // Private methods 49 | }); 50 | 51 | // Register plugin 52 | tinymce.PluginManager.add('nonbreaking', tinymce.plugins.Nonbreaking); 53 | })(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/noneditable/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){var a=tinymce.dom.Event;tinymce.create("tinymce.plugins.NonEditablePlugin",{init:function(d,e){var f=this,c,b;f.editor=d;c=d.getParam("noneditable_editable_class","mceEditable");b=d.getParam("noneditable_noneditable_class","mceNonEditable");d.onNodeChange.addToTop(function(h,g,k){var j,i;j=h.dom.getParent(h.selection.getStart(),function(l){return h.dom.hasClass(l,b)});i=h.dom.getParent(h.selection.getEnd(),function(l){return h.dom.hasClass(l,b)});if(j||i){f._setDisabled(1);return false}else{f._setDisabled(0)}})},getInfo:function(){return{longname:"Non editable elements",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_block:function(c,d){var b=d.keyCode;if((b>32&&b<41)||(b>111&&b<124)){return}return a.cancel(d)},_setDisabled:function(d){var c=this,b=c.editor;tinymce.each(b.controlManager.controls,function(e){e.setDisabled(d)});if(d!==c.disabled){if(d){b.onKeyDown.addToTop(c._block);b.onKeyPress.addToTop(c._block);b.onKeyUp.addToTop(c._block);b.onPaste.addToTop(c._block)}else{b.onKeyDown.remove(c._block);b.onKeyPress.remove(c._block);b.onKeyUp.remove(c._block);b.onPaste.remove(c._block)}c.disabled=d}}});tinymce.PluginManager.add("noneditable",tinymce.plugins.NonEditablePlugin)})(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/pagebreak/css/content.css: -------------------------------------------------------------------------------- 1 | .mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../img/pagebreak.gif) no-repeat center top;} 2 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/pagebreak/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.PageBreakPlugin",{init:function(b,d){var f='',a="mcePageBreak",c=b.getParam("pagebreak_separator",""),e;e=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(g){return"\\"+g}),"g");b.addCommand("mcePageBreak",function(){b.execCommand("mceInsertContent",0,f)});b.addButton("pagebreak",{title:"pagebreak.desc",cmd:a});b.onInit.add(function(){if(b.settings.content_css!==false){b.dom.loadCSS(d+"/css/content.css")}if(b.theme.onResolveName){b.theme.onResolveName.add(function(g,h){if(h.node.nodeName=="IMG"&&b.dom.hasClass(h.node,a)){h.name="pagebreak"}})}});b.onClick.add(function(g,h){h=h.target;if(h.nodeName==="IMG"&&g.dom.hasClass(h,a)){g.selection.select(h)}});b.onNodeChange.add(function(h,g,i){g.setActive("pagebreak",i.nodeName==="IMG"&&h.dom.hasClass(i,a))});b.onBeforeSetContent.add(function(g,h){h.content=h.content.replace(e,f)});b.onPostProcess.add(function(g,h){if(h.get){h.content=h.content.replace(/]+>/g,function(i){if(i.indexOf('class="mcePageBreak')!==-1){i=c}return i})}})},getInfo:function(){return{longname:"PageBreak",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("pagebreak",tinymce.plugins.PageBreakPlugin)})(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/pagebreak/img/pagebreak.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/pagebreak/img/pagebreak.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/pagebreak/img/trans.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/pagebreak/img/trans.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/paste/js/pastetext.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | 3 | var PasteTextDialog = { 4 | init : function() { 5 | this.resize(); 6 | }, 7 | 8 | insert : function() { 9 | var h = tinyMCEPopup.dom.encode(document.getElementById('content').value), lines; 10 | 11 | // Convert linebreaks into paragraphs 12 | if (document.getElementById('linebreaks').checked) { 13 | lines = h.split(/\r?\n/); 14 | if (lines.length > 1) { 15 | h = ''; 16 | tinymce.each(lines, function(row) { 17 | h += '

' + row + '

'; 18 | }); 19 | } 20 | } 21 | 22 | tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h}); 23 | tinyMCEPopup.close(); 24 | }, 25 | 26 | resize : function() { 27 | var vp = tinyMCEPopup.dom.getViewPort(window), el; 28 | 29 | el = document.getElementById('content'); 30 | 31 | el.style.width = (vp.w - 20) + 'px'; 32 | el.style.height = (vp.h - 90) + 'px'; 33 | } 34 | }; 35 | 36 | tinyMCEPopup.onInit.add(PasteTextDialog.init, PasteTextDialog); 37 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/paste/js/pasteword.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | 3 | var PasteWordDialog = { 4 | init : function() { 5 | var ed = tinyMCEPopup.editor, el = document.getElementById('iframecontainer'), ifr, doc, css, cssHTML = ''; 6 | 7 | // Create iframe 8 | el.innerHTML = ''; 9 | ifr = document.getElementById('iframe'); 10 | doc = ifr.contentWindow.document; 11 | 12 | // Force absolute CSS urls 13 | css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")]; 14 | css = css.concat(tinymce.explode(ed.settings.content_css) || []); 15 | tinymce.each(css, function(u) { 16 | cssHTML += ''; 17 | }); 18 | 19 | // Write content into iframe 20 | doc.open(); 21 | doc.write('' + cssHTML + ''); 22 | doc.close(); 23 | 24 | doc.designMode = 'on'; 25 | this.resize(); 26 | 27 | window.setTimeout(function() { 28 | ifr.contentWindow.focus(); 29 | }, 10); 30 | }, 31 | 32 | insert : function() { 33 | var h = document.getElementById('iframe').contentWindow.document.body.innerHTML; 34 | 35 | tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h, wordContent : true}); 36 | tinyMCEPopup.close(); 37 | }, 38 | 39 | resize : function() { 40 | var vp = tinyMCEPopup.dom.getViewPort(window), el; 41 | 42 | el = document.getElementById('iframe'); 43 | 44 | if (el) { 45 | el.style.width = (vp.w - 20) + 'px'; 46 | el.style.height = (vp.h - 90) + 'px'; 47 | } 48 | } 49 | }; 50 | 51 | tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog); 52 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/paste/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.paste_dlg',{ 2 | text_title:"Use CTRL+V on your keyboard to paste the text into the window.", 3 | text_linebreaks:"Keep linebreaks", 4 | word_title:"Use CTRL+V on your keyboard to paste the text into the window." 5 | }); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/paste/pastetext.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | {#paste.paste_text_desc} 4 | 5 | 6 | 7 | 8 |
9 |
{#paste.paste_text_desc}
10 | 11 |
12 | 13 |
14 | 15 |
16 | 17 |
{#paste_dlg.text_title}
18 | 19 | 20 | 21 |
22 | 23 | 24 |
25 |
26 | 27 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/paste/pasteword.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | {#paste.paste_word_desc} 4 | 5 | 6 | 7 | 8 |
9 |
{#paste.paste_word_desc}
10 | 11 |
{#paste_dlg.word_title}
12 | 13 |
14 | 15 |
16 | 17 | 18 |
19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/preview/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.Preview",{init:function(a,b){var d=this,c=tinymce.explode(a.settings.content_css);d.editor=a;tinymce.each(c,function(f,e){c[e]=a.documentBaseURI.toAbsolute(f)});a.addCommand("mcePreview",function(){a.windowManager.open({file:a.getParam("plugin_preview_pageurl",b+"/preview.html"),width:parseInt(a.getParam("plugin_preview_width","550")),height:parseInt(a.getParam("plugin_preview_height","600")),resizable:"yes",scrollbars:"yes",popup_css:c?c.join(","):a.baseURI.toAbsolute("themes/"+a.settings.theme+"/skins/"+a.settings.skin+"/content.css"),inline:a.getParam("plugin_preview_inline",1)},{base:a.documentBaseURI.getURI()})});a.addButton("preview",{title:"preview.preview_desc",cmd:"mcePreview"})},getInfo:function(){return{longname:"Preview",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("preview",tinymce.plugins.Preview)})(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/preview/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.Preview', { 13 | init : function(ed, url) { 14 | var t = this, css = tinymce.explode(ed.settings.content_css); 15 | 16 | t.editor = ed; 17 | 18 | // Force absolute CSS urls 19 | tinymce.each(css, function(u, k) { 20 | css[k] = ed.documentBaseURI.toAbsolute(u); 21 | }); 22 | 23 | ed.addCommand('mcePreview', function() { 24 | ed.windowManager.open({ 25 | file : ed.getParam("plugin_preview_pageurl", url + "/preview.html"), 26 | width : parseInt(ed.getParam("plugin_preview_width", "550")), 27 | height : parseInt(ed.getParam("plugin_preview_height", "600")), 28 | resizable : "yes", 29 | scrollbars : "yes", 30 | popup_css : css ? css.join(',') : ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css"), 31 | inline : ed.getParam("plugin_preview_inline", 1) 32 | }, { 33 | base : ed.documentBaseURI.getURI() 34 | }); 35 | }); 36 | 37 | ed.addButton('preview', {title : 'preview.preview_desc', cmd : 'mcePreview'}); 38 | }, 39 | 40 | getInfo : function() { 41 | return { 42 | longname : 'Preview', 43 | author : 'Moxiecode Systems AB', 44 | authorurl : 'http://tinymce.moxiecode.com', 45 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview', 46 | version : tinymce.majorVersion + "." + tinymce.minorVersion 47 | }; 48 | } 49 | }); 50 | 51 | // Register plugin 52 | tinymce.PluginManager.add('preview', tinymce.plugins.Preview); 53 | })(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/preview/example.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 18 | Example of a custom preview page 19 | 20 | 21 | 22 | Editor contents:
23 |
24 | 25 |
26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/preview/preview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | {#preview.preview_desc} 11 | 12 | 13 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/print/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.Print",{init:function(a,b){a.addCommand("mcePrint",function(){a.getWin().print()});a.addButton("print",{title:"print.print_desc",cmd:"mcePrint"})},getInfo:function(){return{longname:"Print",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("print",tinymce.plugins.Print)})(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/print/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.Print', { 13 | init : function(ed, url) { 14 | ed.addCommand('mcePrint', function() { 15 | ed.getWin().print(); 16 | }); 17 | 18 | ed.addButton('print', {title : 'print.print_desc', cmd : 'mcePrint'}); 19 | }, 20 | 21 | getInfo : function() { 22 | return { 23 | longname : 'Print', 24 | author : 'Moxiecode Systems AB', 25 | authorurl : 'http://tinymce.moxiecode.com', 26 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print', 27 | version : tinymce.majorVersion + "." + tinymce.minorVersion 28 | }; 29 | } 30 | }); 31 | 32 | // Register plugin 33 | tinymce.PluginManager.add('print', tinymce.plugins.Print); 34 | })(); 35 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/save/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.Save",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceSave",c._save,c);a.addCommand("mceCancel",c._cancel,c);a.addButton("save",{title:"save.save_desc",cmd:"mceSave"});a.addButton("cancel",{title:"save.cancel_desc",cmd:"mceCancel"});a.onNodeChange.add(c._nodeChange,c);a.addShortcut("ctrl+s",a.getLang("save.save_desc"),"mceSave")},getInfo:function(){return{longname:"Save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,c){var b=this.editor;if(b.getParam("save_enablewhendirty")){a.setDisabled("save",!b.isDirty());a.setDisabled("cancel",!b.isDirty())}},_save:function(){var c=this.editor,a,e,d,b;a=tinymce.DOM.get(c.id).form||tinymce.DOM.getParent(c.id,"form");if(c.getParam("save_enablewhendirty")&&!c.isDirty()){return}tinyMCE.triggerSave();if(e=c.getParam("save_onsavecallback")){if(c.execCallback("save_onsavecallback",c)){c.startContent=tinymce.trim(c.getContent({format:"raw"}));c.nodeChanged()}return}if(a){c.isNotDirty=true;if(a.onsubmit==null||a.onsubmit()!=false){a.submit()}c.nodeChanged()}else{c.windowManager.alert("Error: No form element found.")}},_cancel:function(){var a=this.editor,c,b=tinymce.trim(a.startContent);if(c=a.getParam("save_oncancelcallback")){a.execCallback("save_oncancelcallback",a);return}a.setContent(b);a.undoManager.clear();a.nodeChanged()}});tinymce.PluginManager.add("save",tinymce.plugins.Save)})(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/searchreplace/css/searchreplace.css: -------------------------------------------------------------------------------- 1 | .panel_wrapper {height:85px;} 2 | .panel_wrapper div.current {height:85px;} 3 | 4 | /* IE */ 5 | * html .panel_wrapper {height:100px;} 6 | * html .panel_wrapper div.current {height:100px;} 7 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/searchreplace/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.SearchReplacePlugin",{init:function(a,c){function b(d){a.windowManager.open({file:c+"/searchreplace.htm",width:420+parseInt(a.getLang("searchreplace.delta_width",0)),height:170+parseInt(a.getLang("searchreplace.delta_height",0)),inline:1,auto_focus:0},{mode:d,search_string:a.selection.getContent({format:"text"}),plugin_url:c})}a.addCommand("mceSearch",function(){b("search")});a.addCommand("mceReplace",function(){b("replace")});a.addButton("search",{title:"searchreplace.search_desc",cmd:"mceSearch"});a.addButton("replace",{title:"searchreplace.replace_desc",cmd:"mceReplace"});a.addShortcut("ctrl+f","searchreplace.search_desc","mceSearch")},getInfo:function(){return{longname:"Search/Replace",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("searchreplace",tinymce.plugins.SearchReplacePlugin)})(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/searchreplace/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.SearchReplacePlugin', { 13 | init : function(ed, url) { 14 | function open(m) { 15 | ed.windowManager.open({ 16 | file : url + '/searchreplace.htm', 17 | width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)), 18 | height : 170 + parseInt(ed.getLang('searchreplace.delta_height', 0)), 19 | inline : 1, 20 | auto_focus : 0 21 | }, { 22 | mode : m, 23 | search_string : ed.selection.getContent({format : 'text'}), 24 | plugin_url : url 25 | }); 26 | }; 27 | 28 | // Register commands 29 | ed.addCommand('mceSearch', function() { 30 | open('search'); 31 | }); 32 | 33 | ed.addCommand('mceReplace', function() { 34 | open('replace'); 35 | }); 36 | 37 | // Register buttons 38 | ed.addButton('search', {title : 'searchreplace.search_desc', cmd : 'mceSearch'}); 39 | ed.addButton('replace', {title : 'searchreplace.replace_desc', cmd : 'mceReplace'}); 40 | 41 | ed.addShortcut('ctrl+f', 'searchreplace.search_desc', 'mceSearch'); 42 | }, 43 | 44 | getInfo : function() { 45 | return { 46 | longname : 'Search/Replace', 47 | author : 'Moxiecode Systems AB', 48 | authorurl : 'http://tinymce.moxiecode.com', 49 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace', 50 | version : tinymce.majorVersion + "." + tinymce.minorVersion 51 | }; 52 | } 53 | }); 54 | 55 | // Register plugin 56 | tinymce.PluginManager.add('searchreplace', tinymce.plugins.SearchReplacePlugin); 57 | })(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/searchreplace/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.searchreplace_dlg',{ 2 | searchnext_desc:"Find again", 3 | notfound:"The search has been completed. The search string could not be found.", 4 | search_title:"Find", 5 | replace_title:"Find/Replace", 6 | allreplaced:"All occurrences of the search string were replaced.", 7 | findwhat:"Find what", 8 | replacewith:"Replace with", 9 | direction:"Direction", 10 | up:"Up", 11 | down:"Down", 12 | mcase:"Match case", 13 | findnext:"Find next", 14 | replace:"Replace", 15 | replaceall:"Replace all" 16 | }); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/spellchecker/css/content.css: -------------------------------------------------------------------------------- 1 | .mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;} 2 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/spellchecker/editor_plugin.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/spellchecker/editor_plugin.js -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/spellchecker/img/wline.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/plugins/spellchecker/img/wline.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/style/css/props.css: -------------------------------------------------------------------------------- 1 | #text_font {width:250px;} 2 | #text_size {width:70px;} 3 | .mceAddSelectValue {background:#DDD;} 4 | select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;} 5 | #box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;} 6 | #positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;} 7 | #positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;} 8 | .panel_wrapper div.current {padding-top:10px;height:230px;} 9 | .delim {border-left:1px solid gray;} 10 | .tdelim {border-bottom:1px solid gray;} 11 | #block_display {width:145px;} 12 | #list_type {width:115px;} 13 | .disabled {background:#EEE;} 14 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/style/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.StylePlugin",{init:function(a,b){a.addCommand("mceStyleProps",function(){a.windowManager.open({file:b+"/props.htm",width:480+parseInt(a.getLang("style.delta_width",0)),height:320+parseInt(a.getLang("style.delta_height",0)),inline:1},{plugin_url:b,style_text:a.selection.getNode().style.cssText})});a.addCommand("mceSetElementStyle",function(d,c){if(e=a.selection.getNode()){a.dom.setAttrib(e,"style",c);a.execCommand("mceRepaint")}});a.onNodeChange.add(function(d,c,f){c.setDisabled("styleprops",f.nodeName==="BODY")});a.addButton("styleprops",{title:"style.desc",cmd:"mceStyleProps"})},getInfo:function(){return{longname:"Style",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("style",tinymce.plugins.StylePlugin)})(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/style/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.StylePlugin', { 13 | init : function(ed, url) { 14 | // Register commands 15 | ed.addCommand('mceStyleProps', function() { 16 | ed.windowManager.open({ 17 | file : url + '/props.htm', 18 | width : 480 + parseInt(ed.getLang('style.delta_width', 0)), 19 | height : 320 + parseInt(ed.getLang('style.delta_height', 0)), 20 | inline : 1 21 | }, { 22 | plugin_url : url, 23 | style_text : ed.selection.getNode().style.cssText 24 | }); 25 | }); 26 | 27 | ed.addCommand('mceSetElementStyle', function(ui, v) { 28 | if (e = ed.selection.getNode()) { 29 | ed.dom.setAttrib(e, 'style', v); 30 | ed.execCommand('mceRepaint'); 31 | } 32 | }); 33 | 34 | ed.onNodeChange.add(function(ed, cm, n) { 35 | cm.setDisabled('styleprops', n.nodeName === 'BODY'); 36 | }); 37 | 38 | // Register buttons 39 | ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'}); 40 | }, 41 | 42 | getInfo : function() { 43 | return { 44 | longname : 'Style', 45 | author : 'Moxiecode Systems AB', 46 | authorurl : 'http://tinymce.moxiecode.com', 47 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style', 48 | version : tinymce.majorVersion + "." + tinymce.minorVersion 49 | }; 50 | } 51 | }); 52 | 53 | // Register plugin 54 | tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin); 55 | })(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/style/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.style_dlg',{ 2 | title:"Edit CSS Style", 3 | apply:"Apply", 4 | text_tab:"Text", 5 | background_tab:"Background", 6 | block_tab:"Block", 7 | box_tab:"Box", 8 | border_tab:"Border", 9 | list_tab:"List", 10 | positioning_tab:"Positioning", 11 | text_props:"Text", 12 | text_font:"Font", 13 | text_size:"Size", 14 | text_weight:"Weight", 15 | text_style:"Style", 16 | text_variant:"Variant", 17 | text_lineheight:"Line height", 18 | text_case:"Case", 19 | text_color:"Color", 20 | text_decoration:"Decoration", 21 | text_overline:"overline", 22 | text_underline:"underline", 23 | text_striketrough:"strikethrough", 24 | text_blink:"blink", 25 | text_none:"none", 26 | background_color:"Background color", 27 | background_image:"Background image", 28 | background_repeat:"Repeat", 29 | background_attachment:"Attachment", 30 | background_hpos:"Horizontal position", 31 | background_vpos:"Vertical position", 32 | block_wordspacing:"Word spacing", 33 | block_letterspacing:"Letter spacing", 34 | block_vertical_alignment:"Vertical alignment", 35 | block_text_align:"Text align", 36 | block_text_indent:"Text indent", 37 | block_whitespace:"Whitespace", 38 | block_display:"Display", 39 | box_width:"Width", 40 | box_height:"Height", 41 | box_float:"Float", 42 | box_clear:"Clear", 43 | padding:"Padding", 44 | same:"Same for all", 45 | top:"Top", 46 | right:"Right", 47 | bottom:"Bottom", 48 | left:"Left", 49 | margin:"Margin", 50 | style:"Style", 51 | width:"Width", 52 | height:"Height", 53 | color:"Color", 54 | list_type:"Type", 55 | bullet_image:"Bullet image", 56 | position:"Position", 57 | positioning_type:"Type", 58 | visibility:"Visibility", 59 | zindex:"Z-index", 60 | overflow:"Overflow", 61 | placement:"Placement", 62 | clip:"Clip" 63 | }); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/tabfocus/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(i){o=c.getParent(l.id,"form");n=o.elements;if(o){d(n,function(s,r){if(s.id==l.id){j=r;return false}});if(i>0){for(m=j+1;m=0;m--){if(n[m].type!="hidden"){return n[m]}}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(l=tinymce.get(n.id||n.name)){l.focus()}else{window.setTimeout(function(){window.focus();n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}f.onInit.add(function(){d(c.select("a:first,a:last",f.getContainer()),function(i){a.add(i,"focus",function(){f.focus()})})})},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})(); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/table/css/cell.css: -------------------------------------------------------------------------------- 1 | /* CSS file for cell dialog in the table plugin */ 2 | 3 | .panel_wrapper div.current { 4 | height: 200px; 5 | } 6 | 7 | .advfield { 8 | width: 200px; 9 | } 10 | 11 | #action { 12 | margin-bottom: 3px; 13 | } 14 | 15 | #class { 16 | width: 150px; 17 | } -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/table/css/row.css: -------------------------------------------------------------------------------- 1 | /* CSS file for row dialog in the table plugin */ 2 | 3 | .panel_wrapper div.current { 4 | height: 200px; 5 | } 6 | 7 | .advfield { 8 | width: 200px; 9 | } 10 | 11 | #action { 12 | margin-bottom: 3px; 13 | } 14 | 15 | #rowtype,#align,#valign,#class,#height { 16 | width: 150px; 17 | } 18 | 19 | #height { 20 | width: 50px; 21 | } 22 | 23 | .col2 { 24 | padding-left: 20px; 25 | } 26 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/table/css/table.css: -------------------------------------------------------------------------------- 1 | /* CSS file for table dialog in the table plugin */ 2 | 3 | .panel_wrapper div.current { 4 | height: 245px; 5 | } 6 | 7 | .advfield { 8 | width: 200px; 9 | } 10 | 11 | #class { 12 | width: 150px; 13 | } 14 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/table/js/merge_cells.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | 3 | var MergeCellsDialog = { 4 | init : function() { 5 | var f = document.forms[0]; 6 | 7 | f.numcols.value = tinyMCEPopup.getWindowArg('cols', 1); 8 | f.numrows.value = tinyMCEPopup.getWindowArg('rows', 1); 9 | }, 10 | 11 | merge : function() { 12 | var func, f = document.forms[0]; 13 | 14 | tinyMCEPopup.restoreSelection(); 15 | 16 | func = tinyMCEPopup.getWindowArg('onaction'); 17 | 18 | func({ 19 | cols : f.numcols.value, 20 | rows : f.numrows.value 21 | }); 22 | 23 | tinyMCEPopup.close(); 24 | } 25 | }; 26 | 27 | tinyMCEPopup.onInit.add(MergeCellsDialog.init, MergeCellsDialog); 28 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/table/merge_cells.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {#table_dlg.merge_cells_title} 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 | {#table_dlg.merge_cells_title} 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
{#table_dlg.cols}:
{#table_dlg.rows}:
24 |
25 | 26 |
27 | 28 | 29 |
30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/template/blank.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | blank_page 4 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/template/css/template.css: -------------------------------------------------------------------------------- 1 | #frmbody { 2 | padding: 10px; 3 | background-color: #FFF; 4 | border: 1px solid #CCC; 5 | } 6 | 7 | .frmRow { 8 | margin-bottom: 10px; 9 | } 10 | 11 | #templatesrc { 12 | border: none; 13 | width: 320px; 14 | height: 240px; 15 | } 16 | 17 | .title { 18 | padding-bottom: 5px; 19 | } 20 | 21 | .mceActionPanel { 22 | padding-top: 5px; 23 | } 24 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/template/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.template_dlg',{ 2 | title:"Templates", 3 | label:"Template", 4 | desc_label:"Description", 5 | desc:"Insert predefined template content", 6 | select:"Select a template", 7 | preview:"Preview", 8 | warning:"Warning: Updating a template with a different one may cause data loss.", 9 | mdate_format:"%Y-%m-%d %H:%M:%S", 10 | cdate_format:"%Y-%m-%d %H:%M:%S", 11 | months_long:"January,February,March,April,May,June,July,August,September,October,November,December", 12 | months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec", 13 | day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday", 14 | day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun" 15 | }); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/template/template.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | {#template_dlg.title} 4 | 5 | 6 | 7 | 8 | 9 |
10 |
11 |
{#template_dlg.desc}
12 |
13 | 16 |
17 |
18 |
19 |
20 | {#template_dlg.preview} 21 | 22 |
23 |
24 | 25 |
26 | 27 | 28 |
29 |
30 | 31 | 32 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/plugins/visualchars/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.VisualChars",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceVisualChars",c._toggleVisualChars,c);a.addButton("visualchars",{title:"visualchars.desc",cmd:"mceVisualChars"});a.onBeforeGetContent.add(function(d,e){if(c.state){c.state=true;c._toggleVisualChars()}})},getInfo:function(){return{longname:"Visual characters",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_toggleVisualChars:function(){var m=this,g=m.editor,a,e,f,k=g.getDoc(),l=g.getBody(),j,n=g.selection,c;m.state=!m.state;g.controlManager.setActive("visualchars",m.state);if(m.state){a=[];tinymce.walk(l,function(b){if(b.nodeType==3&&b.nodeValue&&b.nodeValue.indexOf("\u00a0")!=-1){a.push(b)}},"childNodes");for(e=0;e$1');j=j.replace(/\u00a0/g,"\u00b7");g.dom.setOuterHTML(a[e],j,k)}}else{a=tinymce.grep(g.dom.select("span",l),function(b){return g.dom.hasClass(b,"mceVisualNbsp")});for(e=0;e 0) { 32 | insertInlineElement('INS'); 33 | var elementArray = tinymce.grep(SXE.inst.dom.select('ins'), function(n) {return n.id == '#sxe_temp_ins#';}); 34 | for (var i=0; i 2 | 3 | 4 | {#advanced_dlg.anchor_title} 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
{#advanced_dlg.anchor_title}
{#advanced_dlg.anchor_name}:
19 | 20 |
21 | 22 | 23 |
24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/img/colorpicker.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/themes/advanced/img/colorpicker.jpg -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/img/icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/themes/advanced/img/icons.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/js/anchor.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | 3 | var AnchorDialog = { 4 | init : function(ed) { 5 | var action, elm, f = document.forms[0]; 6 | 7 | this.editor = ed; 8 | elm = ed.dom.getParent(ed.selection.getNode(), 'A'); 9 | v = ed.dom.getAttrib(elm, 'name'); 10 | 11 | if (v) { 12 | this.action = 'update'; 13 | f.anchorName.value = v; 14 | } 15 | 16 | f.insert.value = ed.getLang(elm ? 'update' : 'insert'); 17 | }, 18 | 19 | update : function() { 20 | var ed = this.editor, elm, name = document.forms[0].anchorName.value; 21 | 22 | tinyMCEPopup.restoreSelection(); 23 | 24 | if (this.action != 'update') 25 | ed.selection.collapse(1); 26 | 27 | elm = ed.dom.getParent(ed.selection.getNode(), 'A'); 28 | if (elm) 29 | elm.name = name; 30 | else 31 | ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, '')); 32 | 33 | tinyMCEPopup.close(); 34 | } 35 | }; 36 | 37 | tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog); 38 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/js/source_editor.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | tinyMCEPopup.onInit.add(onLoadInit); 3 | 4 | function saveContent() { 5 | tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true}); 6 | tinyMCEPopup.close(); 7 | } 8 | 9 | function onLoadInit() { 10 | tinyMCEPopup.resizeToInnerSize(); 11 | 12 | // Remove Gecko spellchecking 13 | if (tinymce.isGecko) 14 | document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck"); 15 | 16 | document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true}); 17 | 18 | if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) { 19 | setWrap('soft'); 20 | document.getElementById('wraped').checked = true; 21 | } 22 | 23 | resizeInputs(); 24 | } 25 | 26 | function setWrap(val) { 27 | var v, n, s = document.getElementById('htmlSource'); 28 | 29 | s.wrap = val; 30 | 31 | if (!tinymce.isIE) { 32 | v = s.value; 33 | n = s.cloneNode(false); 34 | n.setAttribute("wrap", val); 35 | s.parentNode.replaceChild(n, s); 36 | n.value = v; 37 | } 38 | } 39 | 40 | function toggleWordWrap(elm) { 41 | if (elm.checked) 42 | setWrap('soft'); 43 | else 44 | setWrap('off'); 45 | } 46 | 47 | var wHeight=0, wWidth=0, owHeight=0, owWidth=0; 48 | 49 | function resizeInputs() { 50 | var el = document.getElementById('htmlSource'); 51 | 52 | if (!tinymce.isIE) { 53 | wHeight = self.innerHeight - 65; 54 | wWidth = self.innerWidth - 16; 55 | } else { 56 | wHeight = document.body.clientHeight - 70; 57 | wWidth = document.body.clientWidth - 16; 58 | } 59 | 60 | el.style.height = Math.abs(wHeight) + 'px'; 61 | el.style.width = Math.abs(wWidth) + 'px'; 62 | } 63 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.advanced_dlg',{ 2 | about_title:"About TinyMCE", 3 | about_general:"About", 4 | about_help:"Help", 5 | about_license:"License", 6 | about_plugins:"Plugins", 7 | about_plugin:"Plugin", 8 | about_author:"Author", 9 | about_version:"Version", 10 | about_loaded:"Loaded plugins", 11 | anchor_title:"Insert/edit anchor", 12 | anchor_name:"Anchor name", 13 | code_title:"HTML Source Editor", 14 | code_wordwrap:"Word wrap", 15 | colorpicker_title:"Select a color", 16 | colorpicker_picker_tab:"Picker", 17 | colorpicker_picker_title:"Color picker", 18 | colorpicker_palette_tab:"Palette", 19 | colorpicker_palette_title:"Palette colors", 20 | colorpicker_named_tab:"Named", 21 | colorpicker_named_title:"Named colors", 22 | colorpicker_color:"Color:", 23 | colorpicker_name:"Name:", 24 | charmap_title:"Select custom character", 25 | image_title:"Insert/edit image", 26 | image_src:"Image URL", 27 | image_alt:"Image description", 28 | image_list:"Image list", 29 | image_border:"Border", 30 | image_dimensions:"Dimensions", 31 | image_vspace:"Vertical space", 32 | image_hspace:"Horizontal space", 33 | image_align:"Alignment", 34 | image_align_baseline:"Baseline", 35 | image_align_top:"Top", 36 | image_align_middle:"Middle", 37 | image_align_bottom:"Bottom", 38 | image_align_texttop:"Text top", 39 | image_align_textbottom:"Text bottom", 40 | image_align_left:"Left", 41 | image_align_right:"Right", 42 | link_title:"Insert/edit link", 43 | link_url:"Link URL", 44 | link_target:"Target", 45 | link_target_same:"Open link in the same window", 46 | link_target_blank:"Open link in a new window", 47 | link_titlefield:"Title", 48 | link_is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?", 49 | link_is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?", 50 | link_list:"Link list" 51 | }); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/skins/default/content.css: -------------------------------------------------------------------------------- 1 | body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} 2 | body {background:#FFF;} 3 | body.mceForceColors {background:#FFF; color:#000;} 4 | h1 {font-size: 2em} 5 | h2 {font-size: 1.5em} 6 | h3 {font-size: 1.17em} 7 | h4 {font-size: 1em} 8 | h5 {font-size: .83em} 9 | h6 {font-size: .75em} 10 | .mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} 11 | a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat 0 0;} 12 | td.mceSelected, th.mceSelected {background-color:#3399ff !important} 13 | img {border:0;} 14 | table {cursor:default} 15 | table td, table th {cursor:text} 16 | ins {border-bottom:1px solid green; text-decoration: none; color:green} 17 | del {color:red; text-decoration:line-through} 18 | cite {border-bottom:1px dashed blue} 19 | acronym {border-bottom:1px dotted #CCC; cursor:help} 20 | abbr {border-bottom:1px dashed #CCC; cursor:help} 21 | 22 | /* IE */ 23 | * html body { 24 | scrollbar-3dlight-color:#F0F0EE; 25 | scrollbar-arrow-color:#676662; 26 | scrollbar-base-color:#F0F0EE; 27 | scrollbar-darkshadow-color:#DDD; 28 | scrollbar-face-color:#E0E0DD; 29 | scrollbar-highlight-color:#F0F0EE; 30 | scrollbar-shadow-color:#F0F0EE; 31 | scrollbar-track-color:#F5F5F5; 32 | } 33 | 34 | img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} 35 | font[face=mceinline] {font-family:inherit !important} 36 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/skins/default/img/buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/themes/advanced/skins/default/img/buttons.png -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/skins/default/img/items.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/themes/advanced/skins/default/img/items.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/skins/default/img/menu_check.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/themes/advanced/skins/default/img/menu_check.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/skins/default/img/progress.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/themes/advanced/skins/default/img/progress.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/skins/default/img/tabs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/themes/advanced/skins/default/img/tabs.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/skins/o2k7/content.css: -------------------------------------------------------------------------------- 1 | body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} 2 | body {background:#FFF;} 3 | body.mceForceColors {background:#FFF; color:#000;} 4 | h1 {font-size: 2em} 5 | h2 {font-size: 1.5em} 6 | h3 {font-size: 1.17em} 7 | h4 {font-size: 1em} 8 | h5 {font-size: .83em} 9 | h6 {font-size: .75em} 10 | .mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} 11 | a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;} 12 | td.mceSelected, th.mceSelected {background-color:#3399ff !important} 13 | img {border:0;} 14 | table {cursor:default} 15 | table td, table th {cursor:text} 16 | ins {border-bottom:1px solid green; text-decoration: none; color:green} 17 | del {color:red; text-decoration:line-through} 18 | cite {border-bottom:1px dashed blue} 19 | acronym {border-bottom:1px dotted #CCC; cursor:help} 20 | abbr {border-bottom:1px dashed #CCC; cursor:help} 21 | 22 | /* IE */ 23 | * html body { 24 | scrollbar-3dlight-color:#F0F0EE; 25 | scrollbar-arrow-color:#676662; 26 | scrollbar-base-color:#F0F0EE; 27 | scrollbar-darkshadow-color:#DDD; 28 | scrollbar-face-color:#E0E0DD; 29 | scrollbar-highlight-color:#F0F0EE; 30 | scrollbar-shadow-color:#F0F0EE; 31 | scrollbar-track-color:#F5F5F5; 32 | } 33 | 34 | img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} 35 | font[face=mceinline] {font-family:inherit !important} 36 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/skins/o2k7/ui_black.css: -------------------------------------------------------------------------------- 1 | /* Black */ 2 | .o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)} 3 | .o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF} 4 | .o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0} 5 | .o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0} 6 | .o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;} 7 | .o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)} 8 | .o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7SkinBlack .mceMenu .mceMenuItemActive {background-color:#FFE7A1} -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css: -------------------------------------------------------------------------------- 1 | /* Silver */ 2 | .o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)} 3 | .o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee} 4 | .o2k7SkinSilver .mceListBox .mceText {background:#FFF} 5 | .o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb} 6 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/advanced/source_editor.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | {#advanced_dlg.code_title} 4 | 5 | 6 | 7 | 8 |
9 |
{#advanced_dlg.code_title}
10 | 11 |
12 | 13 |
14 | 15 |
16 | 17 | 18 | 19 |
20 | 21 | 22 |
23 |
24 | 25 | 26 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/simple/img/icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/themes/simple/img/icons.gif -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/simple/langs/en.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.simple',{ 2 | bold_desc:"Bold (Ctrl+B)", 3 | italic_desc:"Italic (Ctrl+I)", 4 | underline_desc:"Underline (Ctrl+U)", 5 | striketrough_desc:"Strikethrough", 6 | bullist_desc:"Unordered list", 7 | numlist_desc:"Ordered list", 8 | undo_desc:"Undo (Ctrl+Z)", 9 | redo_desc:"Redo (Ctrl+Y)", 10 | cleanup_desc:"Cleanup messy code" 11 | }); -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/simple/skins/default/content.css: -------------------------------------------------------------------------------- 1 | body, td, pre { 2 | font-family: Verdana, Arial, Helvetica, sans-serif; 3 | font-size: 10px; 4 | } 5 | 6 | body { 7 | background-color: #FFFFFF; 8 | } 9 | 10 | .mceVisualAid { 11 | border: 1px dashed #BBBBBB; 12 | } 13 | 14 | /* MSIE specific */ 15 | 16 | * html body { 17 | scrollbar-3dlight-color: #F0F0EE; 18 | scrollbar-arrow-color: #676662; 19 | scrollbar-base-color: #F0F0EE; 20 | scrollbar-darkshadow-color: #DDDDDD; 21 | scrollbar-face-color: #E0E0DD; 22 | scrollbar-highlight-color: #F0F0EE; 23 | scrollbar-shadow-color: #F0F0EE; 24 | scrollbar-track-color: #F5F5F5; 25 | } 26 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/simple/skins/o2k7/content.css: -------------------------------------------------------------------------------- 1 | body, td, pre {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} 2 | 3 | body {background: #FFF;} 4 | .mceVisualAid {border: 1px dashed #BBB;} 5 | 6 | /* IE */ 7 | 8 | * html body { 9 | scrollbar-3dlight-color: #F0F0EE; 10 | scrollbar-arrow-color: #676662; 11 | scrollbar-base-color: #F0F0EE; 12 | scrollbar-darkshadow-color: #DDDDDD; 13 | scrollbar-face-color: #E0E0DD; 14 | scrollbar-highlight-color: #F0F0EE; 15 | scrollbar-shadow-color: #F0F0EE; 16 | scrollbar-track-color: #F5F5F5; 17 | } 18 | -------------------------------------------------------------------------------- /root/static/js/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/static/js/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png -------------------------------------------------------------------------------- /root/templates/attributes/boolean.zpt: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /root/templates/attributes/controller.zpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/niner/CiderCMS/1d794aff95807836eed0f072dbc05ed79d5db71e/root/templates/attributes/controller.zpt -------------------------------------------------------------------------------- /root/templates/attributes/date.zpt: -------------------------------------------------------------------------------- 1 |