- put image, stylesheets, javascript relative path regex in initializer - create install.rb for rails 1.1 plugin installs, it will create config/masterview and some sample configs - create namespace for mv and publish, update generated files - more videos - allow multiple namespace prefixes for directives (allow custom directives to declare their own namespace) - wiki for site - render from db - app for syntax - include additional stylesheets - ajax examples - ajax table component - fix admin controller config page so it fits into admin layout - documentation - update the plugin generator descr in installation.html: also installs config file templates in config - add tips in installation.doc about running gems rdoc server to view installed gems' rdoc - update admin controller description to point out that it installs public/stylesheets/masterview - run spelling checker on our html and release docs; retrofit to rdoc comments - directive developer documentation and examples - more tests - build improvements - add release tasks to automate archiving trunk to tags/masterview-N.N.N, resetting tags/masterview - investigate mirror sites for obtaining gems (supplement primary rubyforge host) - improve RubyForge project site: include online docs; post release msgs in news - internal code cleanup - DirectiveHelpers ERB_xx constants to differentiate ' %>' and ' -%>' - replace MasterView::NamespacePrefix+'' concats in parser/analyzer with directive attr name constants - run spell checker on doc/*.html, ripple typo fixes back in rdoc comment - reverse engineer legacy rhtml into masterview templates --#################### ??? can we tweak the admin controller for gem plugin so it puts its empty.rhtml in, say, config/masterview/admin?? => better loc than vendor/plugins/masterview/........ if users are going to customize that guy --#################### DSL for creating directives maybe something like event :stag do |e| # these read args consecutively out of parse(attr_value) e.attr_arg :object, :quote_if => true e.attr_arg :foo { |t| t.upcase } # modifying case of foo e.attr_arg :link_name { self.content } #overriding with different value e.attr_arg :options, :optional => {} # specify that is optional but provide default if it is needed e.attr_arg :html_options, :merge_common => true, :merge => [:size, :rows] # merge in common and specified attributes a = a+1 # do some other logic old_content = e.content # retrieving content of tag e.content = 'foo' # resetting content of tag yield_contents = e.yield() e.erb_code_render 'a = a + 1' # render <% a = a + 1 %> e.erb_content_render 'text_area' args(:object, :foo, :link_name, :options, :html_options) # render <%= %>, args handles joining the args with comma, and also takes into account if last args are not empty that other args are either provided also or defaulted. e.render 'direct render' # direct render as is end - default generate to *.rhtml if nothing is specified