qooxview 1.9.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.project +13 -0
- data/.ruby-version +1 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +89 -0
- data/LICENSE.txt +619 -0
- data/README.md +31 -0
- data/Rakefile +2 -0
- data/VERSIONS +12 -0
- data/lib/qooxview/additions.rb +161 -0
- data/lib/qooxview/config_yaml.rb +42 -0
- data/lib/qooxview/entity.rb +698 -0
- data/lib/qooxview/frontend/1build_generate +14 -0
- data/lib/qooxview/frontend/2src_generate +4 -0
- data/lib/qooxview/frontend/Manifest.json +34 -0
- data/lib/qooxview/frontend/README +19 -0
- data/lib/qooxview/frontend/UploadMgr/.project +11 -0
- data/lib/qooxview/frontend/UploadMgr/Manifest.json +34 -0
- data/lib/qooxview/frontend/UploadMgr/config.json +77 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/Manifest.json +34 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/config.json +84 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/generate.py +72 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/Application.js +224 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/simulation/DemoSimulation.js +44 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/test/DemoTest.js +55 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/theme/Appearance.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/theme/Color.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/theme/Decoration.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/theme/Font.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/theme/Theme.js +21 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/index.html +9 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/resource/uploadmgr/demo/test.png +0 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/script/uploadmgr.demo.d88b4fb45db4.js +1 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/script/uploadmgr.demo.js +211 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/translation/readme.txt +3 -0
- data/lib/qooxview/frontend/UploadMgr/generate.py +72 -0
- data/lib/qooxview/frontend/UploadMgr/server/LICENSE.TXT +3 -0
- data/lib/qooxview/frontend/UploadMgr/server/README.txt +3 -0
- data/lib/qooxview/frontend/UploadMgr/server/java/com/zenesis/qx/upload/DemoUploadServlet.java +176 -0
- data/lib/qooxview/frontend/UploadMgr/server/perl.cgi +62 -0
- data/lib/qooxview/frontend/UploadMgr/server/php.php +116 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/AbstractHandler.js +278 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/File.js +178 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/FormHandler.js +192 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/InputElement.js +68 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/MParameters.js +67 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/MUploadButton.js +40 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/UploadButton.js +35 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/UploadMgr.js +301 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/UploadToolbarButton.js +35 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/XhrHandler.js +176 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/simulation/DemoSimulation.js +44 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/test/DemoTest.js +55 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/theme/Appearance.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/theme/Color.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/theme/Decoration.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/theme/Font.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/theme/Theme.js +21 -0
- data/lib/qooxview/frontend/UploadMgr/source/index.html +9 -0
- data/lib/qooxview/frontend/UploadMgr/source/resource/com/zenesis/qx/upload/banner-bg.png +0 -0
- data/lib/qooxview/frontend/UploadMgr/source/resource/com/zenesis/qx/upload/banner.png +0 -0
- data/lib/qooxview/frontend/UploadMgr/source/resource/com/zenesis/qx/upload/logo.gif +0 -0
- data/lib/qooxview/frontend/UploadMgr/source/resource/com/zenesis/qx/upload/test.png +0 -0
- data/lib/qooxview/frontend/UploadMgr/source/translation/readme.txt +3 -0
- data/lib/qooxview/frontend/build/index.html +11 -0
- data/lib/qooxview/frontend/build/resource/frontend/test.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/app-header.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/down-invert.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/down-small-invert.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/down-small.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/down.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/forward.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/left-invert.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/left.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/rewind.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/right-invert.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/right.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/up-invert.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/up-small.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/up.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/button-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/button-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/checkradio-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/colorselector/brightness-field.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/colorselector/brightness-handle.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/colorselector/huesaturation-field.jpg +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/colorselector/huesaturation-handle.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/colorselector-combined.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/cursors/alias.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/cursors/copy.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/cursors/move.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/cursors/nodrop.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/cursors-combined.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-focused-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-hovered-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-pressed-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-pressed.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-focused-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-hovered-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-pressed-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-pressed.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-undetermined-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-undetermined-focused-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-undetermined-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-undetermined-hovered-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-undetermined-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-undetermined-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-undetermined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checked-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checked.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/input-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/input.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-focused-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-hovered-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-pressed-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-pressed.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-focused-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-hovered-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-pressed-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-pressed.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-arrow-right.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-arrow.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/undetermined-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/undetermined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/group-item.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu/background.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu/bar-background.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu/checkbox-invert.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu/checkbox.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu/radiobutton-invert.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu/radiobutton.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu-background-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu-checkradio-combined.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-bg-horizontal.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-bg-pressed-horizontal.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-bg-pressed-vertical.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-bg-vertical.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-button-bg-horizontal.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-button-bg-vertical.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-down.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-left.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-right.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-up.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/slider-knob-background.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/selection.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow-small-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow-small-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/splitpane/knob-horizontal.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/splitpane/knob-vertical.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/splitpane-knobs-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/table/ascending.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/table/boolean-false.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/table/boolean-true.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/table/descending.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/table/header-cell.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/table/select-column-order.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/table-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-bottom-active-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-bottom-active-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-bottom-inactive-b-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-bottom-inactive-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-bottom-inactive-t-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-left-active-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-left-active-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-left-inactive-b-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-left-inactive-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-left-inactive-t-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-right-active-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-right-active-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-right-inactive-b-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-right-inactive-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-right-inactive-t-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-top-active-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-top-active-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-top-inactive-b-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-top-inactive-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-top-inactive-t-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-pane-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-pane-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/toolbar/toolbar-gradient-blue.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/toolbar/toolbar-gradient.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/toolbar/toolbar-handle-knob.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/toolbar/toolbar-part.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/toolbar-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tooltip-error-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tooltip-error-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tree/closed-selected.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tree/closed.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tree/open-selected.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tree/open.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tree-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/close-active-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/close-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/close-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/maximize-active-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/maximize-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/maximize-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/minimize-active-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/minimize-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/minimize-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/restore-active-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/restore-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/restore-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window-captionbar-buttons-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window-captionbar-lr-active-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window-captionbar-lr-inactive-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window-captionbar-tb-active-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window-captionbar-tb-inactive-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window-statusbar-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window-statusbar-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/actions/dialog-cancel.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/actions/dialog-ok.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/actions/view-refresh.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/actions/window-close.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/apps/office-calendar.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/apps/utilities-color-chooser.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/mimetypes/office-document.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/places/folder-open.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/places/folder.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/22/mimetypes/office-document.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/22/places/folder-open.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/22/places/folder.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/32/mimetypes/office-document.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/32/places/folder-open.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/32/places/folder.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/static/blank.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/static/blank.png +0 -0
- data/lib/qooxview/frontend/build/script/frontend.js +213 -0
- data/lib/qooxview/frontend/config.json +58 -0
- data/lib/qooxview/frontend/generate.py +149 -0
- data/lib/qooxview/frontend/mklink +2 -0
- data/lib/qooxview/frontend/readme.txt +11 -0
- data/lib/qooxview/frontend/source/class/frontend/Application.js +84 -0
- data/lib/qooxview/frontend/source/class/frontend/LAYOUT +120 -0
- data/lib/qooxview/frontend/source/class/frontend/Lib/Fields.js +1486 -0
- data/lib/qooxview/frontend/source/class/frontend/Lib/RPC.js +104 -0
- data/lib/qooxview/frontend/source/class/frontend/Lib/TimerF.js +63 -0
- data/lib/qooxview/frontend/source/class/frontend/Views/Form.js +150 -0
- data/lib/qooxview/frontend/source/class/frontend/Views/Ltab.js +633 -0
- data/lib/qooxview/frontend/source/class/frontend/__init__.js +6 -0
- data/lib/qooxview/frontend/source/class/frontend/globals.js +51 -0
- data/lib/qooxview/frontend/source/class/frontend/simulation/DemoSimulation.js +42 -0
- data/lib/qooxview/frontend/source/class/frontend/test/DemoTest.js +55 -0
- data/lib/qooxview/frontend/source/class/frontend/theme/Appearance.js +18 -0
- data/lib/qooxview/frontend/source/class/frontend/theme/Color.js +18 -0
- data/lib/qooxview/frontend/source/class/frontend/theme/Decoration.js +18 -0
- data/lib/qooxview/frontend/source/class/frontend/theme/Font.js +18 -0
- data/lib/qooxview/frontend/source/class/frontend/theme/Theme.js +21 -0
- data/lib/qooxview/frontend/source/index.html +11 -0
- data/lib/qooxview/frontend/source/resource/frontend/test.png +0 -0
- data/lib/qooxview/frontend/source/translation/readme.txt +3 -0
- data/lib/qooxview/helpers/config_base.rb +264 -0
- data/lib/qooxview/helpers/icc.rb +222 -0
- data/lib/qooxview/helpers/make_steps.rb +77 -0
- data/lib/qooxview/helpers/migration_version.rb +18 -0
- data/lib/qooxview/helpers/open_print.rb +286 -0
- data/lib/qooxview/helpers/permission.rb +146 -0
- data/lib/qooxview/helpers/qoox_parser.rb +54 -0
- data/lib/qooxview/helpers/session.rb +68 -0
- data/lib/qooxview/helpers/static.rb +23 -0
- data/lib/qooxview/helpers/upload_files.rb +27 -0
- data/lib/qooxview/helpers/vtlist_pane.rb +158 -0
- data/lib/qooxview/helpers/welcome.rb +55 -0
- data/lib/qooxview/qooxview.rb +175 -0
- data/lib/qooxview/rpcqooxdoo.rb +395 -0
- data/lib/qooxview/storage_handler.rb +455 -0
- data/lib/qooxview/storage_type.rb +129 -0
- data/lib/qooxview/storages/csv.rb +170 -0
- data/lib/qooxview/storages/ldap.rb +238 -0
- data/lib/qooxview/storages/sqlite.rb +198 -0
- data/lib/qooxview/value.rb +202 -0
- data/lib/qooxview/version.rb +3 -0
- data/lib/qooxview/view.rb +904 -0
- data/lib/qooxview.rb +83 -0
- data/qooxview.gemspec +50 -0
- data/test/benchmark_creation.rb +37 -0
- data/test/config.yaml +36 -0
- data/test/entities/config.rb +33 -0
- data/test/entities/course.rb +28 -0
- data/test/entities/databases.rb +17 -0
- data/test/entities/doubleCase.rb +12 -0
- data/test/entities/dummies.rb +24 -0
- data/test/entities/inventory.rb +6 -0
- data/test/entities/needs.rb +20 -0
- data/test/entities/person.rb +73 -0
- data/test/file_binary.bin +0 -0
- data/test/files/print_formulas.ods +0 -0
- data/test/files/print_formulas_2.ods +0 -0
- data/test/files/student_card.odg +0 -0
- data/test/gettext.po +24 -0
- data/test/gettext.pot +0 -0
- data/test/messages.mo +0 -0
- data/test/po/fr/LC_MESSAGES/gettext.mo +0 -0
- data/test/qooxdoo-layout-frontend.js +49 -0
- data/test/qv_configbase.rb +98 -0
- data/test/qv_entity.rb +271 -0
- data/test/qv_gettext.rb +28 -0
- data/test/qv_helpers.rb +173 -0
- data/test/qv_icc.rb +60 -0
- data/test/qv_migration.rb +130 -0
- data/test/qv_permission.rb +34 -0
- data/test/qv_print.rb +73 -0
- data/test/qv_session.rb +29 -0
- data/test/qv_sqlite.rb +73 -0
- data/test/qv_store_csv.rb +86 -0
- data/test/qv_stype.rb +41 -0
- data/test/qv_view.rb +204 -0
- data/test/st_dummy.rb +30 -0
- data/test/test.rb +49 -0
- data/test/views/aview.rb +24 -0
- data/test/views/bview.rb +10 -0
- data/test/views/configviews.rb +19 -0
- data/test/views/courseshow.rb +11 -0
- data/test/views/cview.rb +22 -0
- data/test/views/login.rb +15 -0
- data/test/views/print.rb +10 -0
- metadata +1068 -0
@@ -0,0 +1,170 @@
|
|
1
|
+
class CSV < StorageType
|
2
|
+
|
3
|
+
def configure(config)
|
4
|
+
dputs(3) { "Configuring CSV with #{@name}" }
|
5
|
+
@csv_dir = 'data/'
|
6
|
+
@add_only = false
|
7
|
+
@backup_count = 5
|
8
|
+
super config
|
9
|
+
@csv_backup = "#{@csv_dir}/backup/"
|
10
|
+
@csv_name = "#{@entity.class.name}.csv"
|
11
|
+
@csv_file = @csv_dir + @csv_name
|
12
|
+
@csv_backup_file = @csv_backup + @csv_name
|
13
|
+
dputs(5) { "data_file is #{@csv_file}" }
|
14
|
+
|
15
|
+
@mutex = Mutex.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def write_line(f, d)
|
19
|
+
# Only write non-nil data
|
20
|
+
d = d.select { |k, v| v }
|
21
|
+
# And convert the Array back into a Hash
|
22
|
+
d = Hash[*d.flatten(1)]
|
23
|
+
# If there is only nil-data (except the field-id), don't write it!
|
24
|
+
if d.length > 1
|
25
|
+
dputs(5) { "Writing line #{d.inspect}" }
|
26
|
+
f << d.to_json << "\n"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Saves the data stored, optionally takes an index to say
|
31
|
+
# which data needs to be saved
|
32
|
+
def save(data)
|
33
|
+
@add_only ?
|
34
|
+
dputs(5) { "Not saving data for #{@name}" } :
|
35
|
+
@mutex.synchronize {
|
36
|
+
begin
|
37
|
+
dputs(3) { "Saving data for #{@name} to #{@csv_dir} - #{@csv_file}" }
|
38
|
+
[@csv_dir, @csv_backup].each { |d|
|
39
|
+
FileUtils.mkdir_p d unless File.exists? d
|
40
|
+
}
|
41
|
+
#dputs(5) { "Data is #{data.inspect}" }
|
42
|
+
|
43
|
+
if File.exists? @csv_file
|
44
|
+
time = File.mtime(@csv_file).strftime('%Y%m%d_%H%M%S')
|
45
|
+
backup = "#{@csv_backup_file}.#{time}"
|
46
|
+
counter = 1
|
47
|
+
while File.exists? backup
|
48
|
+
backup = "#{@csv_backup_file}.#{time}-#{counter}"
|
49
|
+
counter += 1
|
50
|
+
end
|
51
|
+
FileUtils.cp @csv_file, backup
|
52
|
+
end
|
53
|
+
|
54
|
+
tmpfile = "#{@csv_file}_tmp"
|
55
|
+
File.open(tmpfile, 'w') { |f|
|
56
|
+
data_each(data) { |d|
|
57
|
+
write_line(f, d)
|
58
|
+
if di = @entity.data_instances[d[@data_field_id]]
|
59
|
+
di.changed = false
|
60
|
+
end
|
61
|
+
}
|
62
|
+
}
|
63
|
+
FileUtils.mv tmpfile, @csv_file
|
64
|
+
#%x[ sync ]
|
65
|
+
dputs(3) { 'Delete oldest file(s)' }
|
66
|
+
if (backups = Dir.glob("#{@csv_backup_file}.*").sort).size > @backup_count
|
67
|
+
oldfiles = backups.first(backups.size - @backup_count)
|
68
|
+
dputs(3){"Deleting #{oldfiles.inspect}"}
|
69
|
+
FileUtils.rm oldfiles
|
70
|
+
end
|
71
|
+
rescue Exception => e
|
72
|
+
dputs(0) { "Error: couldn't save CSV #{@name}" }
|
73
|
+
dputs(0) { "#{e.inspect}" }
|
74
|
+
dputs(0) { "#{e.to_s}" }
|
75
|
+
puts e.backtrace
|
76
|
+
end
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
80
|
+
# Each new entry is directly stored if @add_only is true
|
81
|
+
def data_create(data)
|
82
|
+
@add_only or return
|
83
|
+
@mutex.synchronize {
|
84
|
+
begin
|
85
|
+
FileUtils.mkdir_p @csv_dir unless File.exists? @csv_dir
|
86
|
+
tmpfile = "#{@csv_file}_tmp"
|
87
|
+
File.exists? @csv_file and FileUtils.cp @csv_file, tmpfile
|
88
|
+
File.open(tmpfile, 'a') { |f|
|
89
|
+
write_line(f, data)
|
90
|
+
}
|
91
|
+
#%x[ sync ]
|
92
|
+
dputs(5) { 'Moving file' }
|
93
|
+
FileUtils.mv tmpfile, @csv_file
|
94
|
+
rescue Exception => e
|
95
|
+
dputs(0) { "Error: couldn't save newly created data #{self.class.name}" }
|
96
|
+
dputs(0) { "#{e.inspect}" }
|
97
|
+
dputs(0) { "#{e.to_s}" }
|
98
|
+
puts e.backtrace
|
99
|
+
end
|
100
|
+
}
|
101
|
+
end
|
102
|
+
|
103
|
+
# Restores somewhat sane directory with all saved files in 'backup'
|
104
|
+
def cleanup
|
105
|
+
FileUtils.mkdir @csv_backup unless File.exists? @csv_backup
|
106
|
+
log_msg :CSV, "Cleaning up #{@csv_file}"
|
107
|
+
Dir.glob("#{@csv_file}*").each { |f|
|
108
|
+
time = File.mtime(f).strftime('%Y%m%d_%H%M%S')
|
109
|
+
FileUtils.mv f, "#{@csv_backup_file}.#{time}"
|
110
|
+
}
|
111
|
+
FileUtils.mv Dir.glob("#{@csv_backup_file}*").sort.reverse.first, @csv_file
|
112
|
+
end
|
113
|
+
|
114
|
+
# loads the data
|
115
|
+
def load
|
116
|
+
# Go and fetch eventual existing data from the file
|
117
|
+
dputs(3) { "Starting to load #{@csv_file}" }
|
118
|
+
@mutex.synchronize {
|
119
|
+
cleanup if Dir.glob("#{@csv_file}*").size > 1
|
120
|
+
["#{@csv_file}"].concat(Dir.glob("#{@csv_backup_file}*").sort.reverse).each { |file|
|
121
|
+
next if (!File.exists?(file) || File.size(file) == 0)
|
122
|
+
begin
|
123
|
+
dputs(3) { "Loading file #{file}" }
|
124
|
+
data = {}
|
125
|
+
File.open(file, 'r').readlines().each { |l|
|
126
|
+
dputs(5) { "Reading line #{l}" }
|
127
|
+
# Convert the keys in the lines back to Symbols
|
128
|
+
data_parse = JSON.parse(l)
|
129
|
+
data_csv = {}
|
130
|
+
data_parse.each { |k, v|
|
131
|
+
data_csv.merge!({k.to_sym => v})
|
132
|
+
}
|
133
|
+
# dputs( 5 ){ "Putting #{data_csv.inspect}" }
|
134
|
+
did = data_csv[@data_field_id] = data_csv[@data_field_id].to_i
|
135
|
+
data[did] = data_csv
|
136
|
+
}
|
137
|
+
dputs(5) { "data is now #{data.inspect}" }
|
138
|
+
return data
|
139
|
+
rescue JSON::ParserError
|
140
|
+
log_msg :CSV, "Oups - couldn't load CSV for #{file}"
|
141
|
+
FileUtils.rm file
|
142
|
+
end
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
return {}
|
147
|
+
end
|
148
|
+
|
149
|
+
def check_login(uid, pass)
|
150
|
+
dputs(3) { "Searching in the CSV data" }
|
151
|
+
index = @entity.find_index_by(:full_name, uid)
|
152
|
+
if index
|
153
|
+
dputs(3) { "Found index #{index} with pass #{@entity.data[index][:password]}" }
|
154
|
+
return @entity.data[index][:password] == pass
|
155
|
+
end
|
156
|
+
dputs(3) { "Didn't find user with uid of #{uid}" }
|
157
|
+
return false
|
158
|
+
end
|
159
|
+
|
160
|
+
def delete_all(local_only = false)
|
161
|
+
# Making it in two steps is more secure... Luckily MacOSX doesn't mind
|
162
|
+
# rm -rf /*
|
163
|
+
# as a user ;)
|
164
|
+
if not local_only
|
165
|
+
dputs(2) { "Deleting #{@csv_dir}" }
|
166
|
+
FileUtils.rm Dir.glob("#{@csv_file}")
|
167
|
+
FileUtils.rm Dir.glob("#{@csv_backup_file}*")
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
@@ -0,0 +1,238 @@
|
|
1
|
+
require 'net/ldap'
|
2
|
+
require 'parseconfig'
|
3
|
+
|
4
|
+
class LDAP < StorageType
|
5
|
+
attr_accessor :data_ldap_base, :data_ldap_users
|
6
|
+
|
7
|
+
def self.get_config_file(first, second, config)
|
8
|
+
file = get_config(first, :LDAPConfig, config)
|
9
|
+
if !File.exists?(file)
|
10
|
+
file = second
|
11
|
+
end
|
12
|
+
if !File.exists?(file)
|
13
|
+
dputs(0) { "Error: Can't find #{file}" }
|
14
|
+
exit
|
15
|
+
end
|
16
|
+
dputs(3) { "Returning #{file} for #{first}-#{second}-#{config}" }
|
17
|
+
file
|
18
|
+
end
|
19
|
+
|
20
|
+
# Load the configuration file and set up different variables
|
21
|
+
# for LDAP. This has to be loaded just once
|
22
|
+
def configure(config)
|
23
|
+
dputs(2) { "Configuring LDAP: #{config.inspect}" }
|
24
|
+
if conf = get_config(nil, :LDAPConfig, :array)
|
25
|
+
@data_ldap_host, @data_ldap_base, @data_ldap_root, @data_ldap_users,
|
26
|
+
@data_ldap_pass = conf
|
27
|
+
else
|
28
|
+
file_conf = LDAP.get_config_file('ldapscripts.conf',
|
29
|
+
'/etc/ldapscripts/ldapscripts.conf', :ldapscripts)
|
30
|
+
ldap_config = ParseConfig.new(file_conf)
|
31
|
+
dputs(2) { "Configuration options are #{ldap_config.get_params.inspect}" }
|
32
|
+
@data_ldap_host, @data_ldap_base, @data_ldap_root, @data_ldap_users =
|
33
|
+
ldap_config.params['SERVER'], ldap_config.params['SUFFIX'], ldap_config.params['BINDDN'],
|
34
|
+
ldap_config.params['USUFFIX']
|
35
|
+
|
36
|
+
file_pass = LDAP.get_config_file('ldap.secret', '/etc/ldap.secret',
|
37
|
+
:ldapsecret)
|
38
|
+
@data_ldap_pass = `cat #{ file_pass }`
|
39
|
+
end
|
40
|
+
@data_ldap_users += ",#{@data_ldap_base}"
|
41
|
+
%w( host base root pass users ).each { |v| eval("dputs( 3 ){ @data_ldap_#{v}.to_s}") }
|
42
|
+
|
43
|
+
@data_ldap = Net::LDAP.new :host => @data_ldap_host,
|
44
|
+
:auth => {
|
45
|
+
:method => :simple,
|
46
|
+
:username => @data_ldap_root,
|
47
|
+
:password => @data_ldap_pass
|
48
|
+
}
|
49
|
+
|
50
|
+
# Don't cache data, always ask
|
51
|
+
@data_cache = false
|
52
|
+
|
53
|
+
super config
|
54
|
+
|
55
|
+
@dns = {}
|
56
|
+
end
|
57
|
+
|
58
|
+
def save(data, notmp: false)
|
59
|
+
dputs(3) { 'Everything should already be saved...' }
|
60
|
+
end
|
61
|
+
|
62
|
+
def load
|
63
|
+
data = {}
|
64
|
+
# Read in the entries from the LDAP-directory
|
65
|
+
dputs(3) { 'Reading LDAP-entries' }
|
66
|
+
filter = Net::LDAP::Filter.eq('cn', '*')
|
67
|
+
@field_id_ldap = @fields[@data_field_id][:ldap_name].to_sym
|
68
|
+
|
69
|
+
dputs(3) { "Going to read #{@data_ldap_base}" }
|
70
|
+
@data_ldap.search(:base => @data_ldap_base, :filter => filter) do |entry|
|
71
|
+
dputs(4) { "DN: #{entry.dn}" }
|
72
|
+
data_ldap = {}
|
73
|
+
if entry.respond_to? @field_id_ldap
|
74
|
+
field_id_value = entry[@field_id_ldap].to_s
|
75
|
+
data_ldap = {@data_field_id => field_id_value}
|
76
|
+
@fields.each { |k, v|
|
77
|
+
ln = v[:ldap_name]
|
78
|
+
if entry.respond_to? ln.to_sym
|
79
|
+
value = entry[ln.to_sym][0].to_s
|
80
|
+
dputs(4) { "Value is #{value.inspect} with encoding #{value.encoding}" }
|
81
|
+
value.force_encoding(Encoding::UTF_8)
|
82
|
+
#if entry.dn =~ /kaina/
|
83
|
+
# dputs( 0 ){ entry.inspect }
|
84
|
+
# dputs( 0 ){ data_ldap.inspect }
|
85
|
+
#end
|
86
|
+
if ln.to_sym == :givenname or ln.to_sym == :l or ln.to_sym == :sn
|
87
|
+
dputs(4) { "Responding to #{[k, v, value, value.class].inspect} - " +
|
88
|
+
"encoding is #{value.encoding}" }
|
89
|
+
end
|
90
|
+
if value[0..0] == '['
|
91
|
+
# dputs( 4 ){ "Parsing value #{value}" }
|
92
|
+
value = JSON.parse(value)
|
93
|
+
if ln.to_sym == :givenname or ln.to_sym == :l or ln.to_sym == :sn
|
94
|
+
dputs(4) { "Parsing to #{[k, v, value, value.class].inspect}" }
|
95
|
+
end
|
96
|
+
#if value.class == String
|
97
|
+
# value.force_encoding( Encoding::UTF_8 )
|
98
|
+
#end
|
99
|
+
end
|
100
|
+
data_ldap.merge!({k => value})
|
101
|
+
end
|
102
|
+
}
|
103
|
+
# We hold a hash of all id_values to dn-entries for later use
|
104
|
+
if entry.respond_to? :dn
|
105
|
+
fiv = field_id_value.gsub(/[\[\]]/, '').to_i
|
106
|
+
@dns[fiv] = entry[:dn][0]
|
107
|
+
dputs(4) { "Adding dn-entry #{entry[:dn][0]} with id #{fiv.inspect}" }
|
108
|
+
end
|
109
|
+
else
|
110
|
+
dputs(4) { "Field-id #{@field_id_ldap} not found. List of ids: #{entry.attribute_names.inspect}" }
|
111
|
+
end
|
112
|
+
# Often needed to check one entry...
|
113
|
+
#if entry.dn =~ /mahamouth/
|
114
|
+
# dputs( 0 ){ entry.inspect }
|
115
|
+
# dputs( 0 ){ data_ldap.inspect }
|
116
|
+
#end
|
117
|
+
if data_ldap
|
118
|
+
data_ldap[@data_field_id] = data_ldap[@data_field_id].to_i
|
119
|
+
data[data_ldap[@data_field_id]] = data_ldap
|
120
|
+
end
|
121
|
+
end
|
122
|
+
dputs(5) { data.inspect }
|
123
|
+
return data
|
124
|
+
end
|
125
|
+
|
126
|
+
def check_login(uid, pass)
|
127
|
+
ldap = Net::LDAP.new
|
128
|
+
ldap.host = @data_ldap_host
|
129
|
+
ldap.auth "uid=#{uid},#{@data_ldap_users}", pass
|
130
|
+
dputs(2) { ldap.inspect }
|
131
|
+
begin
|
132
|
+
return ldap.bind
|
133
|
+
rescue Net::LDAP::LdapError
|
134
|
+
return nil
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
# Searches for the field in the LDAP-entry, changes it and returns the new
|
139
|
+
# value (which might not be what you expected).
|
140
|
+
def set_entry(id, field, value)
|
141
|
+
dputs(3) { "Fields is #{@fields.inspect}" }
|
142
|
+
attribute = @fields[field.to_sym][:ldap_name]
|
143
|
+
if not attribute
|
144
|
+
return value
|
145
|
+
end
|
146
|
+
dn = @dns[id.to_i]
|
147
|
+
|
148
|
+
value_stored = value.class == Array ? value.to_json : value
|
149
|
+
dputs(3) { 'Replacing attribute in ' +
|
150
|
+
"#{[@data_ldap_pass, dn, attribute, field, value, value_stored].inspect}" }
|
151
|
+
|
152
|
+
if not dn
|
153
|
+
dputs(0) { "Error: DN is empty... #{@dns.to_a.last(10).inspect}" }
|
154
|
+
dputs(0) { "Error: DN is empty: id, field, value = #{id}, #{field}, #{value}" }
|
155
|
+
#return
|
156
|
+
end
|
157
|
+
|
158
|
+
ret = @data_ldap.replace_attribute(dn, attribute, value_stored.to_s)
|
159
|
+
dputs(3) { "Replaced #{attribute} in #{dn} with #{value}" }
|
160
|
+
dputs(3) { "State of LDAP is: #{@data_ldap.get_operation_result.message} - #{ret.inspect}" }
|
161
|
+
@data_ldap.search(:base => @data_ldap_base,
|
162
|
+
:filter => Net::LDAP::Filter.eq(@field_id_ldap.to_s, id.to_s)) do |entry|
|
163
|
+
dputs(3) { "Found entry: #{entry.inspect}" }
|
164
|
+
value_entry = entry[attribute][0].to_s
|
165
|
+
value_entry.force_encoding(Encoding::UTF_8)
|
166
|
+
if value_stored.to_s == value_entry
|
167
|
+
dputs(4) { "returning value #{value.inspect}" }
|
168
|
+
return value
|
169
|
+
else
|
170
|
+
dputs(0) { "Error: Didn't get right return value: #{value_entry.inspect} instead of #{value_stored.inspect}" }
|
171
|
+
end
|
172
|
+
end
|
173
|
+
return nil
|
174
|
+
end
|
175
|
+
|
176
|
+
def get_entry(id, field)
|
177
|
+
ret = nil
|
178
|
+
attribute = @fields[field.to_sym][:ldap_name]
|
179
|
+
filter = Net::LDAP::Filter.eq(@field_id_ldap.to_s, id.to_s)
|
180
|
+
|
181
|
+
@data_ldap.search(:base => @data_ldap_base,
|
182
|
+
:filter => filter) { |entry|
|
183
|
+
dputs(5) { "DN: #{entry.dn} - #{attribute}" }
|
184
|
+
if entry.respond_to? attribute
|
185
|
+
ret = entry[attribute][0]
|
186
|
+
if ret.class == Net::BER::BerIdentifiedString and ret[0..0] == '['
|
187
|
+
dputs(4) { "Parsing value #{ret}" }
|
188
|
+
ret = JSON.parse(ret)
|
189
|
+
else
|
190
|
+
ret = ret.to_s
|
191
|
+
# Keep integers as integers
|
192
|
+
if ret.to_i.to_s == ret
|
193
|
+
ret = ret.to_i
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
197
|
+
}
|
198
|
+
|
199
|
+
dputs(5) { ret.inspect }
|
200
|
+
return ret
|
201
|
+
end
|
202
|
+
|
203
|
+
# If our @entity has a "data_create"-method, it is called, and then the
|
204
|
+
# object is extracted from the LDAP-tree.
|
205
|
+
def data_create(data)
|
206
|
+
if @entity.respond_to? :data_create
|
207
|
+
dputs(2) { "Going to call data_create of #{@name}" }
|
208
|
+
@entity.data_create(data)
|
209
|
+
uid = @fields.select { |k, v|
|
210
|
+
dputs(3) { "Field is #{k.inspect} - #{v.inspect}" }
|
211
|
+
v and (v[:ldap_name].to_sym == :uid)
|
212
|
+
}
|
213
|
+
dputs(3) { "Found uid #{uid.inspect}" }
|
214
|
+
uid = uid.to_a[0][0]
|
215
|
+
dputs(2) { "Found uid to be field #{uid.inspect}: #{data[uid]}" }
|
216
|
+
filter = Net::LDAP::Filter.eq('uid', data[uid])
|
217
|
+
@field_id_ldap = @fields[@data_field_id][:ldap_name].to_sym
|
218
|
+
|
219
|
+
dputs(3) { "Going to read #{@data_ldap_base}" }
|
220
|
+
@data_ldap.search(:base => @data_ldap_base, :filter => filter) do |entry|
|
221
|
+
dputs(4) { "DN: #{entry.dn}" }
|
222
|
+
if entry.respond_to? @field_id_ldap
|
223
|
+
ldap_id = entry[@field_id_ldap].to_s.gsub(/[^0-9]/, '')
|
224
|
+
dputs(2) { "Found #{@field_id_ldap}, getting real value of " +
|
225
|
+
"#{ldap_id}" }
|
226
|
+
id = ldap_id.to_i
|
227
|
+
data[@data_field_id] = id
|
228
|
+
@dns[id] = entry.dn.to_s
|
229
|
+
dputs(2) { "Found id=#{id} and dn=#{entry.dn.to_s}" }
|
230
|
+
end
|
231
|
+
end
|
232
|
+
else
|
233
|
+
dputs(0) { "Error: LDAP can't create data on it's own! Needs #{@name}.data_create!" }
|
234
|
+
exit 0
|
235
|
+
end
|
236
|
+
dputs(2) { "Data is now #{data.inspect}" }
|
237
|
+
end
|
238
|
+
end
|
@@ -0,0 +1,198 @@
|
|
1
|
+
=begin
|
2
|
+
SQLite-handler for Storagetypes. All data is stored in a common database,
|
3
|
+
and different subclasses get different tables.
|
4
|
+
|
5
|
+
Creation of table-columns is handled here
|
6
|
+
=end
|
7
|
+
|
8
|
+
require 'active_record'
|
9
|
+
require 'active_record/base'
|
10
|
+
require 'logger'
|
11
|
+
|
12
|
+
|
13
|
+
class SQLite < StorageType
|
14
|
+
attr :db_class
|
15
|
+
|
16
|
+
def configure(config, name_base = 'stsql', name_file = 'sql.db')
|
17
|
+
dputs(2) { "Configuring SQLite with #{@name}" }
|
18
|
+
@db_table = "#{name_base}_#{@name.downcase}s"
|
19
|
+
@db_class_name = "#{name_base.capitalize}_#{@name.downcase}"
|
20
|
+
@db_class = nil
|
21
|
+
%x[ mkdir -p data ]
|
22
|
+
@name_file = name_file
|
23
|
+
# ActiveRecord::Base.logger = Logger.new('debug.log')
|
24
|
+
ActiveRecord::Migration.verbose = false
|
25
|
+
#ActiveRecord::Base.logger = Logger.new(STDERR)
|
26
|
+
|
27
|
+
@mutex_es = Mutex.new
|
28
|
+
|
29
|
+
dputs(4) { 'Opening database' }
|
30
|
+
open_db
|
31
|
+
|
32
|
+
super config
|
33
|
+
end
|
34
|
+
|
35
|
+
# Allows for debugging when wanting to load another db
|
36
|
+
def close_db
|
37
|
+
dputs(4){"Closing db #{@name_file}"}
|
38
|
+
ActiveRecord::Base.remove_connection
|
39
|
+
end
|
40
|
+
|
41
|
+
def open_db
|
42
|
+
@mutex_es.synchronize {
|
43
|
+
dputs(4) { "Opening connection to #{@name_file}" }
|
44
|
+
ActiveRecord::Base.establish_connection(
|
45
|
+
:adapter => 'sqlite3', :database => "data/#{@name_file}")
|
46
|
+
|
47
|
+
dputs(4) { 'Initializing tables' }
|
48
|
+
init_table
|
49
|
+
|
50
|
+
dputs(4) { 'Getting Base' }
|
51
|
+
eval("class #{@db_class_name} < ActiveRecord::Base; end")
|
52
|
+
@db_class = eval(@db_class_name)
|
53
|
+
dputs(4) { "db_class is #{db_class.inspect}" }
|
54
|
+
|
55
|
+
@entries = {}
|
56
|
+
@entries_save = {}
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
60
|
+
# Saves the data stored, optionally takes an index to say
|
61
|
+
# which data needs to be saved
|
62
|
+
def save(data, notmp: false)
|
63
|
+
@mutex_es.synchronize {
|
64
|
+
dputs(3) { "Saving #{@entries_save.count} entries in #{@db_class}" }
|
65
|
+
@entries_save.each_value { |v|
|
66
|
+
v.save
|
67
|
+
}
|
68
|
+
@entries_save = {}
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
72
|
+
def set_entry(data, field, value)
|
73
|
+
@mutex_es.synchronize {
|
74
|
+
dputs(5) { "Searching id #{data.inspect}" }
|
75
|
+
if @entries[data]
|
76
|
+
@entries[data].save
|
77
|
+
end
|
78
|
+
@entries[data] ||= @db_class.first(:conditions => {@data_field_id => data})
|
79
|
+
if entry = @entries[data]
|
80
|
+
entry.send("#{field}=", value)
|
81
|
+
@entries_save[data] = entry
|
82
|
+
return value
|
83
|
+
else
|
84
|
+
dputs(2) { "Didn't find id #{data.inspect}" }
|
85
|
+
return nil
|
86
|
+
end
|
87
|
+
}
|
88
|
+
end
|
89
|
+
|
90
|
+
# Each new entry is directly stored, helping somewhat if the program or the
|
91
|
+
# computer crashes
|
92
|
+
def data_create(data)
|
93
|
+
dputs(5) { "Creating early data #{data.inspect} with #{data.class}" }
|
94
|
+
dputs(5) { "hello for #{data.inspect}" }
|
95
|
+
dputs(5) { "db_class is #{@db_class.inspect}" }
|
96
|
+
e = @db_class.create(data)
|
97
|
+
dputs(5) { 'hello - 2' }
|
98
|
+
new_id = e.attributes[@data_field_id.to_s]
|
99
|
+
dputs(5) { "New id is #{new_id}" }
|
100
|
+
data[@data_field_id] = new_id
|
101
|
+
dputs(5) { "Creating data: #{e.inspect}" }
|
102
|
+
end
|
103
|
+
|
104
|
+
def init_table
|
105
|
+
db_table, fields = @db_table, @fields
|
106
|
+
dputs(3) { "Initializing #{@db_class_name} with db_table=#{db_table.inspect}" }
|
107
|
+
ActiveRecord::Schema.define do
|
108
|
+
new_table = false
|
109
|
+
if !table_exists? db_table
|
110
|
+
dputs(2) { "Creating table #{db_table}" }
|
111
|
+
create_table db_table
|
112
|
+
new_table = true
|
113
|
+
end
|
114
|
+
dputs(3) { "Fields is #{fields.inspect}" }
|
115
|
+
fields.each_key { |f|
|
116
|
+
dputs(3) { "Checking for field #{f} in table #{db_table}" }
|
117
|
+
if not columns(db_table).index { |c|
|
118
|
+
c.name.to_s == f.to_s }
|
119
|
+
dputs(new_table ? 4 : 1) { "Adding column #{f} of type " +
|
120
|
+
"#{fields[f][:dtype]} to table #{db_table}" }
|
121
|
+
case fields[f][:dtype]
|
122
|
+
when /int/, /entity/
|
123
|
+
add_column(db_table, f, :integer)
|
124
|
+
when /bool/
|
125
|
+
add_column(db_table, f, :boolean)
|
126
|
+
when /float/
|
127
|
+
add_column(db_table, f, :float)
|
128
|
+
else
|
129
|
+
add_column(db_table, f, :string)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
}
|
133
|
+
end
|
134
|
+
# ActiveRecord::Base.logger = nil
|
135
|
+
end
|
136
|
+
|
137
|
+
# loads the data
|
138
|
+
def load
|
139
|
+
dputs(2) { "Loading data for #{@db_class_name}" }
|
140
|
+
res = Hash[*@db_class.all.collect { |s|
|
141
|
+
@entries[s[@data_field_id]] = s
|
142
|
+
[s[@data_field_id].to_i, s.attributes.symbolize_keys]
|
143
|
+
}.flatten(1)
|
144
|
+
]
|
145
|
+
dputs(5) { "Result is: #{res.inspect}" }
|
146
|
+
return res
|
147
|
+
end
|
148
|
+
|
149
|
+
def delete_all(local_only = false)
|
150
|
+
if !local_only
|
151
|
+
db_table = @db_table
|
152
|
+
dputs(2) { "Deleting table #{db_table}" }
|
153
|
+
ActiveRecord::Schema.define do
|
154
|
+
if table_exists? db_table
|
155
|
+
drop_table db_table.to_sym
|
156
|
+
end
|
157
|
+
end
|
158
|
+
init_table
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
def self.with_all_sqlites
|
163
|
+
RPCQooxdooService.entities { |e|
|
164
|
+
e.storage.each { |storage_name, storage_class|
|
165
|
+
dputs(3) { "Found storage_name of #{storage_name.inspect}" }
|
166
|
+
if storage_name.to_s =~ /^SQLite/
|
167
|
+
dputs(3) { "Found #{e.name}::#{storage_name} as SQLite-something" }
|
168
|
+
yield storage_class
|
169
|
+
end
|
170
|
+
}
|
171
|
+
}
|
172
|
+
end
|
173
|
+
|
174
|
+
def self.dbs_close_all
|
175
|
+
dputs(2) { 'Closing all dbs' }
|
176
|
+
SQLite.with_all_sqlites { |sql|
|
177
|
+
sql.close_db
|
178
|
+
}
|
179
|
+
end
|
180
|
+
|
181
|
+
def self.dbs_open_load
|
182
|
+
dputs(2) { 'Opening all dbs' }
|
183
|
+
SQLite.with_all_sqlites { |sql|
|
184
|
+
sql.open_db
|
185
|
+
}
|
186
|
+
dputs(2) { 'Loading all dbs' }
|
187
|
+
RPCQooxdooService.entities { |e|
|
188
|
+
e.is_loaded = false
|
189
|
+
e.load
|
190
|
+
}
|
191
|
+
end
|
192
|
+
|
193
|
+
def self.dbs_open_load_migrate
|
194
|
+
SQLite.dbs_open_load
|
195
|
+
dputs(2) { 'Migrating all dbs' }
|
196
|
+
RPCQooxdooService.migrate_all
|
197
|
+
end
|
198
|
+
end
|