summaryrefslogtreecommitdiff
path: root/views/js/bootstrap3-editable-1.5.1/inputs-ext/address/address.js
diff options
context:
space:
mode:
authorDaniel Schmitzer <noreply@maennchen1.de>2016-03-22 13:59:16 +0000
committerDaniel Schmitzer <noreply@maennchen1.de>2016-03-22 13:59:16 +0000
commit0fc69ce3ad89844dd5fb2f87532e7b6fca55923d (patch)
treeb89a251b26e0726a80c4c24eb0b726f1bbaeea62 /views/js/bootstrap3-editable-1.5.1/inputs-ext/address/address.js
parentc14a7c20ec8c489a37412cebb524e367679f5a60 (diff)
- sync
git-svn-id: https://[internal]/wordpress/plugins/wpsg4@5439 0d5edaf7-2b12-4e95-93f4-047927463d4b
Diffstat (limited to 'views/js/bootstrap3-editable-1.5.1/inputs-ext/address/address.js')
-rw-r--r--views/js/bootstrap3-editable-1.5.1/inputs-ext/address/address.js170
1 files changed, 170 insertions, 0 deletions
diff --git a/views/js/bootstrap3-editable-1.5.1/inputs-ext/address/address.js b/views/js/bootstrap3-editable-1.5.1/inputs-ext/address/address.js
new file mode 100644
index 0000000..de3af81
--- /dev/null
+++ b/views/js/bootstrap3-editable-1.5.1/inputs-ext/address/address.js
@@ -0,0 +1,170 @@
+/**
+Address editable input.
+Internally value stored as {city: "Moscow", street: "Lenina", building: "15"}
+
+@class address
+@extends abstractinput
+@final
+@example
+<a href="#" id="address" data-type="address" data-pk="1">awesome</a>
+<script>
+$(function(){
+ $('#address').editable({
+ url: '/post',
+ title: 'Enter city, street and building #',
+ value: {
+ city: "Moscow",
+ street: "Lenina",
+ building: "15"
+ }
+ });
+});
+</script>
+**/
+(function ($) {
+ "use strict";
+
+ var Address = function (options) {
+ this.init('address', options, Address.defaults);
+ };
+
+ //inherit from Abstract input
+ $.fn.editableutils.inherit(Address, $.fn.editabletypes.abstractinput);
+
+ $.extend(Address.prototype, {
+ /**
+ Renders input from tpl
+
+ @method render()
+ **/
+ render: function() {
+ this.$input = this.$tpl.find('input');
+ },
+
+ /**
+ Default method to show value in element. Can be overwritten by display option.
+
+ @method value2html(value, element)
+ **/
+ value2html: function(value, element) {
+ if(!value) {
+ $(element).empty();
+ return;
+ }
+ var html = $('<div>').text(value.city).html() + ', ' + $('<div>').text(value.street).html() + ' st., bld. ' + $('<div>').text(value.building).html();
+ $(element).html(html);
+ },
+
+ /**
+ Gets value from element's html
+
+ @method html2value(html)
+ **/
+ html2value: function(html) {
+ /*
+ you may write parsing method to get value by element's html
+ e.g. "Moscow, st. Lenina, bld. 15" => {city: "Moscow", street: "Lenina", building: "15"}
+ but for complex structures it's not recommended.
+ Better set value directly via javascript, e.g.
+ editable({
+ value: {
+ city: "Moscow",
+ street: "Lenina",
+ building: "15"
+ }
+ });
+ */
+ return null;
+ },
+
+ /**
+ Converts value to string.
+ It is used in internal comparing (not for sending to server).
+
+ @method value2str(value)
+ **/
+ value2str: function(value) {
+ var str = '';
+ if(value) {
+ for(var k in value) {
+ str = str + k + ':' + value[k] + ';';
+ }
+ }
+ return str;
+ },
+
+ /*
+ Converts string to value. Used for reading value from 'data-value' attribute.
+
+ @method str2value(str)
+ */
+ str2value: function(str) {
+ /*
+ this is mainly for parsing value defined in data-value attribute.
+ If you will always set value by javascript, no need to overwrite it
+ */
+ return str;
+ },
+
+ /**
+ Sets value of input.
+
+ @method value2input(value)
+ @param {mixed} value
+ **/
+ value2input: function(value) {
+ if(!value) {
+ return;
+ }
+ this.$input.filter('[name="city"]').val(value.city);
+ this.$input.filter('[name="street"]').val(value.street);
+ this.$input.filter('[name="building"]').val(value.building);
+ },
+
+ /**
+ Returns value of input.
+
+ @method input2value()
+ **/
+ input2value: function() {
+ return {
+ city: this.$input.filter('[name="city"]').val(),
+ street: this.$input.filter('[name="street"]').val(),
+ building: this.$input.filter('[name="building"]').val()
+ };
+ },
+
+ /**
+ Activates input: sets focus on the first field.
+
+ @method activate()
+ **/
+ activate: function() {
+ this.$input.filter('[name="city"]').focus();
+ },
+
+ /**
+ Attaches handler to submit form in case of 'showbuttons=false' mode
+
+ @method autosubmit()
+ **/
+ autosubmit: function() {
+ this.$input.keydown(function (e) {
+ if (e.which === 13) {
+ $(this).closest('form').submit();
+ }
+ });
+ }
+ });
+
+ Address.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {
+ tpl: '<div class="editable-address"><label><span>City: </span><input type="text" name="city" class="input-small"></label></div>'+
+ '<div class="editable-address"><label><span>Street: </span><input type="text" name="street" class="input-small"></label></div>'+
+ '<div class="editable-address"><label><span>Building: </span><input type="text" name="building" class="input-mini"></label></div>',
+
+ inputclass: ''
+ });
+
+ $.fn.editabletypes.address = Address;
+
+}(window.jQuery)); \ No newline at end of file