spiderfw 0.6.23 → 0.6.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +10 -1
 - data/README.rdoc +1 -1
 - data/VERSION +1 -1
 - data/apps/config_editor/_init.rb +1 -2
 - data/apps/config_editor/controllers/config_editor_controller.rb +1 -7
 - data/apps/core/admin/controllers/admin_controller.rb +1 -1
 - data/apps/core/admin/public/css/sass/admin.css +35 -31
 - data/apps/core/admin/public/sass/admin.scss +6 -1
 - data/apps/core/components/widgets/crud/crud.shtml +2 -2
 - data/apps/core/components/widgets/table/table.rb +5 -5
 - data/apps/core/forms/tags/element_row.erb +15 -10
 - data/apps/core/forms/widgets/form/form.rb +35 -22
 - data/apps/core/forms/widgets/inputs/checkbox/checkbox.shtml +2 -2
 - data/apps/core/forms/widgets/inputs/date_time/date_time.shtml +2 -2
 - data/apps/core/forms/widgets/inputs/file_input/file_input.shtml +2 -2
 - data/apps/core/forms/widgets/inputs/html_area/html_area.shtml +2 -2
 - data/apps/core/forms/widgets/inputs/input/input.shtml +2 -2
 - data/apps/core/forms/widgets/inputs/password/password.shtml +2 -2
 - data/apps/core/forms/widgets/inputs/search_select/search_select.shtml +1 -1
 - data/apps/core/forms/widgets/inputs/select/select.shtml +2 -2
 - data/apps/core/forms/widgets/inputs/text/text.shtml +2 -2
 - data/apps/core/forms/widgets/inputs/text_area/text_area.shtml +2 -2
 - data/apps/core/forms/widgets/inputs/time_span/time_span.shtml +1 -1
 - data/blueprints/home/config.ru +8 -0
 - data/lib/spiderfw/app.rb +416 -224
 - data/lib/spiderfw/cmd/commands/app.rb +243 -239
 - data/lib/spiderfw/cmd/commands/cert.rb +421 -417
 - data/lib/spiderfw/cmd/commands/config.rb +85 -82
 - data/lib/spiderfw/cmd/commands/console.rb +64 -40
 - data/lib/spiderfw/cmd/commands/content.rb +29 -25
 - data/lib/spiderfw/cmd/commands/create.rb +58 -54
 - data/lib/spiderfw/cmd/commands/model.rb +118 -114
 - data/lib/spiderfw/cmd/commands/setup.rb +55 -51
 - data/lib/spiderfw/cmd/commands/test.rb +63 -59
 - data/lib/spiderfw/cmd/commands/webserver.rb +56 -51
 - data/lib/spiderfw/config/options/spider.rb +4 -3
 - data/lib/spiderfw/controller/controller.rb +2 -0
 - data/lib/spiderfw/controller/http_controller.rb +1 -2
 - data/lib/spiderfw/controller/mixins/static_content.rb +3 -3
 - data/lib/spiderfw/controller/mixins/visual.rb +30 -15
 - data/lib/spiderfw/controller/response.rb +84 -0
 - data/lib/spiderfw/controller/session/file_session.rb +2 -2
 - data/lib/spiderfw/http/adapters/rack.rb +12 -13
 - data/lib/spiderfw/http/server.rb +80 -46
 - data/lib/spiderfw/i18n/cldr.rb +6 -9
 - data/lib/spiderfw/model/base_model.rb +103 -23
 - data/lib/spiderfw/model/condition.rb +110 -25
 - data/lib/spiderfw/model/mappers/db_mapper.rb +14 -6
 - data/lib/spiderfw/model/mappers/mapper.rb +440 -197
 - data/lib/spiderfw/model/model.rb +105 -21
 - data/lib/spiderfw/model/model_hash.rb +9 -1
 - data/lib/spiderfw/model/query.rb +50 -9
 - data/lib/spiderfw/model/query_set.rb +211 -44
 - data/lib/spiderfw/model/request.rb +28 -21
 - data/lib/spiderfw/model/storage/base_storage.rb +125 -10
 - data/lib/spiderfw/model/storage/db/db_storage.rb +7 -4
 - data/lib/spiderfw/model/storage.rb +8 -1
 - data/lib/spiderfw/setup/spider_setup_wizard.rb +9 -7
 - data/lib/spiderfw/spider.rb +270 -43
 - data/lib/spiderfw/templates/layout.rb +9 -4
 - data/lib/spiderfw/templates/resources/sass.rb +3 -2
 - data/lib/spiderfw/templates/template.rb +1 -0
 - data/lib/spiderfw/utils/annotations.rb +3 -1
 - data/lib/spiderfw/utils/logger.rb +1 -1
 - data/lib/spiderfw/utils/monkey/symbol.rb +4 -2
 - data/lib/spiderfw/utils/shared_store/file_shared_store.rb +2 -2
 - data/lib/spiderfw/utils/thread_out.rb +3 -1
 - data/public/css/error_page.css +83 -0
 - data/public/js/error_page.js +5 -0
 - data/spider.gemspec +4 -1
 - data/templates/email/error.erb +9 -0
 - metadata +28 -12
 - data/apps/config_editor/widgets/edit_bool/edit_bool.rb +0 -8
 - data/apps/config_editor/widgets/edit_bool/edit_bool.shtml +0 -5
 
    
        data/CHANGELOG
    CHANGED
    
    | 
         @@ -1,5 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            = 0.6.24
         
     | 
| 
      
 2 
     | 
    
         
            +
            == 24 February, 2012
         
     | 
| 
      
 3 
     | 
    
         
            +
            * Use Rack instead of custom adapters for all servers
         
     | 
| 
      
 4 
     | 
    
         
            +
            * Use Pry for spider console if available
         
     | 
| 
      
 5 
     | 
    
         
            +
            * Input widgets are no longer wrapped in divs
         
     | 
| 
      
 6 
     | 
    
         
            +
            * #before and #after are no longer executed for static files
         
     | 
| 
      
 7 
     | 
    
         
            +
            * Various fixes, some api documentation
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       1 
10 
     | 
    
         
             
            = 0.6.23
         
     | 
| 
       2 
     | 
    
         
            -
            == 6 February,  
     | 
| 
      
 11 
     | 
    
         
            +
            == 6 February, 2012
         
     | 
