├── .gitignore ├── README.md ├── __init__.py ├── controllers ├── appadmin.py ├── default.py └── plugin_ckeditor.py ├── create_plugin.sh ├── models └── db.py ├── modules ├── __init__.py └── plugin_ckeditor.py ├── static ├── 403.html ├── 404.html ├── 500.html ├── css │ ├── bootstrap-responsive.min.css │ ├── bootstrap.min.css │ ├── calendar.css │ ├── web2py.css │ ├── web2py_bootstrap.css │ └── web2py_bootstrap_nojs.css ├── images │ ├── facebook.png │ ├── favicon.ico │ ├── favicon.png │ ├── glyphicons-halflings-white.png │ ├── glyphicons-halflings.png │ ├── gplus-32.png │ └── twitter.png ├── js │ ├── analytics.min.js │ ├── bootstrap.min.js │ ├── calendar.js │ ├── dd_belatedpng.js │ ├── jquery.js │ ├── modernizr.custom.js │ ├── share.js │ ├── web2py.js │ └── web2py_bootstrap.js └── plugin_ckeditor │ ├── CHANGES.md │ ├── LICENSE.md │ ├── README.md │ ├── adapters │ └── jquery.js │ ├── build-config.js │ ├── ckeditor.js │ ├── config.js │ ├── contents.css │ ├── lang │ ├── af.js │ ├── ar.js │ ├── bg.js │ ├── bn.js │ ├── bs.js │ ├── ca.js │ ├── cs.js │ ├── cy.js │ ├── da.js │ ├── de-ch.js │ ├── de.js │ ├── el.js │ ├── en-au.js │ ├── en-ca.js │ ├── en-gb.js │ ├── en.js │ ├── eo.js │ ├── es.js │ ├── et.js │ ├── eu.js │ ├── fa.js │ ├── fi.js │ ├── fo.js │ ├── fr-ca.js │ ├── fr.js │ ├── gl.js │ ├── gu.js │ ├── he.js │ ├── hi.js │ ├── hr.js │ ├── hu.js │ ├── id.js │ ├── is.js │ ├── it.js │ ├── ja.js │ ├── ka.js │ ├── km.js │ ├── ko.js │ ├── ku.js │ ├── lt.js │ ├── lv.js │ ├── mk.js │ ├── mn.js │ ├── ms.js │ ├── nb.js │ ├── nl.js │ ├── no.js │ ├── pl.js │ ├── pt-br.js │ ├── pt.js │ ├── ro.js │ ├── ru.js │ ├── si.js │ ├── sk.js │ ├── sl.js │ ├── sq.js │ ├── sr-latn.js │ ├── sr.js │ ├── sv.js │ ├── th.js │ ├── tr.js │ ├── tt.js │ ├── ug.js │ ├── uk.js │ ├── vi.js │ ├── zh-cn.js │ └── zh.js │ ├── plugins │ ├── a11yhelp │ │ └── dialogs │ │ │ ├── a11yhelp.js │ │ │ └── lang │ │ │ ├── _translationstatus.txt │ │ │ ├── af.js │ │ │ ├── ar.js │ │ │ ├── bg.js │ │ │ ├── ca.js │ │ │ ├── cs.js │ │ │ ├── cy.js │ │ │ ├── da.js │ │ │ ├── de-ch.js │ │ │ ├── de.js │ │ │ ├── el.js │ │ │ ├── en-gb.js │ │ │ ├── en.js │ │ │ ├── eo.js │ │ │ ├── es.js │ │ │ ├── et.js │ │ │ ├── eu.js │ │ │ ├── fa.js │ │ │ ├── fi.js │ │ │ ├── fo.js │ │ │ ├── fr-ca.js │ │ │ ├── fr.js │ │ │ ├── gl.js │ │ │ ├── gu.js │ │ │ ├── he.js │ │ │ ├── hi.js │ │ │ ├── hr.js │ │ │ ├── hu.js │ │ │ ├── id.js │ │ │ ├── it.js │ │ │ ├── ja.js │ │ │ ├── km.js │ │ │ ├── ko.js │ │ │ ├── ku.js │ │ │ ├── lt.js │ │ │ ├── lv.js │ │ │ ├── mk.js │ │ │ ├── mn.js │ │ │ ├── nb.js │ │ │ ├── nl.js │ │ │ ├── no.js │ │ │ ├── pl.js │ │ │ ├── pt-br.js │ │ │ ├── pt.js │ │ │ ├── ro.js │ │ │ ├── ru.js │ │ │ ├── si.js │ │ │ ├── sk.js │ │ │ ├── sl.js │ │ │ ├── sq.js │ │ │ ├── sr-latn.js │ │ │ ├── sr.js │ │ │ ├── sv.js │ │ │ ├── th.js │ │ │ ├── tr.js │ │ │ ├── tt.js │ │ │ ├── ug.js │ │ │ ├── uk.js │ │ │ ├── vi.js │ │ │ ├── zh-cn.js │ │ │ └── zh.js │ ├── about │ │ └── dialogs │ │ │ ├── about.js │ │ │ ├── hidpi │ │ │ └── logo_ckeditor.png │ │ │ └── logo_ckeditor.png │ ├── clipboard │ │ └── dialogs │ │ │ └── paste.js │ ├── colordialog │ │ └── dialogs │ │ │ └── colordialog.js │ ├── dialog │ │ └── dialogDefinition.js │ ├── div │ │ └── dialogs │ │ │ └── div.js │ ├── find │ │ └── dialogs │ │ │ └── find.js │ ├── flash │ │ ├── dialogs │ │ │ └── flash.js │ │ └── images │ │ │ └── placeholder.png │ ├── forms │ │ ├── dialogs │ │ │ ├── button.js │ │ │ ├── checkbox.js │ │ │ ├── form.js │ │ │ ├── hiddenfield.js │ │ │ ├── radio.js │ │ │ ├── select.js │ │ │ ├── textarea.js │ │ │ └── textfield.js │ │ └── images │ │ │ └── hiddenfield.gif │ ├── icons.png │ ├── icons_hidpi.png │ ├── iframe │ │ ├── dialogs │ │ │ └── iframe.js │ │ └── images │ │ │ └── placeholder.png │ ├── image │ │ ├── dialogs │ │ │ └── image.js │ │ └── images │ │ │ └── noimage.png │ ├── link │ │ ├── dialogs │ │ │ ├── anchor.js │ │ │ └── link.js │ │ └── images │ │ │ ├── anchor.png │ │ │ └── hidpi │ │ │ └── anchor.png │ ├── liststyle │ │ └── dialogs │ │ │ └── liststyle.js │ ├── magicline │ │ └── images │ │ │ ├── hidpi │ │ │ ├── icon-rtl.png │ │ │ └── icon.png │ │ │ ├── icon-rtl.png │ │ │ └── icon.png │ ├── pagebreak │ │ └── images │ │ │ └── pagebreak.gif │ ├── pastefromword │ │ └── filter │ │ │ └── default.js │ ├── preview │ │ └── preview.html │ ├── scayt │ │ ├── CHANGELOG.md │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── dialogs │ │ │ ├── options.js │ │ │ └── toolbar.css │ ├── showblocks │ │ └── images │ │ │ ├── block_address.png │ │ │ ├── block_blockquote.png │ │ │ ├── block_div.png │ │ │ ├── block_h1.png │ │ │ ├── block_h2.png │ │ │ ├── block_h3.png │ │ │ ├── block_h4.png │ │ │ ├── block_h5.png │ │ │ ├── block_h6.png │ │ │ ├── block_p.png │ │ │ └── block_pre.png │ ├── smiley │ │ ├── dialogs │ │ │ └── smiley.js │ │ └── images │ │ │ ├── angel_smile.gif │ │ │ ├── angel_smile.png │ │ │ ├── angry_smile.gif │ │ │ ├── angry_smile.png │ │ │ ├── broken_heart.gif │ │ │ ├── broken_heart.png │ │ │ ├── confused_smile.gif │ │ │ ├── confused_smile.png │ │ │ ├── cry_smile.gif │ │ │ ├── cry_smile.png │ │ │ ├── devil_smile.gif │ │ │ ├── devil_smile.png │ │ │ ├── embaressed_smile.gif │ │ │ ├── embarrassed_smile.gif │ │ │ ├── embarrassed_smile.png │ │ │ ├── envelope.gif │ │ │ ├── envelope.png │ │ │ ├── heart.gif │ │ │ ├── heart.png │ │ │ ├── kiss.gif │ │ │ ├── kiss.png │ │ │ ├── lightbulb.gif │ │ │ ├── lightbulb.png │ │ │ ├── omg_smile.gif │ │ │ ├── omg_smile.png │ │ │ ├── regular_smile.gif │ │ │ ├── regular_smile.png │ │ │ ├── sad_smile.gif │ │ │ ├── sad_smile.png │ │ │ ├── shades_smile.gif │ │ │ ├── shades_smile.png │ │ │ ├── teeth_smile.gif │ │ │ ├── teeth_smile.png │ │ │ ├── thumbs_down.gif │ │ │ ├── thumbs_down.png │ │ │ ├── thumbs_up.gif │ │ │ ├── thumbs_up.png │ │ │ ├── tongue_smile.gif │ │ │ ├── tongue_smile.png │ │ │ ├── tounge_smile.gif │ │ │ ├── whatchutalkingabout_smile.gif │ │ │ ├── whatchutalkingabout_smile.png │ │ │ ├── wink_smile.gif │ │ │ └── wink_smile.png │ ├── specialchar │ │ └── dialogs │ │ │ ├── lang │ │ │ ├── _translationstatus.txt │ │ │ ├── af.js │ │ │ ├── ar.js │ │ │ ├── bg.js │ │ │ ├── ca.js │ │ │ ├── cs.js │ │ │ ├── cy.js │ │ │ ├── da.js │ │ │ ├── de-ch.js │ │ │ ├── de.js │ │ │ ├── el.js │ │ │ ├── en-gb.js │ │ │ ├── en.js │ │ │ ├── eo.js │ │ │ ├── es.js │ │ │ ├── et.js │ │ │ ├── eu.js │ │ │ ├── fa.js │ │ │ ├── fi.js │ │ │ ├── fr-ca.js │ │ │ ├── fr.js │ │ │ ├── gl.js │ │ │ ├── he.js │ │ │ ├── hr.js │ │ │ ├── hu.js │ │ │ ├── id.js │ │ │ ├── it.js │ │ │ ├── ja.js │ │ │ ├── km.js │ │ │ ├── ko.js │ │ │ ├── ku.js │ │ │ ├── lt.js │ │ │ ├── lv.js │ │ │ ├── nb.js │ │ │ ├── nl.js │ │ │ ├── no.js │ │ │ ├── pl.js │ │ │ ├── pt-br.js │ │ │ ├── pt.js │ │ │ ├── ru.js │ │ │ ├── si.js │ │ │ ├── sk.js │ │ │ ├── sl.js │ │ │ ├── sq.js │ │ │ ├── sv.js │ │ │ ├── th.js │ │ │ ├── tr.js │ │ │ ├── tt.js │ │ │ ├── ug.js │ │ │ ├── uk.js │ │ │ ├── vi.js │ │ │ ├── zh-cn.js │ │ │ └── zh.js │ │ │ └── specialchar.js │ ├── table │ │ └── dialogs │ │ │ └── table.js │ ├── tabletools │ │ └── dialogs │ │ │ └── tableCell.js │ ├── templates │ │ ├── dialogs │ │ │ ├── templates.css │ │ │ └── templates.js │ │ └── templates │ │ │ ├── default.js │ │ │ └── images │ │ │ ├── template1.gif │ │ │ ├── template2.gif │ │ │ └── template3.gif │ └── wsc │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── dialogs │ │ ├── ciframe.html │ │ ├── tmpFrameset.html │ │ ├── wsc.css │ │ ├── wsc.js │ │ └── wsc_ie.js │ ├── samples │ ├── css │ │ └── samples.css │ ├── img │ │ ├── github-top.png │ │ ├── header-bg.png │ │ ├── header-separator.png │ │ ├── logo.png │ │ └── navigation-tip.png │ ├── index.html │ ├── js │ │ ├── sample.js │ │ └── sf.js │ ├── old │ │ ├── ajax.html │ │ ├── api.html │ │ ├── appendto.html │ │ ├── assets │ │ │ ├── inlineall │ │ │ │ └── logo.png │ │ │ ├── outputxhtml │ │ │ │ └── outputxhtml.css │ │ │ ├── posteddata.php │ │ │ ├── sample.jpg │ │ │ └── uilanguages │ │ │ │ └── languages.js │ │ ├── datafiltering.html │ │ ├── dialog │ │ │ ├── assets │ │ │ │ └── my_dialog.js │ │ │ └── dialog.html │ │ ├── divreplace.html │ │ ├── enterkey │ │ │ └── enterkey.html │ │ ├── htmlwriter │ │ │ ├── assets │ │ │ │ └── outputforflash │ │ │ │ │ ├── outputforflash.fla │ │ │ │ │ ├── outputforflash.swf │ │ │ │ │ └── swfobject.js │ │ │ ├── outputforflash.html │ │ │ └── outputhtml.html │ │ ├── index.html │ │ ├── inlineall.html │ │ ├── inlinebycode.html │ │ ├── inlinetextarea.html │ │ ├── jquery.html │ │ ├── magicline │ │ │ └── magicline.html │ │ ├── readonly.html │ │ ├── replacebyclass.html │ │ ├── replacebycode.html │ │ ├── sample.css │ │ ├── sample.js │ │ ├── sample_posteddata.php │ │ ├── tabindex.html │ │ ├── toolbar │ │ │ └── toolbar.html │ │ ├── uicolor.html │ │ ├── uilanguages.html │ │ ├── wysiwygarea │ │ │ └── fullpage.html │ │ └── xhtmlstyle.html │ └── toolbarconfigurator │ │ ├── css │ │ └── fontello.css │ │ ├── font │ │ ├── LICENSE.txt │ │ ├── config.json │ │ ├── fontello.eot │ │ ├── fontello.svg │ │ ├── fontello.ttf │ │ └── fontello.woff │ │ ├── index.html │ │ ├── js │ │ ├── abstracttoolbarmodifier.js │ │ ├── fulltoolbareditor.js │ │ ├── toolbarmodifier.js │ │ └── toolbartextmodifier.js │ │ └── lib │ │ └── codemirror │ │ ├── LICENSE │ │ ├── codemirror.css │ │ ├── codemirror.js │ │ ├── javascript.js │ │ ├── neo.css │ │ ├── show-hint.css │ │ └── show-hint.js │ ├── skins │ └── moono │ │ ├── dialog.css │ │ ├── dialog_ie.css │ │ ├── dialog_ie7.css │ │ ├── dialog_ie8.css │ │ ├── dialog_iequirks.css │ │ ├── editor.css │ │ ├── editor_gecko.css │ │ ├── editor_ie.css │ │ ├── editor_ie7.css │ │ ├── editor_ie8.css │ │ ├── editor_iequirks.css │ │ ├── icons.png │ │ ├── icons_hidpi.png │ │ ├── images │ │ ├── arrow.png │ │ ├── close.png │ │ ├── hidpi │ │ │ ├── close.png │ │ │ ├── lock-open.png │ │ │ ├── lock.png │ │ │ └── refresh.png │ │ ├── lock-open.png │ │ ├── lock.png │ │ ├── refresh.png │ │ └── spinner.gif │ │ └── readme.md │ └── styles.js └── views ├── __init__.py ├── appadmin.html ├── default ├── index.html └── user.html ├── generic.html ├── generic.ics ├── generic.json ├── generic.jsonp ├── generic.load ├── generic.map ├── generic.pdf ├── generic.rss ├── generic.xml ├── layout.html ├── plugin_ckeditor ├── browse.html └── upload.html └── web2py_ajax.html /.gitignore: -------------------------------------------------------------------------------- 1 | .* 2 | *.pyc 3 | *.pyo 4 | *~ 5 | #* 6 | *.1 7 | *.bak 8 | *.bak2 9 | *.svn 10 | *.w2p 11 | *.class 12 | *.rej 13 | *.orig 14 | Thumbs.db 15 | .DS_Store 16 | index.yaml 17 | routes.py 18 | logging.conf 19 | httpserver.log 20 | httpserver.pid 21 | parameters*.py 22 | /ssl 23 | /docs 24 | /logs 25 | ./*.zip 26 | cron.master 27 | databases/* 28 | sessions/* 29 | errors/* 30 | cache/* 31 | uploads/* 32 | cron/* 33 | .idea/* 34 | -------------------------------------------------------------------------------- /__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /controllers/default.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # this file is released under public domain and you can use without limitations 3 | 4 | ######################################################################### 5 | ## This is a sample controller 6 | ## - index is the default action of any application 7 | ## - user is required for authentication and authorization 8 | ## - download is for downloading files uploaded in the db (does streaming) 9 | ## - call exposes all registered services (none by default) 10 | ######################################################################### 11 | 12 | 13 | def index(): 14 | """ 15 | example action using the internationalization operator T and flash 16 | rendered by views/default/index.html or views/generic.html 17 | 18 | if you need a simple wiki simply replace the two lines below with: 19 | return auth.wiki() 20 | """ 21 | response.flash = T("Welcome to web2py!") 22 | form = SQLFORM.grid(db.person) 23 | return locals() 24 | 25 | def user(): 26 | """ 27 | exposes: 28 | http://..../[app]/default/user/login 29 | http://..../[app]/default/user/logout 30 | http://..../[app]/default/user/register 31 | http://..../[app]/default/user/profile 32 | http://..../[app]/default/user/retrieve_password 33 | http://..../[app]/default/user/change_password 34 | http://..../[app]/default/user/manage_users (requires membership in 35 | use @auth.requires_login() 36 | @auth.requires_membership('group name') 37 | @auth.requires_permission('read','table name',record_id) 38 | to decorate functions that need access control 39 | """ 40 | return dict(form=auth()) 41 | 42 | @cache.action() 43 | def download(): 44 | """ 45 | allows downloading of uploaded files 46 | http://..../[app]/default/download/[filename] 47 | """ 48 | return response.download(request, db) 49 | 50 | 51 | def call(): 52 | """ 53 | exposes services. for example: 54 | http://..../[app]/default/call/jsonrpc 55 | decorate with @services.jsonrpc the functions to expose 56 | supports xml, json, xmlrpc, jsonrpc, amfrpc, rss, csv 57 | """ 58 | return service() 59 | 60 | 61 | @auth.requires_signature() 62 | def data(): 63 | """ 64 | http://..../[app]/default/data/tables 65 | http://..../[app]/default/data/create/[table] 66 | http://..../[app]/default/data/read/[table]/[id] 67 | http://..../[app]/default/data/update/[table]/[id] 68 | http://..../[app]/default/data/delete/[table]/[id] 69 | http://..../[app]/default/data/select/[table] 70 | http://..../[app]/default/data/search/[table] 71 | but URLs must be signed, i.e. linked with 72 | A('table',_href=URL('data/tables',user_signature=True)) 73 | or with the signed load operator 74 | LOAD('default','data.load',args='tables',ajax=True,user_signature=True) 75 | """ 76 | return dict(form=crud()) 77 | -------------------------------------------------------------------------------- /controllers/plugin_ckeditor.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import os 4 | from gluon import * 5 | 6 | def upload(): 7 | (new_filename, old_filename, length, 8 | mime_type) = current.plugin_ckeditor.handle_upload() 9 | 10 | title = os.path.splitext(old_filename)[0] 11 | 12 | result = current.plugin_ckeditor.settings.table_upload.validate_and_insert( 13 | title=title, 14 | filename=old_filename, 15 | upload=new_filename, 16 | flength=length, 17 | mime_type=mime_type 18 | ) 19 | 20 | text = '' 21 | url = URL(*current.plugin_ckeditor.settings.download_url, 22 | args=[new_filename]) 23 | 24 | if not result.id: 25 | text = result.errors 26 | 27 | return dict(text=text, cknum=request.vars.CKEditorFuncNum, url=url) 28 | 29 | def browse(): 30 | db = current.plugin_ckeditor.db 31 | table_upload = current.plugin_ckeditor.settings.table_upload 32 | browse_filter = current.plugin_ckeditor.settings.browse_filter 33 | set = db(table_upload.id>0) 34 | for key, val in browse_filter.items(): 35 | if value[0] == '<': 36 | set = set(table_upload[key]': 38 | set = set(table_upload[key]>value[1:]) 39 | elif value[0] == '!': 40 | set = set(table_upload[key]!=value[1:]) 41 | else: 42 | set = set(table_upload[key]==value) 43 | 44 | rows = set.select(orderby=table_upload.title) 45 | 46 | return dict(rows=rows, cknum=request.vars.CKEditorFuncNum) 47 | 48 | def delete(): 49 | filename = request.args(0) 50 | if not filename: 51 | raise HTTP(401, 'Required argument filename missing.') 52 | 53 | db = current.plugin_ckeditor.db 54 | table_upload = current.plugin_ckeditor.settings.table_upload 55 | db(table_upload.upload == filename).delete() 56 | 57 | # delete the file from storage 58 | current.plugin_ckeditor.unlink(filename) 59 | 60 | -------------------------------------------------------------------------------- /create_plugin.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env sh 2 | 3 | # paths to add are 4 | # controllers/plugin_ckeditor.py 5 | # modules/plugin_ckeditor.py 6 | # static/plugin_ckeditor 7 | # views/plugin_ckeditor 8 | tar czvf web2py.plugin.ckeditor.w2p --exclude='*.sh' controllers/plugin_ckeditor.py modules/plugin_ckeditor.py static/plugin_ckeditor views/plugin_ckeditor 9 | -------------------------------------------------------------------------------- /modules/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /static/403.html: -------------------------------------------------------------------------------- 1 | 403 2 | -------------------------------------------------------------------------------- /static/404.html: -------------------------------------------------------------------------------- 1 | 404 2 | -------------------------------------------------------------------------------- /static/500.html: -------------------------------------------------------------------------------- 1 | 500 2 | -------------------------------------------------------------------------------- /static/css/calendar.css: -------------------------------------------------------------------------------- 1 | .calendar{z-index:2000;position:relative;display:none;background:#fff;border:2px solid #000;font-size:11px;color:#000;cursor:default;font-family:Arial,Helvetica,sans-serif; 2 | border-radius: 10px; 3 | -moz-border-radius: 10px; 4 | -webkit-border-radius: 10px; 5 | }.calendar table{margin:0px;font-size:11px;color:#000;cursor:default;font-family:tahoma,verdana,sans-serif;}.calendar .button{text-align:center;padding:1px;color:#fff;background:#000;}.calendar .nav{background:#000;color:#fff}.calendar thead .title{font-weight:bold;padding:1px;background:#000;color:#fff;text-align:center;}.calendar thead .name{padding:2px;text-align:center;background:#bbb;}.calendar thead .weekend{color:#f00;}.calendar thead .hilite {background-color:#666;}.calendar thead .active{padding:2px 0 0 2px;background-color:#c4c0b8;}.calendar tbody .day{width:2em;text-align:right;padding:2px 4px 2px 2px;}.calendar tbody .day.othermonth{color:#aaa;}.calendar tbody .day.othermonth.oweekend{color:#faa;}.calendar table .wn{padding:2px 3px 2px 2px;background:#bbb;}.calendar tbody .rowhilite td{background:#ddd;}.calendar tbody td.hilite{background:#bbb;}.calendar tbody td.active{background:#bbb;}.calendar tbody td.selected{font-weight:bold;background:#ddd;}.calendar tbody td.weekend{color:#f00;}.calendar tbody td.today{font-weight:bold;color:#00f;}.calendar tbody .disabled{color:#999;}.calendar tbody .emptycell{visibility:hidden;}.calendar tbody .emptyrow{display:none;}.calendar tfoot .ttip{background:#bbb;padding:1px;background:#000;color:#fff;text-align:center;}.calendar tfoot .hilite{background:#ddd;}.calendar tfoot .active{}.calendar .combo{position:absolute;display:none;width:4em;top:0;left:0;cursor:default;background:#e4e0d8;padding:1px;z-index:2001;}.calendar .combo .label,.calendar .combo .label-IEfix{text-align:center;padding:1px;}.calendar .combo .label-IEfix{width:4em;}.calendar .combo .active{background:#c4c0b8;}.calendar .combo .hilite{background:#048;color:#fea;}.calendar td.time{padding:1px 0;text-align:center;background-color:#bbb;}.calendar td.time .hour,.calendar td.time .minute,.calendar td.time .ampm{padding:0 3px 0 4px;font-weight:bold;}.calendar td.time .ampm{text-align:center;}.calendar td.time .colon{padding:0 2px 0 3px;font-weight:bold;}.calendar td.time span.hilite{}.calendar td.time span.active{border-color:#f00;background-color:#000;color:#0f0;}.hour,.minute{font-size:2em;} 6 | 7 | #CP_hourcont{z-index:2000;padding:0;position:absolute;border:1px dashed #666;background-color:#eee;display:none;}#CP_minutecont{z-index:2000;background-color:#ddd;padding:1px;position:absolute;width:45px;display:none;}.floatleft{float:left;}.CP_hour{z-index:2000;padding:1px;font-family:Arial,Helvetica,sans-serif;font-size:9px;white-space:nowrap;cursor:pointer;width:35px;}.CP_minute{z-index:2000;padding:1px;font-family:Arial,Helvetica,sans-serif;font-size:9px;white-space:nowrap;cursor:pointer;width:auto;}.CP_over{background-color:#fff;z-index:2000} 8 | -------------------------------------------------------------------------------- /static/images/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/images/facebook.png -------------------------------------------------------------------------------- /static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/images/favicon.ico -------------------------------------------------------------------------------- /static/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/images/favicon.png -------------------------------------------------------------------------------- /static/images/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/images/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /static/images/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/images/glyphicons-halflings.png -------------------------------------------------------------------------------- /static/images/gplus-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/images/gplus-32.png -------------------------------------------------------------------------------- /static/images/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/images/twitter.png -------------------------------------------------------------------------------- /static/js/share.js: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | Created and copyrighted by Massimo Di Pierro 4 | (MIT license) 5 | 6 | Example: 7 | 8 | 9 | 10 | **/ 11 | 12 | jQuery(function(){ 13 | var script_source = jQuery('script[src*="share.js"]').attr('src'); 14 | var params = function(name,default_value) { 15 | var match = RegExp('[?&]' + name + '=([^&]*)').exec(script_source); 16 | return match && decodeURIComponent(match[1].replace(/\+/g, ' '))||default_value; 17 | } 18 | var path = params('static','social'); 19 | var url = encodeURIComponent(window.location.href); 20 | var host = window.location.hostname; 21 | var title = escape(jQuery('title').text()); 22 | var twit = 'http://twitter.com/home?status='+title+'%20'+url; 23 | var facebook = 'http://www.facebook.com/sharer.php?u='+url; 24 | var gplus = 'https://plus.google.com/share?url='+url; 25 | var tbar = '
Share
Share on TwitterShare on facebookShare on Google Plus
'; 26 | // Add the share tool bar. 27 | jQuery('body').append(tbar); 28 | var st = jQuery('#socialdrawer'); 29 | st.css({'opacity':'.7','z-index':'3000','background':'#FFF','border':'solid 1px #666','border-width':' 1px 0 0 1px','height':'20px','width':'40px','position':'fixed','bottom':'0','right':'0','padding':'2px 5px','overflow':'hidden','-webkit-border-top-left-radius':' 12px','-moz-border-radius-topleft':' 12px','border-top-left-radius':' 12px','-moz-box-shadow':' -3px -3px 3px rgba(0,0,0,0.5)','-webkit-box-shadow':' -3px -3px 3px rgba(0,0,0,0.5)','box-shadow':' -3px -3px 3px rgba(0,0,0,0.5)'}); 30 | jQuery('#socialdrawer a').css({'float':'left','width':'32px','margin':'3px 2px 2px 2px','padding':'0','cursor':'pointer'}); 31 | jQuery('#socialdrawer span').css({'float':'left','margin':'2px 3px','text-shadow':' 1px 1px 1px #FFF','color':'#444','font-size':'12px','line-height':'1em'}); 32 | jQuery('#socialdrawer img').hide(); 33 | // hover 34 | st.click(function(){ 35 | jQuery(this).animate({height:'40px', width:'160px', opacity: 0.95}, 300); 36 | jQuery('#socialdrawer img').show(); 37 | }); 38 | //leave 39 | st.mouseleave(function(){ 40 | st.animate({height:'20px', width: '40px', opacity: .7}, 300); 41 | jQuery('#socialdrawer img').hide(); 42 | return false; 43 | } ); 44 | }); 45 | -------------------------------------------------------------------------------- /static/js/web2py_bootstrap.js: -------------------------------------------------------------------------------- 1 | // this code improves bootstrap menus and adds dropdown support 2 | jQuery(function(){ 3 | jQuery('.nav>li>a').each(function(){ 4 | if(jQuery(this).parent().find('ul').length) 5 | jQuery(this).attr({'class':'dropdown-toggle','data-toggle':'dropdown'}).append(''); 6 | }); 7 | jQuery('.nav li li').each(function(){ 8 | if(jQuery(this).find('ul').length) 9 | jQuery(this).addClass('dropdown-submenu'); 10 | }); 11 | function adjust_height_of_collapsed_nav() { 12 | var cn = jQuery('div.collapse'); 13 | if (cn.get(0)) { 14 | var cnh = cn.get(0).style.height; 15 | if (cnh>'0px'){ 16 | cn.css('height','auto'); 17 | } 18 | } 19 | } 20 | function hoverMenu(){ 21 | jQuery('ul.nav a.dropdown-toggle').parent().hover(function(){ 22 | adjust_height_of_collapsed_nav(); 23 | var mi = jQuery(this).addClass('open'); 24 | mi.children('.dropdown-menu').stop(true, true).delay(200).fadeIn(400); 25 | }, function(){ 26 | var mi = jQuery(this); 27 | mi.children('.dropdown-menu').stop(true, true).delay(200).fadeOut(function(){mi.removeClass('open')}); 28 | }); 29 | } 30 | hoverMenu(); // first page load 31 | jQuery(window).resize(hoverMenu); // on resize event 32 | jQuery('ul.nav li.dropdown a').click(function(){window.location=jQuery(this).attr('href');}); 33 | }); 34 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/README.md: -------------------------------------------------------------------------------- 1 | CKEditor 4 2 | ========== 3 | 4 | Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 5 | http://ckeditor.com - See LICENSE.md for license information. 6 | 7 | CKEditor is a text editor to be used inside web pages. It's not a replacement 8 | for desktop text editors like Word or OpenOffice, but a component to be used as 9 | part of web applications and websites. 10 | 11 | ## Documentation 12 | 13 | The full editor documentation is available online at the following address: 14 | http://docs.ckeditor.com 15 | 16 | ## Installation 17 | 18 | Installing CKEditor is an easy task. Just follow these simple steps: 19 | 20 | 1. **Download** the latest version from the CKEditor website: 21 | http://ckeditor.com. You should have already completed this step, but be 22 | sure you have the very latest version. 23 | 2. **Extract** (decompress) the downloaded file into the root of your website. 24 | 25 | **Note:** CKEditor is by default installed in the `ckeditor` folder. You can 26 | place the files in whichever you want though. 27 | 28 | ## Checking Your Installation 29 | 30 | The editor comes with a few sample pages that can be used to verify that 31 | installation proceeded properly. Take a look at the `samples` directory. 32 | 33 | To test your installation, just call the following page at your website: 34 | 35 | http:////samples/index.html 36 | 37 | For example: 38 | 39 | http://www.example.com/ckeditor/samples/index.html 40 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/adapters/jquery.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or http://ckeditor.com/license 4 | */ 5 | (function(a){if("undefined"==typeof a)throw Error("jQuery should be loaded before CKEditor jQuery adapter.");if("undefined"==typeof CKEDITOR)throw Error("CKEditor should be loaded before CKEditor jQuery adapter.");CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a}, 6 | ckeditor:function(g,d){if(!CKEDITOR.env.isCompatible)throw Error("The environment is incompatible.");if(!a.isFunction(g)){var m=d;d=g;g=m}var k=[];d=d||{};this.each(function(){var b=a(this),c=b.data("ckeditorInstance"),f=b.data("_ckeditorInstanceLock"),h=this,l=new a.Deferred;k.push(l.promise());if(c&&!f)g&&g.apply(c,[this]),l.resolve();else if(f)c.once("instanceReady",function(){setTimeout(function(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),l.resolve()):setTimeout(arguments.callee,100)},0)}, 7 | null,null,9999);else{if(d.autoUpdateElement||"undefined"==typeof d.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)d.autoUpdateElementJquery=!0;d.autoUpdateElement=!1;b.data("_ckeditorInstanceLock",!0);c=a(this).is("textarea")?CKEDITOR.replace(h,d):CKEDITOR.inline(h,d);b.data("ckeditorInstance",c);c.on("instanceReady",function(d){var e=d.editor;setTimeout(function(){if(e.element){d.removeListener();e.on("dataReady",function(){b.trigger("dataReady.ckeditor",[e])});e.on("setData",function(a){b.trigger("setData.ckeditor", 8 | [e,a.data])});e.on("getData",function(a){b.trigger("getData.ckeditor",[e,a.data])},999);e.on("destroy",function(){b.trigger("destroy.ckeditor",[e])});e.on("save",function(){a(h.form).submit();return!1},null,null,20);if(e.config.autoUpdateElementJquery&&b.is("textarea")&&a(h.form).length){var c=function(){b.ckeditor(function(){e.updateElement()})};a(h.form).submit(c);a(h.form).bind("form-pre-serialize",c);b.bind("destroy.ckeditor",function(){a(h.form).unbind("submit",c);a(h.form).unbind("form-pre-serialize", 9 | c)})}e.on("destroy",function(){b.removeData("ckeditorInstance")});b.removeData("_ckeditorInstanceLock");b.trigger("instanceReady.ckeditor",[e]);g&&g.apply(e,[h]);l.resolve()}else setTimeout(arguments.callee,100)},0)},null,null,9999)}});var f=new a.Deferred;this.promise=f.promise();a.when.apply(this,k).then(function(){f.resolve()});this.editor=this.eq(0).data("ckeditorInstance");return this}});CKEDITOR.config.jqueryOverrideVal&&(a.fn.val=CKEDITOR.tools.override(a.fn.val,function(g){return function(d){if(arguments.length){var m= 10 | this,k=[],f=this.each(function(){var b=a(this),c=b.data("ckeditorInstance");if(b.is("textarea")&&c){var f=new a.Deferred;c.setData(d,function(){f.resolve()});k.push(f.promise());return!0}return g.call(b,d)});if(k.length){var b=new a.Deferred;a.when.apply(this,k).done(function(){b.resolveWith(m)});return b.promise()}return f}var f=a(this).eq(0),c=f.data("ckeditorInstance");return f.is("textarea")&&c?c.getData():g.call(f)}}))})(window.jQuery); -------------------------------------------------------------------------------- /static/plugin_ckeditor/config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or http://ckeditor.com/license 4 | */ 5 | 6 | CKEDITOR.editorConfig = function( config ) { 7 | // Define changes to default configuration here. For example: 8 | // config.language = 'fr'; 9 | // config.uiColor = '#AADC6E'; 10 | }; 11 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/contents.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or http://ckeditor.com/license 4 | */ 5 | 6 | body 7 | { 8 | /* Font */ 9 | font-family: sans-serif, Arial, Verdana, "Trebuchet MS"; 10 | font-size: 12px; 11 | 12 | /* Text color */ 13 | color: #333; 14 | 15 | /* Remove the background color to make it transparent */ 16 | background-color: #fff; 17 | 18 | margin: 20px; 19 | } 20 | 21 | .cke_editable 22 | { 23 | font-size: 13px; 24 | line-height: 1.6; 25 | } 26 | 27 | blockquote 28 | { 29 | font-style: italic; 30 | font-family: Georgia, Times, "Times New Roman", serif; 31 | padding: 2px 0; 32 | border-style: solid; 33 | border-color: #ccc; 34 | border-width: 0; 35 | } 36 | 37 | .cke_contents_ltr blockquote 38 | { 39 | padding-left: 20px; 40 | padding-right: 8px; 41 | border-left-width: 5px; 42 | } 43 | 44 | .cke_contents_rtl blockquote 45 | { 46 | padding-left: 8px; 47 | padding-right: 20px; 48 | border-right-width: 5px; 49 | } 50 | 51 | a 52 | { 53 | color: #0782C1; 54 | } 55 | 56 | ol,ul,dl 57 | { 58 | /* IE7: reset rtl list margin. (#7334) */ 59 | *margin-right: 0px; 60 | /* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/ 61 | padding: 0 40px; 62 | } 63 | 64 | h1,h2,h3,h4,h5,h6 65 | { 66 | font-weight: normal; 67 | line-height: 1.2; 68 | } 69 | 70 | hr 71 | { 72 | border: 0px; 73 | border-top: 1px solid #ccc; 74 | } 75 | 76 | img.right 77 | { 78 | border: 1px solid #ccc; 79 | float: right; 80 | margin-left: 15px; 81 | padding: 5px; 82 | } 83 | 84 | img.left 85 | { 86 | border: 1px solid #ccc; 87 | float: left; 88 | margin-right: 15px; 89 | padding: 5px; 90 | } 91 | 92 | pre 93 | { 94 | white-space: pre-wrap; /* CSS 2.1 */ 95 | word-wrap: break-word; /* IE7 */ 96 | -moz-tab-size: 4; 97 | tab-size: 4; 98 | } 99 | 100 | .marker 101 | { 102 | background-color: Yellow; 103 | } 104 | 105 | span[lang] 106 | { 107 | font-style: italic; 108 | } 109 | 110 | figure 111 | { 112 | text-align: center; 113 | border: solid 1px #ccc; 114 | border-radius: 2px; 115 | background: rgba(0,0,0,0.05); 116 | padding: 10px; 117 | margin: 10px 20px; 118 | display: inline-block; 119 | } 120 | 121 | figure > figcaption 122 | { 123 | text-align: center; 124 | display: block; /* For IE8 */ 125 | } 126 | 127 | a > img { 128 | padding: 1px; 129 | margin: 1px; 130 | border: none; 131 | outline: 1px solid #0782C1; 132 | } 133 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or http://ckeditor.com/license 4 | */ 5 | CKEDITOR.dialog.add("a11yHelp",function(l){var a=l.lang.a11yhelp,n=CKEDITOR.tools.getNextId(),e={8:a.backspace,9:a.tab,13:a.enter,16:a.shift,17:a.ctrl,18:a.alt,19:a.pause,20:a.capslock,27:a.escape,33:a.pageUp,34:a.pageDown,35:a.end,36:a.home,37:a.leftArrow,38:a.upArrow,39:a.rightArrow,40:a.downArrow,45:a.insert,46:a["delete"],91:a.leftWindowKey,92:a.rightWindowKey,93:a.selectKey,96:a.numpad0,97:a.numpad1,98:a.numpad2,99:a.numpad3,100:a.numpad4,101:a.numpad5,102:a.numpad6,103:a.numpad7,104:a.numpad8, 6 | 105:a.numpad9,106:a.multiply,107:a.add,109:a.subtract,110:a.decimalPoint,111:a.divide,112:a.f1,113:a.f2,114:a.f3,115:a.f4,116:a.f5,117:a.f6,118:a.f7,119:a.f8,120:a.f9,121:a.f10,122:a.f11,123:a.f12,144:a.numLock,145:a.scrollLock,186:a.semiColon,187:a.equalSign,188:a.comma,189:a.dash,190:a.period,191:a.forwardSlash,192:a.graveAccent,219:a.openBracket,220:a.backSlash,221:a.closeBracket,222:a.singleQuote};e[CKEDITOR.ALT]=a.alt;e[CKEDITOR.SHIFT]=a.shift;e[CKEDITOR.CTRL]=a.ctrl;var f=[CKEDITOR.ALT,CKEDITOR.SHIFT, 7 | CKEDITOR.CTRL],p=/\$\{(.*?)\}/g,t=function(){var a=l.keystrokeHandler.keystrokes,g={},c;for(c in a)g[a[c]]=c;return function(a,c){var b;if(g[c]){b=g[c];for(var h,k,m=[],d=0;d=h&&(b-=k,m.push(e[k]));m.push(e[b]||String.fromCharCode(b));b=m.join("+")}else b=a;return b}}();return{title:a.title,minWidth:600,minHeight:400,contents:[{id:"info",label:l.lang.common.generalTab,expand:!0,elements:[{type:"html",id:"legends",style:"white-space:normal;",focus:function(){this.getElement().focus()}, 8 | html:function(){for(var e='\x3cdiv class\x3d"cke_accessibility_legend" role\x3d"document" aria-labelledby\x3d"'+n+'_arialbl" tabIndex\x3d"-1"\x3e%1\x3c/div\x3e\x3cspan id\x3d"'+n+'_arialbl" class\x3d"cke_voice_label"\x3e'+a.contents+" \x3c/span\x3e",g=[],c=a.legend,l=c.length,f=0;fCKEDITOR.document.$.documentMode?b.document.createElement('\x3cinput name\x3d"'+CKEDITOR.tools.htmlEncode(a)+'"\x3e'):b.document.createElement("input");a.setAttribute("type","hidden");this.commitContent(a);a=b.createFakeElement(a,"cke_hidden","hiddenfield");this.hiddenField?(a.replace(this.hiddenField),b.getSelection().selectElement(a)):b.insertElement(a);return!0},contents:[{id:"info",label:d.lang.forms.hidden.title,title:d.lang.forms.hidden.title,elements:[{id:"_cke_saved_name", 7 | type:"text",label:d.lang.forms.hidden.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){this.getValue()?a.setAttribute("name",this.getValue()):a.removeAttribute("name")}},{id:"value",type:"text",label:d.lang.forms.hidden.value,"default":"",accessKey:"V",setup:function(a){this.setValue(a.getAttribute("value")||"")},commit:function(a){this.getValue()?a.setAttribute("value",this.getValue()):a.removeAttribute("value")}}]}]}}); -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/forms/dialogs/radio.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or http://ckeditor.com/license 4 | */ 5 | CKEDITOR.dialog.add("radio",function(b){return{title:b.lang.forms.checkboxAndRadio.radioTitle,minWidth:350,minHeight:140,onShow:function(){delete this.radioButton;var a=this.getParentEditor().getSelection().getSelectedElement();a&&"input"==a.getName()&&"radio"==a.getAttribute("type")&&(this.radioButton=a,this.setupContent(a))},onOk:function(){var a,c=this.radioButton,b=!c;b&&(a=this.getParentEditor(),c=a.document.createElement("input"),c.setAttribute("type","radio"));b&&a.insertElement(c);this.commitContent({element:c})}, 6 | contents:[{id:"info",label:b.lang.forms.checkboxAndRadio.radioTitle,title:b.lang.forms.checkboxAndRadio.radioTitle,elements:[{id:"name",type:"text",label:b.lang.common.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){a=a.element;this.getValue()?a.data("cke-saved-name",this.getValue()):(a.data("cke-saved-name",!1),a.removeAttribute("name"))}},{id:"value",type:"text",label:b.lang.forms.checkboxAndRadio.value,"default":"", 7 | accessKey:"V",setup:function(a){this.setValue(a.getAttribute("value")||"")},commit:function(a){a=a.element;this.getValue()?a.setAttribute("value",this.getValue()):a.removeAttribute("value")}},{id:"checked",type:"checkbox",label:b.lang.forms.checkboxAndRadio.selected,"default":"",accessKey:"S",value:"checked",setup:function(a){this.setValue(a.getAttribute("checked"))},commit:function(a){var c=a.element;if(CKEDITOR.env.ie){var d=c.getAttribute("checked"),e=!!this.getValue();d!=e&&(d=CKEDITOR.dom.element.createFromHtml('\x3cinput type\x3d"radio"'+ 8 | (e?' checked\x3d"checked"':"")+"\x3e\x3c/input\x3e",b.document),c.copyAttributes(d,{type:1,checked:1}),d.replace(c),b.getSelection().selectElement(d),a.element=d)}else this.getValue()?c.setAttribute("checked","checked"):c.removeAttribute("checked")}},{id:"required",type:"checkbox",label:b.lang.forms.checkboxAndRadio.required,"default":"",accessKey:"Q",value:"required",setup:function(a){this.setValue(a.getAttribute("required"))},commit:function(a){a=a.element;this.getValue()?a.setAttribute("required", 9 | "required"):a.removeAttribute("required")}}]}]}}); -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/forms/dialogs/textarea.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or http://ckeditor.com/license 4 | */ 5 | CKEDITOR.dialog.add("textarea",function(b){return{title:b.lang.forms.textarea.title,minWidth:350,minHeight:220,onShow:function(){delete this.textarea;var a=this.getParentEditor().getSelection().getSelectedElement();a&&"textarea"==a.getName()&&(this.textarea=a,this.setupContent(a))},onOk:function(){var a,b=this.textarea,c=!b;c&&(a=this.getParentEditor(),b=a.document.createElement("textarea"));this.commitContent(b);c&&a.insertElement(b)},contents:[{id:"info",label:b.lang.forms.textarea.title,title:b.lang.forms.textarea.title, 6 | elements:[{id:"_cke_saved_name",type:"text",label:b.lang.common.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){this.getValue()?a.data("cke-saved-name",this.getValue()):(a.data("cke-saved-name",!1),a.removeAttribute("name"))}},{type:"hbox",widths:["50%","50%"],children:[{id:"cols",type:"text",label:b.lang.forms.textarea.cols,"default":"",accessKey:"C",style:"width:50px",validate:CKEDITOR.dialog.validate.integer(b.lang.common.validateNumberFailed), 7 | setup:function(a){a=a.hasAttribute("cols")&&a.getAttribute("cols");this.setValue(a||"")},commit:function(a){this.getValue()?a.setAttribute("cols",this.getValue()):a.removeAttribute("cols")}},{id:"rows",type:"text",label:b.lang.forms.textarea.rows,"default":"",accessKey:"R",style:"width:50px",validate:CKEDITOR.dialog.validate.integer(b.lang.common.validateNumberFailed),setup:function(a){a=a.hasAttribute("rows")&&a.getAttribute("rows");this.setValue(a||"")},commit:function(a){this.getValue()?a.setAttribute("rows", 8 | this.getValue()):a.removeAttribute("rows")}}]},{id:"value",type:"textarea",label:b.lang.forms.textfield.value,"default":"",setup:function(a){this.setValue(a.$.defaultValue)},commit:function(a){a.$.value=a.$.defaultValue=this.getValue()}},{id:"required",type:"checkbox",label:b.lang.forms.textfield.required,"default":"",accessKey:"Q",value:"required",setup:function(a){this.setValue(a.getAttribute("required"))},commit:function(a){this.getValue()?a.setAttribute("required","required"):a.removeAttribute("required")}}]}]}}); -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/forms/dialogs/textfield.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or http://ckeditor.com/license 4 | */ 5 | CKEDITOR.dialog.add("textfield",function(b){function e(a){a=a.element;var b=this.getValue();b?a.setAttribute(this.id,b):a.removeAttribute(this.id)}function f(a){a=a.hasAttribute(this.id)&&a.getAttribute(this.id);this.setValue(a||"")}var g={email:1,password:1,search:1,tel:1,text:1,url:1};return{title:b.lang.forms.textfield.title,minWidth:350,minHeight:150,onShow:function(){delete this.textField;var a=this.getParentEditor().getSelection().getSelectedElement();!a||"input"!=a.getName()||!g[a.getAttribute("type")]&& 6 | a.getAttribute("type")||(this.textField=a,this.setupContent(a))},onOk:function(){var a=this.getParentEditor(),b=this.textField,c=!b;c&&(b=a.document.createElement("input"),b.setAttribute("type","text"));b={element:b};c&&a.insertElement(b.element);this.commitContent(b);c||a.getSelection().selectElement(b.element)},onLoad:function(){this.foreach(function(a){a.getValue&&(a.setup||(a.setup=f),a.commit||(a.commit=e))})},contents:[{id:"info",label:b.lang.forms.textfield.title,title:b.lang.forms.textfield.title, 7 | elements:[{type:"hbox",widths:["50%","50%"],children:[{id:"_cke_saved_name",type:"text",label:b.lang.forms.textfield.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){a=a.element;this.getValue()?a.data("cke-saved-name",this.getValue()):(a.data("cke-saved-name",!1),a.removeAttribute("name"))}},{id:"value",type:"text",label:b.lang.forms.textfield.value,"default":"",accessKey:"V",commit:function(a){if(CKEDITOR.env.ie&& 8 | !this.getValue()){var d=a.element,c=new CKEDITOR.dom.element("input",b.document);d.copyAttributes(c,{value:1});c.replace(d);a.element=c}else e.call(this,a)}}]},{type:"hbox",widths:["50%","50%"],children:[{id:"size",type:"text",label:b.lang.forms.textfield.charWidth,"default":"",accessKey:"C",style:"width:50px",validate:CKEDITOR.dialog.validate.integer(b.lang.common.validateNumberFailed)},{id:"maxLength",type:"text",label:b.lang.forms.textfield.maxChars,"default":"",accessKey:"M",style:"width:50px", 9 | validate:CKEDITOR.dialog.validate.integer(b.lang.common.validateNumberFailed)}],onLoad:function(){CKEDITOR.env.ie7Compat&&this.getElement().setStyle("zoom","100%")}},{id:"type",type:"select",label:b.lang.forms.textfield.type,"default":"text",accessKey:"M",items:[[b.lang.forms.textfield.typeEmail,"email"],[b.lang.forms.textfield.typePass,"password"],[b.lang.forms.textfield.typeSearch,"search"],[b.lang.forms.textfield.typeTel,"tel"],[b.lang.forms.textfield.typeText,"text"],[b.lang.forms.textfield.typeUrl, 10 | "url"]],setup:function(a){this.setValue(a.getAttribute("type"))},commit:function(a){var d=a.element;if(CKEDITOR.env.ie){var c=d.getAttribute("type"),e=this.getValue();c!=e&&(c=CKEDITOR.dom.element.createFromHtml('\x3cinput type\x3d"'+e+'"\x3e\x3c/input\x3e',b.document),d.copyAttributes(c,{type:1}),c.replace(d),a.element=c)}else d.setAttribute("type",this.getValue())}},{id:"required",type:"checkbox",label:b.lang.forms.textfield.required,"default":"",accessKey:"Q",value:"required",setup:function(a){this.setValue(a.getAttribute("required"))}, 11 | commit:function(a){a=a.element;this.getValue()?a.setAttribute("required","required"):a.removeAttribute("required")}}]}]}}); -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/forms/images/hiddenfield.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/forms/images/hiddenfield.gif -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/icons.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/icons_hidpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/icons_hidpi.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/iframe/dialogs/iframe.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or http://ckeditor.com/license 4 | */ 5 | (function(){function c(b){var c=this instanceof CKEDITOR.ui.dialog.checkbox;b.hasAttribute(this.id)&&(b=b.getAttribute(this.id),c?this.setValue(e[this.id]["true"]==b.toLowerCase()):this.setValue(b))}function d(b){var c=""===this.getValue(),a=this instanceof CKEDITOR.ui.dialog.checkbox,d=this.getValue();c?b.removeAttribute(this.att||this.id):a?b.setAttribute(this.id,e[this.id][d]):b.setAttribute(this.att||this.id,d)}var e={scrolling:{"true":"yes","false":"no"},frameborder:{"true":"1","false":"0"}}; 6 | CKEDITOR.dialog.add("iframe",function(b){var f=b.lang.iframe,a=b.lang.common,e=b.plugins.dialogadvtab;return{title:f.title,minWidth:350,minHeight:260,onShow:function(){this.fakeImage=this.iframeNode=null;var a=this.getSelectedElement();a&&a.data("cke-real-element-type")&&"iframe"==a.data("cke-real-element-type")&&(this.fakeImage=a,this.iframeNode=a=b.restoreRealElement(a),this.setupContent(a))},onOk:function(){var a;a=this.fakeImage?this.iframeNode:new CKEDITOR.dom.element("iframe");var c={},d={}; 7 | this.commitContent(a,c,d);a=b.createFakeElement(a,"cke_iframe","iframe",!0);a.setAttributes(d);a.setStyles(c);this.fakeImage?(a.replace(this.fakeImage),b.getSelection().selectElement(a)):b.insertElement(a)},contents:[{id:"info",label:a.generalTab,accessKey:"I",elements:[{type:"vbox",padding:0,children:[{id:"src",type:"text",label:a.url,required:!0,validate:CKEDITOR.dialog.validate.notEmpty(f.noUrl),setup:c,commit:d}]},{type:"hbox",children:[{id:"width",type:"text",requiredContent:"iframe[width]", 8 | style:"width:100%",labelLayout:"vertical",label:a.width,validate:CKEDITOR.dialog.validate.htmlLength(a.invalidHtmlLength.replace("%1",a.width)),setup:c,commit:d},{id:"height",type:"text",requiredContent:"iframe[height]",style:"width:100%",labelLayout:"vertical",label:a.height,validate:CKEDITOR.dialog.validate.htmlLength(a.invalidHtmlLength.replace("%1",a.height)),setup:c,commit:d},{id:"align",type:"select",requiredContent:"iframe[align]","default":"",items:[[a.notSet,""],[a.alignLeft,"left"],[a.alignRight, 9 | "right"],[a.alignTop,"top"],[a.alignMiddle,"middle"],[a.alignBottom,"bottom"]],style:"width:100%",labelLayout:"vertical",label:a.align,setup:function(a,b){c.apply(this,arguments);if(b){var d=b.getAttribute("align");this.setValue(d&&d.toLowerCase()||"")}},commit:function(a,b,c){d.apply(this,arguments);this.getValue()&&(c.align=this.getValue())}}]},{type:"hbox",widths:["50%","50%"],children:[{id:"scrolling",type:"checkbox",requiredContent:"iframe[scrolling]",label:f.scrolling,setup:c,commit:d},{id:"frameborder", 10 | type:"checkbox",requiredContent:"iframe[frameborder]",label:f.border,setup:c,commit:d}]},{type:"hbox",widths:["50%","50%"],children:[{id:"name",type:"text",requiredContent:"iframe[name]",label:a.name,setup:c,commit:d},{id:"title",type:"text",requiredContent:"iframe[title]",label:a.advisoryTitle,setup:c,commit:d}]},{id:"longdesc",type:"text",requiredContent:"iframe[longdesc]",label:a.longDescr,setup:c,commit:d}]},e&&e.createAdvancedTab(b,{id:1,classes:1,styles:1},"iframe")]}})})(); -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/iframe/images/placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/iframe/images/placeholder.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/image/images/noimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/image/images/noimage.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/link/dialogs/anchor.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or http://ckeditor.com/license 4 | */ 5 | CKEDITOR.dialog.add("anchor",function(c){function d(a,b){return a.createFakeElement(a.document.createElement("a",{attributes:b}),"cke_anchor","anchor")}return{title:c.lang.link.anchor.title,minWidth:300,minHeight:60,onOk:function(){var a=CKEDITOR.tools.trim(this.getValueOf("info","txtName")),a={id:a,name:a,"data-cke-saved-name":a};if(this._.selectedElement)this._.selectedElement.data("cke-realelement")?(a=d(c,a),a.replace(this._.selectedElement),CKEDITOR.env.ie&&c.getSelection().selectElement(a)): 6 | this._.selectedElement.setAttributes(a);else{var b=c.getSelection(),b=b&&b.getRanges()[0];b.collapsed?(a=d(c,a),b.insertNode(a)):(CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(a["class"]="cke_anchor"),a=new CKEDITOR.style({element:"a",attributes:a}),a.type=CKEDITOR.STYLE_INLINE,c.applyStyle(a))}},onHide:function(){delete this._.selectedElement},onShow:function(){var a=c.getSelection(),b=a.getSelectedElement(),d=b&&b.data("cke-realelement"),e=d?CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,b):CKEDITOR.plugins.link.getSelectedLink(c); 7 | if(e){this._.selectedElement=e;var f=e.data("cke-saved-name");this.setValueOf("info","txtName",f||"");!d&&a.selectElement(e);b&&(this._.selectedElement=b)}this.getContentElement("info","txtName").focus()},contents:[{id:"info",label:c.lang.link.anchor.title,accessKey:"I",elements:[{type:"text",id:"txtName",label:c.lang.link.anchor.name,required:!0,validate:function(){return this.getValue()?!0:(alert(c.lang.link.anchor.errorName),!1)}}]}]}}); -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/link/images/anchor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/link/images/anchor.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/link/images/hidpi/anchor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/link/images/hidpi/anchor.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/liststyle/dialogs/liststyle.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or http://ckeditor.com/license 4 | */ 5 | (function(){function d(c,d){var b;try{b=c.getSelection().getRanges()[0]}catch(f){return null}b.shrink(CKEDITOR.SHRINK_TEXT);return c.elementPath(b.getCommonAncestor()).contains(d,1)}function e(c,e){var b=c.lang.liststyle;if("bulletedListStyle"==e)return{title:b.bulletedTitle,minWidth:300,minHeight:50,contents:[{id:"info",accessKey:"I",elements:[{type:"select",label:b.type,id:"type",align:"center",style:"width:150px",items:[[b.notset,""],[b.circle,"circle"],[b.disc,"disc"],[b.square,"square"]],setup:function(a){a= 6 | a.getStyle("list-style-type")||h[a.getAttribute("type")]||a.getAttribute("type")||"";this.setValue(a)},commit:function(a){var b=this.getValue();b?a.setStyle("list-style-type",b):a.removeStyle("list-style-type")}}]}],onShow:function(){var a=this.getParentEditor();(a=d(a,"ul"))&&this.setupContent(a)},onOk:function(){var a=this.getParentEditor();(a=d(a,"ul"))&&this.commitContent(a)}};if("numberedListStyle"==e){var g=[[b.notset,""],[b.lowerRoman,"lower-roman"],[b.upperRoman,"upper-roman"],[b.lowerAlpha, 7 | "lower-alpha"],[b.upperAlpha,"upper-alpha"],[b.decimal,"decimal"]];(!CKEDITOR.env.ie||7 2 | 3 | // Prevent from DOM clobbering. 4 | if ( typeof window.opener._cke_htmlToLoad == 'string' ) { 5 | var doc = document; 6 | doc.open(); 7 | doc.write( window.opener._cke_htmlToLoad ); 8 | doc.close(); 9 | 10 | delete window.opener._cke_htmlToLoad; 11 | } 12 | 13 | 14 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/scayt/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | SCAYT plugin for CKEditor 4 Changelog 2 | ==================== 3 | ### CKEditor 4.5.6 4 | 5 | New Features: 6 | * CKEditor [language addon](http://ckeditor.com/addon/language) support 7 | * CKEditor [placeholder addon](http://ckeditor.com/addon/placeholder) support 8 | * Drag and Drop support 9 | * *Experimental* GRAYT functionality http://www.webspellchecker.net/samples/scayt-ckeditor-plugin.html#25 10 | 11 | Fixed issues: 12 | * [#98](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/98) SCAYT Affects Dialog Double Click. Fixed in SCAYT Core. 13 | * [#102](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/102) SCAYT Core performance enhancements 14 | * [#104](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/104) SCAYT's spans leak into the clipboard and after pasting 15 | * [#105](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/105) Javascript error fired in case of multiple instances of CKEditor in one page 16 | * [#107](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/107) SCAYT should not check non-editable parts of content 17 | * [#108](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/108) Latest SCAYT copies id of editor element to the iframe 18 | * SCAYT stops working when CKEditor Undo plug-in not enabled 19 | * Issue with pasting SCAYT markup in CKEditor 20 | * [#32](https://github.com/WebSpellChecker/ckeditor-plugin-wsc/issues/32) SCAYT stops working after pressing Cancel button in WSC dialog 21 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/scayt/LICENSE.md: -------------------------------------------------------------------------------- 1 | Software License Agreement 2 | ========================== 3 | 4 | **CKEditor SCAYT Plugin** 5 | Copyright © 2012, [CKSource](http://cksource.com) - Frederico Knabben. All rights reserved. 6 | 7 | Licensed under the terms of any of the following licenses at your choice: 8 | 9 | * GNU General Public License Version 2 or later (the "GPL"): 10 | http://www.gnu.org/licenses/gpl.html 11 | 12 | * GNU Lesser General Public License Version 2.1 or later (the "LGPL"): 13 | http://www.gnu.org/licenses/lgpl.html 14 | 15 | * Mozilla Public License Version 1.1 or later (the "MPL"): 16 | http://www.mozilla.org/MPL/MPL-1.1.html 17 | 18 | You are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled "legal.txt" in your version of this software, indicating your license choice. 19 | 20 | Sources of Intellectual Property Included in this plugin 21 | -------------------------------------------------------- 22 | 23 | Where not otherwise indicated, all plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, the plugin will incorporate work done by developers outside of CKSource with their express permission. 24 | 25 | Trademarks 26 | ---------- 27 | 28 | CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. 29 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/scayt/README.md: -------------------------------------------------------------------------------- 1 | CKEditor SCAYT Plugin 2 | ===================== 3 | 4 | This plugin brings Spell Check As You Type (SCAYT) into up to CKEditor 4+. 5 | 6 | SCAYT is a "installation-less", using the web-services of [WebSpellChecker.net](http://www.webspellchecker.net/). It's an out of the box solution. 7 | 8 | Installation 9 | ------------ 10 | 11 | 1. Clone/copy this repository contents in a new "plugins/scayt" folder in your CKEditor installation. 12 | 2. Enable the "scayt" plugin in the CKEditor configuration file (config.js): 13 | 14 | config.extraPlugins = 'scayt'; 15 | 16 | That's all. SCAYT will appear on the editor toolbar and will be ready to use. 17 | 18 | License 19 | ------- 20 | 21 | Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). 22 | 23 | See LICENSE.md for more information. 24 | 25 | Developed in cooperation with [WebSpellChecker.net](http://www.webspellchecker.net/). 26 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/scayt/dialogs/toolbar.css: -------------------------------------------------------------------------------- 1 | a 2 | { 3 | text-decoration:none; 4 | padding: 2px 4px 4px 6px; 5 | display : block; 6 | border-width: 1px; 7 | border-style: solid; 8 | margin : 0px; 9 | } 10 | 11 | a.cke_scayt_toogle:hover, 12 | a.cke_scayt_toogle:focus, 13 | a.cke_scayt_toogle:active 14 | { 15 | border-color: #316ac5; 16 | background-color: #dff1ff; 17 | color : #000; 18 | cursor: pointer; 19 | margin : 0px; 20 | } 21 | a.cke_scayt_toogle { 22 | color : #316ac5; 23 | border-color: #fff; 24 | } 25 | .scayt_enabled a.cke_scayt_item { 26 | color : #316ac5; 27 | border-color: #fff; 28 | margin : 0px; 29 | } 30 | .scayt_disabled a.cke_scayt_item { 31 | color : gray; 32 | border-color : #fff; 33 | } 34 | .scayt_enabled a.cke_scayt_item:hover, 35 | .scayt_enabled a.cke_scayt_item:focus, 36 | .scayt_enabled a.cke_scayt_item:active 37 | { 38 | border-color: #316ac5; 39 | background-color: #dff1ff; 40 | color : #000; 41 | cursor: pointer; 42 | } 43 | .scayt_disabled a.cke_scayt_item:hover, 44 | .scayt_disabled a.cke_scayt_item:focus, 45 | .scayt_disabled a.cke_scayt_item:active 46 | { 47 | border-color: gray; 48 | background-color: #dff1ff; 49 | color : gray; 50 | cursor: no-drop; 51 | } 52 | .cke_scayt_set_on, .cke_scayt_set_off 53 | { 54 | display: none; 55 | } 56 | .scayt_enabled .cke_scayt_set_on 57 | { 58 | display: none; 59 | } 60 | .scayt_disabled .cke_scayt_set_on 61 | { 62 | display: inline; 63 | } 64 | .scayt_disabled .cke_scayt_set_off 65 | { 66 | display: none; 67 | } 68 | .scayt_enabled .cke_scayt_set_off 69 | { 70 | display: inline; 71 | } 72 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/showblocks/images/block_address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/showblocks/images/block_address.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/showblocks/images/block_blockquote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/showblocks/images/block_blockquote.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/showblocks/images/block_div.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/showblocks/images/block_div.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/showblocks/images/block_h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/showblocks/images/block_h1.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/showblocks/images/block_h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/showblocks/images/block_h2.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/showblocks/images/block_h3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/showblocks/images/block_h3.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/showblocks/images/block_h4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/showblocks/images/block_h4.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/showblocks/images/block_h5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/showblocks/images/block_h5.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/showblocks/images/block_h6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/showblocks/images/block_h6.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/showblocks/images/block_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/showblocks/images/block_p.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/showblocks/images/block_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/plugins/showblocks/images/block_pre.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/smiley/dialogs/smiley.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or http://ckeditor.com/license 4 | */ 5 | CKEDITOR.dialog.add("smiley",function(f){for(var e=f.config,a=f.lang.smiley,h=e.smiley_images,g=e.smiley_columns||8,k,m=function(l){var c=l.data.getTarget(),b=c.getName();if("a"==b)c=c.getChild(0);else if("img"!=b)return;var b=c.getAttribute("cke_src"),a=c.getAttribute("title"),c=f.document.createElement("img",{attributes:{src:b,"data-cke-saved-src":b,title:a,alt:a,width:c.$.width,height:c.$.height}});f.insertElement(c);k.hide();l.data.preventDefault()},q=CKEDITOR.tools.addFunction(function(a,c){a= 6 | new CKEDITOR.dom.event(a);c=new CKEDITOR.dom.element(c);var b;b=a.getKeystroke();var d="rtl"==f.lang.dir;switch(b){case 38:if(b=c.getParent().getParent().getPrevious())b=b.getChild([c.getParent().getIndex(),0]),b.focus();a.preventDefault();break;case 40:(b=c.getParent().getParent().getNext())&&(b=b.getChild([c.getParent().getIndex(),0]))&&b.focus();a.preventDefault();break;case 32:m({data:a});a.preventDefault();break;case d?37:39:if(b=c.getParent().getNext())b=b.getChild(0),b.focus(),a.preventDefault(!0); 7 | else if(b=c.getParent().getParent().getNext())(b=b.getChild([0,0]))&&b.focus(),a.preventDefault(!0);break;case d?39:37:if(b=c.getParent().getPrevious())b=b.getChild(0),b.focus(),a.preventDefault(!0);else if(b=c.getParent().getParent().getPrevious())b=b.getLast().getChild(0),b.focus(),a.preventDefault(!0)}}),d=CKEDITOR.tools.getNextId()+"_smiley_emtions_label",d=['\x3cdiv\x3e\x3cspan id\x3d"'+d+'" class\x3d"cke_voice_label"\x3e'+a.options+"\x3c/span\x3e",'\x3ctable role\x3d"listbox" aria-labelledby\x3d"'+ 8 | d+'" style\x3d"width:100%;height:100%;border-collapse:separate;" cellspacing\x3d"2" cellpadding\x3d"2"',CKEDITOR.env.ie&&CKEDITOR.env.quirks?' style\x3d"position:absolute;"':"","\x3e\x3ctbody\x3e"],n=h.length,a=0;a 2 | 6 | 7 | 8 | 9 | 10 | 64 | 65 |

