Changeset 516626
- Timestamp:
- 03/09/2012 07:16:23 AM (14 years ago)
- Location:
- jazzy-forms/trunk
- Files:
-
- 5 added
- 17 edited
-
back/ctrl-forms.php (modified) (1 diff)
-
back/elements.js (modified) (2 diffs)
-
back/gui.css (modified) (5 diffs)
-
back/gui.js (modified) (2 diffs)
-
back/img/arrow.png (added)
-
back/img/collapsed.png (added)
-
back/img/del.png (modified) (previous)
-
back/img/del_hi.png (modified) (previous)
-
back/img/expanded.png (added)
-
back/tpl-diagnostics.php (added)
-
back/tpl-forms.php (modified) (9 diffs)
-
core/Graph.php (modified) (3 diffs)
-
front/ctrl-shortcode.php (modified) (3 diffs)
-
front/jazzy-forms.js (modified) (9 diffs)
-
front/themes/1.css (modified) (2 diffs)
-
front/tmpl-list.php (modified) (5 diffs)
-
generated/Basic_Model.php (modified) (3 diffs)
-
generated/drop.sql (added)
-
generated/schema.sql (modified) (1 diff)
-
generated/update.sql (modified) (1 diff)
-
jazzy-forms.php (modified) (6 diffs)
-
readme.txt (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
jazzy-forms/trunk/back/ctrl-forms.php
r508925 r516626 2 2 3 3 function jzzf_ctrl_forms() { 4 if($_POST['delete']) { 4 if($_GET['diagnostics']) { 5 if($_POST['panic']) { 6 jzzf_panic(); 7 return; 8 } else { 9 $db_version = jzzf_get_version(); 10 $version = JZZF_VERSION; 11 $forms = jzzf_list_form(); 12 include('tpl-diagnostics.php'); 13 return; 14 } 15 } elseif($_POST['delete']) { 5 16 if(jzzf_delete_form($_POST['delete'])) { 6 17 $msg = "Form Deleted."; -
jazzy-forms/trunk/back/elements.js
r508925 r516626 37 37 data.checked = (data.default == "1"); 38 38 } 39 } 40 data.visible_always = (data.visible == 1); 41 data.visible_never = (data.visible == 0); 42 data.zeros_options = []; 43 data.decimals_options = []; 44 for(var i=0; i<=9; i++) { 45 data.zeros_options.push({"value": i, "selected": (data.zeros == i)}); 46 data.decimals_options.push({"value": i, "selected": (data.decimals == i)}); 47 } 48 for(var i=1; i<=4; i++) { 49 data['divisions_' + i] = (data.divisions == i); 50 } 51 var separators = { "none": "", "comma": ",", "space": " ", "point": "." }; 52 for(var key in separators) { 53 data['thousands_' + key] = (data.thousands === separators[key]); 54 data['point_' + key] = (data.point == separators[key]); 39 55 } 40 56 return this.html(tmpl_name, data); … … 92 108 93 109 this.data = function(li) { 94 var result = { 95 "id": li.find('.jzzf_element_id').val(), 96 "type": li.find('.jzzf_element_type').val(), 97 "title": li.find('.jzzf_element_title').val(), 98 "name": li.find('.jzzf_element_name').val(), 99 "value": li.find('.jzzf_element_value').val(), 100 "default": li.find('.jzzf_element_default').val() 101 }; 102 switch(li.find('.jzzf_element_type').val()) { 103 case 'n': 104 result.value = li.find('.jzzf_element_value').val(); 105 break; 106 case 'c': 107 result.value = li.find('.jzzf_element_value').val(); 108 result.value2 = li.find('.jzzf_element_value2').val(); 109 result.default = li.find('.jzzf_element_checked').is(':checked') ? "1" : "0"; 110 var result = {}; 111 var simple = [ 112 'id', 113 'type', 114 'title', 115 'name', 116 'value', 117 'value2', 118 'visible', 119 'prefix', 120 'postfix', 121 'zeros', 122 'decimals', 123 'fixed', 124 'formula', 125 'thousands', 126 'point', 127 'classes', 128 'divisions', 129 ]; 130 var checkboxes = [ 131 'fixed', 132 'break' 133 ]; 134 135 var type = li.find('.jzzf_element_type').val(); 136 if(type == 'c') { 137 result.default = li.find('.jzzf_element_checked').is(':checked') ? "1" : "0"; 138 } else { 139 simple.push('default'); 140 } 141 142 switch(type) { 143 case 'd': 110 144 case 'r': 111 case 'd':112 145 result.options = this.options_data(li); 113 146 break; 114 case 'f':115 result.formula = li.find('.jzzf_element_formula').val();116 break;117 147 }; 148 149 for(var i=0; i<simple.length; i++) { 150 result[simple[i]] = li.find('.jzzf_element_' + simple[i]).val(); 151 } 152 for(var i=0; i<checkboxes.length; i++) { 153 result[checkboxes[i]] = li.find('.jzzf_element_' + checkboxes[i]).is(':checked'); 154 } 118 155 return result; 119 156 } -
jazzy-forms/trunk/back/gui.css
r508925 r516626 43 43 #jzzf_main { 44 44 overflow: hidden; 45 width: 1000px; 45 46 background-color: #fff; 46 47 margin: 0 10px 10px 0px; … … 48 49 border: 1px solid #ddd; 49 50 border-radius: 3px; 51 } 52 53 .jzzf_section { 54 width: 1000px; 50 55 } 51 56 … … 146 151 .jzzf_element_body { 147 152 background: #fff; 148 padding: 8px 12px;153 padding: 0; 149 154 border-bottom-left-radius: 3px; 150 155 border-bottom-right-radius: 3px; … … 153 158 .jzzf_element_body li { 154 159 margin-bottom: 2px; 160 height: 30px; 155 161 } 156 162 … … 216 222 .jzzf_type_h { background-image: url('img/h.png'); } 217 223 .jzzf_type_m { background-image: url('img/m.png'); } 224 225 .jzzf_arrow { 226 width: 32px; 227 height: 16px; 228 background: url('img/arrow.png') no-repeat center; 229 margin: 4px auto; 230 } 231 232 .jzzf_div_collapsable { 233 border-top: 1px solid #ccc; 234 } 235 236 .jzzf_div_collapsable > h3 { 237 margin: 0; 238 font-weight: normal; 239 font-size: 12px; 240 } 241 242 .jzzf_toggler { 243 cursor: default; 244 } 245 246 .jzzf_toggler div { 247 float: left; 248 width: 16px; 249 height: 16px; 250 background-image: url('img/expanded.png'); 251 } 252 253 .jzzf_div_collapsable { 254 padding: 4px 12px 8px 12px; 255 } 256 257 .jzzf_div_collapsable.jzzf_div_collapsed { 258 padding-bottom: 4px; 259 } 260 261 .jzzf_div_fixed { 262 padding: 8px 12px; 263 } 264 265 .jzzf_div_collapsed .jzzf_toggler div { 266 background-image: url('img/collapsed.png'); 267 } 268 269 .jzzf_div_collapsed .jzzf_collapsable_body { 270 display: none; 271 } 272 273 .jzzf_div_collapsed > h3 { 274 display: block; 275 } 276 277 .jzzf_collapsable_body { 278 margin: 10px 0 0 16px; 279 } 280 281 .jzzf_collapsable_body label { 282 width: 124px; 283 } 284 285 .jzzf_element select { 286 width: 160px; 287 } -
jazzy-forms/trunk/back/gui.js
r508925 r516626 11 11 var title = id_helper.suggest_title('Element'); 12 12 var name = id_helper.suggest_name(title); 13 return obj = {'title': title, 'name': name, 'type': type}; 13 return obj = { 14 'title': title, 15 'name': name, 16 'type': type, 17 'decimals': 9, 18 'point': '.', 19 'visible': 1, 20 'divisions': 1, 21 'break': 1 22 }; 14 23 } 15 24 … … 62 71 function bind() { 63 72 $('#jzzf_main').delegate('input', 'change', mark_dirty); 73 74 $('#jzzf_elements_list').delegate('.jzzf_toggler', 'click', function() { 75 $(this).parent().toggleClass('jzzf_div_collapsed'); 76 }); 64 77 65 78 $('.jzzf_elements_toolbox_items li').click(function() { -
jazzy-forms/trunk/back/tpl-forms.php
r508925 r516626 13 13 <script id="jzzf_tmpl_common" type="text/html"> 14 14 {{>common_raw}} 15 <fieldset >15 <fieldset class="jzzf_div_fixed"> 16 16 <ul class="jzzf_element_parameters"> 17 17 <li> … … 27 27 </script> 28 28 <script id="jzzf_tmpl_foot" type="text/html"> 29 <fieldset class="jzzf_div_collapsable jzzf_div_collapsed"> 30 <h3 class="jzzf_toggler"><div></div>Appearance</h3> 31 <div class="jzzf_collapsable_body"> 32 <ul> 33 <li> 34 <label for="jzzf_element_{{counter}}_classes">Custom CSS classes</label> 35 <input type="text" id="jzzf_element_{{counter}}_classes" class="jzzf_element_classes" value="{{classes}}"> 36 </li> 37 <li> 38 <label for="jzzf_element_{{counter}}_divisions">Width</label> 39 <select id="jzzf_element_{{counter}}_divisions" class="jzzf_element_divisions" value="{{classes}}"> 40 <option value="1" {{#divisions_1}}selected="selected"{{/divisions_1}}>1/1 (Full)</option> 41 <option value="2" {{#divisions_2}}selected="selected"{{/divisions_2}}>1/2 (Half)</option> 42 <option value="3" {{#divisions_3}}selected="selected"{{/divisions_3}}>1/3 (Third)</option> 43 <option value="4" {{#divisions_4}}selected="selected"{{/divisions_4}}>1/4 (Quarter)</option> 44 </select> 45 </li> 46 <li> 47 <input type="checkbox" id="jzzf_element_{{counter}}_break" class="jzzf_element_break" {{#break}}checked="checked"{{/break}}> 48 <label for="jzzf_element_{{counter}}_break">Start new row</label> 49 </li> 50 </ul> 51 </div> 52 </fieldset> 53 {{>visibility}} 29 54 </div> 30 55 </li> 31 56 </script> 57 <script id="jzzf_tmpl_visibility" type="text/html"> 58 <fieldset class="jzzf_div_collapsable jzzf_div_collapsed"> 59 <h3 class="jzzf_toggler"><div></div>Visibility</h3> 60 <div class="jzzf_collapsable_body"> 61 <ul> 62 <li> 63 <label for="jzzf_element_{{counter}}_visible">Show element...</label> 64 <select id="jzzf_element_{{counter}}_visible" class="jzzf_element_visible"> 65 <option value="1" {{#visible_always}}selected="selected"{{/visible_always}}>Always</option> 66 <option value="0" {{#visible_never}}selected="selected"{{/visible_never}}>Never</option> 67 </select> 68 </li> 69 </ul> 70 </div> 71 </fieldset> 72 </script> 32 73 <script id="jzzf_tmpl_n" type="text/html"> 33 74 {{>common}} 34 <fieldset> 35 <legend>Value</legend> 75 <fieldset class="jzzf_div_collapsable"> 76 <h3 class="jzzf_toggler"><div></div>Value</h3> 77 <div class="jzzf_collapsable_body"> 78 <ul> 79 <li> 80 <label for="jzzf_element_{{counter}}_value">Factor</label> 81 <input type="text" id="jzzf_element_{{counter}}_value" class="jzzf_element_value" value="{{value}}"> 82 </li> 83 <li> 84 <label for="jzzf_element_{{id}}_default">Default</label> 85 <input type="text" id="jzzf_element_{{id}}_default" class="jzzf_element_default" value="{{default}}"> 86 </li> 87 </ul> 88 </div> 89 </fieldset> 90 {{>foot}} 91 </script> 92 <script id="jzzf_tmpl_d" type="text/html"> 93 {{>common}} 94 {{>options}} 95 {{>foot}} 96 </script> 97 <script id="jzzf_tmpl_r" type="text/html"> 98 {{>common}} 99 {{>options}} 100 {{>foot}} 101 </script> 102 <script id="jzzf_tmpl_c" type="text/html"> 103 {{>common}} 104 <fieldset class="jzzf_div_collapsable"> 105 <h3 class="jzzf_toggler"><div></div>Values</h3> 106 <div class="jzzf_collapsable_body"> 36 107 <ul> 37 108 <li> 38 <label for="jzzf_element_{{counter}}_value"> Factor</label>109 <label for="jzzf_element_{{counter}}_value">Value for checked</label> 39 110 <input type="text" id="jzzf_element_{{counter}}_value" class="jzzf_element_value" value="{{value}}"> 40 111 </li> 41 112 <li> 42 <label for="jzzf_element_{{id}}_default">Default</label> 43 <input type="text" id="jzzf_element_{{id}}_default" class="jzzf_element_default" value="{{default}}"> 44 </li> 45 </ul> 46 </fieldset> 47 {{>foot}} 48 </script> 49 <script id="jzzf_tmpl_d" type="text/html"> 50 {{>common}} 51 {{>options}} 52 {{>foot}} 53 </script> 54 <script id="jzzf_tmpl_r" type="text/html"> 55 {{>common}} 56 {{>options}} 57 {{>foot}} 58 </script> 59 <script id="jzzf_tmpl_c" type="text/html"> 60 {{>common}} 61 <fieldset> 62 <legend>Values</legend> 63 <ul> 64 <li> 65 <label for="jzzf_element_{{counter}}_value">Value for checked</label> 66 <input type="text" id="jzzf_element_{{counter}}_value" class="jzzf_element_value" value="{{value}}"> 67 </li> 68 <li> 69 <label for="jzzf_element_{{counter}}_value2">Value for unchecked</label> 70 <input type="text" id="jzzf_element_{{counter}}_value2" class="jzzf_element_value2" value="{{value2}}"> 71 </li> 72 <li> 73 <input type="checkbox" id="jzzf_element_{{counter}}_checked" class="jzzf_element_checked"{{#checked}} checked="checked"{{/checked}}> 74 <label for="jzzf_element_{{counter}}_checked">Checked by default</label> 75 </li> 76 </ul> 113 <label for="jzzf_element_{{counter}}_value2">Value for unchecked</label> 114 <input type="text" id="jzzf_element_{{counter}}_value2" class="jzzf_element_value2" value="{{value2}}"> 115 </li> 116 <li> 117 <input type="checkbox" id="jzzf_element_{{counter}}_checked" class="jzzf_element_checked"{{#checked}} checked="checked"{{/checked}}> 118 <label for="jzzf_element_{{counter}}_checked">Checked by default</label> 119 </li> 120 </ul> 121 </div> 77 122 </fieldset> 78 123 {{>foot}} … … 80 125 <script id="jzzf_tmpl_f" type="text/html"> 81 126 {{>common}} 82 <fieldset> 83 <ul> 84 <li> 85 <legend>Formula</legend> 86 <label for="jzzf_element_{{counter}}_formula">Formula</label> 87 <input type="text" id="jzzf_element_{{counter}}_formula" class="jzzf_element_formula" value="{{formula}}"> 88 </li> 89 </ul> 90 </fieldset> 127 <fieldset class="jzzf_div_collapsable"> 128 <h3 class="jzzf_toggler"><div></div>Formula</h3> 129 <div class="jzzf_collapsable_body"> 130 <ul> 131 <li> 132 <label for="jzzf_element_{{counter}}_formula">Formula</label> 133 <input type="text" id="jzzf_element_{{counter}}_formula" class="jzzf_element_formula" value="{{formula}}"> 134 </li> 135 </ul> 136 </div> 137 </fieldset> 138 <fieldset class="jzzf_div_collapsable jzzf_div_collapsed"> 139 <h3 class="jzzf_toggler"><div></div>Number format</h3> 140 <div class="jzzf_collapsable_body"> 141 <ul> 142 <li> 143 <label for="jzzf_element_{{counter}}_prefix">Unit before number</label> 144 <input type="text" id="jzzf_element_{{counter}}_prefix" class="jzzf_element_prefix" value="{{prefix}}"> 145 </li> 146 <li> 147 <label for="jzzf_element_{{counter}}_postfix">Unit after number</label> 148 <input type="text" id="jzzf_element_{{counter}}_postfix" class="jzzf_element_postfix" value="{{postfix}}"> 149 </li> 150 <li> 151 <label for="jzzf_element_{{id}}_zeros">Leading zeros</label> 152 <select id="jzzf_element_{{id}}_zeros" class="jzzf_element_zeros"> 153 {{#zeros_options}} 154 <option value="{{value}}"{{#selected}} selected="selected"{{/selected}}>{{value}}</option> 155 {{/zeros_options}} 156 </select> 157 </li> 158 <li> 159 <label for="jzzf_element_{{id}}_decimals">Decimals</label> 160 <select id="jzzf_element_{{id}}_decimals" class="jzzf_element_decimals"> 161 {{#decimals_options}} 162 <option value="{{value}}"{{#selected}} selected="selected"{{/selected}}>{{value}}</option> 163 {{/decimals_options}} 164 </select> 165 </li> 166 <li> 167 <input type="checkbox" id="jzzf_element_{{id}}_fixed" class="jzzf_element_fixed" value="1"{{#fixed}} checked="checked"{{/fixed}}> 168 <label for="jzzf_element_{{id}}_fixed">Fixed decimals</label> 169 </select> 170 </li> 171 <li> 172 <label for="jzzf_element_{{id}}_thousands">Thousands separator</label> 173 <select id="jzzf_element_{{id}}_thousands" class="jzzf_element_thousands"> 174 <option value=""{{#thousands_none}} selected="selected"{{/thousands_none}}>None</option> 175 <option value=" "{{#thousands_space}} selected="selected"{{/thousands_space}}>White space ( )</option> 176 <option value=","{{#thousands_comma}} selected="selected"{{/thousands_comma}}>Comma (,)</option> 177 <option value="."{{#thousands_point}} selected="selected"{{/thousands_point}}>Point (.)</option> 178 </select> 179 </li> 180 <li> 181 <label for="jzzf_element_{{id}}_point">Decimal point</label> 182 <select id="jzzf_element_{{id}}_point" class="jzzf_element_point"> 183 <option value="."{{#point_point}} selected="selected"{{/point_point}}>Point (.)</option> 184 <option value=","{{#point_comma}} selected="selected"{{/point_comma}}>Comma (,)</option> 185 </select> 186 </li> 187 </ul> 188 </div> 189 </fieldset> 91 190 {{>foot}} 92 191 </script> … … 97 196 <script id="jzzf_tmpl_t" type="text/html"> 98 197 {{>common_raw}} 99 <fieldset >198 <fieldset class="jzzf_div_fixed"> 100 199 <ul> 101 200 <li> … … 109 208 <script id="jzzf_tmpl_h" type="text/html"> 110 209 {{>common_raw}} 111 <fieldset >210 <fieldset class="jzzf_div_fixed"> 112 211 <ul> 113 212 <li> … … 121 220 <script id="jzzf_tmpl_m" type="text/html"> 122 221 {{>common_raw}} 123 <fieldset >222 <fieldset class="jzzf_div_fixed"> 124 223 <ul> 125 224 <li> … … 133 232 134 233 <script id="jzzf_tmpl_options" type="text/html"> 135 <fieldset> 136 <legend>Options</legend> 137 <table class="jzzf_option_table"> 138 <thead><tr> 139 <th class="jzzf_column_drag"></th> 140 <th class="jzzf_column_default">Default</th> 141 <th class="jzzf_column_title">Title</th> 142 <th class="jzzf_column_value">Value</th> 143 <th></th> 144 </tr></thead> 145 <tbody> 146 {{#options}} 147 {{>option}} 148 {{/options}} 149 </tbody> 150 </table> 151 <a href="" class="jzzf_option_add">Add</a> 234 <fieldset class="jzzf_div_collapsable"> 235 <h3 class="jzzf_toggler"><div></div>Options</h3> 236 <div class="jzzf_collapsable_body"> 237 <table class="jzzf_option_table"> 238 <thead><tr> 239 <th class="jzzf_column_drag"></th> 240 <th class="jzzf_column_default">Default</th> 241 <th class="jzzf_column_title">Title</th> 242 <th class="jzzf_column_value">Value</th> 243 <th></th> 244 </tr></thead> 245 <tbody> 246 {{#options}} 247 {{>option}} 248 {{/options}} 249 </tbody> 250 </table> 251 <a href="" class="jzzf_option_add">Add</a> 252 </div> 152 253 </fieldset> 153 254 </script> … … 167 268 <div id="jzzf_selection"> 168 269 <form id="jzzf_delete_form" method="post" action="#"> 169 < label for="jzzf_selector">Form:</label>270 <h3 for="jzzf_selector">Form:</h3> 170 271 <select id="jzzf_selector"> 171 272 <?php $i=0; foreach($forms as $form) : ?> … … 209 310 </ul> 210 311 </div> 211 <div id="jzzf_elements_push_for_action">Click or drag to add<br> >></div>312 <div id="jzzf_elements_push_for_action">Click or drag to add<br><div class="jzzf_arrow"></div></div> 212 313 <div id="jzzf_elements"> 213 314 <div class="jzzf_column_heading">Form elements</div> -
jazzy-forms/trunk/core/Graph.php
r502411 r516626 6 6 $dependencies = array(); 7 7 $formulas = array(); 8 $params = array(); 9 10 $param_keys = array_flip(array('prefix', 'postfix', 'fixed', 'decimals', "zeros", "thousands", "point")); 11 8 12 foreach($elements as $elem) { 9 13 $id = strtolower($elem->name); … … 24 28 } 25 29 } 30 $params[$id] = array_intersect_key((array) $elem, $param_keys); 26 31 } elseif($values = jzzf_get_values($elem)) { 27 32 $data[$id] = $values; 28 33 } 29 34 } 30 return compact('data', 'types', 'dependencies', 'formulas' );35 return compact('data', 'types', 'dependencies', 'formulas', 'params'); 31 36 } 32 37 … … 35 40 foreach($formula as $token) { 36 41 if($token[0] == 'v') { 37 $deps[] = $token[1]; 42 $id = $token[1]; 43 if(!in_array($id, $deps)) { 44 $deps[] = $id; 45 } 38 46 } 39 47 } -
jazzy-forms/trunk/front/ctrl-shortcode.php
r508925 r516626 15 15 } 16 16 return $output; 17 } 18 19 function jzzf_get_classes($element, $ahead) { 20 $classes = 'jzzf_element jzzf_element_' . $element->type . ' jzzf_ahead_' . $ahead->type; 21 if($element->break) { 22 $classes .= ' jzzf_break'; 23 } else { 24 $classes .= ' jzzf_no_break'; 25 } 26 switch($element->divisions) { 27 case 1: 28 $classes .= ' jzzf_full'; 29 break; 30 case 2: 31 $classes .= ' jzzf_half'; 32 break; 33 case 3: 34 $classes .= ' jzzf_third'; 35 break; 36 case 4: 37 $classes .= ' jzzf_quarter'; 38 break; 39 } 40 if($element->classes) { 41 $classes .= ' ' . trim($element->classes); 42 } 43 return $classes; 17 44 } 18 45 … … 37 64 $ahead = null; 38 65 } 39 $tpl->before($element, $ahead); 66 67 $element->classes = jzzf_get_classes($element, $ahead); 68 $tpl->before($element, $ahead, ($element->break || $idx==0)); 40 69 41 70 switch($element->type) { … … 71 100 break; 72 101 } 73 $tpl->after($element );102 $tpl->after($element, ($ahead && $ahead->break) || ($idx==count($form->elements)-1)); 74 103 } 75 104 $tpl->foot($form); -
jazzy-forms/trunk/front/jazzy-forms.js
r508925 r516626 1 function jazzy_forms($, form_id, jzzf_data, jzzf_types, jzzf_dependencies, jzzf_formulas, jzzf_params) { 1 /* 2 This file is part of the WordPress plugin "Jazzy Forms" 3 Copyright (C) 2012 by Igor Prochazka. www.jazzyforms.com 4 Jazzy Forms is licensed under the GNU General Public License, version 3. 5 */ 6 7 function jazzy_forms($, form_id, jzzf_data, jzzf_types, jzzf_dependencies, jzzf_formulas, jzzf_form, jzzf_params) { 8 9 var all_ids = []; 10 var cache = {}; 2 11 3 12 jzzf_precision = Math.pow(10,9); … … 6 15 } 7 16 17 function retrieve_all_ids() { 18 for(id in jzzf_types) { 19 all_ids.push(id); 20 } 21 } 8 22 9 23 $(function() { 24 retrieve_all_ids(); 25 update(all_ids); 10 26 bind(); 11 27 }); … … 23 39 var id; 24 40 for(id in jzzf_types) { 25 update(id); 26 if(jzzf_params.realtime) { 41 if(jzzf_form.realtime) { 27 42 bind_realtime_update(id); 28 43 } 29 44 if(jzzf_types[id] == 'u') { 30 45 element(id).click(function() { 31 var id; 32 for(id in jzzf_types) { 33 update(id); 34 } 46 update(all_ids); 35 47 }); 36 48 } … … 42 54 case 'r': 43 55 element(id).find('input:radio').bind('change ready', function() { 44 update( element_id($(this).parents('.jzzf_radio')));56 update([element_id($(this).parents('.jzzf_radio'))]); 45 57 }); 46 58 break; 47 59 default: 48 60 element(id).bind('change ready', function() { 49 update( element_id($(this)));61 update([element_id($(this))]); 50 62 }); 51 63 } … … 54 66 var just_updated; 55 67 56 function update(id ) {68 function update(ids) { 57 69 just_updated = []; 58 updating_worker(id); 59 } 60 70 for(var i=0; i<ids.length; i++) { 71 var id = ids[i]; 72 delete cache[id] 73 updating_worker(id); 74 } 75 } 76 77 function sanitize_result(val, id) { 78 var f = parseFloat(val); 79 if(!isNaN(f)) { 80 val = f; 81 } 82 switch(typeof val) { 83 case 'undefined': 84 val = 'Invalid formula'; 85 break; 86 case 'number': 87 if(!isNaN(val)) { 88 val = jzzf_format(val, jzzf_params[id]); 89 } 90 break; 91 case 'boolean': 92 val = val ? 1 : 0; 93 break; 94 } 95 return val; 96 } 97 61 98 function updating_worker(id) { 62 99 update_dependent(id); … … 64 101 return; 65 102 } 66 element(id).val( Math.round(evaluate(id)*jzzf_precision)/jzzf_precision);103 element(id).val(sanitize_result(evaluate(id), id)); 67 104 just_updated.push(id); 68 105 } … … 78 115 79 116 function evaluate(id) { 117 var result; 118 if(!(id in cache) || (jzzf_types[id] == 'f' && !(id in just_updated))) { 119 result = evaluation_worker(id); 120 cache[id] = result; 121 } else { 122 result = cache[id]; 123 } 124 return result; 125 } 126 127 function evaluation_worker(id) { 80 128 switch(jzzf_types[id]) { 81 129 case 'n': … … 106 154 var stack = []; 107 155 var f = jzzf_formulas[id]; 156 if(!f) { 157 return undefined; 158 } 108 159 for(var i=0; i<f.length; i++) { 109 160 switch(f[i][0]) { … … 246 297 return (all[id])(); 247 298 } 299 300 function jzzf_format(input, args) { 301 302 function get_sign() { 303 if(parts[0].substr(0,1) == '-') { 304 sign = '-'; 305 natural = parts[0].substr(1); 306 } else { 307 sign = ''; 308 natural = parts[0]; 309 } 310 } 311 312 function get_decimals() { 313 if(parts.length > 1) { 314 decimals = parts[1]; 315 } else { 316 decimals = ''; 317 } 318 } 319 320 function round() { 321 var precision = Math.pow(10, args.decimals); 322 input = Math.round(input*precision)/precision; 323 } 324 325 function leading_zeros() { 326 if(args.fixed && args.decimals > decimals.length) { 327 decimals += Array(args.decimals - decimals.length + 1).join("0"); 328 } 329 } 330 331 function trailing_zeros() { 332 if(args.zeros > natural.length) { 333 natural = Array(args.zeros - natural.length + 1).join("0") + natural; 334 } 335 } 336 337 function thousands_separator() { 338 if(args.thousands.length) { 339 var len = natural.length; 340 var result = natural.substr(0, len % 3); 341 for(var i=len % 3; i<len; i+=3) { 342 if(result.length) { 343 result += args.thousands; 344 } 345 result += natural.substr(i, 3); 346 } 347 natural = result; 348 } 349 } 350 351 round(); 352 353 var str = "" + input; 354 var parts = str.split('.'); 355 var sign; 356 var natural; 357 var decimals; 358 359 get_sign(); 360 get_decimals(); 361 leading_zeros(); 362 trailing_zeros(); 363 thousands_separator(); 364 365 return sign + args.prefix + natural + (decimals.length ? args.point + decimals + args.postfix : args.postfix); 366 } -
jazzy-forms/trunk/front/themes/1.css
r508925 r516626 10 10 vertical-align: baseline; 11 11 } 12 13 .jzzf_form_elements { 14 width: 420px; 15 } 16 17 .jzzf_form input, .jzzf_form select { 18 padding: 0; 19 margin: 0; 20 } 21 12 22 .jzzf_form :focus {/* remember to define focus styles! */ 13 23 outline: 0; … … 46 56 } 47 57 48 .jzzf_form input[type=text], .jzzf_form select { 49 width: 200px; 58 .jzzf_form .jzzf_element { 59 padding-right: 8px; 60 display: block; 50 61 } 62 63 div.jzzf_full { width: 392px; } 64 div.jzzf_half { width: 192px; } 65 div.jzzf_third { width: 125px; } 66 div.jzzf_quarter { width: 92px; } 67 68 .jzzf_row { 69 margin: 0; 70 padding: 0; 71 overflow: hidden; 72 } 73 74 .jzzf_form input[type=text], .jzzf_form select { width: 100%; } 75 76 .jzzf_break { 77 float: left; 78 clear: left; 79 } 80 81 .jzzf_no_break { 82 float: left; 83 } -
jazzy-forms/trunk/front/tmpl-list.php
r508925 r516626 2 2 3 3 class Jzzf_List_Template { 4 4 5 function __construct($form) { 5 6 $this->form = $form; 7 $first = true; 6 8 } 7 9 … … 37 39 jzzf_formulas_<?php echo $form->id ?> = <?php echo json_encode($formulas) ?>; 38 40 jzzf_form_<?php echo $form->id ?> = <?php echo json_encode($form) ?>; 39 jazzy_forms(jQuery, <?php echo $form->id ?>, jzzf_data_<?php echo $form->id ?>, jzzf_types_<?php echo $form->id ?>, jzzf_dependencies_<?php echo $form->id ?>, jzzf_formulas_<?php echo $form->id ?>, jzzf_form_<?php echo $form->id ?>); 41 jzzf_params_<?php echo $form->id ?> = <?php echo json_encode($params) ?>; 42 jazzy_forms(jQuery, <?php echo $form->id ?>, jzzf_data_<?php echo $form->id ?>, jzzf_types_<?php echo $form->id ?>, jzzf_dependencies_<?php echo $form->id ?>, jzzf_formulas_<?php echo $form->id ?>, jzzf_form_<?php echo $form->id ?>, jzzf_params_<?php echo $form->id ?>); 40 43 </script> 41 44 <?php … … 44 47 function head($form) { ?> 45 48 <div class="jzzf_form"> 46 <ul >49 <ul class="jzzf_form_elements"> 47 50 <?php 48 51 } 49 52 50 function before($element, $ahead) { ?> 51 <li class="jzzf_element jzzf_element_<?php echo $element->type ?> jzzf_ahead_<?php echo $ahead ? $ahead->type : "end" ?>"> 53 function before($element, $ahead, $first) { ?> 54 <?php if($first) : ?> 55 <li class="jzzf_row"> 56 <?php endif ?> 57 <div class="<?php echo $element->classes ?>" "<?php if($element->visible===0): ?> style="display:none;"<?php endif ?>> 52 58 <?php 53 59 } 54 60 55 function after($element) { ?> 61 function after($element, $last) { ?> 62 </div> 63 <?php if($last) : ?> 64 <div class="clear"></div> 56 65 </li> 66 <?php endif ?> 57 67 <?php 58 68 } … … 69 79 <?php $idx = 0; foreach($element->options as $option) { $idx++; ?> 70 80 <li> 71 <input type="radio" name="<?php $this->id($element) ?>" <?php if($option->default): ?> checked="checked"<?php endif ?>>72 <label class="jzzf_radio_option_label" ><?php esc_html_e($option->title) ?></label>81 <input type="radio" name="<?php $this->id($element) ?>" id="<?php echo $this->id($element) . '-' . $idx ?>"<?php if($option->default): ?> checked="checked"<?php endif ?>> 82 <label class="jzzf_radio_option_label" for="<?php echo $this->id($element) . '-' . $idx ?>"><?php esc_html_e($option->title) ?></label> 73 83 </li> 74 84 <?php … … 89 99 function checkbox($element) { ?> 90 100 <input type="checkbox" id="<?php $this->id($element) ?>"<?php if($element->default): ?> checked="checked"<?php endif ?>> 91 <label class="jzzf_checkbox_label" for="<?php $this->id($element) ?>"><?php esc_html_e($element->title) ?> 101 <label class="jzzf_checkbox_label" for="<?php $this->id($element) ?>"><?php esc_html_e($element->title) ?></label> 92 102 <?php 93 103 } -
jazzy-forms/trunk/generated/Basic_Model.php
r508925 r516626 111 111 $obj->order = intval($obj->order); 112 112 $obj->external = (bool) ($obj->external); 113 $obj->visible = intval($obj->visible); 114 $obj->zeros = intval($obj->zeros); 115 $obj->decimals = intval($obj->decimals); 116 $obj->fixed = (bool) ($obj->fixed); 117 $obj->divisions = intval($obj->divisions); 118 $obj->break = (bool) ($obj->break); 113 119 $obj->options = jzzf_list_option($obj->id); 114 120 } … … 126 132 $obj->order = intval($obj->order); 127 133 $obj->external = (bool) ($obj->external); 134 $obj->visible = intval($obj->visible); 135 $obj->zeros = intval($obj->zeros); 136 $obj->decimals = intval($obj->decimals); 137 $obj->fixed = (bool) ($obj->fixed); 138 $obj->divisions = intval($obj->divisions); 139 $obj->break = (bool) ($obj->break); 128 140 $obj->options = jzzf_list_option($obj->id); 129 141 } … … 134 146 global $wpdb; 135 147 if($obj->id) { 136 $query = "UPDATE {$wpdb->prefix}jzzf_element SET `form`=%d,`order`=%d,`type`=%s,`title`=%s,`name`=%s,`formula`=%s,`value`=%s,`value2`=%s,`default`=%s,`external`=%d,`params`=%s WHERE id=%d";137 $sql = $wpdb->prepare($query, $obj->form,$obj->order,$obj->type,$obj->title,$obj->name,$obj->formula,$obj->value,$obj->value2,$obj->default,$obj->external,$obj->params, $obj->id);148 $query = "UPDATE {$wpdb->prefix}jzzf_element SET `form`=%d,`order`=%d,`type`=%s,`title`=%s,`name`=%s,`formula`=%s,`value`=%s,`value2`=%s,`default`=%s,`external`=%d,`params`=%s,`visible`=%d,`prefix`=%s,`postfix`=%s,`zeros`=%d,`decimals`=%d,`fixed`=%d,`thousands`=%s,`point`=%s,`classes`=%s,`divisions`=%d,`break`=%d WHERE id=%d"; 149 $sql = $wpdb->prepare($query, $obj->form,$obj->order,$obj->type,$obj->title,$obj->name,$obj->formula,$obj->value,$obj->value2,$obj->default,$obj->external,$obj->params,$obj->visible,$obj->prefix,$obj->postfix,$obj->zeros,$obj->decimals,$obj->fixed,$obj->thousands,$obj->point,$obj->classes,$obj->divisions,$obj->break, $obj->id); 138 150 $result = $wpdb->query($sql); 139 151 $id = $obj->id; 140 152 } else { 141 $query = "INSERT INTO {$wpdb->prefix}jzzf_element (`form`,`order`,`type`,`title`,`name`,`formula`,`value`,`value2`,`default`,`external`,`params` ) VALUES (%d,%d,%s,%s,%s,%s,%s,%s,%s,%d,%s)";142 $sql = $wpdb->prepare($query, $obj->form,$obj->order,$obj->type,$obj->title,$obj->name,$obj->formula,$obj->value,$obj->value2,$obj->default,$obj->external,$obj->params );153 $query = "INSERT INTO {$wpdb->prefix}jzzf_element (`form`,`order`,`type`,`title`,`name`,`formula`,`value`,`value2`,`default`,`external`,`params`,`visible`,`prefix`,`postfix`,`zeros`,`decimals`,`fixed`,`thousands`,`point`,`classes`,`divisions`,`break`) VALUES (%d,%d,%s,%s,%s,%s,%s,%s,%s,%d,%s,%d,%s,%s,%d,%d,%d,%s,%s,%s,%d,%d)"; 154 $sql = $wpdb->prepare($query, $obj->form,$obj->order,$obj->type,$obj->title,$obj->name,$obj->formula,$obj->value,$obj->value2,$obj->default,$obj->external,$obj->params,$obj->visible,$obj->prefix,$obj->postfix,$obj->zeros,$obj->decimals,$obj->fixed,$obj->thousands,$obj->point,$obj->classes,$obj->divisions,$obj->break); 143 155 $result = $wpdb->query($sql); 144 156 $id = $wpdb->insert_id; -
jazzy-forms/trunk/generated/schema.sql
r508925 r516626 1 CREATE TABLE IF NOT EXISTS {{prefix}}jzzf_form ( id bigint(20) AUTO_INCREMENT, `title` varchar(1024) NOT NULL, `name` varchar(1024) NOT NULL, `theme` int(12) NOT NULL, `css` varchar(1024)NOT NULL, `realtime` int(1) NOT NULL DEFAULT 1, PRIMARY KEY (id) ) {{charset_collate}};2 CREATE TABLE IF NOT EXISTS {{prefix}}jzzf_element ( id bigint(20) AUTO_INCREMENT, `form` bigint(20) NOT NULL, `order` int(12) NOT NULL, `type` varchar(1024) NOT NULL, `title` varchar(1024) NOT NULL, `name` varchar(1024) NOT NULL, `formula` varchar(1024) NOT NULL, `value` varchar(1024) NOT NULL, `value2` varchar(1024) NOT NULL, `default` varchar(1024) NOT NULL, `external` int(1) NOT NULL, `params` varchar(2048) NOT NULL, PRIMARY KEY (id) ) {{charset_collate}};1 CREATE TABLE IF NOT EXISTS {{prefix}}jzzf_form ( id bigint(20) AUTO_INCREMENT, `title` TEXT NOT NULL, `name` varchar(1024) NOT NULL, `theme` int(12) NOT NULL, `css` LONGTEXT NOT NULL, `realtime` int(1) NOT NULL DEFAULT 1, PRIMARY KEY (id) ) {{charset_collate}}; 2 CREATE TABLE IF NOT EXISTS {{prefix}}jzzf_element ( id bigint(20) AUTO_INCREMENT, `form` bigint(20) NOT NULL, `order` int(12) NOT NULL, `type` varchar(1024) NOT NULL, `title` TEXT NOT NULL, `name` varchar(1024) NOT NULL, `formula` TEXT NOT NULL, `value` varchar(1024) NOT NULL, `value2` varchar(1024) NOT NULL, `default` varchar(1024) NOT NULL, `external` int(1) NOT NULL, `params` varchar(2048) NOT NULL, `visible` int(12) NOT NULL DEFAULT 1, `prefix` varchar(16) NOT NULL, `postfix` varchar(16) NOT NULL, `zeros` int(1) NOT NULL, `decimals` int(1) NOT NULL DEFAULT 9, `fixed` int(1) NOT NULL DEFAULT 0, `thousands` varchar(1) NOT NULL, `point` varchar(1) NOT NULL DEFAULT '.', `classes` varchar(1024) NOT NULL, `divisions` int(1) NOT NULL DEFAULT 1, `break` int(1) NOT NULL DEFAULT 1, PRIMARY KEY (id) ) {{charset_collate}}; 3 3 CREATE TABLE IF NOT EXISTS {{prefix}}jzzf_option ( id bigint(20) AUTO_INCREMENT, `order` int(12) NOT NULL, `element` bigint(20) NOT NULL, `default` int(1) NOT NULL, `title` varchar(1024) NOT NULL, `name` varchar(1024) NOT NULL, `value` varchar(1024) NOT NULL, PRIMARY KEY (id) ) {{charset_collate}}; -
jazzy-forms/trunk/generated/update.sql
r508925 r516626 1 1 ALTER TABLE {{prefix}}jzzf_form ADD COLUMN `realtime` int(1) NOT NULL DEFAULT 1; 2 ALTER TABLE {{prefix}}jzzf_form CHANGE COLUMN css `css` LONGTEXT NOT NULL; 3 ALTER TABLE {{prefix}}jzzf_element ADD COLUMN `visible` int(12) NOT NULL DEFAULT 1; 4 ALTER TABLE {{prefix}}jzzf_element ADD COLUMN `prefix` varchar(16) NOT NULL; 5 ALTER TABLE {{prefix}}jzzf_element ADD COLUMN `postfix` varchar(16) NOT NULL; 6 ALTER TABLE {{prefix}}jzzf_element ADD COLUMN `zeros` int(1) NOT NULL; 7 ALTER TABLE {{prefix}}jzzf_element ADD COLUMN `decimals` int(1) NOT NULL DEFAULT 9; 8 ALTER TABLE {{prefix}}jzzf_element ADD COLUMN `fixed` int(1) NOT NULL DEFAULT 0; 9 ALTER TABLE {{prefix}}jzzf_element ADD COLUMN `thousands` varchar(1) NOT NULL; 10 ALTER TABLE {{prefix}}jzzf_element ADD COLUMN `point` varchar(1) NOT NULL DEFAULT '.'; 11 ALTER TABLE {{prefix}}jzzf_element ADD COLUMN `classes` varchar(1024) NOT NULL; 12 ALTER TABLE {{prefix}}jzzf_element ADD COLUMN `divisions` int(1) NOT NULL DEFAULT 1; 13 ALTER TABLE {{prefix}}jzzf_element ADD COLUMN `break` int(1) NOT NULL DEFAULT 1; 14 ALTER TABLE {{prefix}}jzzf_element CHANGE COLUMN title `title` TEXT NOT NULL; 15 ALTER TABLE {{prefix}}jzzf_element CHANGE COLUMN formula `formula` TEXT NOT NULL; -
jazzy-forms/trunk/jazzy-forms.php
r508925 r516626 3 3 Plugin Name: Jazzy Forms 4 4 Plugin URI: http://www.jazzyforms.com/ 5 Description: Online form builder 6 Version: 0.9. 45 Description: Online form builder with an emphasis on calculation 6 Version: 0.9.5 7 7 Author: Igor Prochazka 8 8 Author URI: http://www.l90r.com/ … … 28 28 */ 29 29 30 define(JZZF_VERSION, 0.0904); 30 define(JZZF_VERSION, 0.0905); 31 define(JZZF_OPTION_VERSION, 'jzzf_version'); 31 32 32 33 define(JZZF_ROOT, WP_PLUGIN_DIR . '/jazzy-forms/'); … … 35 36 define(JZZF_BACK, JZZF_ROOT . 'back/'); 36 37 define(JZZF_FRONT, JZZF_ROOT . 'front/'); 38 39 function jzzf_get_version() { 40 return get_option(JZZF_OPTION_VERSION, 0.0); 41 } 42 43 function jzzf_set_version($float) { 44 update_option(JZZF_OPTION_VERSION, JZZF_VERSION); 45 } 46 47 function jzzf_delete_version() { 48 delete_option(JZZF_OPTION_VERSION); 49 } 37 50 38 51 function jzzf_head() { … … 65 78 66 79 function jzzf_init() { 80 jzzf_sanitize_db(); 67 81 } 68 82 … … 70 84 global $wpdb; 71 85 72 if(!empty($wpdb->charset)) { 73 $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; 74 } 75 76 if(!empty($wpdb->collate)) { 77 $charset_collate .= " COLLATE $wpdb->collate"; 78 } 79 80 jzzf_create_tables($charset_collate); 81 jzzf_update($charset_collate); 82 } 83 84 function jzzf_create_tables($charset_collate) { 85 jzzf_execute_sql('schema.sql', $charset_collate); 86 } 87 88 function jzzf_execute_sql($filename, $charset_collate) { 86 jzzf_create_tables(); 87 jzzf_update(); 88 } 89 90 function jzzf_create_tables() { 91 jzzf_execute_sql('schema.sql'); 92 } 93 94 function jzzf_execute_sql($filename) { 89 95 global $wpdb; 96 97 $charset_collate = jzzf_charset_collate(); 90 98 91 99 $file = file( dirname(__FILE__) . '/generated/' . $filename ); … … 100 108 } 101 109 102 function jzzf_update($charset_collate) { 103 $previous = get_option('jzzf_version', 0.0); 104 update_option('jzzf_version', JZZF_VERSION); 105 106 jzzf_execute_sql('update.sql', $charset_collate); 110 function jzzf_panic() { 111 jzzf_execute_sql('drop.sql'); 112 jzzf_delete_version(); 113 deactivate_plugins(JZZF_ROOT . 'jazzy-forms.php'); 114 } 115 116 function jzzf_sanitize_db() { 117 $current = jzzf_get_version(); 118 if($current < JZZF_VERSION) { 119 jzzf_update(); 120 } 121 } 122 123 function jzzf_charset_collate() { 124 global $wpdb; 125 126 $charset_collate = ''; 127 128 if(!empty($wpdb->charset)) { 129 $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; 130 } 131 132 if(!empty($wpdb->collate)) { 133 $charset_collate .= " COLLATE $wpdb->collate"; 134 } 135 return $charset_collate; 136 } 137 138 139 function jzzf_update() { 140 jzzf_execute_sql('update.sql'); 141 jzzf_set_version(JZZF_VERSION); 107 142 } 108 143 -
jazzy-forms/trunk/readme.txt
r508925 r516626 5 5 Requires at least: 3.2.1 6 6 Tested up to: 3.3.1 7 Stable tag: 0.9. 47 Stable tag: 0.9.5 8 8 9 9 Jazzy Forms is an online form generator that performs instant calculations. It's ideal for inter-active price calculators. … … 18 18 * Easy form set-up with drag and drop 19 19 * Real-time formula evaluation 20 * Hidden elements 21 * Rich number formatting 22 * Flexible (vertical or side-by-side) layout 20 23 21 24 Form elements: … … 106 109 == Changelog == 107 110 111 = 0.9.5 = 112 * Fix updating procedure (support automatic updates) 113 * Improve performance 114 * Element visibility (hide/show elements) 115 * Support long titles, formulas and CSS definitions 116 * Number formatting 117 * Horizontal (side-by-side) layout 118 * Custom extra CSS/HTML classes for elements 119 108 120 = 0.9.4 = 109 121 * Some GUI polishing
Note: See TracChangeset
for help on using the changeset viewer.