| 
       3 
12 
     | 
    
         
             
            * Config options can now have a Proc for :choices; new :fallback param to reuse other config
         
     | 
| 
       4 
13 
     | 
    
         
             
            * Added new-link, edit-link attributes to Crud
         
     | 
| 
       5 
14 
     | 
    
         
             
            * Added Twitter Bootstrap 2 to core components
         
     | 
    
        data/README.rdoc
    CHANGED
    
    | 
         @@ -4,7 +4,7 @@ Spider is a Model-View-Controller application framework, mainly intended for Web 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            Its main features are:
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
            * A  
     | 
| 
      
 7 
     | 
    
         
            +
            * A Model layer that is easy to use, yet flexible enough to adapt to legacy schemas. 
         
     | 
| 
       8 
8 
     | 
    
         
             
              Models are defined in Ruby: schemas are autogenerated, but can be specified manually when needed.
         
     | 
| 
       9 
9 
     | 
    
         
             
              Direct sql is almost never used, but you can embed custom sql behaviour per model for each storage.
         
     | 
| 
       10 
10 
     | 
    
         | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0.6. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.6.24
         
     | 
    
        data/apps/config_editor/_init.rb
    CHANGED
    
    | 
         @@ -11,5 +11,4 @@ Spider::Template.register_namespace('config_editor', Spider::ConfigEditor) 
     | 
|
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            require 'apps/config_editor/controllers/config_editor_controller'
         
     | 
| 
       14 
     | 
    
         
            -
            require 'apps/config_editor/widgets/edit/edit'
         
     | 
| 
       15 
     | 
    
         
            -
            require 'apps/config_editor/widgets/edit_bool/edit_bool'
         
     | 
| 
      
 14 
     | 
    
         
            +
            require 'apps/config_editor/widgets/edit/edit'
         
     | 
| 
         @@ -75,13 +75,7 @@ module Spider; module ConfigEditor 
     | 
|
| 
       75 
75 
     | 
    
         
             
                    end
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
77 
     | 
    
         
             
                    def create_edit_widget(key, option)
         
     | 
| 
       78 
     | 
    
         
            -
                         
     | 
| 
       79 
     | 
    
         
            -
                        when 'Spider::Bool', 'Spider::DataTypes::Bool'
         
     | 
| 
       80 
     | 
    
         
            -
                            EditBool
         
     | 
| 
       81 
     | 
    
         
            -
                        else
         
     | 
| 
       82 
     | 
    
         
            -
                            Edit
         
     | 
| 
       83 
     | 
    
         
            -
                        end
         
     | 
| 
       84 
     | 
    
         
            -
                        w = wclass.new(@request, @response, @scene)
         
     | 
| 
      
 78 
     | 
    
         
            +
                        w = Edit.new(@request, @response, @scene)
         
     | 
| 
       85 
79 
     | 
    
         
             
                        w.attributes[:name] = key
         
     | 
| 
       86 
80 
     | 
    
         
             
                        w.attributes[:option] = option
         
     | 
| 
       87 
81 
     | 
    
         
             
                        w.widget_init
         
     | 
| 
         @@ -49,7 +49,7 @@ module Spider; module Admin 
     | 
|
| 
       49 
49 
     | 
    
         
             
                            end
         
     | 
| 
       50 
50 
     | 
    
         
             
                            url = self.class.http_url(short_name)
         
     | 
| 
       51 
51 
     | 
    
         
             
                            @scene.apps << {
         
     | 
| 
       52 
     | 
    
         
            -
                                :icon => app[:module].pub_url+'/'+app[:options][:icon],
         
     | 
| 
      
 52 
     | 
    
         
            +
                                :icon => app[:options][:icon] ? app[:module].pub_url+'/'+app[:options][:icon] : nil,
         
     | 
| 
       53 
53 
     | 
    
         
             
                                :url => self.class.http_url(short_name),
         
     | 
| 
       54 
54 
     | 
    
         
             
                                :name => app[:module].full_name,
         
     | 
| 
       55 
55 
     | 
    
         
             
                                :description => app[:module].description,
         
     | 
| 
         @@ -23,27 +23,31 @@ body:after { 
     | 
|
| 
       23 
23 
     | 
    
         
             
              background-position: 0 0;
         
     | 
| 
       24 
24 
     | 
    
         
             
            }
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
            /* line  
     | 
| 
       27 
     | 
    
         
            -
            #admin form.form-horizontal  
     | 
| 
      
 26 
     | 
    
         
            +
            /* line 14, ../../sass/admin.scss */
         
     | 
| 
      
 27 
     | 
    
         
            +
            #admin form.form-horizontal .help-block {
         
     | 
| 
      
 28 
     | 
    
         
            +
              max-width: 550px;
         
     | 
| 
      
 29 
     | 
    
         
            +
            }
         
     | 
| 
      
 30 
     | 
    
         
            +
            /* line 22, ../../sass/admin.scss */
         
     | 
| 
      
 31 
     | 
    
         
            +
            #admin form.form-horizontal input[type="text"],
         
     | 
| 
       28 
32 
     | 
    
         
             
            #admin form.form-horizontal textarea,
         
     | 
| 
       29 
33 
     | 
    
         
             
            #admin form.form-horizontal select,
         
     | 
| 
       30 
34 
     | 
    
         
             
            #admin form.form-horizontal .uneditable-input {
         
     | 
| 
       31 
35 
     | 
    
         
             
              width: 300px;
         
     | 
| 
       32 
36 
     | 
    
         
             
            }
         
     | 
| 
       33 
     | 
    
         
            -
            /* line  
     | 
| 
      
 37 
     | 
    
         
            +
            /* line 26, ../../sass/admin.scss */
         
     | 
| 
       34 
38 
     | 
    
         
             
            #admin form.form-horizontal select {
         
     | 
| 
       35 
39 
     | 
    
         
             
              width: 310px;
         
     | 
| 
       36 
40 
     | 
    
         
             
            }
         
     | 
| 
       37 
     | 
    
         
            -
            /* line  
     | 
| 
      
 41 
     | 
    
         
            +
            /* line 30, ../../sass/admin.scss */
         
     | 
| 
       38 
42 
     | 
    
         
             
            #admin form.form-horizontal input.btn {
         
     | 
| 
       39 