66 | 67 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/wsc/dialogs/tmpFrameset.html: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/wsc/dialogs/wsc.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.html or http://ckeditor.com/license 4 | */ 5 | 6 | html, body 7 | { 8 | background-color: transparent; 9 | margin: 0px; 10 | padding: 0px; 11 | } 12 | 13 | body 14 | { 15 | padding: 10px; 16 | } 17 | 18 | body, td, input, select, textarea 19 | { 20 | font-size: 11px; 21 | font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana; 22 | } 23 | 24 | .midtext 25 | { 26 | padding:0px; 27 | margin:10px; 28 | } 29 | 30 | .midtext p 31 | { 32 | padding:0px; 33 | margin:10px; 34 | } 35 | 36 | .Button 37 | { 38 | border: #737357 1px solid; 39 | color: #3b3b1f; 40 | background-color: #c7c78f; 41 | } 42 | 43 | .PopupTabArea 44 | { 45 | color: #737357; 46 | background-color: #e3e3c7; 47 | } 48 | 49 | .PopupTitleBorder 50 | { 51 | border-bottom: #d5d59d 1px solid; 52 | } 53 | .PopupTabEmptyArea 54 | { 55 | padding-left: 10px; 56 | border-bottom: #d5d59d 1px solid; 57 | } 58 | 59 | .PopupTab, .PopupTabSelected 60 | { 61 | border-right: #d5d59d 1px solid; 62 | border-top: #d5d59d 1px solid; 63 | border-left: #d5d59d 1px solid; 64 | padding: 3px 5px 3px 5px; 65 | color: #737357; 66 | } 67 | 68 | .PopupTab 69 | { 70 | margin-top: 1px; 71 | border-bottom: #d5d59d 1px solid; 72 | cursor: pointer; 73 | } 74 | 75 | .PopupTabSelected 76 | { 77 | font-weight: bold; 78 | cursor: default; 79 | padding-top: 4px; 80 | border-bottom: #f1f1e3 1px solid; 81 | background-color: #f1f1e3; 82 | } 83 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/plugins/wsc/dialogs/wsc_ie.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.html or http://ckeditor.com/license 4 | */ 5 | CKEDITOR.dialog.add("checkspell",function(a){function c(a,c){var d=0;return function(){"function"==typeof window.doSpell?("undefined"!=typeof e&&window.clearInterval(e),l(a)):180==d++&&window._cancelOnError(c)}}function l(c){var f=new window._SP_FCK_LangCompare,b=CKEDITOR.getUrl(a.plugins.wsc.path+"dialogs/"),e=b+"tmpFrameset.html";window.gFCKPluginName="wsc";f.setDefaulLangCode(a.config.defaultLanguage);window.doSpell({ctrl:g,lang:a.config.wsc_lang||f.getSPLangCode(a.langCode),intLang:a.config.wsc_uiLang|| 6 | f.getSPLangCode(a.langCode),winType:d,onCancel:function(){c.hide()},onFinish:function(b){a.focus();c.getParentEditor().setData(b.value);c.hide()},staticFrame:e,framesetPath:e,iframePath:b+"ciframe.html",schemaURI:b+"wsc.css",userDictionaryName:a.config.wsc_userDictionaryName,customDictionaryName:a.config.wsc_customDictionaryIds&&a.config.wsc_customDictionaryIds.split(","),domainName:a.config.wsc_domainName});CKEDITOR.document.getById(h).setStyle("display","none");CKEDITOR.document.getById(d).setStyle("display", 7 | "block")}var b=CKEDITOR.tools.getNextNumber(),d="cke_frame_"+b,g="cke_data_"+b,h="cke_error_"+b,e,b=document.location.protocol||"http:",k=a.lang.wsc.notAvailable,m='\x3ctextarea style\x3d"display: none" id\x3d"'+g+'" rows\x3d"10" cols\x3d"40"\x3e \x3c/textarea\x3e\x3cdiv id\x3d"'+h+'" style\x3d"display:none;color:red;font-size:16px;font-weight:bold;padding-top:160px;text-align:center;z-index:11;"\x3e\x3c/div\x3e\x3ciframe src\x3d"" style\x3d"width:100%;background-color:#f1f1e3;" frameborder\x3d"0" name\x3d"'+ 8 | d+'" id\x3d"'+d+'" allowtransparency\x3d"1"\x3e\x3c/iframe\x3e',n=a.config.wsc_customLoaderScript||b+"//loader.webspellchecker.net/sproxy_fck/sproxy.php?plugin\x3dfck2\x26customerid\x3d"+a.config.wsc_customerId+"\x26cmd\x3dscript\x26doc\x3dwsc\x26schema\x3d22";a.config.wsc_customLoaderScript&&(k+='\x3cp style\x3d"color:#000;font-size:11px;font-weight: normal;text-align:center;padding-top:10px"\x3e'+a.lang.wsc.errorLoading.replace(/%s/g,a.config.wsc_customLoaderScript)+"\x3c/p\x3e");window._cancelOnError= 9 | function(c){if("undefined"==typeof window.WSC_Error){CKEDITOR.document.getById(d).setStyle("display","none");var b=CKEDITOR.document.getById(h);b.setStyle("display","block");b.setHtml(c||a.lang.wsc.notAvailable)}};return{title:a.config.wsc_dialogTitle||a.lang.wsc.title,minWidth:485,minHeight:380,buttons:[CKEDITOR.dialog.cancelButton],onShow:function(){var b=this.getContentElement("general","content").getElement();b.setHtml(m);b.getChild(2).setStyle("height",this._.contentSize.height+"px");"function"!= 10 | typeof window.doSpell&&CKEDITOR.document.getHead().append(CKEDITOR.document.createElement("script",{attributes:{type:"text/javascript",src:n}}));b=a.getData();CKEDITOR.document.getById(g).setValue(b);e=window.setInterval(c(this,k),250)},onHide:function(){window.ooo=void 0;window.int_framsetLoaded=void 0;window.framesetLoaded=void 0;window.is_window_opened=!1},contents:[{id:"general",label:a.config.wsc_dialogTitle||a.lang.wsc.title,padding:0,elements:[{type:"html",id:"content",html:""}]}]}}); 11 | CKEDITOR.dialog.on("resize",function(a){a=a.data;var c=a.dialog;"checkspell"==c._.name&&((c=(c=c.getContentElement("general","content").getElement())&&c.getChild(2))&&c.setSize("height",a.height),c&&c.setSize("width",a.width))}); -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/img/github-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/samples/img/github-top.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/img/header-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/samples/img/header-bg.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/img/header-separator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/samples/img/header-separator.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/samples/img/logo.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/img/navigation-tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/samples/img/navigation-tip.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/js/sample.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or http://ckeditor.com/license 4 | */ 5 | 6 | /* exported initSample */ 7 | 8 | if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 ) 9 | CKEDITOR.tools.enableHtml5Elements( document ); 10 | 11 | // The trick to keep the editor in the sample quite small 12 | // unless user specified own height. 13 | CKEDITOR.config.height = 150; 14 | CKEDITOR.config.width = 'auto'; 15 | 16 | var initSample = ( function() { 17 | var wysiwygareaAvailable = isWysiwygareaAvailable(), 18 | isBBCodeBuiltIn = !!CKEDITOR.plugins.get( 'bbcode' ); 19 | 20 | return function() { 21 | var editorElement = CKEDITOR.document.getById( 'editor' ); 22 | 23 | // :((( 24 | if ( isBBCodeBuiltIn ) { 25 | editorElement.setHtml( 26 | 'Hello world!\n\n' + 27 | 'I\'m an instance of [url=http://ckeditor.com]CKEditor[/url].' 28 | ); 29 | } 30 | 31 | // Depending on the wysiwygare plugin availability initialize classic or inline editor. 32 | if ( wysiwygareaAvailable ) { 33 | CKEDITOR.replace( 'editor' ); 34 | } else { 35 | editorElement.setAttribute( 'contenteditable', 'true' ); 36 | CKEDITOR.inline( 'editor' ); 37 | 38 | // TODO we can consider displaying some info box that 39 | // without wysiwygarea the classic editor may not work. 40 | } 41 | }; 42 | 43 | function isWysiwygareaAvailable() { 44 | // If in development mode, then the wysiwygarea must be available. 45 | // Split REV into two strings so builder does not replace it :D. 46 | if ( CKEDITOR.revision == ( '%RE' + 'V%' ) ) { 47 | return true; 48 | } 49 | 50 | return !!CKEDITOR.plugins.get( 'wysiwygarea' ); 51 | } 52 | } )(); 53 | 54 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/old/ajax.html: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | Ajax — CKEditor Sample 10 | 11 | 12 | 40 | 41 | 42 |

