Skip to content

Commit

Permalink
FIX Update JS for new CMS classes, remove jQuery mobile use, add Boot…
Browse files Browse the repository at this point in the history
…strap classes and minor CSS
  • Loading branch information
robbieaverill committed Feb 1, 2017
1 parent 362c2db commit c1568e1
Show file tree
Hide file tree
Showing 6 changed files with 283 additions and 275 deletions.
7 changes: 7 additions & 0 deletions public/segment-field.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.field.segment .preview-holder .preview {
border-left: none;
}

.field.segment .edit-holder {
display: none;
}
262 changes: 131 additions & 131 deletions public/segment-field.dist.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,137 +2,137 @@
'use strict';

(function ($) {
$.entwine('ss', function ($) {
$('.field.silverstripe\\\\forms\\\\segment:not(.readonly)').entwine({
'MaxPreviewLength': 55,

'Ellipsis': '...',

'onmatch': function onmatch() {
if (this.find(':text').length) {
this.toggleEdit(false);
}

this.redraw();
this._super();
},

'redraw': function redraw() {
var field = this.find(':text');
var value = field.val();

var preview = value;

if (value.length > this.getMaxPreviewLength()) {
preview = this.getEllipsis() + value.substr(value.length - this.getMaxPreviewLength(), value.length);
}

this.find('.preview').text(field.data('preview'));
},

'toggleEdit': function toggleEdit(toggle) {
var field = this.find(':text');

this.find('.preview-holder')[toggle ? 'hide' : 'show']();
this.find('.edit-holder')[toggle ? 'show' : 'hide']();

if (toggle) {
field.data('original', field.val());
field.focus();
}
},

'update': function update() {
var _this = this;

var field = this.find(':text');
var current = field.data('original');
var updated = field.val();

if (current != updated) {
this.addClass('loading');

this.suggest(updated, function (data) {
_this.removeClass('loading');

field.val(data['suggestion']);
field.data('preview', data['preview']);

_this.toggleEdit(false);
_this.redraw();
});
} else {
this.toggleEdit(false);
this.redraw();
}
},

'cancel': function cancel() {
var field = this.find(':text');
field.val(field.data("original"));
this.toggleEdit(false);
},

'suggest': function suggest(val, callback) {
var _this2 = this;

var field = this.find(':text');
var parts = $.path.parseUrl(this.closest('form').attr('action'));

var url = parts.hrefNoSearch + '/field/' + field.attr('name') + '/suggest/?value=' + encodeURIComponent(val);

if (parts.search) {
url += '&' + parts.search.replace(/^\?/, '');
}

$.ajax({
'url': url,
'dataType': 'json',
'success': function success(data) {
callback(data);
},
'error': function error(xhr, status) {
xhr.statusText = xhr.responseText;
},
'complete': function complete() {
_this2.removeClass('loading');
}
});
}
});

$('.field.silverstripe\\\\forms\\\\segment .edit').entwine({
'onclick': function onclick(event) {
event.preventDefault();
this.closest('.field').toggleEdit(true);
}
});

$('.field.silverstripe\\\\forms\\\\segment .update').entwine({
'onclick': function onclick(event) {
event.preventDefault();
this.closest('.field').update();
}
});

$('.field.silverstripe\\\\forms\\\\segment .cancel').entwine({
'onclick': function onclick(event) {
event.preventDefault();
this.closest('.field').cancel();
}
});

$('.field.silverstripe\\\\forms\\\\segment :text').entwine({
'onkeydown': function onkeydown(event) {
var code = event.keyCode || event.which;

if (code == 13) {
event.stop();
this.closest('.field').update();
}
}
});
});
$.entwine('ss', function ($) {
$('.cms .field.segment:not(.readonly)').entwine({
'MaxPreviewLength': 55,

'Ellipsis': '...',

'onmatch': function onmatch() {
if (this.find(':text').length) {
this.toggleEdit(false);
}

this.redraw();
this._super();
},

'redraw': function redraw() {
var field = this.find(':text');
var value = field.val();

var preview = value;

if (value.length > this.getMaxPreviewLength()) {
preview = this.getEllipsis() + value.substr(value.length - this.getMaxPreviewLength(), value.length);
}

this.find('.preview').text(field.data('preview'));
},

'toggleEdit': function toggleEdit(toggle) {
var field = this.find(':text');

this.find('.preview-holder')[toggle ? 'hide' : 'show']();
this.find('.edit-holder')[toggle ? 'show' : 'hide']();

if (toggle) {
field.data('original', field.val());
field.focus();
}
},

'update': function update() {
var _this = this;

var field = this.find(':text');
var current = field.data('original');
var updated = field.val();

if (current != updated) {
this.addClass('loading');

this.suggest(updated, function (data) {
_this.removeClass('loading');

field.val(data['suggestion']);
field.data('preview', data['preview']);

_this.toggleEdit(false);
_this.redraw();
});
} else {
this.toggleEdit(false);
this.redraw();
}
},

'cancel': function cancel() {
var field = this.find(':text');
field.val(field.data("original"));
this.toggleEdit(false);
},

'suggest': function suggest(val, callback) {
var _this2 = this;

var field = this.find(':text');
var parts = this.closest('form').attr('action').split('?');

var url = parts[0] + '/field/' + field.attr('name') + '/suggest/?value=' + encodeURIComponent(val);

if (parts[1]) {
url += '&' + parts[1].replace(/^\?/, '');
}

$.ajax({
'url': url,
'dataType': 'json',
'success': function success(data) {
callback(data);
},
'error': function error(xhr, status) {
xhr.statusText = xhr.responseText;
},
'complete': function complete() {
_this2.removeClass('loading');
}
});
}
});

$('.cms .field.segment .edit').entwine({
'onclick': function onclick(event) {
event.preventDefault();
this.closest('.field').toggleEdit(true);
}
});

$('.cms .field.segment .update').entwine({
'onclick': function onclick(event) {
event.preventDefault();
this.closest('.field').update();
}
});

$('.cms .field.segment .cancel').entwine({
'onclick': function onclick(event) {
event.preventDefault();
this.closest('.field').cancel();
}
});

$('.cms .field.segment :text').entwine({
'onkeydown': function onkeydown(event) {
var code = event.keyCode || event.which;

if (code == 13) {
event.stop();
this.closest('.field').update();
}
}
});
});
})(jQuery);

},{}]},{},[1]);
2 changes: 1 addition & 1 deletion public/segment-field.dist.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit c1568e1

Please sign in to comment.