43 
     | 
    
         
             
              width: auto;
         
     | 
| 
       40 
44 
     | 
    
         
             
            }
         
     | 
| 
       41 
     | 
    
         
            -
            /* line  
     | 
| 
      
 45 
     | 
    
         
            +
            /* line 34, ../../sass/admin.scss */
         
     | 
| 
       42 
46 
     | 
    
         
             
            #admin form.form-horizontal .form-actions {
         
     | 
| 
       43 
47 
     | 
    
         
             
              padding-left: 250px;
         
     | 
| 
       44 
48 
     | 
    
         
             
            }
         
     | 
| 
       45 
49 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
            /* line  
     | 
| 
      
 50 
     | 
    
         
            +
            /* line 44, ../../sass/admin.scss */
         
     | 
| 
       47 
51 
     | 
    
         
             
            #header {
         
     | 
| 
       48 
52 
     | 
    
         
             
              padding-bottom: 10px;
         
     | 
| 
       49 
53 
     | 
    
         
             
              background: url('../../img/css/header_bg.png?1321971233') repeat-x scroll center top;
         
     | 
| 
         @@ -51,27 +55,27 @@ body:after { 
     | 
|
| 
       51 
55 
     | 
    
         
             
              position: relative;
         
     | 
| 
       52 
56 
     | 
    
         
             
              border-bottom: 2px solid #555555;
         
     | 
| 
       53 
57 
     | 
    
         
             
            }
         
     | 
| 
       54 
     | 
    
         
            -
            /* line  
     | 
| 
      
 58 
     | 
    
         
            +
            /* line 51, ../../sass/admin.scss */
         
     | 
| 
       55 
59 
     | 
    
         
             
            #header #header_top {
         
     | 
| 
       56 
60 
     | 
    
         
             
              overflow: hidden;
         
     | 
| 
       57 
61 
     | 
    
         
             
              *zoom: 1;
         
     | 
| 
       58 
62 
     | 
    
         
             
            }
         
     | 
| 
       59 
     | 
    
         
            -
            /* line  
     | 
| 
      
 63 
     | 
    
         
            +
            /* line 55, ../../sass/admin.scss */
         
     | 
| 
       60 
64 
     | 
    
         
             
            #header h1 {
         
     | 
| 
       61 
65 
     | 
    
         
             
              font-size: 27px;
         
     | 
| 
       62 
66 
     | 
    
         
             
              color: #444444;
         
     | 
| 
       63 
67 
     | 
    
         
             
            }
         
     | 
| 
       64 
     | 
    
         
            -
            /* line  
     | 
| 
      
 68 
     | 
    
         
            +
            /* line 60, ../../sass/admin.scss */
         
     | 
| 
       65 
69 
     | 
    
         
             
            #header #main_title {
         
     | 
| 
       66 
70 
     | 
    
         
             
              float: left;
         
     | 
| 
       67 
71 
     | 
    
         
             
              margin-top: 8px;
         
     | 
| 
       68 
72 
     | 
    
         
             
              margin-left: 40px;
         
     | 
| 
       69 
73 
     | 
    
         
             
            }
         
     | 
| 
       70 
     | 
    
         
            -
            /* line  
     | 
| 
      
 74 
     | 
    
         
            +
            /* line 65, ../../sass/admin.scss */
         
     | 
| 
       71 
75 
     | 
    
         
             
            #header #main_title h1 {
         
     | 
| 
       72 
76 
     | 
    
         
             
              margin-bottom: 8px;
         
     | 
| 
       73 
77 
     | 
    
         
             
            }
         
     | 
| 
       74 
     | 
    
         
            -
            /* line  
     | 
| 
      
 78 
     | 
    
         
            +
            /* line 69, ../../sass/admin.scss */
         
     | 
| 
       75 
79 
     | 
    
         
             
            #header #admin_controls {
         
     | 
| 
       76 
80 
     | 
    
         
             
              font-size: .95em;
         
     | 
| 
       77 
81 
     | 
    
         
             
              float: right;
         
     | 
| 
         @@ -79,21 +83,21 @@ body:after { 
     | 
|
| 
       79 
83 
     | 
    
         
             
              margin-right: 30px;
         
     | 
| 
       80 
84 
     | 
    
         
             
              color: white;
         
     | 
| 
       81 
85 
     | 
    
         
             
            }
         
     | 
| 
       82 
     | 
    
         
            -
            /* line  
     | 
| 
      
 86 
     | 
    
         
            +
            /* line 76, ../../sass/admin.scss */
         
     | 
| 
       83 
87 
     | 
    
         
             
            #header #admin_controls a {
         
     | 
| 
       84 
88 
     | 
    
         
             
              color: white;
         
     | 
| 
       85 
89 
     | 
    
         
             
            }
         
     | 
| 
       86 
     | 
    
         
            -
            /* line  
     | 
| 
      
 90 
     | 
    
         
            +
            /* line 80, ../../sass/admin.scss */
         
     | 
| 
       87 
91 
     | 
    
         
             
            #header #admin_controls .welcome {
         
     | 
| 
       88 
92 
     | 
    
         
             
              margin-right: 6px;
         
     | 
| 
       89 
93 
     | 
    
         
             
            }
         
     | 
| 
       90 
     | 
    
         
            -
            /* line  
     | 
| 
      
 94 
     | 
    
         
            +
            /* line 84, ../../sass/admin.scss */
         
     | 
| 
       91 
95 
     | 
    
         
             
            #header #admin_controls .logout_link {
         
     | 
| 
       92 
96 
     | 
    
         
             
              background-position: right;
         
     | 
| 
       93 
97 
     | 
    
         
             
              padding-right: 25px;
         
     | 
| 
       94 
98 
     | 
    
         
             
              margin-left: 6px;
         
     | 
| 
       95 
99 
     | 
    
         
             
            }
         
     | 
| 
       96 
     | 
    
         
            -
            /* line  
     | 
| 
      
 100 
     | 
    
         
            +
            /* line 93, ../../sass/admin.scss */
         
     | 
| 
       97 
101 
     | 
    
         
             
            #header #app_buttons {
         
     | 
| 
       98 
102 
     | 
    
         
             
              height: 68px;
         
     | 
| 
       99 
103 
     | 
    
         
             
              min-width: 200px;
         
     | 
