lipsiadmin 4.1.8 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +41 -2
- data/lib/access_control/authentication.rb +1 -1
- data/lib/access_control/base.rb +18 -11
- data/lib/controller/ext.rb +5 -3
- data/lib/controller/pdf_builder.rb +22 -6
- data/lib/controller/responds_to_parent.rb +1 -1
- data/lib/data_base/attachment_table.rb +0 -1
- data/lib/lipsiadmin.rb +7 -0
- data/lib/mailer/pdf_builder.rb +23 -9
- data/lib/version.rb +3 -3
- data/lib/view/helpers/backend_helper.rb +137 -97
- data/lib/view/helpers/ext/button.rb +62 -0
- data/lib/view/helpers/ext/column_model.rb +29 -23
- data/lib/view/helpers/ext/component.rb +52 -40
- data/lib/view/helpers/ext/configuration.rb +3 -2
- data/lib/view/helpers/ext/grid.rb +38 -40
- data/lib/view/helpers/ext/store.rb +12 -12
- data/lib/view/helpers/ext/templates/grid_functions.js.erb +14 -9
- data/lib/view/helpers/ext/tool_bar.rb +9 -10
- data/lib/view/helpers/ext_helper.rb +3 -2
- data/lib/view/helpers/pdf_helper.rb +45 -0
- data/lipsiadmin_generators/attachment/REMEMBER +0 -4
- data/lipsiadmin_generators/attachment/templates/migration.rb +1 -1
- data/lipsiadmin_generators/backend/templates/config/config.yml +2 -3
- data/lipsiadmin_generators/backend/templates/config/locales/backend/en.yml +2 -0
- data/lipsiadmin_generators/backend/templates/config/locales/backend/it.yml +2 -0
- data/lipsiadmin_generators/backend/templates/config/locales/models/{en.yml → account/en.yml} +0 -0
- data/lipsiadmin_generators/backend/templates/config/locales/models/{it.yml → account/it.yml} +0 -0
- data/lipsiadmin_generators/backend/templates/controllers/javascripts_controller.rb +1 -1
- data/lipsiadmin_generators/backend/templates/images/backend/association_break.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/backend/association_ok.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/backend/categories.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/charts.swf +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/{slate/sizer/se-handle.gif → default/button/arrow.gif} +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/btn.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/group-cs.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/{slate/grid/grid-blue-split.gif → default/button/group-lr.gif} +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/{slate/grid/arrow-right-white.gif → default/button/group-tb.gif} +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/s-arrow-b-noline.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/s-arrow-b.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/s-arrow-bo.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/{slate/grid/grid3-hrow.gif → default/button/s-arrow-noline.gif} +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/s-arrow-o.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/s-arrow.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/form/checkbox.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/form/radio.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/form/trigger.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/grid/group-collapse.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/grid/group-expand.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/grid/refresh.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/grid/sort-hd.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/panel/tool-sprites.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/panel/tools-sprites-trans.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/qtip/tip-anchor-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/shadow-c.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/slider/slider-bg.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/slider/slider-thumb.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/slider/slider-v-bg.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/slider/slider-v-thumb.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/{slate/grid/arrow-left-white.gif → default/toolbar/more.gif} +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/toolbar/tb-xl-btn-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/{slate/panel/left-right.gif → default/toolbar/tb-xl-sep.gif} +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/window/left-corners.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/window/left-right.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/window/left-right.psd +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/window/right-corners.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/window/top-bottom.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/window/top-bottom.psd +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/expressinstall.swf +0 -0
- data/lipsiadmin_generators/backend/templates/javascripts/ext.js +97 -76
- data/lipsiadmin_generators/backend/templates/javascripts/prototype.js +14 -12
- data/lipsiadmin_generators/backend/templates/models/notifier.rb +1 -1
- data/lipsiadmin_generators/backend/templates/stylesheets/backend.css +11 -2
- data/lipsiadmin_generators/backend/templates/stylesheets/ext.css +1070 -546
- data/lipsiadmin_generators/backend/templates/stylesheets/login.css +1 -0
- data/lipsiadmin_generators/backend/templates/views/backend/accounts/index.rjs +1 -0
- data/lipsiadmin_generators/backend/templates/views/backend/base/index.html.haml +7 -4
- data/lipsiadmin_generators/backend/templates/views/javascripts/backend.js.erb +203 -143
- data/lipsiadmin_generators/pdf/pdf_generator.rb +1 -4
- data/lipsiadmin_generators/pdf/templates/view.html.haml +11 -6
- data/lipsiadmin_generators/state_session/state_session_generator.rb +2 -0
- data/resources/javascripts/ux.js +16 -17
- data/resources/javascripts/ux.min.js +2 -0
- data/resources/pd4ml/ruby/Pd4Ruby.class +0 -0
- data/resources/pd4ml/ruby/Pd4Ruby.java +277 -31
- data/tasks/lipsiadmin_tasks.rake +18 -1
- metadata +32 -124
- data/lipsiadmin_generators/backend/templates/images/ext/default/box/tb-slate.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/btn-arrow.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/btn-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/grid/Thumbs.db +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/button/btn-arrow.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/button/btn-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/editor/tb-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/form/checkbox.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/form/clear-trigger.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/form/date-trigger.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/form/radio.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/form/search-trigger.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/form/trigger-tpl.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/form/trigger.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/gradient-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/col-move-bottom.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/col-move-top.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/footer-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid-blue-hd.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid-hrow.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid-split.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid-vista-hd.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid3-hd-btn.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid3-hrow-over.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid3-special-col-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid3-special-col-sel-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/group-expand-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/mso-hd.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-first-disabled.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-first.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-last-disabled.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-last.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-next-disabled.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-next.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-prev-disabled.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-prev.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/refresh.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/row-over.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/row-sel.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/sort_asc.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/sort_desc.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/menu/checked.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/menu/group-checked.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/menu/item-over - Copy.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/menu/item-over.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/menu/menu-parent.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/menu/menu.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/menu/unchecked.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/corners-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/light-hd.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/tool-sprite-tpl.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/tool-sprites.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/tools-sprites-trans.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/top-bottom.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/top-bottom.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/white-corners-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/white-left-right.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/white-top-bottom.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/progress/progress-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/qtip/bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/qtip/close.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/qtip/tip-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/s.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/shared/glass-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/shared/hd-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/shared/left-btn.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/shared/right-btn.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/e-handle-dark.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/e-handle.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/ne-handle-dark.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/ne-handle.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/nw-handle-dark.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/nw-handle.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/s-handle-dark.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/s-handle.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/se-handle-dark.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/square.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/sw-handle-dark.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/sw-handle.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/slider/slider-bg.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/slider/slider-thumb.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/slider/slider-v-bg.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/slider/slider-v-thumb.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/scroll-left.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/scroll-right.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/scroller-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-btm-inactive-left-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-btm-inactive-right-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-btm-left-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-btm-right-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-close.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-strip-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-strip-bg.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-strip-btm-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tabs-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/bg-menu.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/btn-arrow-light.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/btn-arrow.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/btn-over-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/gray-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/tb-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/tb-btn-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tree/arrows.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/icon-error.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/icon-info.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/icon-question.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/icon-warning.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/left-corners.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/left-right.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/right-corners.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/top-bottom.png +0 -0
- data/lipsiadmin_generators/backend/templates/stylesheets/backend-slate.css +0 -105
- data/lipsiadmin_generators/backend/templates/stylesheets/ext-slate.css +0 -241
@@ -2,6 +2,7 @@ class PdfGenerator < Rails::Generator::NamedBase
|
|
2
2
|
def initialize(runtime_args, runtime_options = {})
|
3
3
|
runtime_args = ["pdf"].concat(runtime_args) # Skip usage
|
4
4
|
super
|
5
|
+
usage if runtime_args.size == 1
|
5
6
|
end
|
6
7
|
|
7
8
|
def manifest
|
@@ -11,10 +12,6 @@ class PdfGenerator < Rails::Generator::NamedBase
|
|
11
12
|
|
12
13
|
# Layout and Views
|
13
14
|
m.directory "app/views/pdf"
|
14
|
-
m.directory "app/views/layouts"
|
15
|
-
|
16
|
-
# Layout
|
17
|
-
m.template 'layout.html.erb', 'app/views/layouts/print.html.erb'
|
18
15
|
|
19
16
|
# View template for each action.
|
20
17
|
actions.each do |action|
|
@@ -1,7 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
%html
|
2
|
+
%head
|
3
|
+
%meta{'http-equiv' => 'Content-Type', :content => 'text/html', :charset=>"utf-8"}
|
4
|
+
=stylesheet_link_tag "standard", "print"
|
5
|
+
%body
|
6
|
+
-pdf_header do
|
7
|
+
My Header
|
5
8
|
|
6
|
-
-
|
7
|
-
|
9
|
+
-pdf_footer do
|
10
|
+
My Footer
|
11
|
+
|
12
|
+
My Content
|
@@ -4,6 +4,8 @@ class StateSessionGenerator < Rails::Generator::Base
|
|
4
4
|
def manifest
|
5
5
|
record do |m|
|
6
6
|
# Controller class, functional test, helper, and views.
|
7
|
+
m.directory 'app/controllers/backend'
|
8
|
+
m.directory 'test/functional/backend'
|
7
9
|
m.template 'controller.rb', 'app/controllers/backend/state_sessions_controller.rb'
|
8
10
|
m.template 'functional_test.rb', 'test/functional/backend/state_sessions_controller_test.rb'
|
9
11
|
|
data/resources/javascripts/ux.js
CHANGED
@@ -5,9 +5,13 @@
|
|
5
5
|
Ext.util.Format.eurMoney = function(v){
|
6
6
|
v = (Math.round((v-0)*100))/100;
|
7
7
|
v = (v == Math.floor(v)) ? v + ".00" : ((v*10 == Math.floor(v*10)) ? v + "0" : v);
|
8
|
-
return "€"
|
8
|
+
return v + " €" ;
|
9
9
|
};
|
10
10
|
|
11
|
+
Ext.util.Format.percentage = function(v, p, record){
|
12
|
+
return (v + ' %')
|
13
|
+
}
|
14
|
+
|
11
15
|
Ext.util.Format.boolRenderer = function(v, p, record){
|
12
16
|
p.css += ' x-grid3-check-col-td';
|
13
17
|
return '<div class="x-grid3-check-col'+(v?'-on':'')+' x-grid3-cc-'+this.id+'"> </div>';
|
@@ -16,12 +20,6 @@ Ext.util.Format.boolRenderer = function(v, p, record){
|
|
16
20
|
// Tree DropConfig to allow Drop on Leaf
|
17
21
|
var treeDropConfig = { getDropPoint : function(e, n, dd){ var tn = n.node; if(tn.isRoot){ return tn.allowChildren !== false ? "append" : false; } var dragEl = n.ddel; var t = Ext.lib.Dom.getY(dragEl), b = t + dragEl.offsetHeight; var y = Ext.lib.Event.getPageY(e); var noAppend = tn.allowChildren === false; if(this.appendOnly || tn.parentNode.allowChildren === false){ return noAppend ? false : "append"; } var noBelow = false; if(!this.allowParentInsert){ noBelow = tn.hasChildNodes() && tn.isExpanded(); } var q = (b - t) / (noAppend ? 2 : 3); if(y >= t && y < (t + q)){ return "above"; }else if(!noBelow && (noAppend || y >= b-q && y <= b)){ return "below"; }else{ return "append"; } }, completeDrop : function(de){ var ns = de.dropNode, p = de.point, t = de.target; if(!Ext.isArray(ns)){ ns = [ns]; } var n; for(var i = 0, len = ns.length; i < len; i++){ n = ns[i]; if(p == "above"){ t.parentNode.insertBefore(n, t); }else if(p == "below"){ t.parentNode.insertBefore(n, t.nextSibling); }else{ t.leaf = false; t.appendChild(n); } } n.ui.focus(); if(this.tree.hlDrop){ n.ui.highlight(); } t.ui.endDrop(); this.tree.fireEvent("nodedrop", de); } };
|
18
22
|
|
19
|
-
// Fix for Prototype Adapter
|
20
|
-
Ext.lib.Event.getTarget = function(e){
|
21
|
-
var ee = e.browserEvent || e;
|
22
|
-
return ee.target ? Event.element(ee) : null;
|
23
|
-
};
|
24
|
-
|
25
23
|
// CheckBox column
|
26
24
|
Ext.grid.CheckColumn = function(config){
|
27
25
|
Ext.apply(this, config);
|
@@ -110,7 +108,7 @@ Ext.form.DateTimeField = Ext.extend(Ext.form.Field, {
|
|
110
108
|
/**
|
111
109
|
* @cfg {Object} dateConfig Config for DateField constructor.
|
112
110
|
*/
|
113
|
-
,allowBlank:
|
111
|
+
,allowBlank: true
|
114
112
|
/**
|
115
113
|
* @cfg {Object} true to hide the time, default false.
|
116
114
|
*/
|
@@ -145,7 +143,7 @@ Ext.form.DateTimeField = Ext.extend(Ext.form.Field, {
|
|
145
143
|
var timeConfig = Ext.apply({}, {
|
146
144
|
id:this.id + '-time'
|
147
145
|
,format:this.timeFormat || Ext.form.TimeField.prototype.format
|
148
|
-
,allowBlank:this.allowBlank
|
146
|
+
,allowBlank:(this.hideTime || this.allowBlank)
|
149
147
|
,width:this.timeWidth
|
150
148
|
,selectOnFocus:this.selectOnFocus
|
151
149
|
,listeners:{
|
@@ -227,7 +225,7 @@ Ext.form.DateTimeField = Ext.extend(Ext.form.Field, {
|
|
227
225
|
this.isRendered = true;
|
228
226
|
if (this.el.dom.value){
|
229
227
|
this.setValue(this.el.dom.value);
|
230
|
-
} else {
|
228
|
+
} else if (true === this.emptyToNow) {
|
231
229
|
this.setValue(new Date());
|
232
230
|
this.updateHidden();
|
233
231
|
}
|
@@ -252,7 +250,7 @@ Ext.form.DateTimeField = Ext.extend(Ext.form.Field, {
|
|
252
250
|
* private initializes internal dateValue
|
253
251
|
*/
|
254
252
|
,initDateValue:function() {
|
255
|
-
this.dateValue = this.otherToNow ? new Date() :
|
253
|
+
this.dateValue = this.otherToNow ? new Date() : '';
|
256
254
|
}
|
257
255
|
// }}}
|
258
256
|
// {{{
|
@@ -458,7 +456,7 @@ Ext.form.DateTimeField = Ext.extend(Ext.form.Field, {
|
|
458
456
|
* private Sets the value of TimeField
|
459
457
|
*/
|
460
458
|
,setTime:function(date) {
|
461
|
-
|
459
|
+
this.tf.setRawValue(date);
|
462
460
|
} // eo function setTime
|
463
461
|
// }}}
|
464
462
|
// {{{
|
@@ -497,8 +495,8 @@ Ext.form.DateTimeField = Ext.extend(Ext.form.Field, {
|
|
497
495
|
*/
|
498
496
|
,setValue:function(val) {
|
499
497
|
if(!val && true === this.emptyToNow) {
|
500
|
-
|
501
|
-
|
498
|
+
this.setValue(new Date());
|
499
|
+
return;
|
502
500
|
}
|
503
501
|
else if(!val) {
|
504
502
|
this.setDate('');
|
@@ -508,15 +506,16 @@ Ext.form.DateTimeField = Ext.extend(Ext.form.Field, {
|
|
508
506
|
}
|
509
507
|
if ('number' === typeof val) {
|
510
508
|
val = new Date(val);
|
509
|
+
} else if('string' === typeof val && this.hiddenFormat) {
|
510
|
+
val = Date.parseDate(val, this.hiddenFormat)
|
511
511
|
}
|
512
512
|
val = val ? val : new Date(1970, 0 ,1, 0, 0, 0);
|
513
513
|
var da, time;
|
514
514
|
if(val instanceof Date) {
|
515
515
|
this.setDate(val);
|
516
|
-
this.setTime(val);
|
516
|
+
this.setTime(val.format(this.timeFormat));
|
517
517
|
this.dateValue = new Date(val);
|
518
|
-
}
|
519
|
-
else {
|
518
|
+
} else {
|
520
519
|
da = val.split(this.dtSeparator);
|
521
520
|
this.setDate(da[0]);
|
522
521
|
if(da[1]) {
|
@@ -0,0 +1,2 @@
|
|
1
|
+
Ext.util.Format.eurMoney=function(v){v=(Math.round((v-0)*100))/100;v=(v==Math.floor(v))?v+".00":((v*10==Math.floor(v*10))?v+"0":v);return v+" €"};Ext.util.Format.boolRenderer=function(v,p,record){p.css+=" x-grid3-check-col-td";return'<div class="x-grid3-check-col'+(v?"-on":"")+" x-grid3-cc-"+this.id+'"> </div>'};var treeDropConfig={getDropPoint:function(e,n,dd){var tn=n.node;if(tn.isRoot){return tn.allowChildren!==false?"append":false}var dragEl=n.ddel;var t=Ext.lib.Dom.getY(dragEl),b=t+dragEl.offsetHeight;var y=Ext.lib.Event.getPageY(e);var noAppend=tn.allowChildren===false;if(this.appendOnly||tn.parentNode.allowChildren===false){return noAppend?false:"append"}var noBelow=false;if(!this.allowParentInsert){noBelow=tn.hasChildNodes()&&tn.isExpanded()}var q=(b-t)/(noAppend?2:3);if(y>=t&&y<(t+q)){return"above"}else{if(!noBelow&&(noAppend||y>=b-q&&y<=b)){return"below"}else{return"append"}}},completeDrop:function(de){var ns=de.dropNode,p=de.point,t=de.target;if(!Ext.isArray(ns)){ns=[ns]}var n;for(var i=0,len=ns.length;i<len;i++){n=ns[i];if(p=="above"){t.parentNode.insertBefore(n,t)}else{if(p=="below"){t.parentNode.insertBefore(n,t.nextSibling)}else{t.leaf=false;t.appendChild(n)}}}n.ui.focus();if(this.tree.hlDrop){n.ui.highlight()}t.ui.endDrop();this.tree.fireEvent("nodedrop",de)}};Ext.grid.CheckColumn=function(config){Ext.apply(this,config);if(!this.id){this.id=Ext.id()}this.renderer=this.renderer.createDelegate(this)};Ext.grid.CheckColumn.prototype={init:function(grid){this.grid=grid;this.grid.on("render",function(){var view=this.grid.getView();view.mainBody.on("mousedown",this.onMouseDown,this)},this)},onMouseDown:function(e,t){if(t.className&&t.className.indexOf("x-grid3-cc-"+this.id)!=-1){e.stopEvent();var index=this.grid.getView().findRowIndex(t);var record=this.grid.store.getAt(index);var editEvent={grid:this.grid,record:this.grid.store.getAt(index),field:this.dataIndex,value:!record.data[this.dataIndex],originalValue:record.data[this.dataIndex],row:index,column:this.grid.getColumnModel().findColumnIndex(this.dataIndex)};record.set(this.dataIndex,editEvent.value);this.grid.getSelectionModel().selectRow(index);this.grid.fireEvent("afteredit",editEvent)}},renderer:function(v,p,record){p.css+=" x-grid3-check-col-td";return'<div class="x-grid3-check-col'+(v?"-on":"")+" x-grid3-cc-"+this.id+'"> </div>'}};Ext.form.DateTimeField=Ext.extend(Ext.form.Field,{defaultAutoCreate:{tag:"input",type:"hidden"},timeWidth:100,dateWidth:100,dtSeparator:" ",hiddenFormat:"Y-m-d H:i:s",otherToNow:true,dateFormat:"d/m/y",timeFormat:"H:i",allowBlank:true,hideTime:false,initComponent:function(){Ext.form.DateTimeField.superclass.initComponent.call(this);var dateConfig=Ext.apply({},{id:this.id+"-date",format:this.dateFormat||Ext.form.DateField.prototype.format,width:this.dateWidth,allowBlank:this.allowBlank,selectOnFocus:this.selectOnFocus,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus}}},this.dateConfig);this.df=new Ext.form.DateField(dateConfig);this.df.ownerCt=this;delete (this.dateFormat);var timeConfig=Ext.apply({},{id:this.id+"-time",format:this.timeFormat||Ext.form.TimeField.prototype.format,allowBlank:(this.hideTime||this.allowBlank),width:this.timeWidth,selectOnFocus:this.selectOnFocus,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus}}},this.timeConfig);this.tf=new Ext.form.TimeField(timeConfig);this.tf.ownerCt=this;delete (this.timeFormat);this.relayEvents(this.df,["focus","specialkey","invalid","valid"]);this.relayEvents(this.tf,["focus","specialkey","invalid","valid"])},onRender:function(ct,position){if(this.isRendered){return}Ext.form.DateTimeField.superclass.onRender.call(this,ct,position);var t;var timeStyle=this.hideTime?"display:none":"";t=Ext.DomHelper.append(ct,{tag:"table",style:"border-collapse:collapse",children:[{tag:"tr",children:[{tag:"td",style:"padding-right:17px",cls:"datetime-date"},{tag:"td",cls:"datetime-time",style:timeStyle}]}]},true);this.tableEl=t;this.wrap=t.wrap();this.wrap.on("mousedown",this.onMouseDown,this,{delay:10});this.df.render(t.child("td.datetime-date"));this.tf.render(t.child("td.datetime-time"));this.df.wrap.setStyle({width:this.dateWidth});this.tf.wrap.setStyle({width:this.timeWidth});if(Ext.isIE&&Ext.isStrict){t.select("input").applyStyles({top:0})}this.on("specialkey",this.onSpecialKey,this);this.df.el.swallowEvent(["keydown","keypress"]);this.tf.el.swallowEvent(["keydown","keypress"]);if("side"===this.msgTarget){var elp=this.el.findParent(".x-form-element",10,true);this.errorIcon=elp.createChild({cls:"x-form-invalid-icon"});this.df.errorIcon=this.errorIcon;this.tf.errorIcon=this.errorIcon}if(!this.el.dom.name){this.el.dom.name=this.hiddenName||this.name||this.id}this.df.el.dom.removeAttribute("name");this.tf.el.dom.removeAttribute("name");this.isRendered=true;if(this.el.dom.value){this.setValue(this.el.dom.value)}else{this.setValue(new Date());this.updateHidden()}},adjustSize:Ext.BoxComponent.prototype.adjustSize,alignErrorIcon:function(){this.errorIcon.alignTo(this.tableEl,"tl-tr",[2,0])},initDateValue:function(){this.dateValue=this.otherToNow?new Date():new Date(1970,0,1,0,0,0)},clearInvalid:function(){this.df.clearInvalid();this.tf.clearInvalid()},beforeDestroy:function(){if(this.isRendered){this.wrap.removeAllListeners();this.wrap.remove();this.tableEl.remove();this.df.destroy();this.tf.destroy()}},disable:function(){if(this.isRendered){this.df.disabled=this.disabled;this.df.onDisable();this.tf.onDisable()}this.disabled=true;this.df.disabled=true;this.tf.disabled=true;this.fireEvent("disable",this);return this},enable:function(){if(this.rendered){this.df.onEnable();this.tf.onEnable()}this.disabled=false;this.df.disabled=false;this.tf.disabled=false;this.fireEvent("enable",this);return this},focus:function(){this.df.focus()},getPositionEl:function(){return this.wrap},getResizeEl:function(){return this.wrap},getValue:function(){return this.dateValue?new Date(this.dateValue):""},isValid:function(){return this.df.isValid()&&this.tf.isValid()},isVisible:function(){return this.df.rendered&&this.df.getActionEl().isVisible()},onBlur:function(f){if(this.wrapClick){f.focus();this.wrapClick=false}this.updateDate();this.updateTime();this.updateHidden();(function(){if(!this.df.hasFocus&&!this.tf.hasFocus){var v=this.getValue();if(String(v)!==String(this.startValue)){this.fireEvent("change",this,v,this.startValue)}this.hasFocus=false;this.fireEvent("blur",this)}}).defer(100,this)},onFocus:function(){if(!this.hasFocus){this.hasFocus=true;this.startValue=this.getValue();this.fireEvent("focus",this)}},onMouseDown:function(e){if(!this.disabled){this.wrapClick="td"===e.target.nodeName.toLowerCase()}},onSpecialKey:function(t,e){var key=e.getKey();if(key===e.TAB){if(t===this.df&&!e.shiftKey){e.stopEvent();this.tf.focus()}if(t===this.tf&&e.shiftKey){e.stopEvent();this.df.focus()}}if(key===e.ENTER){this.updateValue()}},setDate:function(date){this.df.setValue(date)},setTime:function(date){this.tf.setValue(date)},setSize:function(w,h){if(!w){return}if("below"===this.timePosition){this.df.setSize(w,h);this.tf.setSize(w,h);if(Ext.isIE){this.df.el.up("td").setWidth(w);this.tf.el.up("td").setWidth(w)}}else{this.df.setSize(w-this.timeWidth-4,h);this.tf.setSize(this.timeWidth,h);if(Ext.isIE){this.df.el.up("td").setWidth(w-this.timeWidth-4);this.tf.el.up("td").setWidth(this.timeWidth)}}},setValue:function(val){if(!val&&true===this.emptyToNow){this.setValue(new Date());return}else{if(!val){this.setDate("");this.setTime("");this.updateValue();return}}if("number"===typeof val){val=new Date(val)}else{if("string"===typeof val&&this.hiddenFormat){val=Date.parseDate(val,this.hiddenFormat)}}val=val?val:new Date(1970,0,1,0,0,0);var da,time;if(val instanceof Date){this.setDate(val);this.setTime(val);this.dateValue=new Date(val)}else{da=val.split(this.dtSeparator);this.setDate(da[0]);if(da[1]){if(da[2]){da[1]+=da[2]}var hh=da[1].split(":");this.setTime(hh[0]+":"+hh[1])}}},setVisible:function(visible){if(visible){this.df.show();
|
2
|
+
this.tf.show()}else{this.df.hide();this.tf.hide()}return this},show:function(){return this.setVisible(true)},hide:function(){return this.setVisible(false)},updateDate:function(){var d=this.df.getValue();if(d){if(!(this.dateValue instanceof Date)){this.initDateValue();if(!this.tf.getValue()){this.setTime(this.dateValue)}}this.dateValue.setMonth(0);this.dateValue.setFullYear(d.getFullYear());this.dateValue.setMonth(d.getMonth());this.dateValue.setDate(d.getDate())}else{this.dateValue="";this.setTime("")}},updateTime:function(){var t=this.tf.getValue();if(t&&!(t instanceof Date)){t=Date.parseDate(t,this.tf.format)}if(t&&!this.df.getValue()){this.initDateValue();this.setDate(this.dateValue)}if(this.dateValue instanceof Date){if(t){this.dateValue.setHours(t.getHours());this.dateValue.setMinutes(t.getMinutes());this.dateValue.setSeconds(t.getSeconds())}else{this.dateValue.setHours(0);this.dateValue.setMinutes(0);this.dateValue.setSeconds(0)}}},updateHidden:function(){if(this.isRendered){var value=this.dateValue instanceof Date?this.dateValue.format(this.hiddenFormat):"";this.el.dom.value=value}},updateValue:function(){this.updateDate();this.updateTime();this.updateHidden();return},validate:function(){return this.df.validate()&&this.tf.validate()},renderer:function(field){var format=field.editor.dateFormat||Ext.form.DateTime.prototype.dateFormat;format+=" "+(field.editor.timeFormat||Ext.form.DateTime.prototype.timeFormat);var renderer=function(val){var retval=Ext.util.Format.date(val,format);return retval};return renderer}});Ext.reg("datetimefield",Ext.form.DateTimeField);Ext.grid.Search=function(config){Ext.apply(this,config);Ext.grid.Search.superclass.constructor.call(this)};Ext.extend(Ext.grid.Search,Ext.util.Observable,{autoFocus:true,searchText:"Search",searchTipText:"Insert a word or press Search",selectAllText:"Select All",position:"top",iconCls:"check",checkIndexes:"all",disableIndexes:[],dateFormat:undefined,showSelectAll:true,menuStyle:"checkbox",minCharsTipText:"Insert at least {0} characters",mode:"remote",width:200,xtype:"gridsearch",paramNames:{fields:"fields",query:"query"},shortcutKey:"r",shortcutModifier:"alt",align:"right",minLength:3,init:function(grid){this.grid=grid;if("string"===typeof this.toolbarContainer){this.toolbarContainer=Ext.getCmp(this.toolbarContainer)}grid.onRender=grid.onRender.createSequence(this.onRender,this);grid.reconfigure=grid.reconfigure.createSequence(this.reconfigure,this)},onRender:function(){var panel=this.toolbarContainer||this.grid;var tb="bottom"===this.position?panel.bottomToolbar:panel.topToolbar;this.menu=new Ext.menu.Menu();if("right"===this.align){tb.addFill()}else{if(0<tb.items.getCount()){tb.addSeparator()}}tb.add({text:this.searchText,menu:this.menu});this.field=new Ext.form.TwinTriggerField({width:this.width,selectOnFocus:undefined===this.selectOnFocus?true:this.selectOnFocus,trigger1Class:"x-form-clear-trigger",trigger2Class:this.minChars?"x-hidden":"x-form-search-trigger",onTrigger1Click:this.minChars?Ext.emptyFn:this.onTriggerClear.createDelegate(this),onTrigger2Click:this.onTriggerSearch.createDelegate(this),minLength:this.minLength});this.field.on("render",function(){this.field.el.dom.qtip=this.minChars?String.format(this.minCharsTipText,this.minChars):this.searchTipText;if(this.minChars){this.field.el.on({scope:this,buffer:300,keyup:this.onKeyUp})}var map=new Ext.KeyMap(this.field.el,[{key:Ext.EventObject.ENTER,scope:this,fn:this.onTriggerSearch},{key:Ext.EventObject.ESC,scope:this,fn:this.onTriggerClear}]);map.stopEvent=true},this,{single:true});tb.add(this.field);this.reconfigure();if(this.shortcutKey&&this.shortcutModifier){var shortcutEl=this.grid.getEl();var shortcutCfg=[{key:this.shortcutKey,scope:this,stopEvent:true,fn:function(){this.field.focus()}}];shortcutCfg[0][this.shortcutModifier]=true;this.keymap=new Ext.KeyMap(shortcutEl,shortcutCfg)}if(true===this.autoFocus){this.grid.store.on({scope:this,load:function(){this.field.focus()}})}},onKeyUp:function(){var length=this.field.getValue().toString().length;if(0===length||this.minChars<=length){this.onTriggerSearch()}},onTriggerClear:function(){if(this.field.getValue()){this.field.setValue("");this.field.focus();this.onTriggerSearch()}},onTriggerSearch:function(){if(!this.field.isValid()){return}var val=this.field.getValue();var store=this.grid.store;if("local"===this.mode){store.clearFilter();if(val){store.filterBy(function(r){var retval=false;this.menu.items.each(function(item){if(!item.checked||retval){return}var rv=r.get(item.dataIndex);rv=rv instanceof Date?rv.format(this.dateFormat||r.fields.get(item.dataIndex).dateFormat):rv;var re=new RegExp(val,"gi");retval=re.test(rv)},this);if(retval){return true}return retval},this)}else{}}else{if(store.lastOptions&&store.lastOptions.params){store.lastOptions.params[store.paramNames.start]=0}var fields=[];this.menu.items.each(function(item){if(item.checked&&item.dataIndex){fields.push(item.dataIndex)}});delete (store.baseParams[this.paramNames.fields]);delete (store.baseParams[this.paramNames.query]);if(store.lastOptions&&store.lastOptions.params){delete (store.lastOptions.params[this.paramNames.fields]);delete (store.lastOptions.params[this.paramNames.query])}if(fields.length){store.baseParams[this.paramNames.fields]=fields.compact().join();store.baseParams[this.paramNames.query]=val}store.reload()}},setDisabled:function(){this.field.setDisabled.apply(this.field,arguments)},enable:function(){this.setDisabled(false)},disable:function(){this.setDisabled(true)},reconfigure:function(){var menu=this.menu;menu.removeAll();if(this.showSelectAll&&"radio"!==this.menuStyle){menu.add(new Ext.menu.CheckItem({text:this.selectAllText,checked:!(this.checkIndexes instanceof Array),hideOnClick:false,handler:function(item){var checked=!item.checked;item.parentMenu.items.each(function(i){if(item!==i&&i.setChecked&&!i.disabled){i.setChecked(checked)}})}}),"-")}var cm=this.grid.colModel;var group=undefined;if("radio"===this.menuStyle){group="g"+(new Date).getTime()}Ext.each(cm.config,function(config){var disable=false;if(config.header&&config.dataIndex&&config.sortable){Ext.each(this.disableIndexes,function(item){disable=disable?disable:item===config.dataIndex});if(!disable){menu.add(new Ext.menu.CheckItem({text:config.header,hideOnClick:false,group:group,checked:"all"===this.checkIndexes,dataIndex:config.dataIndex}))}}},this);if(this.checkIndexes instanceof Array){Ext.each(this.checkIndexes,function(di){var item=menu.items.find(function(itm){return itm.dataIndex===di});if(item){item.setChecked(true,true)}},this)}if(this.readonlyIndexes instanceof Array){Ext.each(this.readonlyIndexes,function(di){var item=menu.items.find(function(itm){return itm.dataIndex===di});if(item){item.disable()}},this)}}});Ext.state.DataBaseProvider=function(config){Ext.state.DataBaseProvider.superclass.constructor.call(this);this.path="/backend/state_sessions";Ext.apply(this,config);this.state=this.readCookies()};Ext.extend(Ext.state.DataBaseProvider,Ext.state.Provider,{set:function(name,value){if(typeof value=="undefined"||value===null){this.clear(name);return}this.setCookie(name,value);Ext.state.DataBaseProvider.superclass.set.call(this,name,value)},clear:function(name){this.clearCookie(name);Ext.state.DataBaseProvider.superclass.clear.call(this,name)},readCookies:function(){var cookies={};var values=[];new Ajax.Request(this.path,{method:"GET",asynchronous:false,onSuccess:function(response,request){values=Ext.decode(response.responseText)}});values.each(function(f){if(f.state_session&&f.state_session.component&&f.state_session.component.substring(0,3)=="ys-"){cookies[f.state_session.component.substr(3)]=this.decodeValue(f.state_session.data)}},this);return cookies},setCookie:function(name,value){Ext.Ajax.request({url:this.path,method:"POST",params:{id:"ys-"+name,data:this.encodeValue(value)}})},clearCookie:function(name){Ext.Ajax.request({url:this.path+"/ys-"+name,method:"DELETE"})}});
|
Binary file
|
@@ -1,52 +1,298 @@
|
|
1
|
-
|
1
|
+
/* Pd4Ruby
|
2
|
+
* Created for PDF::PD4ML Ruby library. This is a wrapper for the commercial
|
3
|
+
* library PD4ML which converts HTML documents to PDF
|
4
|
+
*
|
5
|
+
* Author: Nilesh Chaudhari
|
6
|
+
*
|
7
|
+
* Released under MIT license
|
8
|
+
*
|
9
|
+
* For compile javac -cp pd4ml.jar Pd4Ruby.java
|
10
|
+
*/
|
11
|
+
|
2
12
|
import java.awt.Dimension;
|
3
13
|
import java.awt.Insets;
|
4
14
|
import java.lang.reflect.Field;
|
5
15
|
import java.net.URL;
|
6
|
-
|
16
|
+
import java.util.StringTokenizer;
|
17
|
+
|
7
18
|
import org.zefer.pd4ml.PD4Constants;
|
8
19
|
import org.zefer.pd4ml.PD4ML;
|
9
|
-
|
20
|
+
import org.zefer.pd4ml.PD4PageMark;
|
21
|
+
|
10
22
|
public class Pd4Ruby {
|
11
|
-
|
23
|
+
|
24
|
+
public final static String USAGE = "Usage: java -Xmx512m Pd4Ruby --url <url> --file <file> \\\n" +
|
25
|
+
" [--width <html_width>] \\\n" +
|
26
|
+
" [--pagesize <A1-A10|ISOB0-ISOB5|LEGAL|LETTER|LEDGER|NOTE|TABLOID>] \\\n" +
|
27
|
+
" [--permissions <integer> --password <password>] \\\n" +
|
28
|
+
" [--bookmarks <HEADINGS|ANCHORS>] \\\n" +
|
29
|
+
" [--orientation <PORTRAIT|LANDSCAPE>] \\\n" +
|
30
|
+
" [--insets <T,L,B,R,><mm|pt>] \\\n" +
|
31
|
+
" [--ttf <ttf_fonts_dir>] \\\n" +
|
32
|
+
" [--header '<html_text>'] \\\n" +
|
33
|
+
" [--footer '<html_text>'] \\\n" +
|
34
|
+
" [--debug]";
|
35
|
+
|
12
36
|
public static void main(String[] args) throws Exception {
|
13
|
-
|
14
|
-
|
15
|
-
|
37
|
+
|
38
|
+
String url = null;
|
39
|
+
String file = null;
|
40
|
+
int debug = 0;
|
41
|
+
int width = 800;
|
42
|
+
String pagesize = "A4";
|
43
|
+
int permissions = 65532; // all permissions off by default
|
44
|
+
String bookmarks = "HEADINGS";
|
45
|
+
String orientation = "PORTRAIT";
|
46
|
+
String insets = null;
|
47
|
+
String ttf = null;
|
48
|
+
String password = null;
|
49
|
+
String header = null;
|
50
|
+
String footer = null;
|
51
|
+
|
52
|
+
boolean formatSet = false;
|
53
|
+
|
54
|
+
for( int i = 0; i < args.length; i++ ) {
|
55
|
+
|
56
|
+
if ( "--url".equals( args[i] ) ) {
|
57
|
+
++i;
|
58
|
+
if (( i == args.length ) || ( args[i].startsWith("--") )) {
|
59
|
+
System.out.println("invalid parameter: missing url");
|
60
|
+
System.out.println( USAGE );
|
61
|
+
return;
|
62
|
+
}
|
63
|
+
url = args[i];
|
64
|
+
continue;
|
65
|
+
}
|
66
|
+
|
67
|
+
if ( "--file".equals( args[i] ) ) {
|
68
|
+
++i;
|
69
|
+
if (( i == args.length ) || ( args[i].startsWith("--") )) {
|
70
|
+
System.out.println("invalid parameter: missing file");
|
71
|
+
System.out.println( USAGE );
|
72
|
+
return;
|
73
|
+
}
|
74
|
+
file = args[i];
|
75
|
+
continue;
|
76
|
+
}
|
77
|
+
|
78
|
+
if ( "--permissions".equals( args[i] ) ) {
|
79
|
+
++i;
|
80
|
+
if ( i == args.length ) {
|
81
|
+
System.out.println("invalid parameter: missing permissions number (a sum of single permission codes)");
|
82
|
+
System.out.println( USAGE );
|
83
|
+
return;
|
84
|
+
}
|
85
|
+
permissions = Integer.parseInt(args[i]);
|
86
|
+
continue;
|
87
|
+
}
|
88
|
+
|
89
|
+
if ( "--password".equals( args[i] ) ) {
|
90
|
+
++i;
|
91
|
+
if ( i == args.length ) {
|
92
|
+
System.out.println("invalid parameter: missing password");
|
93
|
+
System.out.println( USAGE );
|
94
|
+
return;
|
95
|
+
}
|
96
|
+
password = args[i];
|
97
|
+
continue;
|
98
|
+
}
|
99
|
+
|
100
|
+
if ( "--bookmarks".equals( args[i] ) ) {
|
101
|
+
++i;
|
102
|
+
if ( i == args.length ) {
|
103
|
+
System.out.println("invalid parameter: missing bookmark type (HEADINGS or ANCHORS)");
|
104
|
+
System.out.println( USAGE );
|
105
|
+
return;
|
106
|
+
}
|
107
|
+
bookmarks = args[i];
|
108
|
+
continue;
|
109
|
+
}
|
110
|
+
|
111
|
+
if ( "--orientation".equals( args[i] ) ) {
|
112
|
+
++i;
|
113
|
+
if ( i == args.length ) {
|
114
|
+
System.out.println("invalid parameter: missing orientation type (PORTRAIT or LANDSCAPE)");
|
115
|
+
System.out.println( USAGE );
|
116
|
+
return;
|
117
|
+
}
|
118
|
+
orientation = args[i];
|
119
|
+
continue;
|
120
|
+
}
|
121
|
+
|
122
|
+
if ( "--pagesize".equals( args[i] ) ) {
|
123
|
+
++i;
|
124
|
+
if ( i == args.length ) {
|
125
|
+
System.out.println("invalid parameter: missing page size");
|
126
|
+
System.out.println( USAGE );
|
127
|
+
return;
|
128
|
+
}
|
129
|
+
pagesize = args[i];
|
130
|
+
continue;
|
131
|
+
}
|
132
|
+
|
133
|
+
if ( "--insets".equals( args[i] ) ) {
|
134
|
+
++i;
|
135
|
+
if ( i == args.length ) {
|
136
|
+
System.out.println("invalid parameter: missing insets (for exampe: --insets 5,10,5,5mm)");
|
137
|
+
System.out.println( USAGE );
|
138
|
+
return;
|
139
|
+
}
|
140
|
+
insets = args[i];
|
141
|
+
continue;
|
142
|
+
}
|
143
|
+
|
144
|
+
if ( "--ttf".equals( args[i] ) ) {
|
145
|
+
++i;
|
146
|
+
if ( i == args.length ) {
|
147
|
+
System.out.println("invalid parameter: missing TTF fonts directory");
|
148
|
+
System.out.println( USAGE );
|
149
|
+
return;
|
150
|
+
}
|
151
|
+
ttf = args[i];
|
152
|
+
continue;
|
153
|
+
}
|
154
|
+
|
155
|
+
if ( "--header".equals( args[i] ) ) {
|
156
|
+
++i;
|
157
|
+
if ( i == args.length ) {
|
158
|
+
System.out.println("invalid parameter: missing header text");
|
159
|
+
System.out.println( USAGE );
|
160
|
+
return;
|
161
|
+
}
|
162
|
+
header = args[i];
|
163
|
+
continue;
|
164
|
+
}
|
165
|
+
|
166
|
+
if ( "--footer".equals( args[i] ) ) {
|
167
|
+
++i;
|
168
|
+
if ( i == args.length ) {
|
169
|
+
System.out.println("invalid parameter: missing footer text");
|
170
|
+
System.out.println( USAGE );
|
171
|
+
return;
|
172
|
+
}
|
173
|
+
footer = args[i];
|
174
|
+
continue;
|
175
|
+
}
|
176
|
+
|
177
|
+
if ( "--debug".equals( args[i] ) ) {
|
178
|
+
debug = 1;
|
179
|
+
continue;
|
180
|
+
}
|
181
|
+
|
182
|
+
if ( "--width".equals( args[i] ) ) {
|
183
|
+
++i;
|
184
|
+
if ( i == args.length ) {
|
185
|
+
System.out.println("invalid width: missing HTML width");
|
186
|
+
System.out.println( USAGE );
|
187
|
+
return;
|
188
|
+
}
|
189
|
+
width = Integer.parseInt(args[i]);
|
190
|
+
continue;
|
191
|
+
}
|
192
|
+
|
193
|
+
if ( args[i].startsWith("--") ) {
|
194
|
+
System.out.println("unknown parameter: " + args[i] );
|
195
|
+
System.out.println( USAGE );
|
196
|
+
return;
|
197
|
+
}
|
198
|
+
|
199
|
+
System.out.println("unexpected parameter: " + args[i]);
|
200
|
+
System.out.println( USAGE );
|
201
|
+
return;
|
16
202
|
}
|
17
|
-
|
203
|
+
|
204
|
+
if (( url == null ) && ( file == null)) {
|
205
|
+
System.out.println("source is missing. Specify at least a url or a file.");
|
206
|
+
System.out.println( USAGE );
|
207
|
+
return;
|
208
|
+
}
|
209
|
+
|
18
210
|
Pd4Ruby converter = new Pd4Ruby();
|
19
|
-
converter.generatePDF(
|
211
|
+
converter.generatePDF( url, file, width, pagesize, permissions, password, bookmarks, orientation, insets, ttf, header, footer, debug );
|
20
212
|
}
|
21
|
-
|
22
|
-
private void generatePDF(String inputUrl, String htmlWidth, String pageFormat, String
|
23
|
-
|
24
|
-
|
213
|
+
|
214
|
+
private void generatePDF(String inputUrl, String inputFile, int htmlWidth, String pageFormat, int permissions, String password, String bookmarks, String orientation, String insets, String fontsDir, String headerBody, String footerBody, int debug)
|
215
|
+
throws Exception {
|
216
|
+
|
25
217
|
PD4ML pd4ml = new PD4ML();
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
218
|
+
|
219
|
+
if ( insets != null ) {
|
220
|
+
StringTokenizer st = new StringTokenizer( insets, ",");
|
221
|
+
try {
|
222
|
+
int top = Integer.parseInt(st.nextToken());
|
223
|
+
int left = Integer.parseInt(st.nextToken());
|
224
|
+
int bottom = Integer.parseInt(st.nextToken());
|
225
|
+
int right = Integer.parseInt(st.nextToken());
|
226
|
+
String units = st.nextToken();
|
227
|
+
Insets ins = new Insets(top, left, bottom, right);
|
228
|
+
if ("mm".equalsIgnoreCase(units)) {
|
229
|
+
pd4ml.setPageInsetsMM(ins);
|
230
|
+
} else {
|
231
|
+
pd4ml.setPageInsets(ins);
|
232
|
+
}
|
233
|
+
} catch (Exception e) {
|
234
|
+
throw new Exception(
|
235
|
+
"Invalid page insets (top, left, bottom, right, units): "
|
236
|
+
+ insets );
|
237
|
+
}
|
30
238
|
}
|
31
|
-
|
239
|
+
|
240
|
+
pd4ml.setHtmlWidth(htmlWidth);
|
241
|
+
pd4ml.setAuthorName("LipsiaSoft s.r.l.");
|
242
|
+
|
32
243
|
Class c = PD4Constants.class;
|
33
244
|
Field f = c.getField( pageFormat );
|
34
245
|
Dimension d = (Dimension)f.get( pd4ml );
|
35
|
-
|
36
|
-
if (
|
37
|
-
|
246
|
+
|
247
|
+
if ("PORTRAIT".equalsIgnoreCase(orientation)) {
|
248
|
+
pd4ml.setPageSize(d);
|
249
|
+
} else {
|
250
|
+
pd4ml.setPageSize( pd4ml.changePageOrientation( d ) );
|
38
251
|
}
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
252
|
+
|
253
|
+
if ( permissions != -1 ) {
|
254
|
+
if ( password != null ) {
|
255
|
+
pd4ml.setPermissions(password, permissions, true);
|
256
|
+
} else {
|
257
|
+
pd4ml.setPermissions("empty", permissions, true);
|
258
|
+
}
|
259
|
+
}
|
260
|
+
|
261
|
+
if ( bookmarks != null ) {
|
262
|
+
if ( "ANCHORS".equalsIgnoreCase(bookmarks) ) {
|
263
|
+
pd4ml.generateOutlines(false);
|
264
|
+
} else if ( "HEADINGS".equalsIgnoreCase(bookmarks) ) {
|
265
|
+
pd4ml.generateOutlines(true);
|
266
|
+
}
|
267
|
+
}
|
268
|
+
|
44
269
|
if ( fontsDir != null && fontsDir.length() > 0 ) {
|
45
270
|
pd4ml.useTTF( fontsDir, true );
|
46
|
-
}
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
271
|
+
}
|
272
|
+
|
273
|
+
if ( headerBody != null && headerBody.length() > 0 ) {
|
274
|
+
PD4PageMark header = new PD4PageMark();
|
275
|
+
header.setAreaHeight( -1 ); // autocompute
|
276
|
+
header.setHtmlTemplate( headerBody ); // autocompute
|
277
|
+
pd4ml.setPageHeader( header );
|
278
|
+
}
|
279
|
+
|
280
|
+
if ( footerBody != null && footerBody.length() > 0 ) {
|
281
|
+
PD4PageMark footer = new PD4PageMark();
|
282
|
+
footer.setAreaHeight( -1 ); // autocompute
|
283
|
+
footer.setHtmlTemplate( headerBody ); // autocompute
|
284
|
+
pd4ml.setPageFooter( footer );
|
285
|
+
}
|
286
|
+
|
287
|
+
if ( debug != 0 ) {
|
288
|
+
pd4ml.enableDebugInfo();
|
289
|
+
}
|
290
|
+
|
291
|
+
if (inputFile != null) {
|
292
|
+
pd4ml.render(("file:" + inputFile), System.out);
|
293
|
+
} else if (inputUrl != null) {
|
294
|
+
pd4ml.render(new URL(inputUrl), System.out);
|
295
|
+
}
|
51
296
|
}
|
52
297
|
}
|
298
|
+
|