Skip to content

Commit 3dda31f

Browse files
author
Christian Blanquera
authored
Merge pull request #51 from CradlePHP/2.2
New Fields and Formats
2 parents 85ae6ca + 6a75544 commit 3dda31f

File tree

18 files changed

+893
-483
lines changed

18 files changed

+893
-483
lines changed

src/Fieldset.php

+15-14
Original file line numberDiff line numberDiff line change
@@ -173,20 +173,21 @@ public function getJsonFieldNames()
173173
if (in_array(
174174
$field['field']['type'],
175175
[
176-
'filelist',
177-
'imagelist',
178-
'tag',
179-
'textlist',
180-
'textarealist',
181-
'wysiwyglist',
182-
'meta',
183-
'checkboxes',
184-
'multirange',
185-
'rawjson',
186-
'multiselect',
187-
'fieldset',
188-
'table'
189-
]
176+
'filelist',
177+
'imagelist',
178+
'tag',
179+
'textlist',
180+
'textarealist',
181+
'wysiwyglist',
182+
'meta',
183+
'checkboxes',
184+
'multirange',
185+
'rawjson',
186+
'multiselect',
187+
'fieldset',
188+
'table',
189+
'latlng'
190+
]
190191
)
191192
) {
192193
$results[] = $name;

src/Fieldset/events.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ function ($relation) {
183183
rename($path, $new);
184184
}
185185

186-
$response->setError(false)->setResults($results);
186+
$response->setError(false)->setResults($data);
187187
});
188188

