burp_cms 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE.txt +165 -0
- data/README.markdown +11 -0
- data/Rakefile +56 -0
- data/app/assets/images/burp/add-group-to-menu-1.png +0 -0
- data/app/assets/images/burp/add-group-to-menu-2.png +0 -0
- data/app/assets/images/burp/add-group-to-menu-3.png +0 -0
- data/app/assets/images/burp/add-group-to-menu-4.png +0 -0
- data/app/assets/images/burp/add-image-1.png +0 -0
- data/app/assets/images/burp/add-image-2.png +0 -0
- data/app/assets/images/burp/add-image-3.png +0 -0
- data/app/assets/images/burp/add-image-4.png +0 -0
- data/app/assets/images/burp/add-image-5.png +0 -0
- data/app/assets/images/burp/add-link-to-group-1.png +0 -0
- data/app/assets/images/burp/add-link-to-group-2.png +0 -0
- data/app/assets/images/burp/add-link-to-group-3.png +0 -0
- data/app/assets/images/burp/add-link-to-menu-1.png +0 -0
- data/app/assets/images/burp/add-link-to-menu-2.png +0 -0
- data/app/assets/images/burp/add-link-to-menu-3.png +0 -0
- data/app/assets/images/burp/add-link-to-menu-4.png +0 -0
- data/app/assets/images/burp/add-page-to-menu-1.png +0 -0
- data/app/assets/images/burp/add-page-to-menu-2.png +0 -0
- data/app/assets/images/burp/add-page-to-menu-3.png +0 -0
- data/app/assets/images/burp/add-page-to-menu-4.png +0 -0
- data/app/assets/images/burp/add-page-to-menu-5.png +0 -0
- data/app/assets/images/burp/adding-a-page-1.png +0 -0
- data/app/assets/images/burp/adding-a-page-2.png +0 -0
- data/app/assets/images/burp/adding-a-page-3.png +0 -0
- data/app/assets/images/burp/adding-a-page-4.png +0 -0
- data/app/assets/images/burp/change-page-title-1.png +0 -0
- data/app/assets/images/burp/change-page-title-2.png +0 -0
- data/app/assets/images/burp/change-page-title-3.png +0 -0
- data/app/assets/images/burp/change-page-title-4.png +0 -0
- data/app/assets/images/burp/change-the-text-1.png +0 -0
- data/app/assets/images/burp/change-the-text-2.png +0 -0
- data/app/assets/images/burp/change-the-text-3.png +0 -0
- data/app/assets/images/burp/enter-page-edit-mode-1.png +0 -0
- data/app/assets/images/burp/enter-page-edit-mode-2.png +0 -0
- data/app/assets/images/burp/enter-page-edit-mode-3.png +0 -0
- data/app/assets/images/burp/enter-page-edit-mode-4.jpg +0 -0
- data/app/assets/images/burp/enter-page-edit-mode-4.png +0 -0
- data/app/assets/images/burp/img/glyphicons-halflings-white.png +0 -0
- data/app/assets/images/burp/img/glyphicons-halflings.png +0 -0
- data/app/assets/images/burp/move-link-to-bottom-of-menu-1.png +0 -0
- data/app/assets/images/burp/move-link-to-bottom-of-menu-2.png +0 -0
- data/app/assets/images/burp/move-link-to-bottom-of-menu-3.png +0 -0
- data/app/assets/images/burp/remove-a-page-1.png +0 -0
- data/app/assets/images/burp/remove-a-page-2.png +0 -0
- data/app/assets/images/burp/remove-a-page-3.png +0 -0
- data/app/assets/images/burp/remove-a-page-4.png +0 -0
- data/app/assets/images/burp/remove-image-1.png +0 -0
- data/app/assets/images/burp/remove-image-2.png +0 -0
- data/app/assets/images/burp/remove-image-3.png +0 -0
- data/app/assets/images/burp/remove-image-4.png +0 -0
- data/app/assets/images/burp/remove-image-5.png +0 -0
- data/app/assets/images/burp/remove-page-from-menu-1.png +0 -0
- data/app/assets/images/burp/remove-page-from-menu-2.png +0 -0
- data/app/assets/images/burp/remove-page-from-menu-3.png +0 -0
- data/app/assets/images/burp/remove-page-from-menu-4.png +0 -0
- data/app/assets/javascripts/burp/application.js +22 -0
- data/app/assets/javascripts/burp/burp.js +2 -0
- data/app/assets/javascripts/burp/cms_helper.js +49 -0
- data/app/assets/javascripts/burp/edit-page.js +22 -0
- data/app/assets/javascripts/burp/lib/bootstrap.min.js +6 -0
- data/app/assets/javascripts/burp/lib/debug.js +222 -0
- data/app/assets/javascripts/burp/lib/fileupload.js +1255 -0
- data/app/assets/javascripts/burp/lib/missing-restful-verbs.js +46 -0
- data/app/assets/javascripts/burp/menu-functions.js +28 -0
- data/app/assets/javascripts/burp/pages-drag-and-drop.js +151 -0
- data/app/assets/packages/burp/editing/css/dropzone.css +15 -0
- data/app/assets/packages/burp/editing/css/edit-content.less +126 -0
- data/app/assets/packages/burp/editing/css/gallery.css +167 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/LICENSE +23 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/README.md +8 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/activeline.html +72 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/changemode.html +50 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/closetag.html +65 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/complete.html +70 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/emacs.html +59 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/folding.html +61 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/formatting.html +80 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/fullscreen.html +152 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/loadmode.html +39 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/marker.html +52 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/matchhighlighter.html +37 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/multiplex.html +59 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/mustache.html +57 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/preview.html +76 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/resize.html +41 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/runmode.html +49 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/search.html +83 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/theme.html +78 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/vim.html +50 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/demo/visibletabs.html +61 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/doc/baboon.png +0 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/doc/baboon_vector.svg +153 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/doc/compress.html +148 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/doc/docs.css +154 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/doc/internals.html +494 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/doc/manual.html +1128 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/doc/oldrelease.html +267 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/doc/reporting.html +57 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/doc/upgrade_v2.2.html +95 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/index.html +417 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/keymap/emacs.js +29 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/keymap/vim.js +766 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/codemirror.css +168 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/codemirror.js +3181 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/closetag.js +146 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/dialog.css +23 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/dialog.js +63 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/foldcode.js +196 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/formatting.js +297 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/javascript-hint.js +134 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/loadmode.js +51 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/match-highlighter.js +44 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/multiplex.js +72 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/overlay.js +52 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/pig-hint.js +123 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/runmode.js +49 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/search.js +118 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/searchcursor.js +117 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/simple-hint.css +16 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/lib/util/simple-hint.js +72 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/clike/clike.js +271 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/clike/index.html +101 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/clike/scala.html +765 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/clojure/clojure.js +207 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/clojure/index.html +66 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/coffeescript/LICENSE +22 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/coffeescript/coffeescript.js +347 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/coffeescript/index.html +727 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/css/css.js +124 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/css/index.html +55 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/diff/diff.js +32 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/diff/index.html +104 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/ecl/ecl.js +203 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/ecl/index.html +42 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/erlang/erlang.js +251 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/erlang/index.html +61 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/gfm/gfm.js +144 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/gfm/index.html +47 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/go/go.js +170 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/go/index.html +72 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/groovy/groovy.js +210 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/groovy/index.html +71 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/haskell/haskell.js +242 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/haskell/index.html +60 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/htmlembedded/htmlembedded.js +68 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/htmlembedded/index.html +49 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/htmlmixed/htmlmixed.js +85 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/htmlmixed/index.html +51 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/javascript/index.html +77 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/javascript/javascript.js +361 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/jinja2/index.html +37 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/jinja2/jinja2.js +42 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/less/index.html +618 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/less/less.js +232 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/lua/index.html +72 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/lua/lua.js +140 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/markdown/index.html +338 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/markdown/markdown.js +245 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/mysql/index.html +41 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/mysql/mysql.js +188 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/ntriples/index.html +32 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/ntriples/ntriples.js +172 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/pascal/LICENSE +7 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/pascal/index.html +48 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/pascal/pascal.js +94 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/perl/LICENSE +19 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/perl/index.html +62 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/perl/perl.js +816 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/php/index.html +48 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/php/php.js +150 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/pig/index.html +42 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/pig/pig.js +172 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/plsql/index.html +62 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/plsql/plsql.js +217 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/properties/index.html +40 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/properties/properties.js +63 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/python/LICENSE.txt +21 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/python/index.html +122 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/python/python.js +338 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/r/LICENSE +24 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/r/index.html +73 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/r/r.js +141 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/rpm/changes/changes.js +19 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/rpm/changes/index.html +53 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/rpm/spec/index.html +99 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/rpm/spec/spec.css +5 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/rpm/spec/spec.js +66 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/rst/index.html +525 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/rst/rst.js +326 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/ruby/LICENSE +24 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/ruby/index.html +171 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/ruby/ruby.js +195 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/rust/index.html +48 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/rust/rust.js +432 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/scheme/index.html +64 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/scheme/scheme.js +230 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/shell/index.html +50 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/shell/shell.js +103 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/smalltalk/index.html +55 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/smalltalk/smalltalk.js +139 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/smarty/index.html +82 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/smarty/smarty.js +148 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/sparql/index.html +40 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/sparql/sparql.js +143 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/stex/index.html +95 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/stex/stex.js +182 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/stex/test.html +263 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/tiddlywiki/index.html +140 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/tiddlywiki/tiddlywiki.css +14 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/tiddlywiki/tiddlywiki.js +384 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/tiki/index.html +82 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/tiki/tiki.css +26 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/tiki/tiki.js +316 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/vbscript/index.html +42 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/vbscript/vbscript.js +26 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/velocity/index.html +103 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/velocity/velocity.js +146 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/verilog/index.html +210 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/verilog/verilog.js +194 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/xml/index.html +44 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/xml/xml.js +325 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/xquery/LICENSE +20 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/xquery/index.html +222 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/xquery/test/index.html +27 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/xquery/test/testBase.js +42 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/xquery/test/testEmptySequenceKeyword.js +16 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/xquery/test/testMultiAttr.js +16 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/xquery/test/testNamespaces.js +91 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/xquery/test/testProcessingInstructions.js +16 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/xquery/test/testQuotes.js +19 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/xquery/xquery.js +448 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/yaml/index.html +67 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/mode/yaml/yaml.js +95 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/package.json +29 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/test/index.html +28 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/test/mode_test.css +22 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/test/mode_test.js +164 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/test/test.js +344 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/theme/ambiance.css +81 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/theme/blackboard.css +25 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/theme/cobalt.css +18 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/theme/eclipse.css +25 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/theme/elegant.css +10 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/theme/erlang-dark.css +21 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/theme/lesser-dark.css +44 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/theme/monokai.css +28 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/theme/neat.css +9 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/theme/night.css +21 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/theme/rubyblue.css +21 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/theme/vibrant-ink.css +27 -0
- data/app/assets/packages/burp/editing/dep/CodeMirror-2.3/theme/xq-dark.css +46 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/FontAwesome-Vectors.pdf +3180 -7
- data/app/assets/packages/burp/editing/dep/FontAwesome/FontAwesome.ttf +0 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/README.md +18 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/css/font-awesome-ie7.css +645 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/css/font-awesome.less +309 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/css/font-awesome-ie7.css +213 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/css/font-awesome.css +303 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/css/prettify.css +30 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/css/site.css +4904 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/font/fontawesome-webfont.eot +0 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/font/fontawesome-webfont.svg +255 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/font/fontawesome-webfont.ttf +0 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/font/fontawesome-webfont.woff +0 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/font/museo_slab_300-webfont.eot +0 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/font/museo_slab_300-webfont.ttf +0 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/font/museo_slab_500-webfont.eot +0 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/font/museo_slab_500-webfont.ttf +0 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/font/proximanova-webfont.eot +0 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/font/proximanova-webfont.ttf +0 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/ico/favicon.ico +0 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/backbone.min.js +37 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/index/index.js +89 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/jquery-1.7.1.min.js +4 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/prettify.min.js +28 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/tw-bs-201/bootstrap-alert.js +94 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/tw-bs-201/bootstrap-button.js +98 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/tw-bs-201/bootstrap-carousel.js +157 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/tw-bs-201/bootstrap-collapse.js +136 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/tw-bs-201/bootstrap-dropdown.js +92 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/tw-bs-201/bootstrap-modal.js +210 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/tw-bs-201/bootstrap-popover.js +95 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/tw-bs-201/bootstrap-scrollspy.js +125 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/tw-bs-201/bootstrap-tab.js +130 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/tw-bs-201/bootstrap-tooltip.js +270 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/tw-bs-201/bootstrap-transition.js +51 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/tw-bs-201/bootstrap-typeahead.js +271 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/js/underscore.min.js +31 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/font-awesome-ie7.less +245 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/font-awesome.less +327 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/font-site.less +26 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/mixins.less +43 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/site.less +300 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/accordion.less +33 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/alerts.less +58 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/bootstrap.less +62 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/breadcrumbs.less +24 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/button-groups.less +191 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/buttons.less +191 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/carousel.less +121 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/close.less +29 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/code.less +57 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/component-animations.less +20 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/dropdowns.less +143 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/forms.less +584 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/grid.less +5 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/hero-unit.less +22 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/labels-badges.less +55 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/layouts.less +17 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/mixins.less +631 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/modals.less +90 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/navbar.less +364 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/navs.less +363 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/pager.less +36 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/pagination.less +56 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/popovers.less +49 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/progress-bars.less +117 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/reset.less +126 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/responsive-1200px-min.less +26 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/responsive-767px-max.less +149 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/responsive-768px-979px.less +17 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/responsive-navbar.less +146 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/responsive-utilities.less +41 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/responsive.less +48 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/scaffolding.less +29 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/sprites.less +191 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/tables.less +176 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/thumbnails.less +47 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/tooltip.less +35 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/type.less +235 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/utilities.less +23 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/variables.less +205 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/twbs-203/wells.less +27 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/assets/less/variables.less +206 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/docs/index.html +1087 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/font/fontawesome-webfont.eot +0 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/font/fontawesome-webfont.svg +255 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/font/fontawesome-webfont.ttf +0 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/font/fontawesome-webfont.woff +0 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/less/font-awesome-ie7.less +245 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/less/font-awesome.less +329 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/sass/font-awesome.sass +712 -0
- data/app/assets/packages/burp/editing/dep/FontAwesome/sass/font-awesome.scss +329 -0
- data/app/assets/packages/burp/editing/js/admin-dock.js +282 -0
- data/app/assets/packages/burp/editing/js/content-decorator.js +321 -0
- data/app/assets/packages/burp/editing/js/main.js +331 -0
- data/app/assets/packages/burp/editing/js/marked.js +781 -0
- data/app/assets/packages/burp/editing/js/md5.js +207 -0
- data/app/assets/packages/burp/editing/js/stay.js +143 -0
- data/app/assets/packages/burp/editing.js +23 -0
- data/app/assets/packages/burp/editing.less +7 -0
- data/app/assets/packages/gritter/README.markdown +57 -0
- data/app/assets/packages/gritter/css/jquery.gritter.less +101 -0
- data/app/assets/packages/gritter/gritter.js +3 -0
- data/app/assets/packages/gritter/gritter.less +3 -0
- data/app/assets/packages/gritter/images/gritter-light.png +0 -0
- data/app/assets/packages/gritter/images/gritter-long.png +0 -0
- data/app/assets/packages/gritter/images/gritter.png +0 -0
- data/app/assets/packages/gritter/images/ie-spacer.gif +0 -0
- data/app/assets/packages/gritter/images/trees.jpg +0 -0
- data/app/assets/packages/gritter/index.html +269 -0
- data/app/assets/packages/gritter/js/jquery.gritter.js +418 -0
- data/app/assets/packages/gritter/js/jquery.gritter.min.js +1 -0
- data/app/assets/stylesheets/burp/application.less +82 -0
- data/app/assets/stylesheets/burp/bootstrap.less +6158 -0
- data/app/assets/stylesheets/burp/docs.less +83 -0
- data/app/assets/stylesheets/burp/fileupload.less +31 -0
- data/app/assets/stylesheets/burp/views/dnd-menu.less +87 -0
- data/app/assets/stylesheets/burp/views/files/index.less +40 -0
- data/app/assets/stylesheets/burp/views/pages/index.less +4 -0
- data/app/assets/stylesheets/burp/views/static/help.less +11 -0
- data/app/controllers/burp/application_controller.rb +45 -0
- data/app/controllers/burp/catch_all_controller.rb +24 -0
- data/app/controllers/burp/error_controller.rb +7 -0
- data/app/controllers/burp/files_controller.rb +92 -0
- data/app/controllers/burp/groups_controller.rb +49 -0
- data/app/controllers/burp/links_controller.rb +48 -0
- data/app/controllers/burp/menus_controller.rb +33 -0
- data/app/controllers/burp/pages_controller.rb +112 -0
- data/app/controllers/burp/static_controller.rb +11 -0
- data/app/helpers/burp/application_helper.rb +4 -0
- data/app/lib/burp/access.rb +63 -0
- data/app/lib/burp/group.rb +110 -0
- data/app/lib/burp/link.rb +66 -0
- data/app/lib/burp/page.rb +23 -0
- data/app/lib/burp/util/upload_handler.rb +84 -0
- data/app/lib/burp/util.rb +39 -0
- data/app/models/burp/file_model.rb +45 -0
- data/app/models/burp/menu.rb +60 -0
- data/app/models/burp/page_model.rb +158 -0
- data/app/views/burp/files/index.html.erb +87 -0
- data/app/views/burp/groups/edit.html.erb +18 -0
- data/app/views/burp/links/edit.html.erb +19 -0
- data/app/views/burp/menus/edit.html.erb +157 -0
- data/app/views/burp/menus/index.html.erb +9 -0
- data/app/views/burp/pages/edit.html.erb +20 -0
- data/app/views/burp/pages/index.html.erb +114 -0
- data/app/views/burp/static/help.html.erb +543 -0
- data/app/views/burp/static/index.html.erb +15 -0
- data/app/views/layouts/burp/application.html.erb +57 -0
- data/config/cucumber.yml +12 -0
- data/config/initializers/bootstrap_form.rb +2 -0
- data/config/routes.rb +30 -0
- data/lib/burp/capistrano.rb +51 -0
- data/lib/burp/engine.rb +15 -0
- data/lib/burp/version.rb +3 -0
- data/lib/burp_cms.rb +64 -0
- data/lib/tasks/burp_tasks.rake +99 -0
- metadata +845 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
module Burp
|
|
2
|
+
class Access
|
|
3
|
+
|
|
4
|
+
def initialize(data)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
# If true no http auth check will be made. (Ment as a way to remove Burp's default auth method.)
|
|
8
|
+
def may_skip_http_auth
|
|
9
|
+
false
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Static pages in the CMS
|
|
13
|
+
def may_view_static_page(action)
|
|
14
|
+
true
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# CMS pages
|
|
20
|
+
def may_view_page_list
|
|
21
|
+
true
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def may_create_new_page
|
|
25
|
+
true
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def may_edit_page(page)
|
|
29
|
+
true
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def may_update_page(page)
|
|
33
|
+
true
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def may_remove_page(page)
|
|
37
|
+
true
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def may_view_page_data(page)
|
|
41
|
+
true
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def may_view_page(page)
|
|
45
|
+
true
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# CMS files
|
|
50
|
+
def may_view_file_list
|
|
51
|
+
true
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def may_upload_a_file
|
|
55
|
+
true
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def may_view_file(path)
|
|
59
|
+
true
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
|
|
2
|
+
module Burp
|
|
3
|
+
class Group
|
|
4
|
+
|
|
5
|
+
attr_reader :id
|
|
6
|
+
attr_accessor :children
|
|
7
|
+
attr_accessor :name
|
|
8
|
+
|
|
9
|
+
def initialize(name,options = {})
|
|
10
|
+
@name = name
|
|
11
|
+
@children = (options[:children] || options['children']) || []
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def to_html(request = nil)
|
|
15
|
+
|
|
16
|
+
if first_link
|
|
17
|
+
first_link_in_group = %{<span class="first-link-in-group #{first_link.current_class(request)}">#{first_link.to_html(request,name)}</span>}
|
|
18
|
+
else
|
|
19
|
+
first_link_in_group = ""
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
%{
|
|
24
|
+
<section #{id ? "id='#{id}'" : ""} class="group"><span class="group-name">#{name}</span>
|
|
25
|
+
#{first_link_in_group}
|
|
26
|
+
<ul class="children">
|
|
27
|
+
#{children.inject("") do |x,link| x += "<li class=\"child #{link.is_a?(Group) ? "group" : "link" } #{link.current_class(request)}\">#{link.to_html(request)}</li>" end}
|
|
28
|
+
</ul>
|
|
29
|
+
</section>
|
|
30
|
+
}.html_safe
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def current?(request = nil)
|
|
34
|
+
children.each do |child|
|
|
35
|
+
return true if child.current?(request)
|
|
36
|
+
end
|
|
37
|
+
false
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def current_class(request = nil)
|
|
41
|
+
"current-section" if current?(request)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def first_link
|
|
45
|
+
children.select {|v| v.is_a? Link}.first
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def self.from_yaml(yaml)
|
|
49
|
+
from_hash(YAML.load(yaml))
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def self.from_hash(hash)
|
|
53
|
+
group = Group.new((hash[:name] || hash['name']),hash)
|
|
54
|
+
group.children.map!{|child| (child[:url] || child['url']) ? Link.from_hash(child) : Group.from_hash(child)}
|
|
55
|
+
|
|
56
|
+
group
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def to_hash
|
|
60
|
+
{:name => name, :children => children.map{|child| child.to_hash}}
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def to_yaml
|
|
64
|
+
to_hash.to_yaml
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def to_menu
|
|
68
|
+
menu = Menu.new(self.name)
|
|
69
|
+
menu.children = Group.from_yaml(self.to_yaml).children
|
|
70
|
+
|
|
71
|
+
menu
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def links
|
|
75
|
+
children.map {|child| child.is_a?(Group) ? child.links : child}.flatten
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def to_param
|
|
79
|
+
id
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def update_id(parent_id)
|
|
83
|
+
@id = {:parent_id => parent_id, :hash => self.hash}.hash
|
|
84
|
+
children.each_with_index do |child,index|
|
|
85
|
+
child.update_id("#{self.id}#{index}")
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def all_children
|
|
90
|
+
children+children.map do |child|
|
|
91
|
+
child.is_a?(Group) ? child.all_children : nil
|
|
92
|
+
end.flatten.compact
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def <=>(other)
|
|
98
|
+
other.is_a?(Group) || other.is_a?(Link) ? name <=> other.name : 0
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def eql?(other)
|
|
102
|
+
self.class == other.class && self.hash == other.hash
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def hash
|
|
106
|
+
to_hash.hash
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|
|
110
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
module Burp
|
|
2
|
+
class Link
|
|
3
|
+
|
|
4
|
+
attr_reader :id
|
|
5
|
+
attr_accessor :url,:name
|
|
6
|
+
|
|
7
|
+
def initialize(options)
|
|
8
|
+
self.name = options.keys.first
|
|
9
|
+
self.url = options.values.first
|
|
10
|
+
|
|
11
|
+
raise ArgumentError.new("Missing a url") unless url
|
|
12
|
+
raise ArgumentError.new("Missing a name") unless name
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def current?(request = nil)
|
|
16
|
+
request && request.path == url
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def current_class(request = nil)
|
|
20
|
+
current?(request) ? "current-url" : ""
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def to_html(request = nil,name = nil)
|
|
24
|
+
%{<a class="#{current_class(request)}" #{id ? "id='#{id}'" : ""} href="#{url}">#{name || self.name}</a>}.html_safe
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def to_param
|
|
28
|
+
id
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.from_yaml(yaml)
|
|
32
|
+
from_hash(YAML::load(yaml))
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def self.from_hash(hash)
|
|
36
|
+
Link.new((hash[:name] || hash['name']) => (hash[:url] || hash['url']))
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def to_hash
|
|
40
|
+
{:name => name, :url => url}
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def to_yaml
|
|
44
|
+
to_hash.to_yaml
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def update_id(parent_id)
|
|
49
|
+
@id = {:parent_id => parent_id, :hash => self.hash}.hash
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def <=>(other)
|
|
54
|
+
other.is_a?(Group) || other.is_a?(Link) ? name <=> other.name : 0
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def eql?(other)
|
|
58
|
+
self.class == other.class && self.hash == other.hash
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def hash
|
|
62
|
+
to_hash.hash
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Burp
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Page
|
|
5
|
+
|
|
6
|
+
attr_accessor :snippets,:title
|
|
7
|
+
|
|
8
|
+
def initialize(options = {})
|
|
9
|
+
@snippets = options[:snippets] || {}
|
|
10
|
+
@title = options[:title] || ""
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def [](location_name)
|
|
14
|
+
("<!-- snippet data-type=\"start\" data-name=\"#{location_name}\" -->"+(@snippets[location_name.to_sym] || "<h2>#{location_name.to_s}</h2>")+"<!-- snippet data-type=\"end\" data-name=\"#{location_name}\" -->").html_safe
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def []=(location_name,value)
|
|
18
|
+
@snippets[location_name.to_sym] = value
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
|
|
4
|
+
module Burp
|
|
5
|
+
module Util
|
|
6
|
+
|
|
7
|
+
class UploadHandler
|
|
8
|
+
|
|
9
|
+
def self.handle file_or_file_name,request
|
|
10
|
+
|
|
11
|
+
tempfile = handle_raw_data(file_or_file_name,request)
|
|
12
|
+
|
|
13
|
+
shasum = `shasum #{tempfile.path}`.match(/^([0-9a-f]{40})/i)[1]
|
|
14
|
+
new_dir = "/tmp/#{shasum}_#{Time.now.to_i}/"
|
|
15
|
+
new_path = "#{new_dir}#{tempfile.original_filename}"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Dir.mkdir(new_dir)
|
|
19
|
+
FileUtils.mv(tempfile.path,new_path)
|
|
20
|
+
|
|
21
|
+
tempfile.close(true)
|
|
22
|
+
|
|
23
|
+
yield(UploadedFile.new(new_path,shasum))
|
|
24
|
+
ensure
|
|
25
|
+
File.unlink(new_path) if new_path && File.exist?(new_path)
|
|
26
|
+
Dir.rmdir(new_dir) if new_dir && File.exist?(new_dir)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
class UploadedFile
|
|
30
|
+
|
|
31
|
+
def initialize path,shasum
|
|
32
|
+
@path = path
|
|
33
|
+
@shasum = shasum
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def path
|
|
37
|
+
@path
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def size
|
|
41
|
+
File.size(self.path)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def sha1sum
|
|
45
|
+
@shasum
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# http://github.com/valums/file-uploader
|
|
52
|
+
def self.handle_raw_data tempfile,request
|
|
53
|
+
if tempfile.is_a? String
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
file = Tempfile.new('foo',:encoding => 'ascii-8bit')
|
|
57
|
+
while s = request.env['rack.input'].read(16*1024)
|
|
58
|
+
file.write(s)
|
|
59
|
+
end
|
|
60
|
+
file.flush
|
|
61
|
+
|
|
62
|
+
def file.original_filename
|
|
63
|
+
@file_name
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def file.tempfile
|
|
67
|
+
self
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def file.original_filename= value
|
|
71
|
+
@file_name = value
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
file.original_filename = File.basename(tempfile)
|
|
75
|
+
|
|
76
|
+
file
|
|
77
|
+
else
|
|
78
|
+
tempfile
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
require 'RMagick'
|
|
4
|
+
|
|
5
|
+
module Burp
|
|
6
|
+
module Util
|
|
7
|
+
|
|
8
|
+
def self.commit(message = "auto commit")
|
|
9
|
+
raise "missing git repo in burp cms directory" unless File.exist?("#{Burp.content_directory}/.git")
|
|
10
|
+
`cd #{Burp.content_directory}; git add .; git commit -a -m "Burp: #{message}"`
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.create_smaller_images(file_path)
|
|
14
|
+
|
|
15
|
+
upload_directory_path = "#{Burp.content_directory}uploads/"
|
|
16
|
+
|
|
17
|
+
sizes = {:small => [200,300],:medium => [600,900], :large => [1000,1500]}
|
|
18
|
+
image = Magick::ImageList.new(file_path).first
|
|
19
|
+
image.auto_orient!
|
|
20
|
+
|
|
21
|
+
sizes.each_pair do |key,value|
|
|
22
|
+
|
|
23
|
+
FileUtils.mkdir_p("#{upload_directory_path}#{key.to_s}")
|
|
24
|
+
target_path = "#{upload_directory_path}#{key.to_s}/#{File.basename(file_path)}"
|
|
25
|
+
|
|
26
|
+
if value[0] < image.columns # We only downscale
|
|
27
|
+
image.resize_to_fit(value[0],value[1]).write(target_path) { self.quality = 75 }
|
|
28
|
+
else
|
|
29
|
+
File.unlink(target_path) if File.exist?(target_path)
|
|
30
|
+
File.symlink("../#{File.basename(file_path)}",target_path)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
image.destroy!
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
module Burp
|
|
2
|
+
class FileModel
|
|
3
|
+
|
|
4
|
+
attr_accessor :public_path
|
|
5
|
+
|
|
6
|
+
def initialize(public_path)
|
|
7
|
+
self.public_path = public_path
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.all
|
|
11
|
+
@file_paths = Dir.glob("#{Burp.content_directory}uploads/*").select{|path| File.file?(path) }
|
|
12
|
+
@file_paths = @file_paths.map {|path| path.gsub("#{Burp.content_directory}uploads/","/burp/files/") }
|
|
13
|
+
@file_paths.map {|path| FileModel.new(path)}.sort.reverse
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def to_param
|
|
17
|
+
public_path
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def on_disk_path
|
|
21
|
+
public_path.gsub("/burp/files/","#{Burp.content_directory}uploads/")
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def mtime
|
|
25
|
+
@mtime_cache ||= File.mtime(on_disk_path)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def size
|
|
29
|
+
@size_cache ||= File.size(on_disk_path)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def <=>(other)
|
|
33
|
+
other.is_a?(FileModel) ? self.mtime <=> other.mtime : 0
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def eql?(other)
|
|
37
|
+
self.class == other.class && self.hash == other.hash
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def hash
|
|
41
|
+
public_path.hash
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
module Burp
|
|
2
|
+
class Menu < Group
|
|
3
|
+
|
|
4
|
+
def initialize(name,options = {})
|
|
5
|
+
raise "Name cant be blank" if name.blank?
|
|
6
|
+
self.name = name
|
|
7
|
+
super(name,options)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.all
|
|
11
|
+
Dir.glob(Burp.content_directory + "menus/*.yaml").map do |menu_path|
|
|
12
|
+
Menu.find(menu_path.match(/\/(\w*?)\.yaml$/)[1])
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.count
|
|
17
|
+
Dir.glob(Burp.content_directory + "menus/*.yaml").length
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.find(name)
|
|
21
|
+
menu = Menu.new(name)
|
|
22
|
+
if(menu.load)
|
|
23
|
+
menu
|
|
24
|
+
else
|
|
25
|
+
nil
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def to_param
|
|
30
|
+
name
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def load
|
|
34
|
+
if File.exist?(path)
|
|
35
|
+
group = Group.from_yaml(File.read(path))
|
|
36
|
+
self.children = group.children
|
|
37
|
+
|
|
38
|
+
true
|
|
39
|
+
else
|
|
40
|
+
false
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def save
|
|
45
|
+
raise "Name cant be blank" if name.blank?
|
|
46
|
+
|
|
47
|
+
File.open(path,'w') do |file|
|
|
48
|
+
file.write(self.to_yaml)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
Burp::Util.commit("Saved #{self.name}")
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
def path
|
|
57
|
+
Burp.content_directory + "menus/" + name + ".yaml"
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
|
|
4
|
+
module Burp
|
|
5
|
+
class PageModel
|
|
6
|
+
|
|
7
|
+
include ActiveModel::Validations
|
|
8
|
+
include ActiveModel::Conversion
|
|
9
|
+
extend ActiveModel::Naming
|
|
10
|
+
|
|
11
|
+
attr_accessor :path, :title, :snippets, :misc
|
|
12
|
+
|
|
13
|
+
validates_presence_of :path, :message => "You must enter a path"
|
|
14
|
+
validates :path, :format => { :with => /^\//, :message => "Must start with a slash" }
|
|
15
|
+
validates :path, :format => { :with => /^[a-zA-Z0-9\-\.\/]+$/, :message => "Invalid path" }
|
|
16
|
+
validate do
|
|
17
|
+
if File.exist?("#{on_disk_path}/page.json") && @original_path != path
|
|
18
|
+
errors.add(:path, "Path already taken, #{path}")
|
|
19
|
+
false
|
|
20
|
+
else
|
|
21
|
+
true
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def initialize(values = {:path => '', :snippets => {}})
|
|
28
|
+
|
|
29
|
+
values.each_entry do |key,value|
|
|
30
|
+
self.send("#{key}=".to_sym,value) if self.respond_to?("#{key}=".to_sym)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
@original_path = values[:original_path]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.find(path)
|
|
37
|
+
|
|
38
|
+
fixed_path = path == '/' ? '/#root' : path
|
|
39
|
+
on_disk_path = Burp.content_directory+"pages/" + fixed_path
|
|
40
|
+
on_disk_path = on_disk_path.gsub('//','/')
|
|
41
|
+
|
|
42
|
+
if File.directory?(on_disk_path) && File.exist?("#{on_disk_path}/page.json")
|
|
43
|
+
|
|
44
|
+
data = {}
|
|
45
|
+
Dir.glob(on_disk_path+"/*.html").each do |snippet_path|
|
|
46
|
+
name = File.basename(snippet_path).split('.').first
|
|
47
|
+
data[name.to_sym] = File.read(snippet_path).html_safe
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
page_data = File.exist?("#{on_disk_path}/page.json") ? JSON.parse(File.read("#{on_disk_path}/page.json")) : {}
|
|
51
|
+
|
|
52
|
+
PageModel.new(:snippets => data,:title => page_data['title'],:misc => page_data['misc'],:path => path, :original_path => path)
|
|
53
|
+
else
|
|
54
|
+
nil
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def to_param
|
|
59
|
+
path == "/" ? "/$root" : path
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def id
|
|
63
|
+
to_param
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def self.all_paths
|
|
67
|
+
((Dir.glob("#{Burp.content_directory}pages/**/*.html") + Dir.glob("#{Burp.content_directory}pages/**/*.json")).map {|path| File.dirname(path.gsub(Burp.content_directory+"pages/","/")).gsub("/#root",'/') }).uniq
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def self.all
|
|
71
|
+
all_paths.map {|path| find(path) }
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def save
|
|
75
|
+
if valid?
|
|
76
|
+
remove_dir
|
|
77
|
+
remove_dir(@original_path) unless @original_path.blank?
|
|
78
|
+
create_target_dir
|
|
79
|
+
save_metadata
|
|
80
|
+
save_snippets
|
|
81
|
+
|
|
82
|
+
Burp::Util.commit("Saved #{self.path}")
|
|
83
|
+
|
|
84
|
+
true
|
|
85
|
+
else
|
|
86
|
+
false
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def remove
|
|
91
|
+
raise "Path must start with a slash '/'" unless path.start_with?("/")
|
|
92
|
+
remove_dir
|
|
93
|
+
Burp::Util.commit("Removed #{self.path}")
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def root_fixed_path(path = self.path)
|
|
97
|
+
path == '/' ? '/#root' : path
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def persisted?
|
|
101
|
+
!!@original_path
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def self.model_name
|
|
105
|
+
ActiveModel::Name.new(PageModel,nil,"Page")
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
private
|
|
109
|
+
|
|
110
|
+
def save_metadata
|
|
111
|
+
|
|
112
|
+
File.open("#{on_disk_path}/page.json","w:utf-8") do |file|
|
|
113
|
+
file.write(JSON.pretty_generate({:title => title,:misc => misc}))
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def save_snippets
|
|
119
|
+
snippets.each_entry do |name,value|
|
|
120
|
+
File.open("#{on_disk_path}/#{name}.html","w:utf-8") do |file|
|
|
121
|
+
file.write(value)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def create_target_dir
|
|
127
|
+
FileUtils.mkdir_p(on_disk_path)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def cleanup_target
|
|
131
|
+
remove_dir
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def remove_dir(path = self.path)
|
|
135
|
+
Dir.glob("#{on_disk_path(path)}/*.html").each do |path|
|
|
136
|
+
File.unlink(path)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
Dir.glob("#{on_disk_path(path)}/*.json").each do |path|
|
|
140
|
+
File.unlink(path)
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# We only remove the dir if its actualy empyt
|
|
144
|
+
if(Dir.glob("#{on_disk_path(path)}/*").length == 0)
|
|
145
|
+
directory_path = on_disk_path(path)
|
|
146
|
+
while(directory_path.start_with?(Burp.content_directory+"pages/") && Dir.glob("#{directory_path}/*").length == 0)
|
|
147
|
+
FileUtils.rmdir(directory_path)
|
|
148
|
+
directory_path = File.dirname(directory_path)
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def on_disk_path(path = self.path)
|
|
154
|
+
on_disk_path = "#{Burp.content_directory}pages/#{root_fixed_path(path)}"
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
end
|
|
158
|
+
end
|