Moved to data() store of options for item (inspired by bs js plugins).

This commit is contained in:
Martin Edenhofer 2014-09-28 09:45:36 +02:00
parent 043bcd9a55
commit 354c8a8634
4 changed files with 24 additions and 12 deletions

View file

@ -59,7 +59,7 @@ class App.WidgetOrganization extends App.Controller
###
update: (e) =>
note = $(e.target).ceg({ mode: 'textonly' })
note = $(e.target).ceg()
organization = App.Organization.find( @organization_id )
if organization.note isnt note
organization.updateAttributes( note: note )

View file

@ -86,7 +86,7 @@ class App.WidgetUser extends App.Controller
)
update: (e) =>
note = $(e.target).ceg({ mode: 'textonly' })
note = $(e.target).ceg()
user = App.User.find( @user_id )
if user.note isnt note
user.updateAttributes( note: note )

View file

@ -39,12 +39,12 @@
85: true, // u
}
}
var OPTIONS = {}
// add/remove placeholder
var updatePlaceholder = function(target, type) {
var options = target.data('ce.options')
var text = target.text().trim()
var placeholder = '<span class="placeholder">' + OPTIONS.placeholder + '</span>'
var placeholder = '<span class="placeholder">' + options.placeholder + '</span>'
// add placholder if no text exists
if ( type === 'add') {
@ -55,7 +55,7 @@
// empty placeholder text
else {
if ( text === OPTIONS.placeholder ) {
if ( text === options.placeholder ) {
setTimeout(function(){
document.execCommand('selectAll', false, '');
document.execCommand('delete', false, '');
@ -68,11 +68,16 @@
// max length check
var maxLengthOk = function(field, typeAhead) {
var options = field.data('ce.options')
if (!options) {
return true
}
var length = field.text().length
if (typeAhead) {
length = length + 1
}
if ( length > OPTIONS.maxlength ) {
if ( length > options.maxlength ) {
field.addClass('invalid')
setTimeout(function(){
field.removeClass('invalid')
@ -84,10 +89,12 @@
// check if key is allowed, even if length limit is reached
var allowKey = function(e) {
if ( OPTIONS.allowKey[ e.keyCode ] ) {
var options = $(e.target).data('ce.options')
if ( options.allowKey[ e.keyCode ] ) {
return true
}
if ( ( e.ctrlKey || e.metaKey ) && OPTIONS.extraAllowKey[ e.keyCode ] ) {
if ( ( e.ctrlKey || e.metaKey ) && options.extraAllowKey[ e.keyCode ] ) {
return true
}
return false
@ -95,7 +102,9 @@
// check if rich text key is pressed
var richTextKey = function(e) {
if ( ( e.ctrlKey || e.metaKey ) && OPTIONS.richTextFormatKey[ e.keyCode ] ) {
var options = $(e.target).data('ce.options')
if ( ( e.ctrlKey || e.metaKey ) && options.richTextFormatKey[ e.keyCode ] ) {
return true
}
return false
@ -103,7 +112,8 @@
// get correct val if textbox
$.fn.ceg = function(option) {
var options = $.extend({}, DEFAULTS, option)
var options = this.data('ce.options')
updatePlaceholder( this, 'remove' )
// get text
@ -125,7 +135,9 @@
$.fn.ce = function(option) {
var options = $.extend({}, DEFAULTS, option)
options.placeholder = options.placeholder || this.data('placeholder')
OPTIONS = options
// store options
this.data('ce.options', options)
// process placeholder
if ( options.placeholder ) {

View file

@ -1,4 +1,4 @@
<h1><span contenteditable="true" class="ticket-title-update" data-placeholder="<%= @T('Enter Ticket Title...') %>"><%= @P( @ticket.title ) %></span></h1>
<h1><span contenteditable="true" class="ticket-title-update" data-placeholder="<%= @T('Enter Title...') %>"><%= @P( @ticket.title ) %></span></h1>
<small class="task-subline">
<%- @C('ticket_hook') %> <span class="ticket-number"><%- @ticket.number %></span> - <%- @T('created') %> <span class="humanTimeFromNow" data-time="<%- @ticket.created_at %>">?</span> <% if !@isCustomer && @ticket.escalation_time: %> - <%- @T('escalation') %> <span class="humanTimeFromNow escalation" data-time="<%- @ticket.escalation_time %>">?</span><% end %>