MethodDraw
MethodDraw allows the easy integration of Method-Draw with any rails application.
This Gem was adapted from the Sketchily gem.
Currently supports and provides method-draw.
Installation
Add this line to your application's Gemfile:
gem 'method_draw'
And then execute:
$ bundle
Or install it yourself:
$ gem install method_draw
Also make sure your application.js includes some version of jquery. It usually does by default.
If you use the jquery-rails gem, you will have something like this:
//= require jquery
//= require jquery_ujs
Note: method_draw will automatically add the following files to your asset precompilation list:
method_draw.css method_draw.js method_draw_embed.js method-draw-js/canvg/canvg.js method-draw-js/canvg/rgbcolor.js method-draw-js/extensions/ext-*.js
Other html files and images used by method-draw will also be precompiled.
Usage
MethodDraw adds new form elements which can be accessed by calling:
f.method_drawor simplymethod_drawfrom inside aform_for @my_object |f|method_draw_tagfrom inside aform_tag
This gem also adds a helper method that can be called to display the resulting SVG images (without an editor):
method_draw_showfrom any view template
method_draw and method_draw_tag functions
- Both of these functions work exactly like the equivalent
hidden_fieldfunctions, except that method-draw is displayed instead. - The
f.method_drawformat accepts a method name and an options hash. - The
method_drawformat (called without the form builder object) accepts an object name, a method name and an options hash. - The
method_draw_tagformat accepts a tag name, the svg string to be edited and an options hash.
Currently available options are:
widthtotal width of editorheighttotal height of editorbkgd_colorcanvas background color (3 or 6 hex digit html color format; not saved with image; see method_draw_show)bkgd_urlcanvas background image url (not saved with image; see bkgd_file option for method_draw_show)canvas_widthinitial canvas widthcanvas_heightinitial canvas heightcanvas_expansion0 if you want to disable scrollinghide_rulerstrue if you want to hide the canvas rulershide_menutrue if you want method-draw's menu to be hiddenhide_image_tooltrue if you want to hide theimage toolbuttonshow_layers(true if you want the layer selector to display automatically when the editor is loaded)urloverride contents of the canvas with the svg file in the given url (careful: changes lost whenever editor is loaded)idoverride the default id (see explanation below)valueoverride the default value (the svg itself; can be useful when using form_for)indexoverride the default index (affects the tag name; can be useful when using form_for)extensionseditor plugins (e.g. 'plugin.js' will load '/assets/extensions/plugin.js')other standard html attributes for the input tag
The hyperlink tool is disabled by default, as embedded links and scripts do not work with the display method used by method_draw_show.
The method_draw_show helper will display svg's inside of tags, which are treated as static images by most browsers.
We consider this to be a necessary precaution when dealing with user-generated svg's.
MethodDraw requires a unique id (by default, this is set in the same way as hidden_field) each time it is called in the same page.
However, some uses of form_for can generate repeated ids (e.g. multiple form_for @my_object.new in the same page).
In those cases, you need to generate and specify your own unique ids. A possible solution is to use one of the many uuid generator gems.
It is recommended that the database entries associated with method_draw form elements be of type text.
The following examples assume that the database table for @my_object has a sketch column of type text.
Example usage (haml):
= form_for @my_object do |f|
= f.method_draw :sketch, :hide_menu => true
method_draw_show helper
- This function takes the base64-encoded SVG string as an argument and an options hash.
- The SVG string can be directly read from the field used by the
method_drawandmethod_draw_tagfunctions.
Currently available options are:
widthwidth of resulting image objectheightheight of resulting image objectbkgd_colorbackground color (3 or 6 hex digit html color format)bkgd_filebackground image file path (must be a local image file)
Passing only one of those options should keep the aspect ratio of the SVG constant in most browsers.
Example usage (haml):
= method_draw_show @my_object.sketch, :width => "500"
Browser Support
Although more testing is needed, we currently believe method_draw supports any browsers that Method-Draw supports, namely:
- Firefox 1.5+
- Opera 9.50+
- Safari 4+
- Chrome 1+
- IE 9+
- IE 6+ (with the Chrome Frame plugin)
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Create specs for your feature
- Ensure that all specs pass
- Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new pull request