43 | CKEditor Samples » Create and Destroy Editor Instances for Ajax Applications 44 |

45 |
46 | This sample is not maintained anymore. Check out its brand new version in CKEditor SDK. 47 |
48 |
49 |

50 | This sample shows how to create and destroy CKEditor instances on the fly. After the removal of CKEditor the content created inside the editing 51 | area will be displayed in a <div> element. 52 |

53 |

54 | For details of how to create this setup check the source code of this sample page 55 | for JavaScript code responsible for the creation and destruction of a CKEditor instance. 56 |

57 |
58 |

Click the buttons to create and remove a CKEditor instance.

59 |

60 | 61 | 62 |

63 | 64 |
65 |
66 | 74 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/old/appendto.html: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | Append To Page Element Using JavaScript Code — CKEditor Sample 10 | 11 | 12 | 13 | 14 |

15 | CKEditor Samples » Append To Page Element Using JavaScript Code 16 |

17 |
18 | This sample is not maintained anymore. Check out the brand new samples in CKEditor SDK. 19 |
20 |
21 |
22 |

23 | The CKEDITOR.appendTo() method serves to to place editors inside existing DOM elements. Unlike CKEDITOR.replace(), 24 | a target container to be replaced is no longer necessary. A new editor 25 | instance is inserted directly wherever it is desired. 26 |