| 
         @@ -121,11 +125,11 @@ body:after { 
     | 
|
| 
       121 
125 
     | 
    
         
             
            #header #app_buttons {
         
     | 
| 
       122 
126 
     | 
    
         
             
              *display: inline;
         
     | 
| 
       123 
127 
     | 
    
         
             
            }
         
     | 
| 
       124 
     | 
    
         
            -
            /* line  
     | 
| 
      
 128 
     | 
    
         
            +
            /* line 104, ../../sass/admin.scss */
         
     | 
| 
       125 
129 
     | 
    
         
             
            #header #app_buttons a {
         
     | 
| 
       126 
130 
     | 
    
         
             
              color: #222222;
         
     | 
| 
       127 
131 
     | 
    
         
             
            }
         
     | 
| 
       128 
     | 
    
         
            -
            /* line  
     | 
| 
      
 132 
     | 
    
         
            +
            /* line 108, ../../sass/admin.scss */
         
     | 
| 
       129 
133 
     | 
    
         
             
            #header #app_buttons div {
         
     | 
| 
       130 
134 
     | 
    
         
             
              width: 55px;
         
     | 
| 
       131 
135 
     | 
    
         
             
              height: 55px;
         
     | 
| 
         @@ -135,7 +139,7 @@ body:after { 
     | 
|
| 
       135 
139 
     | 
    
         
             
              float: left;
         
     | 
| 
       136 
140 
     | 
    
         
             
              background-color: #EEEEEE;
         
     | 
| 
       137 
141 
     | 
    
         
             
            }
         
     | 
| 
       138 
     | 
    
         
            -
            /* line  
     | 
| 
      
 142 
     | 
    
         
            +
            /* line 117, ../../sass/admin.scss */
         
     | 
| 
       139 
143 
     | 
    
         
             
            #header #app_buttons div img {
         
     | 
| 
       140 
144 
     | 
    
         
             
              margin-left: auto;
         
     | 
| 
       141 
145 
     | 
    
         
             
              margin-right: auto;
         
     | 
| 
         @@ -143,40 +147,40 @@ body:after { 
     | 
|
| 
       143 
147 
     | 
    
         
             
              filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
         
     | 
| 
       144 
148 
     | 
    
         
             
              opacity: 0.8;
         
     | 
| 
       145 
149 
     | 
    
         
             
            }
         
     | 
| 
       146 
     | 
    
         
            -
            /* line  
     | 
| 
      
 150 
     | 
    
         
            +
            /* line 124, ../../sass/admin.scss */
         
     | 
| 
       147 
151 
     | 
    
         
             
            #header #app_buttons div span.name {
         
     | 
| 
       148 
152 
     | 
    
         
             
              filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=90);
         
     | 
| 
       149 
153 
     | 
    
         
             
              opacity: 0.9;
         
     | 
| 
       150 
154 
     | 
    
         
             
              display: block;
         
     | 
| 
       151 
155 
     | 
    
         
             
              font-size: 0.8em;
         
     | 
| 
       152 
156 
     | 
    
         
             
            }
         
     | 
| 
       153 
     | 
    
         
            -
            /* line  
     | 
| 
      
 157 
     | 
    
         
            +
            /* line 131, ../../sass/admin.scss */
         
     | 
| 
       154 
158 
     | 
    
         
             
            #header #app_buttons a.active div {
         
     | 
| 
       155 
159 
     | 
    
         
             
              border: 1px solid #DDDD00;
         
     | 
| 
       156 
160 
     | 
    
         
             
            }
         
     | 
| 
       157 
     | 
    
         
            -
            /* line  
     | 
| 
      
 161 
     | 
    
         
            +
            /* line 133, ../../sass/admin.scss */
         
     | 
| 
       158 
162 
     | 
    
         
             
            #header #app_buttons a.active div img {
         
     | 
| 
       159 
163 
     | 
    
         
             
              filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
         
     | 
| 
       160 
164 
     | 
    
         
             
              opacity: 0.7;
         
     | 
| 
       161 
165 
     | 
    
         
             
            }
         
     | 
| 
       162 
     | 
    
         
            -
            /* line  
     | 
| 
      
 166 
     | 
    
         
            +
            /* line 136, ../../sass/admin.scss */
         
     | 
| 
       163 
167 
     | 
    
         
             
            #header #app_buttons a.active div span.name {
         
     | 
| 
       164 
168 
     | 
    
         
             
              filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
         
     | 
| 
       165 
169 
     | 
    
         
             
              opacity: 0.8;
         
     | 
| 
       166 
170 
     | 
    
         
             
            }
         
     | 
| 
       167 
171 
     | 
    
         | 
| 
       168 
     | 
    
         
            -
            /* line  
     | 
| 
      
 172 
     | 
    
         
            +
            /* line 144, ../../sass/admin.scss */
         
     | 
| 
       169 
173 
     | 
    
         
             
            #admin-switcher-menu .section_title {
         
     | 
| 
       170 
174 
     | 
    
         
             
              font-size: 14px;
         
     | 
| 
       171 
175 
     | 
    
         
             
              line-height: 36px;
         
     | 
| 
       172 
176 
     | 
    
         
             
            }
         
     | 
| 
       173 
177 
     | 
    
         | 
| 
       174 
     | 
    
         
            -
            /* line  
     | 
| 
      
 178 
     | 
    
         
            +
            /* line 154, ../../sass/admin.scss */
         
     | 
| 
       175 
179 
     | 
    
         
             
            #spider-admin .container-fluid .content {
         
     | 
| 
       176 
180 
     | 
    
         
             
              background-color: white;
         
     | 
| 
       177 
181 
     | 
    
         
             
            }
         
     | 
| 
       178 
182 
     | 
    
         | 
| 
       179 
     | 
    
         
            -
            /* line  
     | 
| 
      
 183 
     | 
    
         
            +
            /* line 161, ../../sass/admin.scss */
         
     | 
| 
       180 
184 
     | 
    
         
             
            #container, .spider-admin-container {
         
     | 
| 
       181 
185 
     | 
    
         
             
              background: url('../../img/css/side_bg.png?1321971233') repeat-y;
         
     | 
| 
       182 
186 
     | 
    
         
             
              position: relative;
         
     | 
