typo 5.0.3.98.1 → 5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES-5.1 +54 -0
- data/app/apis/meta_weblog_service.rb +7 -6
- data/app/controllers/accounts_controller.rb +2 -1
- data/app/controllers/admin/content_controller.rb +45 -3
- data/app/controllers/admin/pages_controller.rb +1 -1
- data/app/controllers/admin/textfilters_controller.rb +4 -4
- data/app/controllers/admin/users_controller.rb +14 -2
- data/app/controllers/application.rb +4 -1
- data/app/controllers/articles_controller.rb +1 -3
- data/app/controllers/backend_controller.rb +2 -0
- data/app/controllers/comments_controller.rb +6 -0
- data/app/helpers/admin/base_helper.rb +24 -26
- data/app/helpers/admin/feedback_helper.rb +0 -20
- data/app/helpers/application_helper.rb +1 -0
- data/app/models/article.rb +2 -0
- data/app/models/blog.rb +1 -0
- data/app/models/blog_sweeper.rb +8 -9
- data/app/models/page_cache.rb +1 -0
- data/app/models/tag.rb +2 -2
- data/app/models/user.rb +5 -1
- data/app/views/admin/blacklist/destroy.html.erb +1 -1
- data/app/views/admin/categories/destroy.html.erb +1 -1
- data/app/views/admin/comments/destroy.html.erb +1 -1
- data/app/views/admin/content/_articles.html.erb +4 -4
- data/app/views/admin/content/_attachment.html.erb +6 -7
- data/app/views/admin/content/_drafts.html.erb +6 -0
- data/app/views/admin/content/_form.html.erb +47 -34
- data/app/views/admin/content/destroy.html.erb +1 -1
- data/app/views/admin/content/edit.html.erb +1 -1
- data/app/views/admin/content/index.html.erb +1 -6
- data/app/views/admin/content/new.html.erb +1 -1
- data/app/views/admin/pages/_form.html.erb +4 -3
- data/app/views/admin/pages/_pages.html.erb +3 -3
- data/app/views/admin/pages/destroy.html.erb +1 -1
- data/app/views/admin/resources/destroy.html.erb +1 -1
- data/app/views/admin/settings/index.html.erb +10 -0
- data/app/views/admin/shared/_edit.html.erb +1 -6
- data/app/views/admin/textfilters/destroy.html.erb +3 -0
- data/app/views/admin/textfilters/edit.html.erb +3 -1
- data/app/views/admin/textfilters/index.html.erb +1 -1
- data/app/views/admin/textfilters/new.html.erb +3 -1
- data/app/views/admin/trackbacks/show.html.erb +1 -1
- data/app/views/admin/users/destroy.html.erb +1 -1
- data/app/views/admin/users/edit.html.erb +1 -5
- data/app/views/admin/users/index.html.erb +1 -1
- data/app/views/articles/_comment_failed.html.erb +3 -0
- data/config/initializers/access_rules.rb +3 -3
- data/db/migrate/070_add_users_to_non_admins.rb +17 -0
- data/installer/rails_installer_defaults.yml +1 -1
- data/lib/tasks/release.rake +3 -3
- data/lib/typo_version.rb +1 -1
- data/public/images/admin/cancel.png +0 -0
- data/public/images/admin/checked.png +0 -0
- data/public/images/admin/delete.png +0 -0
- data/public/images/admin/edit.png +0 -0
- data/public/images/admin/show.png +0 -0
- data/public/javascripts/controls.js +2 -0
- data/public/javascripts/dragdrop.js +2 -0
- data/public/javascripts/effects.js +6 -4
- data/public/javascripts/fckeditor/editor/_source/classes/fckcontextmenu.js +13 -8
- data/public/javascripts/fckeditor/editor/_source/classes/fckdataprocessor.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/classes/fckdocumentfragment_gecko.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/classes/fckdocumentfragment_ie.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/classes/fckdomrange.js +189 -79
- data/public/javascripts/fckeditor/editor/_source/classes/fckdomrange_gecko.js +4 -3
- data/public/javascripts/fckeditor/editor/_source/classes/fckdomrange_ie.js +16 -15
- data/public/javascripts/fckeditor/editor/_source/classes/fckdomrangeiterator.js +30 -9
- data/public/javascripts/fckeditor/editor/_source/classes/fckeditingarea.js +108 -90
- data/public/javascripts/fckeditor/editor/_source/classes/fckelementpath.js +22 -3
- data/public/javascripts/fckeditor/editor/_source/classes/fckenterkey.js +76 -38
- data/public/javascripts/fckeditor/editor/_source/classes/fckevents.js +7 -2
- data/public/javascripts/fckeditor/editor/_source/classes/fckhtmliterator.js +142 -0
- data/public/javascripts/fckeditor/editor/_source/classes/fckicon.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/classes/fckiecleanup.js +1 -1
- data/public/javascripts/fckeditor/editor/_source/classes/fckimagepreloader.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/classes/fckkeystrokehandler.js +3 -3
- data/public/javascripts/fckeditor/editor/_source/classes/fckmenublock.js +8 -5
- data/public/javascripts/fckeditor/editor/_source/classes/fckmenublockpanel.js +3 -3
- data/public/javascripts/fckeditor/editor/_source/classes/fckmenuitem.js +6 -5
- data/public/javascripts/fckeditor/editor/_source/classes/fckpanel.js +85 -38
- data/public/javascripts/fckeditor/editor/_source/classes/fckplugin.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/classes/fckspecialcombo.js +7 -8
- data/public/javascripts/fckeditor/editor/_source/classes/fckstyle.js +180 -17
- data/public/javascripts/fckeditor/editor/_source/classes/fcktoolbar.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/classes/fcktoolbarbreak_gecko.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/classes/fcktoolbarbreak_ie.js +1 -1
- data/public/javascripts/fckeditor/editor/_source/classes/fcktoolbarbutton.js +9 -4
- data/public/javascripts/fckeditor/editor/_source/classes/fcktoolbarbuttonui.js +5 -1
- data/public/javascripts/fckeditor/editor/_source/classes/fcktoolbarfontformatcombo.js +3 -3
- data/public/javascripts/fckeditor/editor/_source/classes/fcktoolbarfontscombo.js +1 -1
- data/public/javascripts/fckeditor/editor/_source/classes/fcktoolbarfontsizecombo.js +1 -1
- data/public/javascripts/fckeditor/editor/_source/classes/fcktoolbarpanelbutton.js +15 -4
- data/public/javascripts/fckeditor/editor/_source/classes/fcktoolbarspecialcombo.js +5 -2
- data/public/javascripts/fckeditor/editor/_source/classes/fcktoolbarstylecombo.js +13 -13
- data/public/javascripts/fckeditor/editor/_source/classes/fckw3crange.js +17 -13
- data/public/javascripts/fckeditor/editor/_source/classes/fckxml.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/classes/fckxml_gecko.js +28 -13
- data/public/javascripts/fckeditor/editor/_source/classes/fckxml_ie.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fck_othercommands.js +75 -19
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fckblockquotecommand.js +64 -8
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fckcorestylecommand.js +3 -1
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fckfitwindow.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fckindentcommands.js +5 -3
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fckjustifycommands.js +6 -6
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fcklistcommands.js +4 -4
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fcknamedcommand.js +3 -1
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js +3 -1
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fckpastewordcommand.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fckremoveformatcommand.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fckshowblocks.js +7 -9
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js +4 -2
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js +4 -2
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fckstylecommand.js +3 -3
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fcktablecommand.js +4 -4
- data/public/javascripts/fckeditor/editor/_source/commandclasses/fcktextcolorcommand.js +28 -10
- data/public/javascripts/fckeditor/editor/_source/fckconstants.js +1 -1
- data/public/javascripts/fckeditor/editor/_source/fckeditorapi.js +21 -13
- data/public/javascripts/fckeditor/editor/_source/fckjscoreextensions.js +5 -5
- data/public/javascripts/fckeditor/editor/_source/fckscriptloader.js +4 -4
- data/public/javascripts/fckeditor/editor/_source/internals/fck.js +148 -38
- data/public/javascripts/fckeditor/editor/_source/internals/fck_contextmenu.js +4 -4
- data/public/javascripts/fckeditor/editor/_source/internals/fck_gecko.js +45 -47
- data/public/javascripts/fckeditor/editor/_source/internals/fck_ie.js +50 -17
- data/public/javascripts/fckeditor/editor/_source/internals/fckbrowserinfo.js +4 -2
- data/public/javascripts/fckeditor/editor/_source/internals/fckcodeformatter.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/internals/fckcommands.js +28 -28
- data/public/javascripts/fckeditor/editor/_source/internals/fckconfig.js +12 -13
- data/public/javascripts/fckeditor/editor/_source/internals/fckdebug.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/internals/fckdialog.js +211 -15
- data/public/javascripts/fckeditor/editor/_source/internals/fckdocumentprocessor.js +63 -39
- data/public/javascripts/fckeditor/editor/_source/internals/fckdomtools.js +177 -37
- data/public/javascripts/fckeditor/editor/_source/internals/fcklanguagemanager.js +2 -1
- data/public/javascripts/fckeditor/editor/_source/internals/fcklisthandler.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/internals/fcklistslib.js +5 -2
- data/public/javascripts/fckeditor/editor/_source/internals/fckplugins.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/internals/fckregexlib.js +5 -2
- data/public/javascripts/fckeditor/editor/_source/internals/fckselection.js +3 -3
- data/public/javascripts/fckeditor/editor/_source/internals/fckselection_gecko.js +36 -27
- data/public/javascripts/fckeditor/editor/_source/internals/fckselection_ie.js +91 -17
- data/public/javascripts/fckeditor/editor/_source/internals/fckstyles.js +22 -13
- data/public/javascripts/fckeditor/editor/_source/internals/fcktablehandler.js +15 -15
- data/public/javascripts/fckeditor/editor/_source/internals/fcktablehandler_gecko.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/internals/fcktablehandler_ie.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/internals/fcktoolbaritems.js +1 -1
- data/public/javascripts/fckeditor/editor/_source/internals/fcktoolbarset.js +32 -6
- data/public/javascripts/fckeditor/editor/_source/internals/fcktools.js +181 -22
- data/public/javascripts/fckeditor/editor/_source/internals/fcktools_gecko.js +19 -7
- data/public/javascripts/fckeditor/editor/_source/internals/fcktools_ie.js +8 -2
- data/public/javascripts/fckeditor/editor/_source/internals/fckundo.js +8 -5
- data/public/javascripts/fckeditor/editor/_source/internals/fckurlparams.js +2 -2
- data/public/javascripts/fckeditor/editor/_source/internals/fckxhtml.js +116 -61
- data/public/javascripts/fckeditor/editor/_source/internals/fckxhtml_gecko.js +6 -10
- data/public/javascripts/fckeditor/editor/_source/internals/fckxhtml_ie.js +51 -56
- data/public/javascripts/fckeditor/editor/_source/internals/fckxhtmlentities.js +1 -1
- data/public/javascripts/fckeditor/editor/css/fck_editorarea.css +3 -2
- data/public/javascripts/fckeditor/editor/css/fck_internal.css +19 -2
- data/public/javascripts/fckeditor/editor/css/fck_showtableborders_gecko.css +8 -1
- data/public/javascripts/fckeditor/editor/css/images/fck_plugin.gif +0 -0
- data/public/javascripts/fckeditor/editor/dialog/common/fck_dialog_common.css +8 -1
- data/public/javascripts/fckeditor/editor/dialog/common/fck_dialog_common.js +199 -26
- data/public/javascripts/fckeditor/editor/dialog/fck_about.html +20 -14
- data/public/javascripts/fckeditor/editor/dialog/fck_about/sponsors/spellchecker_net.gif +0 -0
- data/public/javascripts/fckeditor/editor/dialog/fck_anchor.html +15 -10
- data/public/javascripts/fckeditor/editor/dialog/fck_button.html +9 -14
- data/public/javascripts/fckeditor/editor/dialog/fck_checkbox.html +8 -13
- data/public/javascripts/fckeditor/editor/dialog/fck_colorselector.html +4 -3
- data/public/javascripts/fckeditor/editor/dialog/fck_docprops.html +6 -6
- data/public/javascripts/fckeditor/editor/dialog/fck_docprops/fck_document_preview.html +1 -1
- data/public/javascripts/fckeditor/editor/dialog/fck_flash.html +9 -3
- data/public/javascripts/fckeditor/editor/dialog/fck_flash/fck_flash.js +18 -11
- data/public/javascripts/fckeditor/editor/dialog/fck_flash/fck_flash_preview.html +7 -3
- data/public/javascripts/fckeditor/editor/dialog/fck_form.html +7 -4
- data/public/javascripts/fckeditor/editor/dialog/fck_hiddenfield.html +12 -15
- data/public/javascripts/fckeditor/editor/dialog/fck_image.html +9 -3
- data/public/javascripts/fckeditor/editor/dialog/fck_image/fck_image.js +24 -12
- data/public/javascripts/fckeditor/editor/dialog/fck_image/fck_image_preview.html +24 -18
- data/public/javascripts/fckeditor/editor/dialog/fck_link.html +1 -1
- data/public/javascripts/fckeditor/editor/dialog/fck_link/fck_link.js +41 -20
- data/public/javascripts/fckeditor/editor/dialog/fck_listprop.html +8 -4
- data/public/javascripts/fckeditor/editor/dialog/fck_paste.html +53 -54
- data/public/javascripts/fckeditor/editor/dialog/fck_radiobutton.html +8 -13
- data/public/javascripts/fckeditor/editor/dialog/fck_replace.html +157 -79
- data/public/javascripts/fckeditor/editor/dialog/fck_select.html +14 -11
- data/public/javascripts/fckeditor/editor/dialog/fck_select/fck_select.js +2 -2
- data/public/javascripts/fckeditor/editor/dialog/fck_smiley.html +9 -4
- data/public/javascripts/fckeditor/editor/dialog/fck_source.html +5 -2
- data/public/javascripts/fckeditor/editor/dialog/fck_specialchar.html +9 -6
- data/public/javascripts/fckeditor/editor/dialog/fck_spellerpages.html +2 -1
- data/public/javascripts/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm +3 -1
- data/public/javascripts/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php +5 -2
- data/public/javascripts/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl +2 -1
- data/public/javascripts/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js +0 -1
- data/public/javascripts/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css +1 -1
- data/public/javascripts/fckeditor/editor/dialog/fck_table.html +10 -5
- data/public/javascripts/fckeditor/editor/dialog/fck_tablecell.html +8 -6
- data/public/javascripts/fckeditor/editor/dialog/fck_template.html +1 -1
- data/public/javascripts/fckeditor/editor/dialog/fck_textarea.html +10 -11
- data/public/javascripts/fckeditor/editor/dialog/fck_textfield.html +10 -14
- data/public/javascripts/fckeditor/editor/dtd/fck_dtd_test.html +0 -2
- data/public/javascripts/fckeditor/editor/dtd/fck_xhtml10strict.js +2 -2
- data/public/javascripts/fckeditor/editor/dtd/fck_xhtml10transitional.js +3 -3
- data/public/javascripts/fckeditor/editor/fckdebug.html +1 -1
- data/public/javascripts/fckeditor/editor/fckdialog.html +660 -213
- data/public/javascripts/fckeditor/editor/fckeditor.html +66 -16
- data/public/javascripts/fckeditor/editor/fckeditor.original.html +70 -16
- data/public/javascripts/fckeditor/editor/filemanager/browser/default/browser.css +2 -2
- data/public/javascripts/fckeditor/editor/filemanager/browser/default/browser.html +37 -2
- data/public/javascripts/fckeditor/editor/filemanager/browser/default/frmactualfolder.html +33 -1
- data/public/javascripts/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html +1 -1
- data/public/javascripts/fckeditor/editor/filemanager/browser/default/frmfolders.html +2 -1
- data/public/javascripts/fckeditor/editor/filemanager/browser/default/frmresourceslist.html +3 -2
- data/public/javascripts/fckeditor/editor/filemanager/browser/default/frmresourcetype.html +1 -1
- data/public/javascripts/fckeditor/editor/filemanager/browser/default/frmupload.html +2 -1
- data/public/javascripts/fckeditor/editor/filemanager/browser/default/js/common.js +34 -2
- data/public/javascripts/fckeditor/editor/filemanager/browser/default/js/fckxml.js +3 -3
- data/public/javascripts/fckeditor/editor/filemanager/connectors/aspx/connector.aspx +5 -3
- data/public/javascripts/fckeditor/editor/filemanager/connectors/aspx/upload.aspx +5 -3
- data/public/javascripts/fckeditor/editor/filemanager/connectors/perl/basexml.pl +1 -1
- data/public/javascripts/fckeditor/editor/filemanager/connectors/perl/commands.pl +50 -4
- data/public/javascripts/fckeditor/editor/filemanager/connectors/perl/connector.cgi +2 -3
- data/public/javascripts/fckeditor/editor/filemanager/connectors/perl/io.pl +14 -4
- data/public/javascripts/fckeditor/editor/filemanager/connectors/perl/upload.cgi +2 -3
- data/public/javascripts/fckeditor/editor/filemanager/connectors/perl/upload_fck.pl +23 -4
- data/public/javascripts/fckeditor/editor/filemanager/connectors/perl/util.pl +1 -1
- data/public/javascripts/fckeditor/editor/filemanager/connectors/py/config.py +43 -32
- data/public/javascripts/fckeditor/editor/filemanager/connectors/py/connector.py +16 -16
- data/public/javascripts/fckeditor/editor/filemanager/connectors/py/fckcommands.py +26 -9
- data/public/javascripts/fckeditor/editor/filemanager/connectors/py/fckconnector.py +2 -2
- data/public/javascripts/fckeditor/editor/filemanager/connectors/py/fckoutput.py +40 -9
- data/public/javascripts/fckeditor/editor/filemanager/connectors/py/fckutil.py +20 -21
- data/public/javascripts/fckeditor/editor/filemanager/connectors/py/htaccess.txt +2 -2
- data/public/javascripts/fckeditor/editor/filemanager/connectors/py/upload.py +13 -13
- data/public/javascripts/fckeditor/editor/filemanager/connectors/py/wsgi.py +3 -3
- data/public/javascripts/fckeditor/editor/filemanager/connectors/py/zope.py +4 -5
- data/public/javascripts/fckeditor/editor/filemanager/connectors/test.html +34 -1
- data/public/javascripts/fckeditor/editor/filemanager/connectors/uploadtest.html +47 -4
- data/public/javascripts/fckeditor/editor/js/fckadobeair.js +176 -0
- data/public/javascripts/fckeditor/editor/js/fckeditorcode_gecko.js +77 -77
- data/public/javascripts/fckeditor/editor/js/fckeditorcode_ie.js +74 -74
- data/public/javascripts/fckeditor/editor/lang/_translationstatus.txt +55 -54
- data/public/javascripts/fckeditor/editor/lang/af.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/ar.js +16 -17
- data/public/javascripts/fckeditor/editor/lang/bg.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/bn.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/bs.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/ca.js +27 -28
- data/public/javascripts/fckeditor/editor/lang/cs.js +18 -19
- data/public/javascripts/fckeditor/editor/lang/da.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/de.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/el.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/en-au.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/en-ca.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/en-uk.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/en.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/eo.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/es.js +34 -35
- data/public/javascripts/fckeditor/editor/lang/et.js +32 -33
- data/public/javascripts/fckeditor/editor/lang/eu.js +32 -33
- data/public/javascripts/fckeditor/editor/lang/fa.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/fi.js +15 -16
- data/public/javascripts/fckeditor/editor/lang/fo.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/fr-ca.js +515 -0
- data/public/javascripts/fckeditor/editor/lang/fr.js +5 -6
- data/public/javascripts/fckeditor/editor/lang/gl.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/he.js +15 -16
- data/public/javascripts/fckeditor/editor/lang/hi.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/hr.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/hu.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/it.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/ja.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/km.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/ko.js +25 -26
- data/public/javascripts/fckeditor/editor/lang/lt.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/lv.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/mn.js +199 -200
- data/public/javascripts/fckeditor/editor/lang/ms.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/nb.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/nl.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/no.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/pl.js +51 -52
- data/public/javascripts/fckeditor/editor/lang/pt-br.js +16 -17
- data/public/javascripts/fckeditor/editor/lang/pt.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/ro.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/ru.js +31 -32
- data/public/javascripts/fckeditor/editor/lang/sk.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/sl.js +39 -40
- data/public/javascripts/fckeditor/editor/lang/sr-latn.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/sr.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/sv.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/th.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/tr.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/uk.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/vi.js +1 -2
- data/public/javascripts/fckeditor/editor/lang/zh-cn.js +2 -3
- data/public/javascripts/fckeditor/editor/lang/zh.js +1 -2
- data/public/javascripts/fckeditor/editor/plugins/autogrow/fckplugin.js +9 -2
- data/public/javascripts/fckeditor/editor/plugins/bbcode/_sample/sample.config.js +1 -1
- data/public/javascripts/fckeditor/editor/plugins/bbcode/_sample/sample.html +1 -1
- data/public/javascripts/fckeditor/editor/plugins/bbcode/fckplugin.js +2 -2
- data/public/javascripts/fckeditor/editor/plugins/dragresizetable/fckplugin.js +35 -11
- data/public/javascripts/fckeditor/editor/plugins/placeholder/fck_placeholder.html +10 -5
- data/public/javascripts/fckeditor/editor/plugins/placeholder/fckplugin.js +3 -3
- data/public/javascripts/fckeditor/editor/plugins/placeholder/lang/de.js +2 -2
- data/public/javascripts/fckeditor/editor/plugins/placeholder/lang/en.js +2 -2
- data/public/javascripts/fckeditor/editor/{filemanager/connectors/cfm/upload.cfm → plugins/placeholder/lang/es.js} +9 -13
- data/public/javascripts/fckeditor/editor/plugins/placeholder/lang/fr.js +1 -1
- data/public/javascripts/fckeditor/editor/plugins/placeholder/lang/it.js +1 -1
- data/public/javascripts/fckeditor/editor/plugins/placeholder/lang/pl.js +2 -2
- data/public/javascripts/fckeditor/editor/plugins/simplecommands/fckplugin.js +1 -1
- data/public/javascripts/fckeditor/editor/plugins/tablecommands/fckplugin.js +1 -1
- data/public/javascripts/fckeditor/editor/skins/_fckviewstrips.html +1 -1
- data/public/javascripts/fckeditor/editor/skins/default/fck_dialog.css +271 -8
- data/public/javascripts/fckeditor/editor/skins/default/fck_editor.css +2 -2
- data/public/javascripts/fckeditor/editor/skins/office2003/fck_dialog.css +270 -8
- data/public/javascripts/fckeditor/editor/skins/office2003/fck_editor.css +2 -2
- data/public/javascripts/fckeditor/editor/skins/silver/fck_dialog.css +270 -11
- data/public/javascripts/fckeditor/editor/skins/silver/fck_editor.css +2 -2
- data/public/javascripts/fckeditor/fckconfig.js +58 -55
- data/public/javascripts/fckeditor/fckeditor.js +99 -8
- data/public/javascripts/fckeditor/fckeditor.py +2 -4
- data/public/javascripts/fckeditor/fckpackager.xml +12 -12
- data/public/javascripts/fckeditor/fckstyles.xml +2 -5
- data/public/javascripts/fckeditor/fcktemplates.xml +1 -1
- data/public/javascripts/fckeditor/license.txt +1 -2
- data/public/javascripts/prototype.js +46 -101
- data/public/javascripts/scriptaculous.js +28 -17
- data/public/stylesheets/administration.css +5 -1
- data/themes/dirtylicious/about.markdown +3 -0
- data/themes/dirtylicious/images/body.jpg +0 -0
- data/themes/dirtylicious/images/container.jpg +0 -0
- data/themes/dirtylicious/images/gravatar.gif +0 -0
- data/themes/dirtylicious/images/header.jpg +0 -0
- data/themes/dirtylicious/images/li.gif +0 -0
- data/themes/dirtylicious/images/main.gif +0 -0
- data/themes/dirtylicious/images/nav.gif +0 -0
- data/themes/dirtylicious/images/quote.gif +0 -0
- data/themes/dirtylicious/images/spinner.gif +0 -0
- data/themes/dirtylicious/layouts/default.html.erb +60 -0
- data/themes/dirtylicious/preview.png +0 -0
- data/themes/dirtylicious/stylesheets/application.css +327 -0
- data/themes/dirtylicious/views/articles/_article.html.erb +33 -0
- data/themes/dirtylicious/views/articles/_comment.html.erb +14 -0
- data/themes/dirtylicious/views/articles/_comment_form.html.erb +37 -0
- data/themes/dirtylicious/views/articles/_comment_list.html.erb +7 -0
- data/themes/dirtylicious/views/articles/_trackback.html.erb +9 -0
- data/themes/dirtylicious/views/articles/comment_preview.html.erb +10 -0
- data/themes/dirtylicious/views/articles/index.html.erb +5 -0
- data/themes/dirtylicious/views/articles/read.html.erb +42 -0
- data/themes/dirtylicious/views/shared/_search.html.erb +16 -0
- data/themes/standard_issue/about.markdown +5 -0
- data/themes/standard_issue/images/img01.gif +0 -0
- data/themes/standard_issue/images/img02.gif +0 -0
- data/themes/standard_issue/images/img03.gif +0 -0
- data/themes/standard_issue/images/img04.jpg +0 -0
- data/themes/standard_issue/images/img05.gif +0 -0
- data/themes/standard_issue/images/img06.gif +0 -0
- data/themes/standard_issue/images/img07.gif +0 -0
- data/themes/standard_issue/images/img08.gif +0 -0
- data/themes/standard_issue/images/img09.gif +0 -0
- data/themes/standard_issue/images/img10.gif +0 -0
- data/themes/standard_issue/images/spacer.gif +0 -0
- data/themes/standard_issue/images/spinner.gif +0 -0
- data/themes/standard_issue/layouts/default.html.erb +59 -0
- data/themes/standard_issue/preview.png +0 -0
- data/themes/standard_issue/stylesheets/application.css +461 -0
- data/themes/standard_issue/views/articles/_article.html.erb +37 -0
- data/themes/standard_issue/views/articles/_comment.html.erb +12 -0
- data/themes/standard_issue/views/articles/_comment_form.html.erb +48 -0
- data/themes/standard_issue/views/articles/_comment_list.html.erb +7 -0
- data/themes/standard_issue/views/articles/_trackback.html.erb +9 -0
- data/themes/standard_issue/views/articles/comment_preview.html.erb +10 -0
- data/themes/standard_issue/views/articles/index.html.erb +5 -0
- data/themes/standard_issue/views/articles/read.html.erb +42 -0
- data/themes/standard_issue/views/shared/_search.html.erb +17 -0
- data/themes/standard_issue/views/theme/static_view_test.html.erb +1 -0
- data/themes/typographic/images/accept.gif +0 -0
- data/themes/typographic/images/accept50.gif +0 -0
- data/themes/typographic/images/bg_white.gif +0 -0
- data/themes/typographic/images/bg_wrapper.gif +0 -0
- data/themes/typographic/images/bullet_bottom.gif +0 -0
- data/themes/typographic/images/bullet_right.gif +0 -0
- data/themes/typographic/images/email_open.gif +0 -0
- data/themes/typographic/images/email_open50.gif +0 -0
- data/themes/typographic/images/meta.gif +0 -0
- data/themes/typographic/images/page_edit.gif +0 -0
- data/themes/typographic/images/page_edit50.gif +0 -0
- data/themes/typographic/images/spinner.gif +0 -0
- data/themes/typographic/images/tag.gif +0 -0
- data/themes/typographic/images/user.gif +0 -0
- data/themes/typographic/images/user50.gif +0 -0
- data/themes/typographic/images/world_link.gif +0 -0
- data/themes/typographic/images/world_link50.gif +0 -0
- data/themes/typographic/layouts/default.html.erb +5 -2
- data/themes/typographic/stylesheets/ie6.css +86 -0
- data/themes/typographic/views/articles/_article.html.erb +2 -2
- data/vendor/plugins/fckeditor/README +0 -7
- data/vendor/plugins/fckeditor/app/helpers/fckeditor_helper.rb +1 -3
- data/vendor/plugins/fckeditor/lib/fckeditor_version.rb +2 -2
- data/vendor/plugins/fckeditor/tasks/fckeditor_tasks.rake +1 -1
- data/vendor/plugins/fckeditor/test/fckeditor_test.rb +8 -0
- metadata +98 -66
- data/CHANGES-5.0.4 +0 -33
- data/SIDEBARS +0 -39
- data/app/views/admin/content/_quick_post.html.erb +0 -20
- data/db/schema.rb +0 -224
- data/public/.DS_Store +0 -0
- data/public/javascripts/fckeditor/editor/filemanager/connectors/asp/basexml.asp +0 -62
- data/public/javascripts/fckeditor/editor/filemanager/connectors/asp/class_upload.asp +0 -353
- data/public/javascripts/fckeditor/editor/filemanager/connectors/asp/commands.asp +0 -198
- data/public/javascripts/fckeditor/editor/filemanager/connectors/asp/config.asp +0 -128
- data/public/javascripts/fckeditor/editor/filemanager/connectors/asp/connector.asp +0 -88
- data/public/javascripts/fckeditor/editor/filemanager/connectors/asp/io.asp +0 -222
- data/public/javascripts/fckeditor/editor/filemanager/connectors/asp/upload.asp +0 -61
- data/public/javascripts/fckeditor/editor/filemanager/connectors/asp/util.asp +0 -55
- data/public/javascripts/fckeditor/editor/filemanager/connectors/cfm/ImageObject.cfc +0 -273
- data/public/javascripts/fckeditor/editor/filemanager/connectors/cfm/cf5_connector.cfm +0 -315
- data/public/javascripts/fckeditor/editor/filemanager/connectors/cfm/cf5_upload.cfm +0 -296
- data/public/javascripts/fckeditor/editor/filemanager/connectors/cfm/cf_basexml.cfm +0 -68
- data/public/javascripts/fckeditor/editor/filemanager/connectors/cfm/cf_commands.cfm +0 -225
- data/public/javascripts/fckeditor/editor/filemanager/connectors/cfm/cf_connector.cfm +0 -89
- data/public/javascripts/fckeditor/editor/filemanager/connectors/cfm/cf_io.cfm +0 -288
- data/public/javascripts/fckeditor/editor/filemanager/connectors/cfm/cf_upload.cfm +0 -68
- data/public/javascripts/fckeditor/editor/filemanager/connectors/cfm/cf_util.cfm +0 -132
- data/public/javascripts/fckeditor/editor/filemanager/connectors/cfm/config.cfm +0 -183
- data/public/javascripts/fckeditor/editor/filemanager/connectors/cfm/connector.cfm +0 -31
- data/public/javascripts/fckeditor/editor/filemanager/connectors/cfm/image.cfc +0 -1325
- data/public/javascripts/fckeditor/editor/filemanager/connectors/lasso/config.lasso +0 -65
- data/public/javascripts/fckeditor/editor/filemanager/connectors/lasso/connector.lasso +0 -257
- data/public/javascripts/fckeditor/editor/filemanager/connectors/lasso/upload.lasso +0 -157
- data/public/javascripts/fckeditor/editor/filemanager/connectors/php/basexml.php +0 -93
- data/public/javascripts/fckeditor/editor/filemanager/connectors/php/commands.php +0 -245
- data/public/javascripts/fckeditor/editor/filemanager/connectors/php/config.php +0 -140
- data/public/javascripts/fckeditor/editor/filemanager/connectors/php/connector.php +0 -87
- data/public/javascripts/fckeditor/editor/filemanager/connectors/php/io.php +0 -272
- data/public/javascripts/fckeditor/editor/filemanager/connectors/php/phpcompat.php +0 -17
- data/public/javascripts/fckeditor/editor/filemanager/connectors/php/upload.php +0 -59
- data/public/javascripts/fckeditor/editor/filemanager/connectors/php/util.php +0 -185
- data/public/javascripts/fckeditor/fckeditor.afp +0 -161
- data/public/javascripts/fckeditor/fckeditor.asp +0 -235
- data/public/javascripts/fckeditor/fckeditor.cfc +0 -273
- data/public/javascripts/fckeditor/fckeditor.cfm +0 -210
- data/public/javascripts/fckeditor/fckeditor.lasso +0 -112
- data/test/mocks/themes/typographic/.DS_Store +0 -0
- data/themes/typographic/.DS_Store +0 -0
- data/vendor/plugins/audioscrobbler_sidebar/MAINTAINERS +0 -26
- data/vendor/plugins/audioscrobbler_sidebar/MIT-LICENSE +0 -21
- data/vendor/plugins/audioscrobbler_sidebar/README +0 -27
- data/vendor/plugins/audioscrobbler_sidebar/Rakefile +0 -22
- data/vendor/plugins/audioscrobbler_sidebar/init.rb +0 -5
- data/vendor/plugins/audioscrobbler_sidebar/lib/audioscrobbler.rb +0 -54
- data/vendor/plugins/audioscrobbler_sidebar/lib/audioscrobbler_sidebar.rb +0 -13
- data/vendor/plugins/audioscrobbler_sidebar/test/audioscrobbler_sidebar_test.rb +0 -8
- data/vendor/plugins/audioscrobbler_sidebar/views/content.rhtml +0 -10
data/CHANGES-5.0.4
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
Typo 5.0.3 "Don Mc Cullin" released on February 2008 the 24th is mostly a bugfix and refactoring release, going along with some improvements, everything leading slowly but surely to 5.1.
|
2
|
-
|
3
|
-
*** Less bugs, more speed ***
|
4
|
-
|
5
|
-
Honnestly, Typo has never been so fast and so bugless as well. We've rewriten most of the caching engine, and it's now running flawlessly. Our effort to speed up the code has also been pursued and we can be proud of what we're releasing.
|
6
|
-
|
7
|
-
*** Brand new editor ***
|
8
|
-
|
9
|
-
The blog editor has been rewriten too, to be more functionnal and user friendly. We've also switched the rich text editor from TinyMCE to FCKEditor for 4 important features :
|
10
|
-
– Fullscreen edition (kicks ass baby)
|
11
|
-
– Spellchecking
|
12
|
-
– Safari compatibility
|
13
|
-
– Impressive localization
|
14
|
-
|
15
|
-
*** More localisation ***
|
16
|
-
|
17
|
-
We're continuing the localization effort to port Typo in your language. Default themes has been localized, and we now provide up to 8 languages :
|
18
|
-
– English (default)
|
19
|
-
– French
|
20
|
-
– German
|
21
|
-
– Italian
|
22
|
-
– Japanese
|
23
|
-
– Mexican Spanish
|
24
|
-
– Polish
|
25
|
-
– Romanian
|
26
|
-
|
27
|
-
Many thanks to all the translators. Currently, only French translation is really complete.
|
28
|
-
|
29
|
-
*** No gem? ***
|
30
|
-
|
31
|
-
We won't provide you the habitual gem we used to. Rails app installer – formerly known as Typo installer – is brocken with Rails 2.0.2 and Typo instances installed this way just don't work.
|
32
|
-
|
33
|
-
We hope you'll enjoy Typo 5.0.3 as much as we enjoyed bringing it to you.
|
data/SIDEBARS
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
***THIS DOCUMENT IS OUT OF DATE***
|
2
|
-
==================================
|
3
|
-
|
4
|
-
How to add a new sidebar plugin
|
5
|
-
===============================
|
6
|
-
|
7
|
-
1. Decide on a name. I'll refer to it as <name> below.
|
8
|
-
|
9
|
-
2. Next, create the plugin's controller in
|
10
|
-
components/plugins/sidebars/<name>_controller.rb. Look at
|
11
|
-
flickr_controller.rb for an example. At a minimum, you need to
|
12
|
-
define two methods:
|
13
|
-
|
14
|
-
* self.display_name. This is the short name that shows up in
|
15
|
-
title blocks in the sidebar admin UI.
|
16
|
-
|
17
|
-
* self.description. This is the description that shows up in the
|
18
|
-
UI.
|
19
|
-
|
20
|
-
If your plugin needs to save configuration options, then you'll
|
21
|
-
need to add a 'configure' method as well, and possible a
|
22
|
-
self.default_config method. Follow the examples.
|
23
|
-
|
24
|
-
3. Next, create the configuration page. If your sidebar plugin
|
25
|
-
doesn't need any configuration data, then you can skip this step.
|
26
|
-
Otherwise create a file called
|
27
|
-
components/plugins/sidebars/<name>/configure.rhtml and
|
28
|
-
put the form for configuring your plugin into the file. See the
|
29
|
-
existing examples for inspiration. You'll need to include
|
30
|
-
observe_form to get rails to save your data for you.
|
31
|
-
|
32
|
-
4. Finally, create the plugin's content. This is what is displayed
|
33
|
-
when the sidebar is displayed in the blog. Create a file called
|
34
|
-
components/plugins/sidebars/<name>/content.rhtml and fill it up.
|
35
|
-
Don't forget to include a <h3> header block. Configuration data
|
36
|
-
(if any) is available in @sb_config[<config name>]
|
37
|
-
|
38
|
-
That's it. New components should be picked up automatically. To
|
39
|
-
enable them, you'll need to use the sidebar tool in the admin page.
|
@@ -1,20 +0,0 @@
|
|
1
|
-
<% form_tag :action=>"new" do %>
|
2
|
-
<p>
|
3
|
-
<label for="articles_title"><%= _("Title")%>:</label><br />
|
4
|
-
<%= text_field 'article', 'title' %>
|
5
|
-
</p>
|
6
|
-
<p>
|
7
|
-
<p>
|
8
|
-
<label for="categories[]"><%= _("Categories")%>:</label><br />
|
9
|
-
<select name="categories[]" multiple="multiple" size="3" style="width:250px;">
|
10
|
-
<%= options_from_collection_for_select(@categories, "id", "name", @selected) %>
|
11
|
-
</select>
|
12
|
-
</p>
|
13
|
-
<p>
|
14
|
-
<label for="articles_body"><%= _("Article")%>:</label><br />
|
15
|
-
<%= text_area 'article', 'body', :rows => 10 %>
|
16
|
-
</p>
|
17
|
-
<div id="operations">
|
18
|
-
<%= save(_("Save Post")) %> or <a href="#" onclick="new Effect.BlindUp('quick-post', {duration: 0.4}); return false;" >Cancel</a>
|
19
|
-
</div>
|
20
|
-
<% end %>
|
data/db/schema.rb
DELETED
@@ -1,224 +0,0 @@
|
|
1
|
-
# This file is auto-generated from the current state of the database. Instead of editing this file,
|
2
|
-
# please use the migrations feature of ActiveRecord to incrementally modify your database, and
|
3
|
-
# then regenerate this schema definition.
|
4
|
-
#
|
5
|
-
# Note that this schema.rb definition is the authoritative source for your database schema. If you need
|
6
|
-
# to create the application database on another system, you should be using db:schema:load, not running
|
7
|
-
# all the migrations from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
8
|
-
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
9
|
-
#
|
10
|
-
# It's strongly recommended to check this file into your version control system.
|
11
|
-
|
12
|
-
ActiveRecord::Schema.define(:version => 69) do
|
13
|
-
|
14
|
-
create_table "articles_tags", :id => false, :force => true do |t|
|
15
|
-
t.integer "article_id"
|
16
|
-
t.integer "tag_id"
|
17
|
-
end
|
18
|
-
|
19
|
-
create_table "blacklist_patterns", :force => true do |t|
|
20
|
-
t.string "type", :limit => 15
|
21
|
-
t.string "pattern"
|
22
|
-
end
|
23
|
-
|
24
|
-
create_table "blogs", :force => true do |t|
|
25
|
-
t.text "settings"
|
26
|
-
t.string "base_url"
|
27
|
-
end
|
28
|
-
|
29
|
-
create_table "categories", :force => true do |t|
|
30
|
-
t.string "name"
|
31
|
-
t.integer "position", :default => 0, :null => false
|
32
|
-
t.string "permalink"
|
33
|
-
end
|
34
|
-
|
35
|
-
add_index "categories", ["permalink"], :name => "categories_permalink_index"
|
36
|
-
|
37
|
-
create_table "categorizations", :force => true do |t|
|
38
|
-
t.integer "article_id"
|
39
|
-
t.integer "category_id"
|
40
|
-
t.boolean "is_primary"
|
41
|
-
end
|
42
|
-
|
43
|
-
create_table "contents", :force => true do |t|
|
44
|
-
t.string "type"
|
45
|
-
t.string "title"
|
46
|
-
t.string "author"
|
47
|
-
t.text "body"
|
48
|
-
t.text "extended"
|
49
|
-
t.text "excerpt"
|
50
|
-
t.string "keywords"
|
51
|
-
t.datetime "created_at"
|
52
|
-
t.datetime "updated_at"
|
53
|
-
t.integer "user_id"
|
54
|
-
t.string "permalink"
|
55
|
-
t.string "guid"
|
56
|
-
t.integer "text_filter_id"
|
57
|
-
t.text "whiteboard"
|
58
|
-
t.string "name"
|
59
|
-
t.boolean "published", :default => false
|
60
|
-
t.boolean "allow_pings"
|
61
|
-
t.boolean "allow_comments"
|
62
|
-
t.datetime "published_at"
|
63
|
-
t.string "state"
|
64
|
-
end
|
65
|
-
|
66
|
-
add_index "contents", ["published"], :name => "contents_published_index"
|
67
|
-
add_index "contents", ["text_filter_id"], :name => "contents_text_filter_id_index"
|
68
|
-
|
69
|
-
create_table "feedback", :force => true do |t|
|
70
|
-
t.string "type"
|
71
|
-
t.string "title"
|
72
|
-
t.string "author"
|
73
|
-
t.text "body"
|
74
|
-
t.text "excerpt"
|
75
|
-
t.datetime "created_at"
|
76
|
-
t.datetime "updated_at"
|
77
|
-
t.integer "user_id"
|
78
|
-
t.string "guid"
|
79
|
-
t.integer "text_filter_id"
|
80
|
-
t.text "whiteboard"
|
81
|
-
t.integer "article_id"
|
82
|
-
t.string "email"
|
83
|
-
t.string "url"
|
84
|
-
t.string "ip", :limit => 40
|
85
|
-
t.string "blog_name"
|
86
|
-
t.boolean "published", :default => false
|
87
|
-
t.datetime "published_at"
|
88
|
-
t.string "state"
|
89
|
-
t.boolean "status_confirmed"
|
90
|
-
end
|
91
|
-
|
92
|
-
add_index "feedback", ["article_id"], :name => "feedback_article_id_index"
|
93
|
-
add_index "feedback", ["text_filter_id"], :name => "feedback_text_filter_id_index"
|
94
|
-
|
95
|
-
create_table "notifications", :force => true do |t|
|
96
|
-
t.integer "content_id"
|
97
|
-
t.integer "user_id"
|
98
|
-
t.datetime "created_at"
|
99
|
-
t.datetime "updated_at"
|
100
|
-
end
|
101
|
-
|
102
|
-
create_table "page_caches", :force => true do |t|
|
103
|
-
t.string "name", :null => false
|
104
|
-
end
|
105
|
-
|
106
|
-
add_index "page_caches", ["name"], :name => "name"
|
107
|
-
|
108
|
-
create_table "pings", :force => true do |t|
|
109
|
-
t.integer "article_id"
|
110
|
-
t.string "url"
|
111
|
-
t.datetime "created_at"
|
112
|
-
end
|
113
|
-
|
114
|
-
add_index "pings", ["article_id"], :name => "article_id"
|
115
|
-
|
116
|
-
create_table "profiles", :force => true do |t|
|
117
|
-
t.string "label"
|
118
|
-
t.string "nicename"
|
119
|
-
t.text "modules"
|
120
|
-
end
|
121
|
-
|
122
|
-
create_table "profiles_rights", :force => true do |t|
|
123
|
-
t.integer "profile_id"
|
124
|
-
t.integer "right_id"
|
125
|
-
end
|
126
|
-
|
127
|
-
create_table "redirects", :force => true do |t|
|
128
|
-
t.string "from_path"
|
129
|
-
t.string "to_path"
|
130
|
-
end
|
131
|
-
|
132
|
-
create_table "resources", :force => true do |t|
|
133
|
-
t.integer "size"
|
134
|
-
t.string "filename"
|
135
|
-
t.string "mime"
|
136
|
-
t.datetime "created_at"
|
137
|
-
t.datetime "updated_at"
|
138
|
-
t.integer "article_id"
|
139
|
-
t.boolean "itunes_metadata"
|
140
|
-
t.string "itunes_author"
|
141
|
-
t.string "itunes_subtitle"
|
142
|
-
t.integer "itunes_duration"
|
143
|
-
t.text "itunes_summary"
|
144
|
-
t.string "itunes_keywords"
|
145
|
-
t.string "itunes_category"
|
146
|
-
t.boolean "itunes_explicit"
|
147
|
-
end
|
148
|
-
|
149
|
-
create_table "rights", :force => true do |t|
|
150
|
-
t.string "name"
|
151
|
-
t.string "description"
|
152
|
-
end
|
153
|
-
|
154
|
-
create_table "sessions", :force => true do |t|
|
155
|
-
t.string "sessid", :limit => 32
|
156
|
-
t.text "data"
|
157
|
-
t.datetime "updated_at"
|
158
|
-
end
|
159
|
-
|
160
|
-
add_index "sessions", ["sessid"], :name => "sessid", :unique => true
|
161
|
-
add_index "sessions", ["sessid"], :name => "sessions_sessid_index"
|
162
|
-
|
163
|
-
create_table "sidebars", :force => true do |t|
|
164
|
-
t.integer "active_position"
|
165
|
-
t.text "config"
|
166
|
-
t.integer "staged_position"
|
167
|
-
t.datetime "updated_at"
|
168
|
-
t.string "type"
|
169
|
-
end
|
170
|
-
|
171
|
-
create_table "sitealizer", :force => true do |t|
|
172
|
-
t.string "path"
|
173
|
-
t.string "ip"
|
174
|
-
t.string "referer"
|
175
|
-
t.string "language"
|
176
|
-
t.string "user_agent"
|
177
|
-
t.datetime "created_at"
|
178
|
-
t.date "created_on"
|
179
|
-
end
|
180
|
-
|
181
|
-
create_table "tags", :force => true do |t|
|
182
|
-
t.string "name"
|
183
|
-
t.datetime "created_at"
|
184
|
-
t.datetime "updated_at"
|
185
|
-
t.string "display_name"
|
186
|
-
end
|
187
|
-
|
188
|
-
create_table "text_filters", :force => true do |t|
|
189
|
-
t.string "name"
|
190
|
-
t.string "description"
|
191
|
-
t.string "markup"
|
192
|
-
t.text "filters"
|
193
|
-
t.text "params"
|
194
|
-
end
|
195
|
-
|
196
|
-
create_table "text_link_ads_rss", :force => true do |t|
|
197
|
-
t.string "html", :limit => 1024
|
198
|
-
t.integer "post_id"
|
199
|
-
end
|
200
|
-
|
201
|
-
create_table "triggers", :force => true do |t|
|
202
|
-
t.integer "pending_item_id"
|
203
|
-
t.string "pending_item_type"
|
204
|
-
t.datetime "due_at"
|
205
|
-
t.string "trigger_method"
|
206
|
-
end
|
207
|
-
|
208
|
-
create_table "users", :force => true do |t|
|
209
|
-
t.string "login", :limit => 80
|
210
|
-
t.string "password", :limit => 40
|
211
|
-
t.string "name", :limit => 80
|
212
|
-
t.string "email", :limit => 80
|
213
|
-
t.boolean "notify_via_email"
|
214
|
-
t.boolean "notify_on_new_articles"
|
215
|
-
t.boolean "notify_on_comments"
|
216
|
-
t.boolean "notify_watch_my_articles"
|
217
|
-
t.boolean "notify_via_jabber"
|
218
|
-
t.string "jabber"
|
219
|
-
t.integer "profile_id"
|
220
|
-
end
|
221
|
-
|
222
|
-
add_index "users", ["login"], :name => "login", :unique => true
|
223
|
-
|
224
|
-
end
|
data/public/.DS_Store
DELETED
Binary file
|
@@ -1,62 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
' FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
3
|
-
' Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
4
|
-
'
|
5
|
-
' == BEGIN LICENSE ==
|
6
|
-
'
|
7
|
-
' Licensed under the terms of any of the following licenses at your
|
8
|
-
' choice:
|
9
|
-
'
|
10
|
-
' - GNU General Public License Version 2 or later (the "GPL")
|
11
|
-
' http://www.gnu.org/licenses/gpl.html
|
12
|
-
'
|
13
|
-
' - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
14
|
-
' http://www.gnu.org/licenses/lgpl.html
|
15
|
-
'
|
16
|
-
' - Mozilla Public License Version 1.1 or later (the "MPL")
|
17
|
-
' http://www.mozilla.org/MPL/MPL-1.1.html
|
18
|
-
'
|
19
|
-
' == END LICENSE ==
|
20
|
-
'
|
21
|
-
' This file include the functions that create the base XML output.
|
22
|
-
%>
|
23
|
-
<%
|
24
|
-
|
25
|
-
Sub SetXmlHeaders()
|
26
|
-
' Cleans the response buffer.
|
27
|
-
Response.Clear()
|
28
|
-
|
29
|
-
' Prevent the browser from caching the result.
|
30
|
-
Response.CacheControl = "no-cache"
|
31
|
-
|
32
|
-
' Set the response format.
|
33
|
-
Response.CharSet = "UTF-8"
|
34
|
-
Response.ContentType = "text/xml"
|
35
|
-
End Sub
|
36
|
-
|
37
|
-
Sub CreateXmlHeader( command, resourceType, currentFolder, url )
|
38
|
-
' Create the XML document header.
|
39
|
-
Response.Write "<?xml version=""1.0"" encoding=""utf-8"" ?>"
|
40
|
-
|
41
|
-
' Create the main "Connector" node.
|
42
|
-
Response.Write "<Connector command=""" & command & """ resourceType=""" & resourceType & """>"
|
43
|
-
|
44
|
-
' Add the current folder node.
|
45
|
-
Response.Write "<CurrentFolder path=""" & ConvertToXmlAttribute( currentFolder ) & """ url=""" & ConvertToXmlAttribute( url ) & """ />"
|
46
|
-
End Sub
|
47
|
-
|
48
|
-
Sub CreateXmlFooter()
|
49
|
-
Response.Write "</Connector>"
|
50
|
-
End Sub
|
51
|
-
|
52
|
-
Sub SendError( number, text )
|
53
|
-
SetXmlHeaders
|
54
|
-
|
55
|
-
' Create the XML document header.
|
56
|
-
Response.Write "<?xml version=""1.0"" encoding=""utf-8"" ?>"
|
57
|
-
|
58
|
-
Response.Write "<Connector><Error number=""" & number & """ text=""" & Server.HTMLEncode( text ) & """ /></Connector>"
|
59
|
-
|
60
|
-
Response.End
|
61
|
-
End Sub
|
62
|
-
%>
|
@@ -1,353 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
' FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
3
|
-
' Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
4
|
-
'
|
5
|
-
' == BEGIN LICENSE ==
|
6
|
-
'
|
7
|
-
' Licensed under the terms of any of the following licenses at your
|
8
|
-
' choice:
|
9
|
-
'
|
10
|
-
' - GNU General Public License Version 2 or later (the "GPL")
|
11
|
-
' http://www.gnu.org/licenses/gpl.html
|
12
|
-
'
|
13
|
-
' - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
14
|
-
' http://www.gnu.org/licenses/lgpl.html
|
15
|
-
'
|
16
|
-
' - Mozilla Public License Version 1.1 or later (the "MPL")
|
17
|
-
' http://www.mozilla.org/MPL/MPL-1.1.html
|
18
|
-
'
|
19
|
-
' == END LICENSE ==
|
20
|
-
'
|
21
|
-
' These are the classes used to handle ASP upload without using third
|
22
|
-
' part components (OCX/DLL).
|
23
|
-
%>
|
24
|
-
<%
|
25
|
-
'**********************************************
|
26
|
-
' File: NetRube_Upload.asp
|
27
|
-
' Version: NetRube Upload Class Version 2.3 Build 20070528
|
28
|
-
' Author: NetRube
|
29
|
-
' Email: NetRube@126.com
|
30
|
-
' Date: 05/28/2007
|
31
|
-
' Comments: The code for the Upload.
|
32
|
-
' This can free usage, but please
|
33
|
-
' not to delete this copyright information.
|
34
|
-
' If you have a modification version,
|
35
|
-
' Please send out a duplicate to me.
|
36
|
-
'**********************************************
|
37
|
-
' 文件名: NetRube_Upload.asp
|
38
|
-
' 版本: NetRube Upload Class Version 2.3 Build 20070528
|
39
|
-
' 作者: NetRube(网络乡巴佬)
|
40
|
-
' 电子邮件: NetRube@126.com
|
41
|
-
' 日期: 2007年05月28日
|
42
|
-
' 声明: 文件上传类
|
43
|
-
' 本上传类可以自由使用,但请保留此版权声明信息
|
44
|
-
' 如果您对本上传类进行修改增强,
|
45
|
-
' 请发送一份给俺。
|
46
|
-
'**********************************************
|
47
|
-
|
48
|
-
Class NetRube_Upload
|
49
|
-
|
50
|
-
Public File, Form
|
51
|
-
Private oSourceData
|
52
|
-
Private nMaxSize, nErr, sAllowed, sDenied, sHtmlExtensions
|
53
|
-
|
54
|
-
Private Sub Class_Initialize
|
55
|
-
nErr = 0
|
56
|
-
nMaxSize = 1048576
|
57
|
-
|
58
|
-
Set File = Server.CreateObject("Scripting.Dictionary")
|
59
|
-
File.CompareMode = 1
|
60
|
-
Set Form = Server.CreateObject("Scripting.Dictionary")
|
61
|
-
Form.CompareMode = 1
|
62
|
-
|
63
|
-
Set oSourceData = Server.CreateObject("ADODB.Stream")
|
64
|
-
oSourceData.Type = 1
|
65
|
-
oSourceData.Mode = 3
|
66
|
-
oSourceData.Open
|
67
|
-
End Sub
|
68
|
-
|
69
|
-
Private Sub Class_Terminate
|
70
|
-
Form.RemoveAll
|
71
|
-
Set Form = Nothing
|
72
|
-
File.RemoveAll
|
73
|
-
Set File = Nothing
|
74
|
-
|
75
|
-
oSourceData.Close
|
76
|
-
Set oSourceData = Nothing
|
77
|
-
End Sub
|
78
|
-
|
79
|
-
Public Property Get Version
|
80
|
-
Version = "NetRube Upload Class Version 2.3 Build 20070528"
|
81
|
-
End Property
|
82
|
-
|
83
|
-
Public Property Get ErrNum
|
84
|
-
ErrNum = nErr
|
85
|
-
End Property
|
86
|
-
|
87
|
-
Public Property Let MaxSize(nSize)
|
88
|
-
nMaxSize = nSize
|
89
|
-
End Property
|
90
|
-
|
91
|
-
Public Property Let Allowed(sExt)
|
92
|
-
sAllowed = sExt
|
93
|
-
End Property
|
94
|
-
|
95
|
-
Public Property Let Denied(sExt)
|
96
|
-
sDenied = sExt
|
97
|
-
End Property
|
98
|
-
|
99
|
-
Public Property Let HtmlExtensions(sExt)
|
100
|
-
sHtmlExtensions = sExt
|
101
|
-
End Property
|
102
|
-
|
103
|
-
Public Sub GetData
|
104
|
-
Dim aCType
|
105
|
-
aCType = Split(Request.ServerVariables("HTTP_CONTENT_TYPE"), ";")
|
106
|
-
if ( uBound(aCType) < 0 ) then
|
107
|
-
nErr = 1
|
108
|
-
Exit Sub
|
109
|
-
end if
|
110
|
-
If aCType(0) <> "multipart/form-data" Then
|
111
|
-
nErr = 1
|
112
|
-
Exit Sub
|
113
|
-
End If
|
114
|
-
|
115
|
-
Dim nTotalSize
|
116
|
-
nTotalSize = Request.TotalBytes
|
117
|
-
If nTotalSize < 1 Then
|
118
|
-
nErr = 2
|
119
|
-
Exit Sub
|
120
|
-
End If
|
121
|
-
If nMaxSize > 0 And nTotalSize > nMaxSize Then
|
122
|
-
nErr = 3
|
123
|
-
Exit Sub
|
124
|
-
End If
|
125
|
-
|
126
|
-
'Thankful long(yrl031715@163.com)
|
127
|
-
'Fix upload large file.
|
128
|
-
'**********************************************
|
129
|
-
' 修正作者:long
|
130
|
-
' 联系邮件: yrl031715@163.com
|
131
|
-
' 修正时间:2007年5月6日
|
132
|
-
' 修正说明:由于iis6的Content-Length 头信息中包含的请求长度超过了 AspMaxRequestEntityAllowed 的值(默认200K), IIS 将返回一个 403 错误信息.
|
133
|
-
' 直接导致在iis6下调试FCKeditor上传功能时,一旦文件超过200K,上传文件时文件管理器失去响应,受此影响,文件的快速上传功能也存在在缺陷。
|
134
|
-
' 在参考 宝玉 的 Asp无组件上传带进度条 演示程序后作出如下修改,以修正在iis6下的错误。
|
135
|
-
|
136
|
-
Dim nTotalBytes, nPartBytes, ReadBytes
|
137
|
-
ReadBytes = 0
|
138
|
-
nTotalBytes = Request.TotalBytes
|
139
|
-
'循环分块读取
|
140
|
-
Do While ReadBytes < nTotalBytes
|
141
|
-
'分块读取
|
142
|
-
nPartBytes = 64 * 1024 '分成每块64k
|
143
|
-
If nPartBytes + ReadBytes > nTotalBytes Then
|
144
|
-
nPartBytes = nTotalBytes - ReadBytes
|
145
|
-
End If
|
146
|
-
oSourceData.Write Request.BinaryRead(nPartBytes)
|
147
|
-
ReadBytes = ReadBytes + nPartBytes
|
148
|
-
Loop
|
149
|
-
'**********************************************
|
150
|
-
oSourceData.Position = 0
|
151
|
-
|
152
|
-
Dim oTotalData, oFormStream, sFormHeader, sFormName, bCrLf, nBoundLen, nFormStart, nFormEnd, nPosStart, nPosEnd, sBoundary
|
153
|
-
|
154
|
-
oTotalData = oSourceData.Read
|
155
|
-
bCrLf = ChrB(13) & ChrB(10)
|
156
|
-
sBoundary = MidB(oTotalData, 1, InStrB(1, oTotalData, bCrLf) - 1)
|
157
|
-
nBoundLen = LenB(sBoundary) + 2
|
158
|
-
nFormStart = nBoundLen
|
159
|
-
|
160
|
-
Set oFormStream = Server.CreateObject("ADODB.Stream")
|
161
|
-
|
162
|
-
Do While (nFormStart + 2) < nTotalSize
|
163
|
-
nFormEnd = InStrB(nFormStart, oTotalData, bCrLf & bCrLf) + 3
|
164
|
-
|
165
|
-
With oFormStream
|
166
|
-
.Type = 1
|
167
|
-
.Mode = 3
|
168
|
-
.Open
|
169
|
-
oSourceData.Position = nFormStart
|
170
|
-
oSourceData.CopyTo oFormStream, nFormEnd - nFormStart
|
171
|
-
.Position = 0
|
172
|
-
.Type = 2
|
173
|
-
.CharSet = "UTF-8"
|
174
|
-
sFormHeader = .ReadText
|
175
|
-
.Close
|
176
|
-
End With
|
177
|
-
|
178
|
-
nFormStart = InStrB(nFormEnd, oTotalData, sBoundary) - 1
|
179
|
-
nPosStart = InStr(22, sFormHeader, " name=", 1) + 7
|
180
|
-
nPosEnd = InStr(nPosStart, sFormHeader, """")
|
181
|
-
sFormName = Mid(sFormHeader, nPosStart, nPosEnd - nPosStart)
|
182
|
-
|
183
|
-
If InStr(45, sFormHeader, " filename=", 1) > 0 Then
|
184
|
-
Set File(sFormName) = New NetRube_FileInfo
|
185
|
-
File(sFormName).FormName = sFormName
|
186
|
-
File(sFormName).Start = nFormEnd
|
187
|
-
File(sFormName).Size = nFormStart - nFormEnd - 2
|
188
|
-
nPosStart = InStr(nPosEnd, sFormHeader, " filename=", 1) + 11
|
189
|
-
nPosEnd = InStr(nPosStart, sFormHeader, """")
|
190
|
-
File(sFormName).ClientPath = Mid(sFormHeader, nPosStart, nPosEnd - nPosStart)
|
191
|
-
File(sFormName).Name = Mid(File(sFormName).ClientPath, InStrRev(File(sFormName).ClientPath, "\") + 1)
|
192
|
-
File(sFormName).Ext = LCase(Mid(File(sFormName).Name, InStrRev(File(sFormName).Name, ".") + 1))
|
193
|
-
nPosStart = InStr(nPosEnd, sFormHeader, "Content-Type: ", 1) + 14
|
194
|
-
nPosEnd = InStr(nPosStart, sFormHeader, vbCr)
|
195
|
-
File(sFormName).MIME = Mid(sFormHeader, nPosStart, nPosEnd - nPosStart)
|
196
|
-
Else
|
197
|
-
With oFormStream
|
198
|
-
.Type = 1
|
199
|
-
.Mode = 3
|
200
|
-
.Open
|
201
|
-
oSourceData.Position = nFormEnd
|
202
|
-
oSourceData.CopyTo oFormStream, nFormStart - nFormEnd - 2
|
203
|
-
.Position = 0
|
204
|
-
.Type = 2
|
205
|
-
.CharSet = "UTF-8"
|
206
|
-
Form(sFormName) = .ReadText
|
207
|
-
.Close
|
208
|
-
End With
|
209
|
-
End If
|
210
|
-
|
211
|
-
nFormStart = nFormStart + nBoundLen
|
212
|
-
Loop
|
213
|
-
|
214
|
-
oTotalData = ""
|
215
|
-
Set oFormStream = Nothing
|
216
|
-
End Sub
|
217
|
-
|
218
|
-
Public Sub SaveAs(sItem, sFileName)
|
219
|
-
If File(sItem).Size < 1 Then
|
220
|
-
nErr = 2
|
221
|
-
Exit Sub
|
222
|
-
End If
|
223
|
-
|
224
|
-
If Not IsAllowed(File(sItem).Ext) Then
|
225
|
-
nErr = 4
|
226
|
-
Exit Sub
|
227
|
-
End If
|
228
|
-
|
229
|
-
If InStr( LCase( sFileName ), "::$data" ) > 0 Then
|
230
|
-
nErr = 4
|
231
|
-
Exit Sub
|
232
|
-
End If
|
233
|
-
|
234
|
-
Dim sFileExt, iFileSize
|
235
|
-
sFileExt = File(sItem).Ext
|
236
|
-
iFileSize = File(sItem).Size
|
237
|
-
|
238
|
-
' Check XSS.
|
239
|
-
If Not IsHtmlExtension( sFileExt ) Then
|
240
|
-
' Calculate the size of data to load (max 1Kb).
|
241
|
-
Dim iXSSSize
|
242
|
-
iXSSSize = iFileSize
|
243
|
-
|
244
|
-
If iXSSSize > 1024 Then
|
245
|
-
iXSSSize = 1024
|
246
|
-
End If
|
247
|
-
|
248
|
-
' Read the data.
|
249
|
-
Dim sData
|
250
|
-
oSourceData.Position = File(sItem).Start
|
251
|
-
sData = oSourceData.Read( iXSSSize ) ' Byte Array
|
252
|
-
sData = ByteArray2Text( sData ) ' String
|
253
|
-
|
254
|
-
' Sniff HTML data.
|
255
|
-
If SniffHtml( sData ) Then
|
256
|
-
nErr = 4
|
257
|
-
Exit Sub
|
258
|
-
End If
|
259
|
-
End If
|
260
|
-
|
261
|
-
Dim oFileStream
|
262
|
-
Set oFileStream = Server.CreateObject("ADODB.Stream")
|
263
|
-
With oFileStream
|
264
|
-
.Type = 1
|
265
|
-
.Mode = 3
|
266
|
-
.Open
|
267
|
-
oSourceData.Position = File(sItem).Start
|
268
|
-
oSourceData.CopyTo oFileStream, File(sItem).Size
|
269
|
-
.Position = 0
|
270
|
-
.SaveToFile sFileName, 2
|
271
|
-
.Close
|
272
|
-
End With
|
273
|
-
Set oFileStream = Nothing
|
274
|
-
End Sub
|
275
|
-
|
276
|
-
Private Function IsAllowed(sExt)
|
277
|
-
Dim oRE
|
278
|
-
Set oRE = New RegExp
|
279
|
-
oRE.IgnoreCase = True
|
280
|
-
oRE.Global = True
|
281
|
-
|
282
|
-
If sDenied = "" Then
|
283
|
-
oRE.Pattern = sAllowed
|
284
|
-
IsAllowed = (sAllowed = "") Or oRE.Test(sExt)
|
285
|
-
Else
|
286
|
-
oRE.Pattern = sDenied
|
287
|
-
IsAllowed = Not oRE.Test(sExt)
|
288
|
-
End If
|
289
|
-
|
290
|
-
Set oRE = Nothing
|
291
|
-
End Function
|
292
|
-
|
293
|
-
Private Function IsHtmlExtension( sExt )
|
294
|
-
If sHtmlExtensions = "" Then
|
295
|
-
Exit Function
|
296
|
-
End If
|
297
|
-
|
298
|
-
Dim oRE
|
299
|
-
Set oRE = New RegExp
|
300
|
-
oRE.IgnoreCase = True
|
301
|
-
oRE.Global = True
|
302
|
-
oRE.Pattern = sHtmlExtensions
|
303
|
-
|
304
|
-
IsHtmlExtension = oRE.Test(sExt)
|
305
|
-
|
306
|
-
Set oRE = Nothing
|
307
|
-
End Function
|
308
|
-
|
309
|
-
Private Function SniffHtml( sData )
|
310
|
-
|
311
|
-
Dim oRE
|
312
|
-
Set oRE = New RegExp
|
313
|
-
oRE.IgnoreCase = True
|
314
|
-
oRE.Global = True
|
315
|
-
|
316
|
-
Dim aPatterns
|
317
|
-
aPatterns = Array( "<!DOCTYPE\W*X?HTML", "<(body|head|html|img|pre|script|table|title)", "type\s*=\s*[\'""]?\s*(?:\w*/)?(?:ecma|java)", "(?:href|src|data)\s*=\s*[\'""]?\s*(?:ecma|java)script:", "url\s*\(\s*[\'""]?\s*(?:ecma|java)script:" )
|
318
|
-
|
319
|
-
Dim i
|
320
|
-
For i = 0 to UBound( aPatterns )
|
321
|
-
oRE.Pattern = aPatterns( i )
|
322
|
-
If oRE.Test( sData ) Then
|
323
|
-
SniffHtml = True
|
324
|
-
Exit Function
|
325
|
-
End If
|
326
|
-
Next
|
327
|
-
|
328
|
-
SniffHtml = False
|
329
|
-
|
330
|
-
End Function
|
331
|
-
|
332
|
-
' Thanks to http://www.ericphelps.com/q193998/index.htm
|
333
|
-
Private Function ByteArray2Text(varByteArray)
|
334
|
-
Dim strData, strBuffer, lngCounter
|
335
|
-
strData = ""
|
336
|
-
strBuffer = ""
|
337
|
-
For lngCounter = 0 to UBound(varByteArray)
|
338
|
-
strBuffer = strBuffer & Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1)))
|
339
|
-
'Keep strBuffer at 1k bytes maximum
|
340
|
-
If lngCounter Mod 1024 = 0 Then
|
341
|
-
strData = strData & strBuffer
|
342
|
-
strBuffer = ""
|
343
|
-
End If
|
344
|
-
Next
|
345
|
-
ByteArray2Text = strData & strBuffer
|
346
|
-
End Function
|
347
|
-
|
348
|
-
End Class
|
349
|
-
|
350
|
-
Class NetRube_FileInfo
|
351
|
-
Dim FormName, ClientPath, Path, Name, Ext, Content, Size, MIME, Start
|
352
|
-
End Class
|
353
|
-
%>
|