I like it very much, however I have the requirement of adding a wiki
with a wysiwyg interface, any chances on implementing that within
cube2py ... maybe using elRTE or is this just not feasible?
anyway nice work :)

On Jul 7, 2:27 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
> # Preamble
>
> As you know T2 and T3 are deprecated. Some time ago I started a
> reimplementation of T3 called cube9. I got stuck. I now re-factored it
> completely
>
> -----
>    http://code.google.com/p/cube9/(requires web2py trunk)
> -----
>
> It uses markmin:
>
> -----
>    http://web2py.com/examples/static/markmin.html
> -----
>
> cube9 is not completely finished by it works and it already much much
> better than T2/T3.
>
> # What is cube9?
>
> Cube 9 is a possible replacement for the welcome app. It is identical
> to welcome except that
>
> - has a different layout
> - contains a plugin called plugin_wiki (a plugin on steroids)
> - use a JS menu
>
> ## What is plugin_wiki?
>
> Plugin_wiki allows a developed (auth.user_id==1 or anybody member of
> group 'editor') to create dynamic pages on the fly by visiting
>
> ``http://127.0.0.1:8000/cube9/plugin_wiki/page/my-new-page-slug``
>
> In fact you do not need cube9 to run plugin_wiki, you can use it for
> any web2py app. You can use it to add help pages. You can use to allow
> your users to edit pages.
>
> Pages are edited using markmin (via a modified markitup JS editor to
> support markmin).
> This email is written using markmin syntax.
>
> ## Why plugin_wiki is a plugin on steroids?
>
> Because it includes under one name (plugin_wiki) other plugins as
> embeddable widgets (mediaplyer, comments, tags, multiselect, and more)
> and there is a way to access them using the markmin  syntax.
>
> ## A first example
>
> For example to include a youtube video in a page you do
>
> ``
> name: youtube
> code: x1w8hKTJ2Co
> ``:widget
>
> - The double reversed quotes tell markmin to deal with content in a
> special way.
> - The :widget tells plugin_wiki to override default behavior and treat
> this as an embedded widget
> - the content is treated as parameters (youtube being the name of the
> widget and x1w8hKTJ2Co being the name of the youtube video you want to
> embed).
>
> There are MANY widgets you can already embed.
>
> ## More examples
>
> ### Tagging
>
> ``
> name: tags
> ``:widget
>
> ### jqGrid list users
>
> ``
> name: jqgrid
> table: auth_user
> ``:widget
>
> ### Enbedding a form
>
> ``
> name: create
> table: auth_user
> ``:widget
>
> ### Embedding template code
>
> ``
> counting... {{for i in range(10):}}{{=i}}{{pass}}
> ``:template
>
> ## Inner workings
>
> For a list of widgets look into the static methods of
> PluginWikiWidgets in models/plugin_wiki.py. The arguments of the
> methods translate into variables. For example
>
> ``
> class PluginWikiWidgets: # in models/plugin_wiki
>     @staticmethod
>     def abd(x,y=6): ....
> ``:code_python
>
> is called by
>
> ``
> name: abc
> x=5
> ``:widget
>
> (y is optional because y has a default, 6).
>
> ### List of Widgets
>
> Here is a list of widgets as of today:
>
> ``
>     def read(table,record_id=None): ...
>     def
> create(table,message='',next='',readonly_fields='',hidden_fields='',default­_fields=''):
>  ...
>     def
> update(table,record_id='',message='',next='',readonly_fields='',
>                      hidden_fields='',default_fields=''): ...
>     def select(table,query_field='',query_value='',fields=''): ...
>     def search(table,fields=''): ...
>     def jqgrid(table,fieldname=None,fieldvalue=None,col_widths='',
>
> _id=None,fields='',col_width=80,width=700,height=300): ...
>     def pie_chart(data,names,width=300,height=150,align='center'): ...
>     def bar_chart(data,names,width=300,height=150,align='center'): ...
>     def youtube(code,width=400,height=250): ...
>     def vimeo(code,width=400,height=250): ...
>     def mediaplayer(src,width=400,height=250): ...
>     def comments(table='None',record_id=None): ...
>     def tags(table='None',record_id=None): ...
>     def tag_cloud(): ...
> ``:code_python
>
> ### Global variables
>
> there are two important globals variables:
>
> + plugin_wiki_editor = True # or false to disable the wiki
> + plugin_wiki_level = 3 # for everything, 2 for wiki+widgets, 1 for
> normal wiki (no code, widgets)
>
> ## Conclusions:
>
> There is more to this already implemented and there is more to come.
> For start you can run everything on GAE. Some pages with slug meta-*
> have special meaning and can be used to edit header, footer, menu,
> sidebar of cube9 layout. meta-code can be used to define new tables,
> procedures and services.
>
> For security reasons code and widgets can be disabled.
>
> I will make a video about this as soon as I have the time (and free up
> enough memory).
>
> Please test it and send me comments. Enjoy!
>
> Massimo
>
> P.S. I apologize for these names.

Reply via email to