| 
         @@ -188,7 +192,7 @@ body:after { 
     | 
|
| 
       188 
192 
     | 
    
         
             
              overflow: hidden;
         
     | 
| 
       189 
193 
     | 
    
         
             
              *zoom: 1;
         
     | 
| 
       190 
194 
     | 
    
         
             
            }
         
     | 
| 
       191 
     | 
    
         
            -
            /* line  
     | 
| 
      
 195 
     | 
    
         
            +
            /* line 171, ../../sass/admin.scss */
         
     | 
| 
       192 
196 
     | 
    
         
             
            #container #sidebar, #container > .spider-admin-sidebar, .spider-admin-container #sidebar, .spider-admin-container > .spider-admin-sidebar {
         
     | 
| 
       193 
197 
     | 
    
         
             
              position: absolute;
         
     | 
| 
       194 
198 
     | 
    
         
             
              top: 0;
         
     | 
| 
         @@ -196,27 +200,27 @@ body:after { 
     | 
|
| 
       196 
200 
     | 
    
         
             
              width: 220px;
         
     | 
| 
       197 
201 
     | 
    
         
             
              padding: 20px 10px;
         
     | 
| 
       198 
202 
     | 
    
         
             
            }
         
     | 
| 
       199 
     | 
    
         
            -
            /* line  
     | 
| 
      
 203 
     | 
    
         
            +
            /* line 178, ../../sass/admin.scss */
         
     | 
| 
       200 
204 
     | 
    
         
             
            #container #sidebar li.active a, #container > .spider-admin-sidebar li.active a, .spider-admin-container #sidebar li.active a, .spider-admin-container > .spider-admin-sidebar li.active a {
         
     | 
| 
       201 
205 
     | 
    
         
             
              text-decoration: underline;
         
     | 
| 
       202 
206 
     | 
    
         
             
            }
         
     | 
| 
       203 
     | 
    
         
            -
            /* line  
     | 
| 
      
 207 
     | 
    
         
            +
            /* line 182, ../../sass/admin.scss */
         
     | 
| 
       204 
208 
     | 
    
         
             
            #container #sidebar li, #container > .spider-admin-sidebar li, .spider-admin-container #sidebar li, .spider-admin-container > .spider-admin-sidebar li {
         
     | 
| 
       205 
209 
     | 
    
         
             
              margin-bottom: 1px;
         
     | 
| 
       206 
210 
     | 
    
         
             
            }
         
     | 
| 
       207 
     | 
    
         
            -
            /* line  
     | 
| 
      
 211 
     | 
    
         
            +
            /* line 187, ../../sass/admin.scss */
         
     | 
| 
       208 
212 
     | 
    
         
             
            #container #content, #container > .spider-admin-content, .spider-admin-container #content, .spider-admin-container > .spider-admin-content {
         
     | 
| 
       209 
213 
     | 
    
         
             
              margin-left: 240px;
         
     | 
| 
       210 
214 
     | 
    
         
             
            }
         
     | 
| 
       211 
215 
     | 
    
         | 
| 
       212 
     | 
    
         
            -
            /* line  
     | 
| 
      
 216 
     | 
    
         
            +
            /* line 192, ../../sass/admin.scss */
         
     | 
| 
       213 
217 
     | 
    
         
             
            .crud .table {
         
     | 
| 
       214 
218 
     | 
    
         
             
              width: auto;
         
     | 
| 
       215 
219 
     | 
    
         
             
              min-width: 400px;
         
     | 
| 
       216 
220 
     | 
    
         
             
            }
         
     | 
| 
       217 
221 
     | 
    
         | 
| 
       218 
222 
     | 
    
         
             
            @media screen and (max-width: 500px) {
         
     | 
| 
       219 
     | 
    
         
            -
              /* line  
     | 
| 
      
 223 
     | 
    
         
            +
              /* line 201, ../../sass/admin.scss */
         
     | 
| 
       220 
224 
     | 
    
         
             
              #header #main_title {
         
     | 
| 
       221 
225 
     | 
    
         
             
                font-size: 10px;
         
     | 
| 
       222 
226 
     | 
    
         
             
              }
         
     | 
| 
         @@ -1,10 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            <div class="{ @widget[:css_class] }">
         
     | 
| 
       2 
2 
     | 
    
         
             
                <tpl:assets widgets="core:table,forms:form" />
         
     | 
| 
       3 
3 
     | 
    
         
             
                <tpl:asset type="css" src="css/crud.css" />
         
     | 
| 
       4 
     | 
    
         
            -
                <div sp:if="@saved" class=" 
     | 
| 
      
 4 
     | 
    
         
            +
                <div sp:if="@saved" class="alert alert-success">
         
     | 
| 
       5 
5 
     | 
    
         
             
                    Salvataggio effettuato
         
     | 
| 
       6 
6 
     | 
    
         
             
                </div>
         
     | 
| 
       7 
     | 
    
         
            -
                <div sp:if="@deleted" class=" 
     | 
| 
      
 7 
     | 
    
         
            +
                <div sp:if="@deleted" class="alert alert-success">
         
     | 
| 
       8 
8 
     | 
    
         
             
                    Cancellazione effettuata
         
     | 
| 
       9 
9 
     | 
    
         
             
                </div>
         
     | 
| 
       10 
10 
     | 
    
         
             
                <core:confirm id="ask_delete" sp:if="@ask_delete">
         
     | 
| 
         @@ -179,21 +179,21 @@ module Spider; module Components 
     | 
|
| 
       179 
179 
     | 
    
         
             
                                return list
         
     | 
| 
       180 
180 
     | 
    
         
             
                            end
         
     | 
| 
       181 
181 
     | 
    
         
             
                        else
         
     | 
| 
       182 
     | 
    
         
            -
                            format_value(element.type, row[el])
         
     | 
| 
      
 182 
     | 
    
         
            +
                            format_value(element.type, row[el], element.attributes)
         
     | 
| 
       183 
183 
     | 
    
         
             
                        end
         
     | 
| 
       184 
184 
     | 
    
         
             
                    end
         
     | 
| 
       185 
185 
     | 
    
         | 
| 
       186 
     | 
    
         
            -
                    def format_value(type, value)
         
     | 
| 
      
 186 
     | 
    
         
            +
                    def format_value(type, value, attributes={})
         
     | 
| 
       187 
187 
     | 
    
         
             
                        if type <= Spider::Bool
         
     | 
