sketchily 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.md +39 -0
- data/Rakefile +40 -0
- data/app/helpers/sketchily.rb~ +10 -0
- data/app/helpers/sketchily_helper.rb +10 -0
- data/app/views/sketchily/_embed.html.erb +28 -0
- data/app/views/sketchily/_embed.html.erb~ +28 -0
- data/app/views/sketchily/_embed.js.erb +50 -0
- data/app/views/sketchily/_embed.js.erb~ +50 -0
- data/app/views/sketchily/_sketchily.html.erb +23 -0
- data/app/views/sketchily/_sketchily.html.erb~ +23 -0
- data/app/views/sketchily/_sketchily_tag.html.erb +21 -0
- data/app/views/sketchily/_sketchily_tag.html.erb~ +21 -0
- data/app/views/sketchily/_svg_edit_tag.html.erb~ +51 -0
- data/app/views/sketchily/svg_edit_tag_.html~ +35 -0
- data/lib/sketchily.rb +15 -0
- data/lib/sketchily.rb~ +16 -0
- data/lib/sketchily/engine.rb +4 -0
- data/lib/sketchily/sketchily.rb +28 -0
- data/lib/sketchily/sketchily_show.rb~ +13 -0
- data/lib/sketchily/sketchily_tag.rb +15 -0
- data/lib/sketchily/svg_edit_tag.rb~ +9 -0
- data/lib/sketchily/version.rb +3 -0
- data/lib/sketchily/version.rb~ +3 -0
- data/spec/dummy/README.rdoc +261 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +59 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +67 -0
- data/spec/dummy/config/environments/test.rb +37 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +58 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/lib/sketchily_spec.rb +0 -0
- data/spec/spec_helper.rb +11 -0
- data/vendor/assets/svg-edit-2.6/browser-not-supported.html +27 -0
- data/vendor/assets/svg-edit-2.6/browser.js +180 -0
- data/vendor/assets/svg-edit-2.6/canvg/canvg.js +2620 -0
- data/vendor/assets/svg-edit-2.6/canvg/rgbcolor.js +287 -0
- data/vendor/assets/svg-edit-2.6/contextmenu.js +67 -0
- data/vendor/assets/svg-edit-2.6/contextmenu/jquery.contextMenu.js +203 -0
- data/vendor/assets/svg-edit-2.6/draw.js +528 -0
- data/vendor/assets/svg-edit-2.6/embedapi.html +56 -0
- data/vendor/assets/svg-edit-2.6/embedapi.js +173 -0
- data/vendor/assets/svg-edit-2.6/extensions/closepath_icons.svg +41 -0
- data/vendor/assets/svg-edit-2.6/extensions/ext-arrows.js +298 -0
- data/vendor/assets/svg-edit-2.6/extensions/ext-closepath.js +92 -0
- data/vendor/assets/svg-edit-2.6/extensions/ext-connector.js +587 -0
- data/vendor/assets/svg-edit-2.6/extensions/ext-eyedropper.js +109 -0
- data/vendor/assets/svg-edit-2.6/extensions/ext-foreignobject.js +277 -0
- data/vendor/assets/svg-edit-2.6/extensions/ext-grid.js +184 -0
- data/vendor/assets/svg-edit-2.6/extensions/ext-helloworld.js +78 -0
- data/vendor/assets/svg-edit-2.6/extensions/ext-imagelib.js +453 -0
- data/vendor/assets/svg-edit-2.6/extensions/ext-imagelib.xml +14 -0
- data/vendor/assets/svg-edit-2.6/extensions/ext-markers.js +572 -0
- data/vendor/assets/svg-edit-2.6/extensions/ext-server_moinsave.js +56 -0
- data/vendor/assets/svg-edit-2.6/extensions/ext-server_opensave.js +180 -0
- data/vendor/assets/svg-edit-2.6/extensions/ext-shapes.js +387 -0
- data/vendor/assets/svg-edit-2.6/extensions/ext-shapes.xml +10 -0
- data/vendor/assets/svg-edit-2.6/extensions/eyedropper-icon.xml +34 -0
- data/vendor/assets/svg-edit-2.6/extensions/eyedropper.png +0 -0
- data/vendor/assets/svg-edit-2.6/extensions/fileopen.php +31 -0
- data/vendor/assets/svg-edit-2.6/extensions/filesave.php +44 -0
- data/vendor/assets/svg-edit-2.6/extensions/foreignobject-icons.xml +96 -0
- data/vendor/assets/svg-edit-2.6/extensions/grid-icon.xml +30 -0
- data/vendor/assets/svg-edit-2.6/extensions/helloworld-icon.xml +21 -0
- data/vendor/assets/svg-edit-2.6/extensions/imagelib/index.html +64 -0
- data/vendor/assets/svg-edit-2.6/extensions/imagelib/smiley.svg +12 -0
- data/vendor/assets/svg-edit-2.6/extensions/markers-icons.xml +115 -0
- data/vendor/assets/svg-edit-2.6/extensions/shapelib/animal.json +21 -0
- data/vendor/assets/svg-edit-2.6/extensions/shapelib/arrow.json +28 -0
- data/vendor/assets/svg-edit-2.6/extensions/shapelib/dialog_balloon.json +9 -0
- data/vendor/assets/svg-edit-2.6/extensions/shapelib/electronics.json +20 -0
- data/vendor/assets/svg-edit-2.6/extensions/shapelib/flowchart.json +25 -0
- data/vendor/assets/svg-edit-2.6/extensions/shapelib/game.json +13 -0
- data/vendor/assets/svg-edit-2.6/extensions/shapelib/math.json +9 -0
- data/vendor/assets/svg-edit-2.6/extensions/shapelib/misc.json +37 -0
- data/vendor/assets/svg-edit-2.6/extensions/shapelib/music.json +21 -0
- data/vendor/assets/svg-edit-2.6/extensions/shapelib/object.json +19 -0
- data/vendor/assets/svg-edit-2.6/extensions/shapelib/raphael.txt +12 -0
- data/vendor/assets/svg-edit-2.6/extensions/shapelib/raphael_1.json +67 -0
- data/vendor/assets/svg-edit-2.6/extensions/shapelib/raphael_2.json +64 -0
- data/vendor/assets/svg-edit-2.6/extensions/shapelib/symbol.json +28 -0
- data/vendor/assets/svg-edit-2.6/history.js +601 -0
- data/vendor/assets/svg-edit-2.6/images/README.txt +61 -0
- data/vendor/assets/svg-edit-2.6/images/align-bottom.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/align-bottom.svg +277 -0
- data/vendor/assets/svg-edit-2.6/images/align-center.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/align-center.svg +252 -0
- data/vendor/assets/svg-edit-2.6/images/align-left.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/align-left.svg +235 -0
- data/vendor/assets/svg-edit-2.6/images/align-middle.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/align-middle.svg +250 -0
- data/vendor/assets/svg-edit-2.6/images/align-right.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/align-right.svg +233 -0
- data/vendor/assets/svg-edit-2.6/images/align-top.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/align-top.svg +233 -0
- data/vendor/assets/svg-edit-2.6/images/bold.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/cancel.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/circle.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/clear.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/clone.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/conn.svg +29 -0
- data/vendor/assets/svg-edit-2.6/images/copy.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/cut.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/delete.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/document-properties.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/dropdown.gif +0 -0
- data/vendor/assets/svg-edit-2.6/images/ellipse.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/eye.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/fhpath.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/flyouth.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/flyup.gif +0 -0
- data/vendor/assets/svg-edit-2.6/images/freehand-circle.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/freehand-square.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/go-down.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/go-up.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/image.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/italic.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/line.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/link_controls.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/logo.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/logo.svg +32 -0
- data/vendor/assets/svg-edit-2.6/images/move_bottom.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/move_top.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/node_clone.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/node_delete.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/none.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/open.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/paste.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/path.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/polygon.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/polygon.svg +219 -0
- data/vendor/assets/svg-edit-2.6/images/rect.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/redo.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/reorient.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/rotate.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/save.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/select.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/select_node.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/sep.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/shape_group.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/shape_ungroup.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/source.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/spinbtn_updn_big.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/square.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/svg_edit_icons.svg +1034 -0
- data/vendor/assets/svg-edit-2.6/images/svg_edit_icons.svgz +0 -0
- data/vendor/assets/svg-edit-2.6/images/text.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/text.svg +157 -0
- data/vendor/assets/svg-edit-2.6/images/to_path.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/undo.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/view-refresh.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/wave.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/wireframe.png +0 -0
- data/vendor/assets/svg-edit-2.6/images/zoom.png +0 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/LICENSE +202 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/README +3 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/css/jPicker.css +1 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/css/jgraduate.css +351 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/images/AlphaBar.png +0 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/images/Bars.png +0 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/images/Maps.png +0 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/images/NoColor.png +0 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/images/bar-opacity.png +0 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/images/map-opacity.png +0 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/images/mappoint.gif +0 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/images/mappoint_c.png +0 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/images/mappoint_f.png +0 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/images/picker.gif +0 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/images/preview-opacity.png +0 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/images/rangearrows.gif +0 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/images/rangearrows2.gif +0 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/jpicker.js +2091 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/jpicker.min.js +1 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/jquery.jgraduate.js +1175 -0
- data/vendor/assets/svg-edit-2.6/jgraduate/jquery.jgraduate.min.js +37 -0
- data/vendor/assets/svg-edit-2.6/jquery-ui/jquery-ui-1.8.17.custom.min.js +54 -0
- data/vendor/assets/svg-edit-2.6/jquery-ui/jquery-ui-1.8.custom.min.js +84 -0
- data/vendor/assets/svg-edit-2.6/jquery.js +4 -0
- data/vendor/assets/svg-edit-2.6/jquerybbq/jquery.bbq.min.js +18 -0
- data/vendor/assets/svg-edit-2.6/js-hotkeys/README.md +45 -0
- data/vendor/assets/svg-edit-2.6/js-hotkeys/jquery.hotkeys.min.js +15 -0
- data/vendor/assets/svg-edit-2.6/locale/README.txt +17 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.af.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.ar.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.az.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.be.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.bg.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.ca.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.cs.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.cy.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.da.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.de.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.el.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.en.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.es.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.et.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.fa.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.fi.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.fr.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.fy.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.ga.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.gl.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.he.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.hi.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.hr.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.hu.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.hy.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.id.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.is.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.it.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.ja.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.ko.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.lt.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.lv.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.mk.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.ms.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.mt.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.nl.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.no.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.pl.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.pt-BR.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.pt-PT.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.ro.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.ru.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.sk.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.sl.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.sq.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.sr.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.sv.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.sw.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.test.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.th.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.tl.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.tr.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.uk.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.vi.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.yi.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.zh-CN.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.zh-HK.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/lang.zh-TW.js +234 -0
- data/vendor/assets/svg-edit-2.6/locale/locale.js +320 -0
- data/vendor/assets/svg-edit-2.6/math.js +246 -0
- data/vendor/assets/svg-edit-2.6/path.js +980 -0
- data/vendor/assets/svg-edit-2.6/sanitize.js +273 -0
- data/vendor/assets/svg-edit-2.6/select.js +532 -0
- data/vendor/assets/svg-edit-2.6/spinbtn/JQuerySpinBtn.css +41 -0
- data/vendor/assets/svg-edit-2.6/spinbtn/JQuerySpinBtn.js +266 -0
- data/vendor/assets/svg-edit-2.6/spinbtn/JQuerySpinBtn.min.js +7 -0
- data/vendor/assets/svg-edit-2.6/spinbtn/spinbtn_updn.png +0 -0
- data/vendor/assets/svg-edit-2.6/svg-editor.css +1495 -0
- data/vendor/assets/svg-edit-2.6/svg-editor.css~ +1500 -0
- data/vendor/assets/svg-edit-2.6/svg-editor.html +788 -0
- data/vendor/assets/svg-edit-2.6/svg-editor.html~ +788 -0
- data/vendor/assets/svg-edit-2.6/svg-editor.js +4969 -0
- data/vendor/assets/svg-edit-2.6/svg-editor.manifest +121 -0
- data/vendor/assets/svg-edit-2.6/svgcanvas.js +8775 -0
- data/vendor/assets/svg-edit-2.6/svgedit.compiled.js +465 -0
- data/vendor/assets/svg-edit-2.6/svgicons/jquery.svgicons.js +486 -0
- data/vendor/assets/svg-edit-2.6/svgtransformlist.js +291 -0
- data/vendor/assets/svg-edit-2.6/svgutils.js +651 -0
- data/vendor/assets/svg-edit-2.6/touch.js +30 -0
- data/vendor/assets/svg-edit-2.6/units.js +281 -0
- metadata +407 -0
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2013 Rice University
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# Sketchily
|
2
|
+
|
3
|
+
Sketchily allows the easy integration of svg-edit with any rails application.
|
4
|
+
Currently supports and provides svg-edit-2.6.
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
Add this line to your application's Gemfile:
|
9
|
+
|
10
|
+
gem 'sketchily'
|
11
|
+
|
12
|
+
And then execute:
|
13
|
+
|
14
|
+
$ bundle
|
15
|
+
|
16
|
+
Or install it yourself as:
|
17
|
+
|
18
|
+
$ gem install sketchily
|
19
|
+
|
20
|
+
## Usage
|
21
|
+
|
22
|
+
Sketchily adds new form elements which can be accessed by calling f.sketchily or simply sketchily from inside a form_for |f| or sketchily_tag from inside a form_tag.
|
23
|
+
Both of these functions work exactly like the equivalent hidden_field functions, except that svg-edit is displayed instead.
|
24
|
+
The f.sketchily format accepts a method name and an options hash.
|
25
|
+
The sketchily format accepts an object name, a method name and an options hash.
|
26
|
+
The sketchily_tag format accepts a tag name, the svg string to be edited and an options hash.
|
27
|
+
Currently available options are width, height, show_menu (true if you want svg-edit's menu to be displayed), hide_image_tool (true if you want to hide the image tool button), canvas_width (number specifying initial canvas width), canvas_height (number specifying initial canvas height), canvas_expansion (0 if you want to disable scrolling), hide_rulers (true if you want to hide the canvas rulers) and other standard html attributes for the input tag.
|
28
|
+
It is recommended that the database entries associated with sketchily form elements be of type 'text'.
|
29
|
+
|
30
|
+
## Contributing
|
31
|
+
|
32
|
+
1. Fork it
|
33
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
34
|
+
3. Create specs for your feature
|
35
|
+
4. Ensure that all specs pass
|
36
|
+
5. Commit your changes (`git commit -am 'Add some feature'`)
|
37
|
+
6. Push to the branch (`git push origin my-new-feature`)
|
38
|
+
7. Create new pull request
|
39
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'Sketchily'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
24
|
+
load 'rails/tasks/engine.rake'
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
Bundler::GemHelper.install_tasks
|
29
|
+
|
30
|
+
require 'rake/testtask'
|
31
|
+
|
32
|
+
Rake::TestTask.new(:test) do |t|
|
33
|
+
t.libs << 'lib'
|
34
|
+
t.libs << 'test'
|
35
|
+
t.pattern = 'test/**/*_test.rb'
|
36
|
+
t.verbose = false
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
task :default => :test
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Sketchily
|
2
|
+
def sketchily_show(uri, options = {})
|
3
|
+
"<img src='data:image/svg+xml;base64,#{uri}' #{"width='#{options[:width]}'" if options[:width]} #{"height='#{options[:height]}'" if options[:height]}/>".html_safe
|
4
|
+
end
|
5
|
+
|
6
|
+
def svg_show(uri, options = {})
|
7
|
+
sketchily_show(uri, options)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module SketchilyHelper
|
2
|
+
def sketchily_show(uri, options = {})
|
3
|
+
"<img src='data:image/svg+xml;base64,#{uri}' #{"width='#{options[:width]}'" if options[:width]} #{"height='#{options[:height]}'" if options[:height]}/>".html_safe
|
4
|
+
end
|
5
|
+
|
6
|
+
def svg_show(uri, options = {})
|
7
|
+
sketchily_show(uri, options)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<% # Clients of this partial must supply the following variables:
|
2
|
+
# id
|
3
|
+
# value
|
4
|
+
#
|
5
|
+
# Additionally, they may override the following variables:
|
6
|
+
show_menu ||= false
|
7
|
+
hide_image_tool ||= false
|
8
|
+
canvas_width ||= 640
|
9
|
+
canvas_height ||= 480
|
10
|
+
canvas_expansion ||= 3
|
11
|
+
hide_rulers ||= false
|
12
|
+
width ||= "750px"
|
13
|
+
height ||= "650px" %>
|
14
|
+
|
15
|
+
<%= javascript_include_tag "embedapi" %>
|
16
|
+
<%= javascript_include_tag "svgutils" %>
|
17
|
+
|
18
|
+
<script type="text/javascript">
|
19
|
+
<%= render :partial => "sketchily/embed",
|
20
|
+
:formats => :js,
|
21
|
+
:locals => {:id => id,
|
22
|
+
:value => value,
|
23
|
+
:show_menu => show_menu,
|
24
|
+
:hide_image_tool => hide_image_tool} %>
|
25
|
+
</script>
|
26
|
+
|
27
|
+
<iframe src="/assets/svg-editor.html?source=&dimensions=<%= "#{canvas_width},#{canvas_height}" %>&canvas_expansion=<%= canvas_expansion %>&showRulers=<%= !hide_rulers %>"
|
28
|
+
width="<%= width %>" height="<%= height %>" id="svgedit_<%= id %>" onload="initEmbed_<%= id %>();"></iframe>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<% # Clients of this partial must supply the following variables:
|
2
|
+
# id
|
3
|
+
# value
|
4
|
+
#
|
5
|
+
# Additionally, they may override the following variables:
|
6
|
+
show_menu ||= false
|
7
|
+
hide_image_tool ||= false
|
8
|
+
canvas_width ||= 640,
|
9
|
+
canvas_height ||= 480,
|
10
|
+
canvas_expansion ||= 3
|
11
|
+
hide_rulers ||= false
|
12
|
+
width ||= "750px"
|
13
|
+
height ||= "650px" %>
|
14
|
+
|
15
|
+
<%= javascript_include_tag "embedapi" %>
|
16
|
+
<%= javascript_include_tag "svgutils" %>
|
17
|
+
|
18
|
+
<script type="text/javascript">
|
19
|
+
<%= render :partial => "sketchily/embed",
|
20
|
+
:formats => :js,
|
21
|
+
:locals => {:id => id,
|
22
|
+
:value => value,
|
23
|
+
:show_menu => show_menu,
|
24
|
+
:hide_image_tool => hide_image_tool} %>
|
25
|
+
</script>
|
26
|
+
|
27
|
+
<iframe src="/assets/svg-editor.html?source=&dimensions=<%= "#{canvas_width},#{canvas_height}" %>&canvas_expansion=<%= canvas_expansion %>&showRulers=<%= !hide_rulers %>"
|
28
|
+
width="<%= width %>" height="<%= height %>" id="svgedit_<%= id %>" onload="initEmbed_<%= id %>();"></iframe>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
<% # This partial requires svgutils.js
|
2
|
+
#
|
3
|
+
# Clients of this partial must supply the following variables:
|
4
|
+
# id
|
5
|
+
# value
|
6
|
+
# show_menu
|
7
|
+
# hide_image_tool %>
|
8
|
+
|
9
|
+
var svgCanvas_<%= id %> = null;
|
10
|
+
|
11
|
+
function handleSvgData_<%= id %>(data, error) {
|
12
|
+
if (error) {
|
13
|
+
alert('Error: ' + error);
|
14
|
+
}
|
15
|
+
else {
|
16
|
+
$("input#<%= id %>").attr("value", svgedit.utilities.encode64("<?xml version=\"1.0\"?>\n" + data));
|
17
|
+
$("input#<%= id %>").closest("form").submit();
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
21
|
+
function initEmbed_<%= id %>() {
|
22
|
+
var frame = document.getElementById('svgedit_<%= id %>');
|
23
|
+
svgCanvas_<%= id %> = new embedded_svg_edit(frame);
|
24
|
+
|
25
|
+
var doc;
|
26
|
+
doc = frame.contentDocument;
|
27
|
+
if (!doc) {
|
28
|
+
doc = frame.contentWindow.document;
|
29
|
+
}
|
30
|
+
|
31
|
+
<% if show_menu %>
|
32
|
+
var mainButton = doc.getElementById('main_button');
|
33
|
+
mainButton.style.display = 'block';
|
34
|
+
var toolsTop = doc.getElementById('tools_top');
|
35
|
+
toolsTop.style.left = '120px';
|
36
|
+
toolsTop.style.right = '2px';
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
<% if hide_image_tool %>
|
40
|
+
var imageTool = doc.getElementById('tool_image');
|
41
|
+
imageTool.style.display = 'none';
|
42
|
+
<% end %>
|
43
|
+
|
44
|
+
$("input#<%= id %>").closest("form").one("submit", function(event) {
|
45
|
+
svgCanvas_<%= id %>.getSvgString()(handleSvgData_<%= id %>);
|
46
|
+
event.preventDefault();
|
47
|
+
});
|
48
|
+
|
49
|
+
svgCanvas_<%= id %>.setSvgString(svgedit.utilities.decode64("<%= value.try(:squish) %>"));
|
50
|
+
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
<% # This partial requires svgutils.js
|
2
|
+
#
|
3
|
+
# Clients of this partial must supply the following variables:
|
4
|
+
# id
|
5
|
+
# value
|
6
|
+
# show_menu
|
7
|
+
# hide_image_tool %>
|
8
|
+
|
9
|
+
var svgCanvas_<%= id %> = null;
|
10
|
+
|
11
|
+
function handleSvgData_<%= id %>(data, error) {
|
12
|
+
if (error) {
|
13
|
+
alert('Error: ' + error);
|
14
|
+
}
|
15
|
+
else {
|
16
|
+
$("input#<%= id %>").attr("value", svgedit.utilities.encode64("<?xml version=\"1.0\"?>\n" + data));
|
17
|
+
$("input#<%= id %>").closest("form").submit();
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
21
|
+
function initEmbed_<%= id %>() {
|
22
|
+
var frame = document.getElementById('svgedit_<%= id %>');
|
23
|
+
svgCanvas_<%= id %> = new embedded_svg_edit(frame);
|
24
|
+
|
25
|
+
var doc;
|
26
|
+
doc = frame.contentDocument;
|
27
|
+
if (!doc) {
|
28
|
+
doc = frame.contentWindow.document;
|
29
|
+
}
|
30
|
+
|
31
|
+
<% if show_menu %>
|
32
|
+
var mainButton = doc.getElementById('main_button');
|
33
|
+
mainButton.style.display = 'block';
|
34
|
+
var toolsTop = doc.getElementById('tools_top');
|
35
|
+
toolsTop.style.left = '120px';
|
36
|
+
toolsTop.style.right = '2px';
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
<% if hide_image %>
|
40
|
+
var imageTool = doc.getElementById('tool_image');
|
41
|
+
imageTool.style.display = 'none';
|
42
|
+
<% end %>
|
43
|
+
|
44
|
+
$("input#<%= id %>").closest("form").one("submit", function(event) {
|
45
|
+
svgCanvas_<%= id %>.getSvgString()(handleSvgData_<%= id %>);
|
46
|
+
event.preventDefault();
|
47
|
+
});
|
48
|
+
|
49
|
+
svgCanvas_<%= id %>.setSvgString(svgedit.utilities.decode64("<%= value.try(:squish) %>"));
|
50
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<% # Clients of this partial must supply the following variables:
|
2
|
+
# template
|
3
|
+
# object_name
|
4
|
+
# method
|
5
|
+
# options %>
|
6
|
+
|
7
|
+
<% sketchily_tag = ActionView::Helpers::InstanceTag.new(object_name, method, template, options.delete(:object)) %>
|
8
|
+
|
9
|
+
<%= render :partial => "sketchily/embed",
|
10
|
+
:formats => :html,
|
11
|
+
:locals => {:id => sketchily_tag.send(:tag_id),
|
12
|
+
:value => sketchily_tag.value(sketchily_tag.object),
|
13
|
+
:show_menu => options[:show_menu],
|
14
|
+
:hide_image_tool => options[:hide_image_tool],
|
15
|
+
:canvas_width => options[:canvas_width],
|
16
|
+
:canvas_height => options[:canvas_height],
|
17
|
+
:canvas_expansion => options[:canvas_expansion],
|
18
|
+
:hide_rulers => options[:hide_rulers],
|
19
|
+
:width => options[:width],
|
20
|
+
:height => options[:height]} %>
|
21
|
+
|
22
|
+
<%= sketchily_tag.to_input_field_tag("hidden", options.except(:show_menu, :hide_image_tool, :canvas_width, :canvas_height, :canvas_expansion, :hide_rulers, :width, :height)) %>
|
23
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<% # Clients of this partial must supply the following variables:
|
2
|
+
# template
|
3
|
+
# object_name
|
4
|
+
# method
|
5
|
+
# options %>
|
6
|
+
|
7
|
+
<% sketchily_tag = ActionView::Helpers::InstanceTag.new(object_name, method, template, options.delete(:object)) %>
|
8
|
+
|
9
|
+
<%= render :partial => "sketchily/embed",
|
10
|
+
:formats => :html,
|
11
|
+
:locals => {:id => sketchily_tag.send(:tag_id),
|
12
|
+
:value => sketchily_tag.value(sketchily_tag.object),
|
13
|
+
:show_menu => options[:show_menu],
|
14
|
+
:hide_image_tool => options[:hide_image_tool],
|
15
|
+
:canvas_width => options[:canvas_width],
|
16
|
+
:canvas_height => options[:canvas_height],
|
17
|
+
:canvas_expansion => options[:canvas_expansion],
|
18
|
+
:hide_rulers => options[:hide_rulers],
|
19
|
+
:width => options[:width],
|
20
|
+
:height => options[:height]} %>
|
21
|
+
|
22
|
+
<%= sketchily_tag.to_input_field_tag("hidden", options.except(:show_menu, :hide_image_tool, :canvas_dimensions, :canvas_expansion, :hide_rulers, :width, :height)) %>
|
23
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<% # Clients of this partial must supply the following variables:
|
2
|
+
# name
|
3
|
+
# id
|
4
|
+
# value
|
5
|
+
# options %>
|
6
|
+
|
7
|
+
<%= render :partial => "sketchily/embed",
|
8
|
+
:formats => :html,
|
9
|
+
:locals => {:id => id,
|
10
|
+
:value => value,
|
11
|
+
:show_menu => options[:show_menu],
|
12
|
+
:hide_image_tool => options[:hide_image_tool],
|
13
|
+
:canvas_width => options[:canvas_width],
|
14
|
+
:canvas_height => options[:canvas_height],
|
15
|
+
:canvas_expansion => options[:canvas_expansion],
|
16
|
+
:hide_rulers => options[:hide_rulers],
|
17
|
+
:width => options[:width],
|
18
|
+
:height => options[:height]} %>
|
19
|
+
|
20
|
+
<%= tag :input, { "type" => "hidden", "name" => name, "id" => id, "value" => value }.update(options.except(:show_menu, :hide_image_tool, :canvas_width, :canvas_height, :canvas_expansion, :hide_rulers, :width, :height).stringify_keys) %>
|
21
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<% # Clients of this partial must supply the following variables:
|
2
|
+
# name
|
3
|
+
# id
|
4
|
+
# value
|
5
|
+
# options %>
|
6
|
+
|
7
|
+
<%= render :partial => "sketchily/embed",
|
8
|
+
:formats => :html,
|
9
|
+
:locals => {:id => id,
|
10
|
+
:value => value,
|
11
|
+
:show_menu => options[:show_menu],
|
12
|
+
:hide_image_tool => options[:hide_image_tool],
|
13
|
+
:canvas_width => options[:canvas_width],
|
14
|
+
:canvas_height => options[:canvas_height],
|
15
|
+
:canvas_expansion => options[:canvas_expansion],
|
16
|
+
:hide_rulers => options[:hide_rulers],
|
17
|
+
:width => options[:width],
|
18
|
+
:height => options[:height]} %>
|
19
|
+
|
20
|
+
<%= tag :input, { "type" => "hidden", "name" => name, "id" => id, "value" => value }.update(options.except(:show_menu, :hide_image_tool, :canvas_dimensions, :canvas_expansion, :hide_rulers, :width, :height).stringify_keys) %>
|
21
|
+
|
@@ -0,0 +1,51 @@
|
|
1
|
+
<% # Clients of this partial may override the following variables:
|
2
|
+
show_menu ||= false
|
3
|
+
name ||= svgedit
|
4
|
+
value ||= nil
|
5
|
+
options ||= {}
|
6
|
+
%>
|
7
|
+
|
8
|
+
<script type="text/javascript" src="/assets/embedapi.js"></script>
|
9
|
+
<script type="text/javascript">
|
10
|
+
var svgCanvas = null;
|
11
|
+
|
12
|
+
function init_embed() {
|
13
|
+
var frame = document.getElementById('svgedit');
|
14
|
+
svgCanvas = new embedded_svg_edit(frame);
|
15
|
+
svgCanvas.setSvgString("<%= value %>");
|
16
|
+
|
17
|
+
<% unless show_menu %>
|
18
|
+
// Hide main button, as we will be controlling new/load/save etc from the host document
|
19
|
+
var doc;
|
20
|
+
doc = frame.contentDocument;
|
21
|
+
if (!doc) {
|
22
|
+
doc = frame.contentWindow.document;
|
23
|
+
}
|
24
|
+
|
25
|
+
var mainButton = doc.getElementById('main_button');
|
26
|
+
mainButton.style.display = 'none';
|
27
|
+
<% end %>
|
28
|
+
|
29
|
+
$("form").attr("onSubmit", "return saveSvg()");
|
30
|
+
}
|
31
|
+
|
32
|
+
function handleSvgData(data, error) {
|
33
|
+
if (error) {
|
34
|
+
alert('Error: ' + error);
|
35
|
+
return false;
|
36
|
+
}
|
37
|
+
else {
|
38
|
+
$("#<%= sanitize_to_id(name) %>").attr("value", data);
|
39
|
+
return true;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
function saveSvg() {
|
44
|
+
return svgCanvas.getSvgString()(handleSvgData);
|
45
|
+
}
|
46
|
+
</script>
|
47
|
+
|
48
|
+
<iframe src="/assets/svg-editor" width="900px" height="600px" id="svgedit" onload="init_embed()"></iframe>
|
49
|
+
|
50
|
+
<%= tag :input, { "type" => "hidden", "name" => name, "id" => sanitize_to_id(name), "value" => value }.update(options.stringify_keys) %>
|
51
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<% # Clients of this partial may override the following variable:
|
2
|
+
svgstring ||= nil
|
3
|
+
%>
|
4
|
+
<script type="text/javascript" src="/assets/embedapi.js"></script>
|
5
|
+
<script type="text/javascript">
|
6
|
+
var svgCanvas = null;
|
7
|
+
|
8
|
+
function init_embed() {
|
9
|
+
var frame = document.getElementById('svgedit');
|
10
|
+
svgCanvas = new embedded_svg_edit(frame);
|
11
|
+
svgCanvas.setSvgString(svgstring);
|
12
|
+
|
13
|
+
if () {
|
14
|
+
// Hide main button, as we will be controlling new/load/save etc from the host document
|
15
|
+
var doc;
|
16
|
+
doc = frame.contentDocument;
|
17
|
+
if (!doc) {
|
18
|
+
doc = frame.contentWindow.document;
|
19
|
+
}
|
20
|
+
|
21
|
+
var mainButton = doc.getElementById('main_button');
|
22
|
+
mainButton.style.display = 'none';
|
23
|
+
}
|
24
|
+
|
25
|
+
function handleSvgData(data, error) {
|
26
|
+
alert('Congratulations. Your SVG string is back in the host page, do with it what you will\n\n' + data);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
function saveSvg() {
|
31
|
+
svgCanvas.getSvgString()(handleSvgData);
|
32
|
+
}
|
33
|
+
</script>
|
34
|
+
|
35
|
+
<iframe src="/assets/svg-editor" width="900px" height="600px" id="svgedit" onload="init_embed()"></iframe>
|