189189
/**
@@ -222,7 +222,7 @@ function ($relation) {
222222
rename($path, $new);
223223
}
224224

225-
$response->setError(false)->setResults($results);
225+
$response->setError(false)->setResults($data);
226226
});
227227

228228
/**

src/Fieldset/template/_scripts.html

+44-19
Original file line numberDiff line numberDiff line change
@@ -67,21 +67,6 @@
6767
$(this).attr('data-name', name);
6868
});
6969

70-
$('input', copy).each(function() {
71-
var value = $(this).val();
72-
$(this).attr('value', value);
73-
});
74-
75-
$('input', copy).each(function() {
76-
var value = $(this).val();
77-
$(this).attr('value', value);
78-
});
79-
80-
$('textarea', copy).each(function() {
81-
var value = $(this).val();
82-
$(this).html(value);
83-
});
84-
8570
$('#modal-template')
8671
.compile({INDEX: index})
8772
.find('div.modal-body')
@@ -506,8 +491,6 @@
506491

507492
row.doon();
508493
});
509-
510-
$(target).formlog()
511494
});
512495

513496
$(window).on('modal-cancel-click', function(e, trigger) {
@@ -532,8 +515,6 @@
532515
$(window).on('modal-save-click', function(e, trigger) {
533516
var modal = $(trigger).parents('div.modal').eq(0);
534517

535-
$(modal).formlog()
536-
537518
$('.is-error', modal).removeClass('is-error');
538519
$('div.error-message', modal).remove();
539520

@@ -587,6 +568,8 @@
587568
.removeClass('modal-create')
588569
.addClass('modal-update')
589570
);
571+
572+
$('h5.modal-title', modal).html('Edit Field');
590573
}
591574

592575
var row = $(trigger).parents('tr.fieldset-field-row').eq(0);
@@ -1098,7 +1081,49 @@
10981081

10991082
//----------------------------//
11001083
// Functions
1084+
var $clone = $.fn.clone;
11011085
$.fn.extend({
1086+
clone: function() {
1087+
//before cloning we need to set the html states for fields
1088+
//considerations
1089+
// input
1090+
// - checkbox
1091+
// - radio
1092+
// textarea
1093+
// select
1094+
$('input', this).each(function() {
1095+
$(this).attr('value', $(this).val());
1096+
1097+
var type = ($(this).attr('type') || 'text').toLowerCase();
1098+
1099+
if (type === 'radio' || type === 'checkbox') {
1100+
var checked = $(this).prop('checked');
1101+
if (checked) {
1102+
$(this).attr('checked', 'checked');
1103+
} else {
1104+
$(this).removeAttr('checked');
1105+
}
1106+
}
1107+
});
1108+
1109+
$('textarea', this).each(function() {
1110+
$(this).html($(this).val());
1111+
});
1112+
1113+
$('select', this).each(function() {
1114+
var selected = this.options[this.selectedIndex];
1115+
$('option', this).removeAttr('selected');
1116+
1117+
if (selected) {
1118+
$(selected).attr('selected', 'selected');
1119+
}
1120+
});
1121+
1122+
var withDataAndEvents = arguments[0] || false;
1123+
var deepWithDataAndEvents = arguments[1] || false;
1124+
var clone = $clone.call(this, withDataAndEvents, deepWithDataAndEvents);
1125+
return clone;
1126+
},
11021127
compile: function(variables) {
11031128
var template = this.text();
11041129

src/Fieldset/template/options/_format.html

+9
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,15 @@
184184
>
185185
Table
186186
</option>
187+
<option
188+
data-fieldset="text"
189+
data-placeholder-1="Width"
190+
data-placeholder-2="Height"
191+
value="carousel"
192+
{{#when format '===' 'carousel'}}selected{{/when}}
193+
>
194+
Image Carousel
195+
</option>
187196
<option
188197
value="jsonpretty"
189198
{{#when format '===' 'jsonpretty'}}selected{{/when}}

src/Fieldset/template/options/_type.html

+22-6
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,14 @@
243243
>
244244
Radios Fieldset
245245
</option>
246+
<option
247+
data-fieldset="attributes"
248+
data-format="string"
249+
value="countrylist"
250+
{{#when field.type '===' 'countrylist'}}selected{{/when}}
251+
>
252+
Country List Field
253+
</option>
246254
</optgroup>
247255
<optgroup label="File Fields">
248256
<option
@@ -290,24 +298,24 @@
290298
<option
291299
data-fieldset="attributes"
292300
data-format="json"
293-
value="texts"
294-
{{#when field.type '===' 'texts'}}selected{{/when}}
301+
value="textlist"
302+
{{#when field.type '===' 'textlist'}}selected{{/when}}
295303
>
296304
Text List Fieldset
297305
</option>
298306
<option
299307
data-fieldset="attributes"
300308
data-format="json"
301-
value="textareas"
302-
{{#when field.type '===' 'textareas'}}selected{{/when}}
309+
value="textarealist"
310+
{{#when field.type '===' 'textarealist'}}selected{{/when}}
303311
>
304312
Textarea List Fieldset
305313
</option>
306314
<option
307315
data-fieldset="attributes"
308316
data-format="json"
309-
value="wysiwygs"
310-
{{#when field.type '===' 'wysiwygs'}}selected{{/when}}
317+
value="wysiwyglist"
318+
{{#when field.type '===' 'wysiwyglist'}}selected{{/when}}
311319
>
312320
WYSIWYG List Fieldset
313321
</option>
@@ -335,6 +343,14 @@
335343
>
336344
Multi Range Field
337345
</option>
346+
<option
347+
data-fieldset="attributes"
348+
data-format="json"
349+
value="latlng"
350+
{{#when field.type '===' 'latlng'}}selected{{/when}}
351+
>
352+
Lat/Lng
353+
</option>
338354
<option
339355
data-fieldset="attributes|fieldset"
340356
data-format="json"

src/Model/Formatter.php

+25-2
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,19 @@ public function formatData(array $data, $fieldset = null)
6969
$data[$name] = date('Y-m-d H:i:s');
7070
}
7171

72+
if ($field['field']['type'] === 'latlng' && is_array($data[$name])) {
73+
if (!is_numeric($data[$name][0])) {
74+
$data[$name][0] = 0;
75+
}
76+
77+
if (!is_numeric($data[$name][1])) {
78+
$data[$name][1] = 0;
79+
}
80+
81+
$data[$name][0] = sprintf('%.8F', $data[$name][0]);
82+
$data[$name][1] = sprintf('%.8F', $data[$name][1]);
83+
}
84+
7285
if ($field['field']['type'] === 'fieldset') {
7386
//case for multiple
7487
if (isset($field['field']['attributes']['data-multiple'])
@@ -118,6 +131,7 @@ public function formatData(array $data, $fieldset = null)
118131
case 'multirange':
119132
case 'multiselect':
120133
case 'table':
134+
case 'latlng':
121135
case 'fieldset':
122136
//if it's an array already
123137
if((is_array($data[$name]) || is_object($data[$name])) && is_null($fieldset)) {
@@ -184,10 +198,18 @@ public function formatData(array $data, $fieldset = null)
184198
case 'token':
185199
$data[$name] = md5(uniqid());
186200
break;
187-
case 'number' || 'small':
201+
case 'number':
202+
case 'small':
188203
if (!$data[$name]) {
189204
$data[$name] = null;
190205
}
206+
break;
207+
case 'textarea':
208+
case 'wysiwyg':
209+
case 'code':
210+
//fix for textarea in textarea
211+
$data[$name] = str_replace('<\/textarea>', '</textarea>', $data[$name]);
212+
break;
191213
}
192214
}
193215

@@ -229,7 +251,8 @@ public function expandData(array $data)
229251
'multirange',
230252
'rawjson',
231253
'fieldset',
232-
'table'
254+
'table',
255+
'latlng'
233256
]
234257
)
235258
) {

0 commit comments

Comments
 (0)