| 
       188 
     | 
    
         
            -
                            return  
     | 
| 
      
 188 
     | 
    
         
            +
                            return value ? _('Yes') : _('No')
         
     | 
| 
       189 
189 
     | 
    
         
             
                        elsif !value
         
     | 
| 
       190 
190 
     | 
    
         
             
                            return ''
         
     | 
| 
       191 
191 
     | 
    
         
             
                        elsif type <= Date || type <= Time
         
     | 
| 
       192 
192 
     | 
    
         
             
                            return Spider::I18n.localize_date_time(@request.locale, value, :short)
         
     | 
| 
       193 
193 
     | 
    
         
             
                        elsif type <= Float || type <= BigDecimal
         
     | 
| 
       194 
194 
     | 
    
         
             
                            str = Spider::I18n.localize_number(@request.locale, value)
         
     | 
| 
       195 
     | 
    
         
            -
                            if  
     | 
| 
       196 
     | 
    
         
            -
                                str = "&#{ 
     | 
| 
      
 195 
     | 
    
         
            +
                            if attributes[:currency]
         
     | 
| 
      
 196 
     | 
    
         
            +
                                str = "&#{attributes[:currency]}; #{str}"
         
     | 
| 
       197 
197 
     | 
    
         
             
                            end
         
     | 
| 
       198 
198 
     | 
    
         
             
                            return str
         
     | 
| 
       199 
199 
     | 
    
         
             
                        elsif value.respond_to?(:format)
         
     | 
| 
         @@ -6,14 +6,19 @@ 
     | 
|
| 
       6 
6 
     | 
    
         
             
            %>
         
     | 
| 
       7 
7 
     | 
    
         
             
            <forms:row error_condition="<%=error_condition%>" required="<%=required%>" element="<%=@attributes['element']%>">
         
     | 
| 
       8 
8 
     | 
    
         
             
                <forms:element_label element="<%=@attributes['element']%>" required="<%=required%>" inputs_hash="<%=inputs_hash%>"/>
         
     | 
| 
       9 
     | 
    
         
            -
                < 
     | 
| 
       10 
     | 
    
         
            -
                  <sp: 
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                     
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                     
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
                <div class="controls">
         
     | 
| 
      
 10 
     | 
    
         
            +
                  <sp:run obj="@<%=inputs_hash%>[<%=@attributes['element']%>]" widget="<%=@attributes['element']%>">
         
     | 
| 
      
 11 
     | 
    
         
            +
                    <sp:attribute widget="<%=@attributes['element'][1..-1]%>" name="required" value="<%=(@attributes['required']=='true')? 'true' : ''%>" />
         
     | 
| 
      
 12 
     | 
    
         
            +
                    <%
         
     | 
| 
      
 13 
     | 
    
         
            +
                      (@attributes.keys - tag_attrs).each do |k|
         
     | 
| 
      
 14 
     | 
    
         
            +
                    %>
         
     | 
| 
      
 15 
     | 
    
         
            +
                    <sp:attribute widget="<%=@attributes['element'][1..-1]%>" name="<%=k%>" value="<%=@attributes[k]%>" />
         
     | 
| 
      
 16 
     | 
    
         
            +
                    <%
         
     | 
| 
      
 17 
     | 
    
         
            +
                      end
         
     | 
| 
      
 18 
     | 
    
         
            +
                    %>
         
     | 
| 
      
 19 
     | 
    
         
            +
                  </sp:run>
         
     | 
| 
      
 20 
     | 
    
         
            +
                  <p sp:if="!@model.elements[<%=@attributes['element']%>].attributes[:description].blank?" class="help-block">
         
     | 
| 
      
 21 
     | 
    
         
            +
                    { @model.elements[<%=@attributes['element']%>].attributes[:description] }
         
     | 
| 
      
 22 
     | 
    
         
            +
                  </p>
         
     | 
| 
      
 23 
     | 
    
         
            +
                </div>
         
     | 
| 
       19 
24 
     | 
    
         
             
            </forms:row>
         
     | 
| 
         @@ -84,6 +84,7 @@ module Spider; module Forms 
     | 
|
| 
       84 
84 
     | 
    
         
             
                                @model = @obj.class
         
     | 
| 
       85 
85 
     | 
    
         
             
                            end
         
     | 
| 
       86 
86 
     | 
    
         
             
                        end
         
     | 
| 
      
 87 
     | 
    
         
            +
                        @scene.model = @model
         
     | 
| 
       87 
88 
     | 
    
         
             
                        if (@elements.is_a?(String))
         
     | 
| 
       88 
89 
     | 
    
         
             
                            @elements = @elements.split(',').map{ |e| @model.elements[e.strip.to_sym] }.reject{ |i| i.nil? }
         
     | 
| 
       89 
90 
     | 
    
         
             
                            @requested_elements = @elements
         
     | 
| 
         @@ -147,30 +148,42 @@ module Spider; module Forms 
     | 
|
| 
       147 
148 
     | 
    
         | 
| 
       148 
149 
     | 
    
         
             
                    def load_widgets(template=@template)
         
     | 
| 
       149 
150 
     | 
    
         
             
                        super
         
     | 
| 
       150 
     | 
    
         
            -
                        if  
     | 
| 
       151 
     | 
    
         
            -
                            @ 
     | 
| 
       152 
     | 
    
         
            -
             
     | 
| 
       153 
     | 
    
         
            -
             
     | 
| 
       154 
     | 
    
         
            -
             
     | 
| 
       155 
     | 
    
         
            -
             
     | 
| 
       156 
     | 
    
         
            -
             
     | 
| 
       157 
     | 
    
         
            -
             
     | 
| 
       158 
     | 
    
         
            -
             
     | 
| 
       159 
     | 
    
         
            -
                                 
     | 
| 
       160 
     | 
    
         
            -
             
     | 
| 
      
 151 
     | 
    
         
            +
                        if @action == :sub
         
     | 
| 
      
 152 
     | 
    
         
            +
                            if @sub_element.multiple?
         
     | 
| 
      
 153 
     | 
    
         
            +
                                @crud = Spider::Components::Crud.new(@request, @response)
         
     | 
| 
      
 154 
     | 
    
         
            +
                                @crud.id = "crud_#{@sub_element.name.to_s}"
         
     | 