27 |
CKEDITOR.appendTo( 'container_id',
28 | 	{ /* Configuration options to be used. */ }
29 | 	'Editor content to be used.'
30 | );
31 |
32 | 46 |
47 |
48 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/old/assets/inlineall/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/samples/old/assets/inlineall/logo.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/old/assets/outputxhtml/outputxhtml.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or http://ckeditor.com/license 4 | * 5 | * Styles used by the XHTML 1.1 sample page (xhtml.html). 6 | */ 7 | 8 | /** 9 | * Basic definitions for the editing area. 10 | */ 11 | body 12 | { 13 | font-family: Arial, Verdana, sans-serif; 14 | font-size: 80%; 15 | color: #000000; 16 | background-color: #ffffff; 17 | padding: 5px; 18 | margin: 0px; 19 | } 20 | 21 | /** 22 | * Core styles. 23 | */ 24 | 25 | .Bold 26 | { 27 | font-weight: bold; 28 | } 29 | 30 | .Italic 31 | { 32 | font-style: italic; 33 | } 34 | 35 | .Underline 36 | { 37 | text-decoration: underline; 38 | } 39 | 40 | .StrikeThrough 41 | { 42 | text-decoration: line-through; 43 | } 44 | 45 | .Subscript 46 | { 47 | vertical-align: sub; 48 | font-size: smaller; 49 | } 50 | 51 | .Superscript 52 | { 53 | vertical-align: super; 54 | font-size: smaller; 55 | } 56 | 57 | /** 58 | * Font faces. 59 | */ 60 | 61 | .FontComic 62 | { 63 | font-family: 'Comic Sans MS'; 64 | } 65 | 66 | .FontCourier 67 | { 68 | font-family: 'Courier New'; 69 | } 70 | 71 | .FontTimes 72 | { 73 | font-family: 'Times New Roman'; 74 | } 75 | 76 | /** 77 | * Font sizes. 78 | */ 79 | 80 | .FontSmaller 81 | { 82 | font-size: smaller; 83 | } 84 | 85 | .FontLarger 86 | { 87 | font-size: larger; 88 | } 89 | 90 | .FontSmall 91 | { 92 | font-size: 8pt; 93 | } 94 | 95 | .FontBig 96 | { 97 | font-size: 14pt; 98 | } 99 | 100 | .FontDouble 101 | { 102 | font-size: 200%; 103 | } 104 | 105 | /** 106 | * Font colors. 107 | */ 108 | .FontColor1 109 | { 110 | color: #ff9900; 111 | } 112 | 113 | .FontColor2 114 | { 115 | color: #0066cc; 116 | } 117 | 118 | .FontColor3 119 | { 120 | color: #ff0000; 121 | } 122 | 123 | .FontColor1BG 124 | { 125 | background-color: #ff9900; 126 | } 127 | 128 | .FontColor2BG 129 | { 130 | background-color: #0066cc; 131 | } 132 | 133 | .FontColor3BG 134 | { 135 | background-color: #ff0000; 136 | } 137 | 138 | /** 139 | * Indentation. 140 | */ 141 | 142 | .Indent1 143 | { 144 | margin-left: 40px; 145 | } 146 | 147 | .Indent2 148 | { 149 | margin-left: 80px; 150 | } 151 | 152 | .Indent3 153 | { 154 | margin-left: 120px; 155 | } 156 | 157 | /** 158 | * Alignment. 159 | */ 160 | 161 | .JustifyLeft 162 | { 163 | text-align: left; 164 | } 165 | 166 | .JustifyRight 167 | { 168 | text-align: right; 169 | } 170 | 171 | .JustifyCenter 172 | { 173 | text-align: center; 174 | } 175 | 176 | .JustifyFull 177 | { 178 | text-align: justify; 179 | } 180 | 181 | /** 182 | * Other. 183 | */ 184 | 185 | code 186 | { 187 | font-family: courier, monospace; 188 | background-color: #eeeeee; 189 | padding-left: 1px; 190 | padding-right: 1px; 191 | border: #c0c0c0 1px solid; 192 | } 193 | 194 | kbd 195 | { 196 | padding: 0px 1px 0px 1px; 197 | border-width: 1px 2px 2px 1px; 198 | border-style: solid; 199 | } 200 | 201 | blockquote 202 | { 203 | color: #808080; 204 | } 205 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/old/assets/posteddata.php: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | Sample — CKEditor 12 | 13 | 14 | 15 |