| 
      
 155 
     | 
    
         
            +
                                @crud.model = @sub_element.model
         
     | 
| 
      
 156 
     | 
    
         
            +
                                add_widget(@crud)
         
     | 
| 
      
 157 
     | 
    
         
            +
                                @scene.crud = @crud
         
     | 
| 
      
 158 
     | 
    
         
            +
                                @obj = load
         
     | 
| 
      
 159 
     | 
    
         
            +
                                cond = {}
         
     | 
| 
      
 160 
     | 
    
         
            +
                                debugger
         
     | 
| 
      
 161 
     | 
    
         
            +
                                if @sub_element.integrated?
         
     | 
| 
      
 162 
     | 
    
         
            +
                                    @sub_element.integrated_from.model.primary_keys.each do |key|
         
     | 
| 
      
 163 
     | 
    
         
            +
                                        cond[@sub_element.reverse.to_s+'.'+key.name.to_s] = @obj.get("#{@sub_element.integrated_from.name}.#{key.name}")
         
     | 
| 
      
 164 
     | 
    
         
            +
                                    end
         
     | 
| 
      
 165 
     | 
    
         
            +
                                else
         
     | 
| 
      
 166 
     | 
    
         
            +
                                    @model.primary_keys.each do |key|
         
     | 
| 
      
 167 
     | 
    
         
            +
                                        cond[@sub_element.reverse.to_s+'.'+key.name.to_s] = @obj.get(key)
         
     | 
| 
      
 168 
     | 
    
         
            +
                                    end
         
     | 
| 
       161 
169 
     | 
    
         
             
                                end
         
     | 
| 
       162 
     | 
    
         
            -
             
     | 
| 
       163 
     | 
    
         
            -
                                 
     | 
| 
       164 
     | 
    
         
            -
             
     | 
| 
      
 170 
     | 
    
         
            +
                                @crud.fixed = cond
         
     | 
| 
      
 171 
     | 
    
         
            +
                                sub_elements = []
         
     | 
| 
      
 172 
     | 
    
         
            +
                                #sub_elements += @sub_element.model.primary_keys.map{ |k| k.name }
         
     | 
| 
      
 173 
     | 
    
         
            +
                                @sub_element.model.elements_array.each do |el|
         
     | 
| 
      
 174 
     | 
    
         
            +
                                    sub_elements << el.name unless el.integrated? || el.model == @model
         
     | 
| 
       165 
175 
     | 
    
         
             
                                end
         
     | 
| 
      
 176 
     | 
    
         
            +
                                @crud.attributes[:table_elements] = sub_elements
         
     | 
| 
      
 177 
     | 
    
         
            +
                            # else
         
     | 
| 
      
 178 
     | 
    
         
            +
                            #     @crud = Spider::Forms::Form.new(@request, @response)
         
     | 
| 
      
 179 
     | 
    
         
            +
                            #     @form.id = "crud_#{@sub_element.name.to_s}"
         
     | 
| 
      
 180 
     | 
    
         
            +
                            #     @form.model = @sub_element.model
         
     | 
| 
      
 181 
     | 
    
         
            +
                            #     add_widget(@crud)
         
     | 
| 
      
 182 
     | 
    
         
            +
                            #     @scene.crud = @crud
         
     | 
| 
      
 183 
     | 
    
         
            +
                            #     @obj.load
         
     | 
| 
      
 184 
     | 
    
         
            +
                            #     debugger
         
     | 
| 
      
 185 
     | 
    
         
            +
                            #     @form.pk = @obj.get(@sub_element).id
         
     | 
| 
       166 
186 
     | 
    
         
             
                            end
         
     | 
| 
       167 
     | 
    
         
            -
                            @crud.fixed = cond
         
     | 
| 
       168 
     | 
    
         
            -
                            sub_elements = []
         
     | 
| 
       169 
     | 
    
         
            -
                            #sub_elements += @sub_element.model.primary_keys.map{ |k| k.name }
         
     | 
| 
       170 
     | 
    
         
            -
                            @sub_element.model.elements_array.each do |el|
         
     | 
| 
       171 
     | 
    
         
            -
                                sub_elements << el.name unless el.integrated? || el.model == @model
         
     | 
| 
       172 
     | 
    
         
            -
                            end
         
     | 
| 
       173 
     | 
    
         
            -
                            @crud.attributes[:table_elements] = sub_elements
         
     | 
| 
       174 
187 
     | 
    
         
             
                        else
         
     | 
| 
       175 
188 
     | 
    
         
             
                            create_inputs
         
     | 
| 
       176 
189 
     | 
    
         
             
                        end
         
     | 
| 
         @@ -250,7 +263,7 @@ module Spider; module Forms 
     | 
|
| 
       250 
263 
     | 
    
         
             
                                if ([:choice, :multiple_choice, :state, :multiple_state].include?(el.association) && !el.extended?)
         
     | 
| 
       251 
264 
     | 
    
         
             
                                    widget_type = el.type.attributes[:estimated_size] && el.type.attributes[:estimated_size] > 30 ? 
         
     | 
| 
       252 
265 
     | 
    
         
             
                                        SearchSelect : Select
         
     | 
| 
       253 
     | 
    
         
            -
                                elsif @attributes[:show_related] && @pk 
     | 
| 
      
 266 
     | 
    
         
            +
                                elsif @attributes[:show_related] && @pk
         
     | 
| 
       254 
267 
     | 
    
         
             
                                    @sub_links[el.name] = sub_link(el)
         
     | 
| 
       255 
268 
     | 
    
         
             
                                end
         
     | 
| 
       256 
269 
     | 
    
         
             
                            end
         
     | 
| 
         @@ -1,3 +1,3 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            < 
     | 
| 
      
 1 
     | 
    
         
            +
            <sp:template>
         
     | 
| 
       2 
2 
     | 
    
         
             
                <input type="checkbox" name="{ @name }" id="input" value="1" size="{ @size }" sp:attr-if="@value,checked">
         
     | 
| 
       3 
     | 
    
         
            -
            </ 
     | 
| 
      
 3 
     | 
    
         
            +
            </sp:template>
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            < 
     | 
| 
      
 1 
     | 
    
         
            +
            <sp:template>
         
     | 
| 
       2 
2 
     | 
    
         
             
                <tpl:asset type="js" src="input.js" />
         
     | 