16 | CKEditor — Posted Data 17 |

18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | $value ) 31 | { 32 | if ( ( !is_string($value) && !is_numeric($value) ) || !is_string($key) ) 33 | continue; 34 | 35 | if ( get_magic_quotes_gpc() ) 36 | $value = htmlspecialchars( stripslashes((string)$value) ); 37 | else 38 | $value = htmlspecialchars( (string)$value ); 39 | ?> 40 | 41 | 42 | 43 | 44 | 48 |
Field NameValue
49 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/old/assets/sample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/samples/old/assets/sample.jpg -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/old/assets/uilanguages/languages.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or http://ckeditor.com/license 4 | */ 5 | var CKEDITOR_LANGS=function(){var c={af:"Afrikaans",ar:"Arabic",bg:"Bulgarian",bn:"Bengali/Bangla",bs:"Bosnian",ca:"Catalan",cs:"Czech",cy:"Welsh",da:"Danish",de:"German","de-ch":"German (Switzerland)",el:"Greek",en:"English","en-au":"English (Australia)","en-ca":"English (Canadian)","en-gb":"English (United Kingdom)",eo:"Esperanto",es:"Spanish",et:"Estonian",eu:"Basque",fa:"Persian",fi:"Finnish",fo:"Faroese",fr:"French","fr-ca":"French (Canada)",gl:"Galician",gu:"Gujarati",he:"Hebrew",hi:"Hindi", 6 | hr:"Croatian",hu:"Hungarian",id:"Indonesian",is:"Icelandic",it:"Italian",ja:"Japanese",ka:"Georgian",km:"Khmer",ko:"Korean",ku:"Kurdish",lt:"Lithuanian",lv:"Latvian",mk:"Macedonian",mn:"Mongolian",ms:"Malay",nb:"Norwegian Bokmal",nl:"Dutch",no:"Norwegian",pl:"Polish",pt:"Portuguese (Portugal)","pt-br":"Portuguese (Brazil)",ro:"Romanian",ru:"Russian",si:"Sinhala",sk:"Slovak",sq:"Albanian",sl:"Slovenian",sr:"Serbian (Cyrillic)","sr-latn":"Serbian (Latin)",sv:"Swedish",th:"Thai",tr:"Turkish",tt:"Tatar", 7 | ug:"Uighur",uk:"Ukrainian",vi:"Vietnamese",zh:"Chinese Traditional","zh-cn":"Chinese Simplified"},b=[],a;for(a in CKEDITOR.lang.languages)b.push({code:a,name:c[a]||a});b.sort(function(a,b){return a.name 2 | 6 | 7 | 8 | 9 | Using the CKEditor Read-Only API — CKEditor Sample 10 | 11 | 12 | 38 | 39 | 40 |

41 | CKEditor Samples » Using the CKEditor Read-Only API 42 |

43 |
44 | This sample is not maintained anymore. Check out its brand new version in CKEditor SDK. 45 |
46 |
47 |

48 | This sample shows how to use the 49 | setReadOnly 50 | API to put editor into the read-only state that makes it impossible for users to change the editor contents. 51 |

52 |

53 | For details on how to create this setup check the source code of this sample page. 54 |

55 |
56 |
57 |

58 | 59 |

60 |

61 | 62 | 63 |

64 |
65 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/old/sample.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or http://ckeditor.com/license 4 | */ 5 | 6 | // Tool scripts for the sample pages. 7 | // This file can be ignored and is not required to make use of CKEditor. 8 | 9 | ( function() { 10 | CKEDITOR.on( 'instanceReady', function( ev ) { 11 | // Check for sample compliance. 12 | var editor = ev.editor, 13 | meta = CKEDITOR.document.$.getElementsByName( 'ckeditor-sample-required-plugins' ), 14 | requires = meta.length ? CKEDITOR.dom.element.get( meta[ 0 ] ).getAttribute( 'content' ).split( ',' ) : [], 15 | missing = [], 16 | i; 17 | 18 | if ( requires.length ) { 19 | for ( i = 0; i < requires.length; i++ ) { 20 | if ( !editor.plugins[ requires[ i ] ] ) 21 | missing.push( '' + requires[ i ] + '' ); 22 | } 23 | 24 | if ( missing.length ) { 25 | var warn = CKEDITOR.dom.element.createFromHtml( 26 | '
' + 27 | 'To fully experience this demo, the ' + missing.join( ', ' ) + ' plugin' + ( missing.length > 1 ? 's are' : ' is' ) + ' required.' + 28 | '
' 29 | ); 30 | warn.insertBefore( editor.container ); 31 | } 32 | } 33 | 34 | // Set icons. 35 | var doc = new CKEDITOR.dom.document( document ), 36 | icons = doc.find( '.button_icon' ); 37 | 38 | for ( i = 0; i < icons.count(); i++ ) { 39 | var icon = icons.getItem( i ), 40 | name = icon.getAttribute( 'data-icon' ), 41 | style = CKEDITOR.skin.getIconStyle( name, ( CKEDITOR.lang.dir == 'rtl' ) ); 42 | 43 | icon.addClass( 'cke_button_icon' ); 44 | icon.addClass( 'cke_button__' + name + '_icon' ); 45 | icon.setAttribute( 'style', style ); 46 | icon.setStyle( 'float', 'none' ); 47 | 48 | } 49 | } ); 50 | } )(); 51 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/old/sample_posteddata.php: -------------------------------------------------------------------------------- 1 |
 2 | 
 3 | -------------------------------------------------------------------------------------------
 4 |   CKEditor - Posted Data
 5 | 
 6 |   We are sorry, but your Web server does not support the PHP language used in this script.
 7 | 
 8 |   Please note that CKEditor can be used with any other server-side language than just PHP.
 9 |   To save the content created with CKEditor you need to read the POST data on the server
10 |   side and write it to a file or the database.
11 | 
12 |   Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
13 |   For licensing, see LICENSE.md or http://ckeditor.com/license
14 | -------------------------------------------------------------------------------------------
15 | 
16 | 
*/ include "assets/posteddata.php"; ?> 17 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/old/tabindex.html: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | TAB Key-Based Navigation — CKEditor Sample 10 | 11 | 12 | 22 | 42 | 43 | 44 |

45 | CKEditor Samples » TAB Key-Based Navigation 46 |

47 |
48 | This sample is not maintained anymore. Check out its brand new version in CKEditor SDK. 49 |
50 |
51 |

52 | This sample shows how tab key navigation among editor instances is 53 | affected by the tabIndex attribute from 54 | the original page element. Use TAB key to move between the editors. 55 |

56 |
57 |

58 | 59 |

60 |
61 |

62 | 63 |

64 |

65 | 66 |

67 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/old/uicolor.html: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | UI Color Picker — CKEditor Sample 10 | 11 | 12 | 13 | 14 |

15 | CKEditor Samples » UI Color 16 |

17 |
18 | This sample is not maintained anymore. Check out its brand new version in CKEditor SDK. 19 |
20 |
21 |

22 | This sample shows how to automatically replace <textarea> elements 23 | with a CKEditor instance with an option to change the color of its user interface.
24 | Note:The UI skin color feature depends on the CKEditor skin 25 | compatibility. The Moono and Kama skins are examples of skins that work with it. 26 |

27 |
28 |
29 |

30 | This editor instance has a UI color value defined in configuration to change the skin color, 31 | To specify the color of the user interface, set the uiColor property: 32 |

33 |
34 | CKEDITOR.replace( 'textarea_id', {
35 | 	uiColor: '#14B8C4'
36 | });
37 |

38 | Note that textarea_id in the code above is the id attribute of 39 | the <textarea> element to be replaced. 40 |

41 |

42 | 43 | 56 |

57 |

58 | 59 |

60 |
61 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/toolbarconfigurator/css/fontello.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'fontello'; 3 | src: url('../font/fontello.eot?89024372'); 4 | src: url('../font/fontello.eot?89024372#iefix') format('embedded-opentype'), 5 | url('../font/fontello.woff?89024372') format('woff'), 6 | url('../font/fontello.ttf?89024372') format('truetype'), 7 | url('../font/fontello.svg?89024372#fontello') format('svg'); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ 12 | /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ 13 | /* 14 | @media screen and (-webkit-min-device-pixel-ratio:0) { 15 | @font-face { 16 | font-family: 'fontello'; 17 | src: url('../font/fontello.svg?89024372#fontello') format('svg'); 18 | } 19 | } 20 | */ 21 | 22 | [class^="icon-"]:before, [class*=" icon-"]:before { 23 | font-family: "fontello"; 24 | font-style: normal; 25 | font-weight: normal; 26 | speak: none; 27 | 28 | display: inline-block; 29 | text-decoration: inherit; 30 | width: 1em; 31 | margin-right: .2em; 32 | text-align: center; 33 | /* opacity: .8; */ 34 | 35 | /* For safety - reset parent styles, that can break glyph codes*/ 36 | font-variant: normal; 37 | text-transform: none; 38 | 39 | /* fix buttons height, for twitter bootstrap */ 40 | line-height: 1em; 41 | 42 | /* Animation center compensation - margins should be symmetric */ 43 | /* remove if not needed */ 44 | margin-left: .2em; 45 | 46 | /* you can be more comfortable with increased icons size */ 47 | /* font-size: 120%; */ 48 | 49 | /* Uncomment for 3D effect */ 50 | /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ 51 | } 52 | 53 | .icon-trash:before { content: '\e802'; } /* '' */ 54 | .icon-down-big:before { content: '\e800'; } /* '' */ 55 | .icon-up-big:before { content: '\e801'; } /* '' */ 56 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/toolbarconfigurator/font/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Font license info 2 | 3 | 4 | ## Font Awesome 5 | 6 | Copyright (C) 2012 by Dave Gandy 7 | 8 | Author: Dave Gandy 9 | License: SIL () 10 | Homepage: http://fortawesome.github.com/Font-Awesome/ 11 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/toolbarconfigurator/font/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "css_prefix_text": "icon-", 4 | "css_use_suffix": false, 5 | "hinting": true, 6 | "units_per_em": 1000, 7 | "ascent": 850, 8 | "glyphs": [ 9 | { 10 | "uid": "f48ae54adfb27d8ada53d0fd9e34ee10", 11 | "css": "trash-empty", 12 | "code": 59392, 13 | "src": "fontawesome" 14 | }, 15 | { 16 | "uid": "1c4068ed75209e21af36017df8871802", 17 | "css": "down-big", 18 | "code": 59393, 19 | "src": "fontawesome" 20 | }, 21 | { 22 | "uid": "95376bf082bfec6ce06ea1cda7bd7ead", 23 | "css": "up-big", 24 | "code": 59394, 25 | "src": "fontawesome" 26 | } 27 | ] 28 | } -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/toolbarconfigurator/font/fontello.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/samples/toolbarconfigurator/font/fontello.eot -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/toolbarconfigurator/font/fontello.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Copyright (C) 2014 by original authors @ fontello.com 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/toolbarconfigurator/font/fontello.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/samples/toolbarconfigurator/font/fontello.ttf -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/toolbarconfigurator/font/fontello.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/samples/toolbarconfigurator/font/fontello.woff -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/toolbarconfigurator/lib/codemirror/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2014 by Marijn Haverbeke and others 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/toolbarconfigurator/lib/codemirror/neo.css: -------------------------------------------------------------------------------- 1 | /* neo theme for codemirror */ 2 | 3 | /* Color scheme */ 4 | 5 | .cm-s-neo.CodeMirror { 6 | background-color:#ffffff; 7 | color:#2e383c; 8 | line-height:1.4375; 9 | } 10 | .cm-s-neo .cm-comment {color:#75787b} 11 | .cm-s-neo .cm-keyword, .cm-s-neo .cm-property {color:#1d75b3} 12 | .cm-s-neo .cm-atom,.cm-s-neo .cm-number {color:#75438a} 13 | .cm-s-neo .cm-node,.cm-s-neo .cm-tag {color:#9c3328} 14 | .cm-s-neo .cm-string {color:#b35e14} 15 | .cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier {color:#047d65} 16 | 17 | 18 | /* Editor styling */ 19 | 20 | .cm-s-neo pre { 21 | padding:0; 22 | } 23 | 24 | .cm-s-neo .CodeMirror-gutters { 25 | border:none; 26 | border-right:10px solid transparent; 27 | background-color:transparent; 28 | } 29 | 30 | .cm-s-neo .CodeMirror-linenumber { 31 | padding:0; 32 | color:#e0e2e5; 33 | } 34 | 35 | .cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; } 36 | .cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; } 37 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-hints { 2 | position: absolute; 3 | z-index: 10; 4 | overflow: hidden; 5 | list-style: none; 6 | 7 | margin: 0; 8 | padding: 2px; 9 | 10 | -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 11 | -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 12 | box-shadow: 2px 3px 5px rgba(0,0,0,.2); 13 | border-radius: 3px; 14 | border: 1px solid silver; 15 | 16 | background: white; 17 | font-size: 90%; 18 | font-family: monospace; 19 | 20 | max-height: 20em; 21 | overflow-y: auto; 22 | } 23 | 24 | .CodeMirror-hint { 25 | margin: 0; 26 | padding: 0 4px; 27 | border-radius: 2px; 28 | max-width: 19em; 29 | overflow: hidden; 30 | white-space: pre; 31 | color: black; 32 | cursor: pointer; 33 | } 34 | 35 | li.CodeMirror-hint-active { 36 | background: #08f; 37 | color: white; 38 | } 39 | -------------------------------------------------------------------------------- /static/plugin_ckeditor/skins/moono/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/skins/moono/icons.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/skins/moono/icons_hidpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/skins/moono/icons_hidpi.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/skins/moono/images/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/skins/moono/images/arrow.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/skins/moono/images/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/skins/moono/images/close.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/skins/moono/images/hidpi/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/skins/moono/images/hidpi/close.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/skins/moono/images/hidpi/lock-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/skins/moono/images/hidpi/lock-open.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/skins/moono/images/hidpi/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/skins/moono/images/hidpi/lock.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/skins/moono/images/hidpi/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/skins/moono/images/hidpi/refresh.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/skins/moono/images/lock-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/skins/moono/images/lock-open.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/skins/moono/images/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/skins/moono/images/lock.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/skins/moono/images/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/skins/moono/images/refresh.png -------------------------------------------------------------------------------- /static/plugin_ckeditor/skins/moono/images/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timrichardson/web2py_ckeditor4/397d02eb2dfc688757d0c82dfc2dbc6a04b07da1/static/plugin_ckeditor/skins/moono/images/spinner.gif -------------------------------------------------------------------------------- /static/plugin_ckeditor/skins/moono/readme.md: -------------------------------------------------------------------------------- 1 | "Moono" Skin 2 | ==================== 3 | 4 | This skin has been chosen for the **default skin** of CKEditor 4.x, elected from the CKEditor 5 | [skin contest](http://ckeditor.com/blog/new_ckeditor_4_skin) and further shaped by 6 | the CKEditor team. "Moono" is maintained by the core developers. 7 | 8 | For more information about skins, please check the [CKEditor Skin SDK](http://docs.cksource.com/CKEditor_4.x/Skin_SDK) 9 | documentation. 10 | 11 | Features 12 | ------------------- 13 | "Moono" is a monochromatic skin, which offers a modern look coupled with gradients and transparency. 14 | It comes with the following features: 15 | 16 | - Chameleon feature with brightness, 17 | - high-contrast compatibility, 18 | - graphics source provided in SVG. 19 | 20 | Directory Structure 21 | ------------------- 22 | 23 | CSS parts: 24 | - **editor.css**: the main CSS file. It's simply loading several other files, for easier maintenance, 25 | - **mainui.css**: the file contains styles of entire editor outline structures, 26 | - **toolbar.css**: the file contains styles of the editor toolbar space (top), 27 | - **richcombo.css**: the file contains styles of the rich combo ui elements on toolbar, 28 | - **panel.css**: the file contains styles of the rich combo drop-down, it's not loaded 29 | until the first panel open up, 30 | - **elementspath.css**: the file contains styles of the editor elements path bar (bottom), 31 | - **menu.css**: the file contains styles of all editor menus including context menu and button drop-down, 32 | it's not loaded until the first menu open up, 33 | - **dialog.css**: the CSS files for the dialog UI, it's not loaded until the first dialog open, 34 | - **reset.css**: the file defines the basis of style resets among all editor UI spaces, 35 | - **preset.css**: the file defines the default styles of some UI elements reflecting the skin preference, 36 | - **editor_XYZ.css** and **dialog_XYZ.css**: browser specific CSS hacks. 37 | 38 | Other parts: 39 | - **skin.js**: the only JavaScript part of the skin that registers the skin, its browser specific files and its icons and defines the Chameleon feature, 40 | - **icons/**: contains all skin defined icons, 41 | - **images/**: contains a fill general used images, 42 | - **dev/**: contains SVG source of the skin icons. 43 | 44 | License 45 | ------- 46 | 47 | Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. 48 | 49 | For licensing, see LICENSE.md or [http://ckeditor.com/license](http://ckeditor.com/license) 50 | -------------------------------------------------------------------------------- /views/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /views/default/index.html: -------------------------------------------------------------------------------- 1 | {{left_sidebar_enabled,right_sidebar_enabled=False,('message' in globals())}} 2 | {{extend 'layout.html'}} 3 | 4 | {{if 'message' in globals():}} 5 |

{{=message}}

6 | 7 |

{{=T('How did you get here?')}}

8 |
    9 |
  1. {{=T('You are successfully running web2py')}}
  2. 10 |
  3. {{=XML(T('You visited the url %s', A(request.env.path_info,_href=request.env.path_info)))}}
  4. 11 |
  5. {{=XML(T('Which called the function %s located in the file %s', 12 | (A(request.function+'()',_href='#'), 13 | A('web2py/applications/%(application)s/controllers/%(controller)s.py'%request, 14 | _href=URL('admin','default','peek', args=(request.application,'controllers',request.controller+'.py'))))))}}
  6. 15 |
  7. {{=XML(T('The output of the file is a dictionary that was rendered by the view %s', 16 | A('web2py/applications/%(application)s/views/%(controller)s/index.html'%request, 17 | _href=URL('admin','default','peek',args=(request.application,'views',request.controller,'index.html')))))}}
  8. 18 |
  9. {{=T('You can modify this application and adapt it to your needs')}}
  10. 19 |
20 | {{elif 'content' in globals():}} 21 | {{=content}} 22 | {{else:}} 23 | {{=BEAUTIFY(response._vars)}} 24 | {{pass}} 25 | 26 | {{block right_sidebar}} 27 | {{=A(T("Administrative Interface"), _href=URL('admin','default','index'), _class='btn', 28 | _style='margin-top: 1em;')}} 29 |
{{=T("Don't know what to do?")}}
30 | 35 | {{end}} 36 | -------------------------------------------------------------------------------- /views/default/user.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | 3 |

{{=T( request.args(0).replace('_',' ').capitalize() )}}

4 |
5 | {{ 6 | if request.args(0)=='login': 7 | if not 'register' in auth.settings.actions_disabled: 8 | form.add_button(T('Register'),URL(args='register', vars={'_next': request.vars._next} if request.vars._next else None),_class='btn') 9 | pass 10 | if not 'request_reset_password' in auth.settings.actions_disabled: 11 | form.add_button(T('Lost Password'),URL(args='request_reset_password'),_class='btn') 12 | pass 13 | pass 14 | =form 15 | }} 16 |
17 | 25 | 26 | -------------------------------------------------------------------------------- /views/generic.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{""" 3 | 4 | You should not modify this file. 5 | It is used as default when a view is not provided for your controllers 6 | 7 | """}} 8 |

{{=' '.join(x.capitalize() for x in request.function.split('_'))}}

9 | {{if len(response._vars)==1:}} 10 | {{=BEAUTIFY(response._vars.values()[0])}} 11 | {{elif len(response._vars)>1:}} 12 | {{=BEAUTIFY(response._vars)}} 13 | {{pass}} 14 | {{if request.is_local:}} 15 | {{=response.toolbar()}} 16 | {{pass}} 17 | -------------------------------------------------------------------------------- /views/generic.ics: -------------------------------------------------------------------------------- 1 | {{ 2 | ### 3 | # response._vars contains the dictionary returned by the controller action 4 | # Assuming something like: 5 | # 6 | # db.define_table('event', 7 | # Field('title'), 8 | # Field('start_datetime','datetime'), 9 | # Field('stop_datetime','datetime')) 10 | # events = db(db.event).select() 11 | # 12 | # Aor this to work the action must return something like 13 | # 14 | # dict(events=events, title='title',link=URL('action'),timeshift=0) 15 | # 16 | ### 17 | from gluon.serializers import ics}}{{=XML(ics(**response._vars))}} 18 | -------------------------------------------------------------------------------- /views/generic.json: -------------------------------------------------------------------------------- 1 | {{from gluon.serializers import json}}{{=XML(json(response._vars))}} 2 | -------------------------------------------------------------------------------- /views/generic.jsonp: -------------------------------------------------------------------------------- 1 | {{ 2 | ### 3 | # response._vars contains the dictionary returned by the controller action 4 | ### 5 | 6 | # security check! This file is an example for a jsonp view. 7 | # it is not safe to use as a generic.jsonp because of security implications. 8 | 9 | if response.view == 'generic.jsonp': 10 | raise HTTP(501,'generic.jsonp diasbled for security reasons') 11 | 12 | try: 13 | from gluon.serializers import json 14 | result = "%s(%s)" % (request.vars['callback'], json(response._vars)) 15 | response.write(result, escape=False) 16 | response.headers['Content-Type'] = 'application/jsonp' 17 | except (TypeError, ValueError): 18 | raise HTTP(405, 'JSON serialization error') 19 | except ImportError: 20 | raise HTTP(405, 'JSON not available') 21 | except: 22 | raise HTTP(405, 'JSON error') 23 | }} -------------------------------------------------------------------------------- /views/generic.load: -------------------------------------------------------------------------------- 1 | {{''' 2 | # License: Public Domain 3 | # Author: Iceberg at 21cn dot com 4 | 5 | With this generic.load file, you can use same function to serve two purposes. 6 | 7 | = regular action 8 | - ajax callback (when called with .load) 9 | 10 | Example modified from http://www.web2py.com/AlterEgo/default/show/252: 11 | 12 | def index(): 13 | return dict( 14 | part1='hello world', 15 | part2=LOAD(url=URL(r=request,f='auxiliary.load'),ajax=True)) 16 | 17 | def auxiliary(): 18 | form=SQLFORM.factory(Field('name')) 19 | if form.accepts(request.vars): 20 | response.flash = 'ok' 21 | return dict(message="Hello %s" % form.vars.name) 22 | return dict(form=form) 23 | 24 | Notice: 25 | 26 | - no need to set response.headers['web2py-response-flash'] 27 | - no need to return a string 28 | even if the function is called via ajax. 29 | 30 | '''}}{{if len(response._vars)==1:}}{{=response._vars.values()[0]}}{{else:}}{{=BEAUTIFY(response._vars)}}{{pass}} -------------------------------------------------------------------------------- /views/generic.map: -------------------------------------------------------------------------------- 1 | {{""" 2 | this is an example of usage of google map 3 | the web2py action should be something like: 4 | 5 | def map(): 6 | return dict( 7 | googlemap_key='...', 8 | center_latitude = 41.878, 9 | center_longitude = -87.629, 10 | scale = 7, 11 | maker = lambda point: A(row.id,_href='...') 12 | points = db(db.point).select() where a points have latitute and longitude 13 | ) 14 | 15 | the corresponding views/defaut/map.html should be something like: 16 | 17 | \{\{extend 'layout.html'\}\} 18 |
\{\{include 'generic.map'\}\}
19 | 20 | """}} 21 | 22 | 68 |
69 | 70 | -------------------------------------------------------------------------------- /views/generic.pdf: -------------------------------------------------------------------------------- 1 | {{ 2 | import os 3 | from gluon.contrib.generics import pdf_from_html 4 | filename = '%s/%s.html' % (request.controller,request.function) 5 | if os.path.exists(os.path.join(request.folder,'views',filename)): 6 | html=response.render(filename) 7 | else: 8 | html=BODY(BEAUTIFY(response._vars)).xml() 9 | pass 10 | =pdf_from_html(html) 11 | }} 12 | -------------------------------------------------------------------------------- /views/generic.rss: -------------------------------------------------------------------------------- 1 | {{ 2 | ### 3 | # response._vars contains the dictionary returned by the controller action 4 | # for this to work the action must return something like 5 | # 6 | # dict(title=...,link=...,description=...,created_on='...',items=...) 7 | # 8 | # items is a list of dictionaries each with title, link, description, pub_date. 9 | ### 10 | from gluon.serializers import rss}}{{=XML(rss(response._vars))}} 11 | -------------------------------------------------------------------------------- /views/generic.xml: -------------------------------------------------------------------------------- 1 | {{from gluon.serializers import xml}}{{=XML(xml(response._vars,quote=False))}} 2 | -------------------------------------------------------------------------------- /views/plugin_ckeditor/browse.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{from gluon import *}} 3 | 45 | 46 | {{ 47 | def icon_url(category): 48 | url = URL('static', 'plugin_ckeditor/images') + '/page_white' 49 | if category == 'video': 50 | return url + '_dvd.png' 51 | elif category == 'pdf': 52 | return url + '_acrobat.png' 53 | elif category == 'archive': 54 | return url + '_compress.png' 55 | elif category == 'excel': 56 | return url + '_excel.png' 57 | elif category == 'flash': 58 | return url + '_flash.png' 59 | elif category == 'powerpoint': 60 | return url + '_powerpoint.png' 61 | else: 62 | return url + '.png' 63 | pass 64 | }} 65 | 66 |

Uploads

67 | {{for row in rows:}} 68 |
69 |  x  70 | {{category = current.plugin_ckeditor.filetype(row.filename)}} 71 | {{url = URL('default', 'download', args=[row.upload])}} 72 | {{if category != 'image':}} 73 | {{url = icon_url(category)}} 74 | {{pass}} 75 | 76 |
{{=row.title}}
77 |
78 | {{pass}} 79 | 80 | {{if len(rows) == 0:}} 81 | There is nothing here. Please upload something first. 82 | {{pass}} 83 | 84 | -------------------------------------------------------------------------------- /views/plugin_ckeditor/upload.html: -------------------------------------------------------------------------------- 1 | {{=text}} 2 | 3 | {{if url:}} 4 | 7 | {{pass}} -------------------------------------------------------------------------------- /views/web2py_ajax.html: -------------------------------------------------------------------------------- 1 | 9 | {{ 10 | response.files.insert(0,URL('static','js/jquery.js')) 11 | response.files.insert(1,URL('static','css/calendar.css')) 12 | response.files.insert(2,URL('static','js/calendar.js')) 13 | response.files.insert(3,URL('static','js/web2py.js')) 14 | response.include_meta() 15 | response.include_files() 16 | }} 17 | --------------------------------------------------------------------------------