| 
       3 
3 
     | 
    
         
             
                <tpl:asset name="jquery-ui-datepicker" />
         
     | 
| 
       4 
4 
     | 
    
         
             
                <tpl:asset type="js" src="date_time.js" />
         
     | 
| 
       5 
5 
     | 
    
         
             
                <input type="text" name="{ @name }" id="input" value="{ @formatted_value }" size="{ @size }" class="{ @mode } { @additional_classes.join(' ') }">
         
     | 
| 
       6 
     | 
    
         
            -
            </ 
     | 
| 
      
 6 
     | 
    
         
            +
            </sp:template>
         
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            < 
     | 
| 
      
 1 
     | 
    
         
            +
            <sp:template>
         
     | 
| 
       2 
2 
     | 
    
         
             
                <tpl:asset type="css" src="css/file_input.css" />
         
     | 
| 
       3 
3 
     | 
    
         
             
                <tpl:asset type="js" src="input.js" />
         
     | 
| 
       4 
4 
     | 
    
         
             
                <tpl:asset type="js" src="file_input.js" />
         
     | 
| 
         @@ -9,4 +9,4 @@ 
     | 
|
| 
       9 
9 
     | 
    
         
             
                <div class="change"><span sp:if="@value && !@value.to_s.empty?"><span class="change-label">_(Change)</span>:</span>
         
     | 
| 
       10 
10 
     | 
    
         
             
                    <input type="file" name="{ @name }[file]" id="input" value="{ @value }" size="{ @size }">
         
     | 
| 
       11 
11 
     | 
    
         
             
                </div>
         
     | 
| 
       12 
     | 
    
         
            -
            </ 
     | 
| 
      
 12 
     | 
    
         
            +
            </sp:template>
         
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            < 
     | 
| 
      
 1 
     | 
    
         
            +
            <sp:template>
         
     | 
| 
       2 
2 
     | 
    
         
             
                <tpl:asset type="js" src="ckeditor/ckeditor.js" compressed="true" copy_dir="true"/>
         
     | 
| 
       3 
3 
     | 
    
         
             
                <tpl:asset type="js" src="ckeditor/adapters/jquery.js" compressed="true" />
         
     | 
| 
       4 
4 
     | 
    
         
             
                <tpl:asset name="jquery" />
         
     | 
| 
         @@ -11,4 +11,4 @@ 
     | 
|
| 
       11 
11 
     | 
    
         
             
                <div class="css" style="display:none">{ @css }</div>
         
     | 
| 
       12 
12 
     | 
    
         
             
                <div class="options" style="display:none">{ @options }</div>
         
     | 
| 
       13 
13 
     | 
    
         
             
                <textarea name="{ @name }" id="input" rows="{ @rows }" cols="{ @cols }">{ @value }</textarea>
         
     | 
| 
       14 
     | 
    
         
            -
            </ 
     | 
| 
      
 14 
     | 
    
         
            +
            </sp:template>
         
     | 
| 
         @@ -1,3 +1,3 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            < 
     | 
| 
      
 1 
     | 
    
         
            +
            <sp:template>
         
     | 
| 
       2 
2 
     | 
    
         
             
                { @value }
         
     | 
| 
       3 
     | 
    
         
            -
            </ 
     | 
| 
      
 3 
     | 
    
         
            +
            </sp:template>
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            < 
     | 
| 
      
 1 
     | 
    
         
            +
            <sp:template>
         
     | 
| 
       2 
2 
     | 
    
         
             
                <input type="password" name="{ @name }[pwd1]" id="input" value="" size="{ @size }"><br>
         
     | 
| 
       3 
3 
     | 
    
         
             
                <div class="help-block">Ripeti la password:</div>
         
     | 
| 
       4 
4 
     | 
    
         
             
                <input type="password" name="{ @name }[pwd2]" id="input2" value="" size="{ @size }"><br>
         
     | 
| 
       5 
     | 
    
         
            -
            </ 
     | 
| 
      
 5 
     | 
    
         
            +
            </sp:template>
         
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            < 
     | 
| 
      
 1 
     | 
    
         
            +
            <sp:template>
         
     | 
| 
       2 
2 
     | 
    
         
             
                <tpl:asset type="js" src="input.js" />
         
     | 
| 
       3 
3 
     | 
    
         
             
                <tpl:asset type="js" src="select.js" />
         
     | 
| 
       4 
4 
     | 
    
         
             
                <tpl:asset type="js" app="core/components" src="js/jquery/plugins/bsmselect/js/jquery.bsmselect.js" if="@multiple" />
         
     | 
| 
         @@ -13,4 +13,4 @@ 
     | 
|
| 
       13 
13 
     | 
    
         
             
                        { @data[i].to_s }
         
     | 
| 
       14 
14 
     | 
    
         
             
                    </option>
         
     | 
| 
       15 
15 
     | 
    
         
             
                </select>
         
     | 
| 
       16 
     | 
    
         
            -
            </ 
     | 
| 
      
 16 
     | 
    
         
            +
            </sp:template>
         
     | 
| 
         @@ -1,3 +1,3 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            < 
     | 
| 
      
 1 
     | 
    
         
            +
            <sp:template>
         
     | 
| 
       2 
2 
     | 
    
         
             
                <input type="text" id="input" name="{ @name }" value="{ @formatted_value }" size="{ @size }">
         
     | 
| 
       3 
     | 
    
         
            -
            </ 
     | 
| 
      
 3 
     | 
    
         
            +
            </sp:template>
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            < 
     | 
| 
      
 1 
     | 
    
         
            +
            <sp:template>
         
     | 
| 
       2 
2 
     | 
    
         
             
                <tpl:asset type="js" src="input.js" /><tpl:asset type="js" src="text_area.js" />
         
     | 
| 
       3 
3 
     | 
    
         
             
                <tpl:asset type="js" app="core/components" src="js/jquery/plugins/autogrow/jquery.autogrow.js" />
         
     | 
| 
       4 
4 
     | 
    
         
             
                <textarea name="{ @name }" id="input" rows="{ @rows }" cols="{ @cols }">{ @value }</textarea>
         
     | 
| 
       5 
     | 
    
         
            -
            </ 
     | 
| 
      
 5 
     | 
    
         
            +
            </sp:template>
         
     |