Merge branch 'develop' of github.com:martini/zammad into develop

This commit is contained in:
Martin Edenhofer 2015-01-14 23:08:29 +01:00
commit 7513fd4f8a
18 changed files with 105 additions and 77 deletions

View file

@ -233,7 +233,8 @@ class App.Controller extends Spine.Controller
trigger: 'hover' trigger: 'hover'
container: 'body' container: 'body'
html: true html: true
delay: { show: 400, hide: 800 } animation: false
delay: 100
placement: position placement: position
title: -> title: ->
ticket_id = $(@).data('id') ticket_id = $(@).data('id')
@ -270,7 +271,8 @@ class App.Controller extends Spine.Controller
trigger: 'hover' trigger: 'hover'
container: 'body' container: 'body'
html: true html: true
delay: { show: 400, hide: 800 } animation: false
delay: 100
placement: "auto #{position}" placement: "auto #{position}"
title: -> title: ->
user_id = $(@).data('id') user_id = $(@).data('id')
@ -326,7 +328,8 @@ class App.Controller extends Spine.Controller
trigger: 'hover' trigger: 'hover'
container: 'body' container: 'body'
html: true html: true
delay: { show: 400, hide: 800 } animation: false
delay: 100
placement: "auto #{position}" placement: "auto #{position}"
title: -> title: ->
organization_id = $(@).data('id') organization_id = $(@).data('id')
@ -379,7 +382,8 @@ class App.Controller extends Spine.Controller
trigger: 'hover' trigger: 'hover'
container: 'body' container: 'body'
html: true html: true
delay: { show: 500, hide: 5200 } animation: false
delay: 100
placement: "auto #{data.position}" placement: "auto #{data.position}"
title: -> title: ->
$(@).find('[title="*"]').val() $(@).find('[title="*"]').val()

View file

@ -11,9 +11,9 @@ App.Config.set( 'layout_ref', Index, 'Routes' )
class Content extends App.ControllerContent class Content extends App.ControllerContent
events: events:
'hide.bs.dropdown .js-recipientDropdown': 'hideOrganisationMembers' 'hide.bs.dropdown .js-recipientDropdown': 'hideOrganizationMembers'
'click .js-organisation': 'showOrganisationMembers' 'click .js-organization': 'showOrganizationMembers'
'click .js-back': 'hideOrganisationMembers' 'click .js-back': 'hideOrganizationMembers'
constructor: -> constructor: ->
super super
@ -46,21 +46,21 @@ class Content extends App.ControllerContent
render: -> render: ->
@html App.view('layout_ref/content')() @html App.view('layout_ref/content')()
showOrganisationMembers: (e) => showOrganizationMembers: (e) =>
e.stopPropagation() e.stopPropagation()
listEntry = $(e.currentTarget) listEntry = $(e.currentTarget)
organisationId = listEntry.data('organisation-id') organizationId = listEntry.data('organization-id')
@recipientList = @$('.recipientList') @recipientList = @$('.recipientList')
@organisationList = @$("##{ organisationId }") @organizationList = @$("##{ organizationId }")
# move organisation-list to the right and slide it in # move organization-list to the right and slide it in
$.Velocity.hook(@organisationList, 'translateX', '100%') $.Velocity.hook(@organizationList, 'translateX', '100%')
@organisationList.removeClass('hide') @organizationList.removeClass('hide')
@organisationList.velocity @organizationList.velocity
properties: properties:
translateX: 0 translateX: 0
options: options:
@ -73,12 +73,12 @@ class Content extends App.ControllerContent
translateX: '-100%' translateX: '-100%'
options: options:
speed: 300 speed: 300
complete: => @recipientList.height(@organisationList.height()) complete: => @recipientList.height(@organizationList.height())
hideOrganisationMembers: (e) => hideOrganizationMembers: (e) =>
e && e.stopPropagation() e && e.stopPropagation()
return if !@organisationList return if !@organizationList
# fade list back in # fade list back in
@ -92,13 +92,13 @@ class Content extends App.ControllerContent
@recipientList.height('') @recipientList.height('')
# slide out organisation-list and hide it # slide out organization-list and hide it
@organisationList.velocity @organizationList.velocity
properties: properties:
translateX: '100%' translateX: '100%'
options: options:
speed: 300 speed: 300
complete: => @organisationList.addClass('hide') complete: => @organizationList.addClass('hide')
App.Config.set( 'layout_ref/content', Content, 'Routes' ) App.Config.set( 'layout_ref/content', Content, 'Routes' )

View file

@ -173,9 +173,9 @@ class App.Navigation extends App.Controller
data = data =
display: "#{organization.displayName()}" display: "#{organization.displayName()}"
id: organization.id id: organization.id
class: "organisation organization-popover" class: "organization organization-popover"
url: organization.uiUrl() url: organization.uiUrl()
iconClass: "organisation" iconClass: "organization"
area.result.push data area.result.push data
@renderResult(result) @renderResult(result)

View file

@ -8,7 +8,7 @@ class App.TicketCustomer extends App.ControllerModal
@button = true @button = true
configure_attributes = [ configure_attributes = [
{ name: 'customer_id', display: 'Customer', tag: 'user_autocompletion', null: false, placeholder: 'Enter Person or Organisation/Company', minLengt: 2, disableCreateUser: true }, { name: 'customer_id', display: 'Customer', tag: 'user_autocompletion', null: false, placeholder: 'Enter Person or Organization/Company', minLengt: 2, disableCreateUser: true },
] ]
controller = new App.ControllerForm( controller = new App.ControllerForm(

View file

@ -907,7 +907,7 @@ class Edit extends App.Controller
@setArticleType(@type) @setArticleType(@type)
configure_attributes = [ configure_attributes = [
{ name: 'customer_id', display: 'Recipients', tag: 'user_autocompletion', null: false, placeholder: 'Enter Person or Organisation/Company', minLengt: 2, disableCreateUser: false }, { name: 'customer_id', display: 'Recipients', tag: 'user_autocompletion', null: false, placeholder: 'Enter Person or Organization/Company', minLengt: 2, disableCreateUser: false },
] ]
controller = new App.ControllerForm( controller = new App.ControllerForm(

View file

@ -1,9 +1,9 @@
class App.UserOrganizationAutocompletion extends App.Controller class App.UserOrganizationAutocompletion extends App.Controller
className: 'dropdown js-recipientDropdown zIndex-2' className: 'dropdown js-recipientDropdown zIndex-2'
events: events:
'hide.bs.dropdown .js-recipientDropdown': 'hideOrganisationMembers' 'hide.bs.dropdown .js-recipientDropdown': 'hideOrganizationMembers'
'click .js-organisation': 'showOrganisationMembers' 'click .js-organization': 'showOrganizationMembers'
'click .js-back': 'hideOrganisationMembers' 'click .js-back': 'hideOrganizationMembers'
'click .js-user': 'selectUser' 'click .js-user': 'selectUser'
'click .js-user-new': 'newUser' 'click .js-user-new': 'newUser'
'focus input': 'open' 'focus input': 'open'
@ -148,9 +148,9 @@ class App.UserOrganizationAutocompletion extends App.Controller
e.preventDefault() e.preventDefault()
userId = @$('.recipientList').find('li.is-active').data('user-id') userId = @$('.recipientList').find('li.is-active').data('user-id')
if !userId if !userId
organisationId = @$('.recipientList').find('li.is-active').data('organisation-id') organizationId = @$('.recipientList').find('li.is-active').data('organization-id')
if organisationId if organizationId
@showOrganisationMembers(undefined, @$('.recipientList').find('li.is-active')) @showOrganizationMembers(undefined, @$('.recipientList').find('li.is-active'))
return return
if userId is 'new' if userId is 'new'
@newUser() @newUser()
@ -217,24 +217,24 @@ class App.UserOrganizationAutocompletion extends App.Controller
emptyResultList: => emptyResultList: =>
@$('.recipientList').empty() @$('.recipientList').empty()
@$('.recipientList-organisationMembers').remove() @$('.recipientList-organizationMembers').remove()
showOrganisationMembers: (e,listEntry) => showOrganizationMembers: (e,listEntry) =>
if e if e
e.stopPropagation() e.stopPropagation()
listEntry = $(e.currentTarget) listEntry = $(e.currentTarget)
organisationId = listEntry.data('organisation-id') organizationId = listEntry.data('organization-id')
@recipientList = @$('.recipientList') @recipientList = @$('.recipientList')
@organisationList = @$("##{ organisationId }") @organizationList = @$("##{ organizationId }")
# move organisation-list to the right and slide it in # move organization-list to the right and slide it in
$.Velocity.hook(@organisationList, 'translateX', '100%') $.Velocity.hook(@organizationList, 'translateX', '100%')
@organisationList.removeClass('hide') @organizationList.removeClass('hide')
@organisationList.velocity @organizationList.velocity
properties: properties:
translateX: 0 translateX: 0
options: options:
@ -246,12 +246,12 @@ class App.UserOrganizationAutocompletion extends App.Controller
translateX: '-100%' translateX: '-100%'
options: options:
speed: 300 speed: 300
complete: => @recipientList.height(@organisationList.height()) complete: => @recipientList.height(@organizationList.height())
hideOrganisationMembers: (e) => hideOrganizationMembers: (e) =>
e && e.stopPropagation() e && e.stopPropagation()
return if !@organisationList return if !@organizationList
# fade list back in # fade list back in
@recipientList.velocity @recipientList.velocity
@ -264,13 +264,13 @@ class App.UserOrganizationAutocompletion extends App.Controller
@recipientList.height('') @recipientList.height('')
# slide out organisation-list and hide it # slide out organization-list and hide it
@organisationList.velocity @organizationList.velocity
properties: properties:
translateX: '100%' translateX: '100%'
options: options:
speed: 300 speed: 300
complete: => @organisationList.addClass('hide') complete: => @organizationList.addClass('hide')
newUser: (e) => newUser: (e) =>
if e if e

View file

@ -0,0 +1,23 @@
/* from here http://jsfiddle.net/WojtekKruszewski/Zf3m7/22/ */
var originalLeave = $.fn.popover.Constructor.prototype.leave;
$.fn.popover.Constructor.prototype.leave = function(obj){
var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
var container, timeout;
originalLeave.call(this, obj);
if(obj.currentTarget) {
container = $('body .popover');
timeout = self.timeout;
container.one('mouseenter', function(){
//We entered the actual popover call off the dogs
clearTimeout(timeout);
//Let's monitor popover content instead
container.one('mouseleave', function(){
$.fn.popover.Constructor.prototype.leave.call(self, self);
});
})
}
};

View file

@ -18,7 +18,7 @@ class App.Organization extends App.Model
'#organization/profile/' + @id '#organization/profile/' + @id
icon: (user) -> icon: (user) ->
"organisation icon" "organization icon"
@_fillUp: (data) -> @_fillUp: (data) ->

View file

@ -1,6 +1,6 @@
<li class="recipientList-entry u-clickable horizontal center js-organisation" data-organisation-id="<%- @organization.id %>"> <li class="recipientList-entry u-clickable horizontal center js-organization" data-organization-id="<%- @organization.id %>">
<div class="recipientList-iconSpacer centered"> <div class="recipientList-iconSpacer centered">
<div class="white organisation icon"></div> <div class="white organization icon"></div>
</div> </div>
<div class="recipientList-name flex u-textTruncat"> <div class="recipientList-name flex u-textTruncat">
<%= @organization.displayName() %> <%= @organization.displayName() %>

View file

@ -1,4 +1,4 @@
<ul class="recipientList-organisationMembers hide" id="<%- @organization.id %>"> <ul class="recipientList-organizationMembers hide" id="<%- @organization.id %>">
<li class="recipientList-controls u-clickable js-back"> <li class="recipientList-controls u-clickable js-back">
<div class="recipientList-backClickArea centered"> <div class="recipientList-backClickArea centered">
<div class="recipientList-backButton"> <div class="recipientList-backButton">

View file

@ -80,24 +80,24 @@
<div class="dropdown js-recipientDropdown"> <div class="dropdown js-recipientDropdown">
<div class="dropdown-toggle u-positionOrigin" data-toggle="dropdown"> <div class="dropdown-toggle u-positionOrigin" data-toggle="dropdown">
<input id="customer_id_autocompletion2" name="customer_id_autocompletion" class="ui-autocomplete-input form-control" autocapitalize="off" placeholder="Enter Person or Organisation/Company" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true"> <input id="customer_id_autocompletion2" name="customer_id_autocompletion" class="ui-autocomplete-input form-control" autocapitalize="off" placeholder="Enter Person or Organization/Company" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true">
<span class="select-arrow icon"></span> <span class="select-arrow icon"></span>
</div> </div>
<div class="dropdown-menu" aria-labelledby="customer_id"> <div class="dropdown-menu" aria-labelledby="customer_id">
<ul class="recipientList" role="menu"> <ul class="recipientList" role="menu">
<li class="recipientList-entry u-clickable horizontal center js-organisation" data-organisation-id="AlbrechtBertschlerGmbG"> <li class="recipientList-entry u-clickable horizontal center js-organization" data-organization-id="AlbrechtBertschlerGmbG">
<div class="recipientList-iconSpacer centered"> <div class="recipientList-iconSpacer centered">
<div class="white organisation icon"></div> <div class="white organization icon"></div>
</div> </div>
<div class="recipientList-name flex u-textTruncat"> <div class="recipientList-name flex u-textTruncat">
Albrecht &amp; Bertschler GmbH Albrecht &amp; Bertschler GmbH
<span class="recipientList-detail">- 4 Personen</span> <span class="recipientList-detail">- 4 Personen</span>
</div> </div>
<div class="white right arrow icon"></div> <li class="recipientList-entry u-clickable horizontal center js-organisation" data-organisation-id="BENCHMARKhumanresources"> <div class="white right arrow icon"></div> <li class="recipientList-entry u-clickable horizontal center js-organization" data-organization-id="BENCHMARKhumanresources">
<div class="recipientList-iconSpacer centered"> <div class="recipientList-iconSpacer centered">
<div class="white organisation icon"></div> <div class="white organization icon"></div>
</div> </div>
<div class="recipientList-name flex u-textTruncat"> <div class="recipientList-name flex u-textTruncat">
BENCHMARK human resources BENCHMARK human resources
@ -134,14 +134,14 @@
<li class="recipientList-entry u-clickable horizontal center"> <li class="recipientList-entry u-clickable horizontal center">
<div class="recipientList-iconSpacer centered"> <div class="recipientList-iconSpacer centered">
<div class="white organisation icon"></div> <div class="white organization icon"></div>
</div> </div>
<div class="recipientList-name flex u-textTruncat"> <div class="recipientList-name flex u-textTruncat">
Benteler SGL Composite Technology GmbH Benteler SGL Composite Technology GmbH
<span class="recipientList-detail"></span> <span class="recipientList-detail"></span>
</div> </div>
<li class="recipientList-entry u-clickable horizontal center js-organisation"> <li class="recipientList-entry u-clickable horizontal center js-organization">
<div class="recipientList-iconSpacer centered"> <div class="recipientList-iconSpacer centered">
<div class="white team icon"></div> <div class="white team icon"></div>
</div> </div>
@ -151,9 +151,9 @@
</div> </div>
<div class="white right arrow icon"></div> <div class="white right arrow icon"></div>
<li class="recipientList-entry u-clickable horizontal center js-organisation"> <li class="recipientList-entry u-clickable horizontal center js-organization">
<div class="recipientList-iconSpacer centered"> <div class="recipientList-iconSpacer centered">
<div class="white organisation icon"></div> <div class="white organization icon"></div>
</div> </div>
<div class="recipientList-name flex u-textTruncat"> <div class="recipientList-name flex u-textTruncat">
Bernecker + Rainer Industrie-Elektronik Ges.m.b.H. Bernecker + Rainer Industrie-Elektronik Ges.m.b.H.
@ -161,9 +161,9 @@
</div> </div>
<div class="white right arrow icon"></div> <div class="white right arrow icon"></div>
<li class="recipientList-entry u-clickable horizontal center js-organisation"> <li class="recipientList-entry u-clickable horizontal center js-organization">
<div class="recipientList-iconSpacer centered"> <div class="recipientList-iconSpacer centered">
<div class="white organisation icon"></div> <div class="white organization icon"></div>
</div> </div>
<div class="recipientList-name flex u-textTruncat"> <div class="recipientList-name flex u-textTruncat">
Bertsch Ecopower GmbH Bertsch Ecopower GmbH
@ -178,7 +178,7 @@
<div class="recipientList-name flex u-textTruncat"> <div class="recipientList-name flex u-textTruncat">
<%- @T('Create new Customer') %> <%- @T('Create new Customer') %>
</div> </div>
</ul> <ul class="recipientList-organisationMembers hide" id="AlbrechtBertschlerGmbG"> </ul> <ul class="recipientList-organizationMembers hide" id="AlbrechtBertschlerGmbG">
<li class="recipientList-controls u-clickable js-back"> <li class="recipientList-controls u-clickable js-back">
<div class="recipientList-backClickArea centered"> <div class="recipientList-backClickArea centered">
<div class="recipientList-backButton"> <div class="recipientList-backButton">
@ -222,7 +222,7 @@
Katharina Nussman Katharina Nussman
<span class="recipientList-detail">- Albrecht &amp; Bertschler GmbG</span> <span class="recipientList-detail">- Albrecht &amp; Bertschler GmbG</span>
</div> </div>
</ul> <ul class="recipientList-organisationMembers hide" id="BENCHMARKhumanresources"> </ul> <ul class="recipientList-organizationMembers hide" id="BENCHMARKhumanresources">
<li class="recipientList-controls u-clickable js-back"> <li class="recipientList-controls u-clickable js-back">
<div class="recipientList-backClickArea centered"> <div class="recipientList-backClickArea centered">
<div class="recipientList-backButton"> <div class="recipientList-backButton">

View file

@ -16,7 +16,7 @@
</ul> </ul>
</div> </div>
<div class="profile-organizationIcon"> <div class="profile-organizationIcon">
<div class="organisation icon"></div> <div class="organization icon"></div>
</div> </div>
<h1>Steuerbüro C. Kaik</h1> <h1>Steuerbüro C. Kaik</h1>
</div> </div>

View file

@ -26,7 +26,7 @@
<a href="mailto:doreen.kubiak@gmail.com">doreen.kubiak@gmail.com</a> <a href="mailto:doreen.kubiak@gmail.com">doreen.kubiak@gmail.com</a>
</div> </div>
<div class="profile-detailsEntry"> <div class="profile-detailsEntry">
<label>Organisation</label> <label>Organization</label>
Steuerbüro C. Kaik Steuerbüro C. Kaik
</div> </div>
<div class="profile-detailsEntry"> <div class="profile-detailsEntry">
@ -56,10 +56,10 @@
</div> </div>
</div> </div>
<div class="profile-section"> <div class="profile-section">
<!-- if user has organisation --> <!-- if user has organization -->
<div class="tabs wide-tabs horizontal"> <div class="tabs wide-tabs horizontal">
<div class="tab js-userTickets active">Tickets von Doreen Kubiak</div> <div class="tab js-userTickets active">Tickets von Doreen Kubiak</div>
<div class="tab js-organisationTickets">Tickets von Steuerbüro C. Kaik</div> <div class="tab js-organizationTickets">Tickets von Steuerbüro C. Kaik</div>
</div> </div>
<!-- endif --> <!-- endif -->
<div class="profile-ticketLists horizontal"> <div class="profile-ticketLists horizontal">

View file

@ -4,7 +4,7 @@
<div class="profile-section vertical centered"> <div class="profile-section vertical centered">
<div class="align-right profile-action js-action"></div> <div class="align-right profile-action js-action"></div>
<div class="profile-organizationIcon"> <div class="profile-organizationIcon">
<div class="organisation icon"></div> <div class="organization icon"></div>
</div> </div>
<h1><%= @organization.displayName() %></h1> <h1><%= @organization.displayName() %></h1>
</div> </div>

View file

@ -6,7 +6,7 @@
<%- @user.avatar("80") %> <%- @user.avatar("80") %>
<h1><%= @user.displayName() %></h1> <h1><%= @user.displayName() %></h1>
<% if @user.organization: %> <% if @user.organization: %>
<div class="profile-organisation"><a href="<%- @user.organization.uiUrl() %>"><%= @user.organization.displayName() %></a></div> <div class="profile-organization"><a href="<%- @user.organization.uiUrl() %>"><%= @user.organization.displayName() %></a></div>
<% end %> <% end %>
</div> </div>

View file

@ -25,6 +25,7 @@
//= require ./app/lib/bootstrap/dropdown.js //= require ./app/lib/bootstrap/dropdown.js
//= require ./app/lib/bootstrap/tooltip.js //= require ./app/lib/bootstrap/tooltip.js
//= require ./app/lib/bootstrap/popover.js //= require ./app/lib/bootstrap/popover.js
//= require ./app/lib/bootstrap/popover-enhance.js
//= require ./app/lib/bootstrap/modal.js //= require ./app/lib/bootstrap/modal.js
//= require ./app/lib/bootstrap/tab.js //= require ./app/lib/bootstrap/tab.js
//= require ./app/lib/bootstrap/transition.js //= require ./app/lib/bootstrap/transition.js

View file

@ -1294,15 +1294,15 @@ ol.tabs li {
@-moz-keyframes fade { from { opacity: 0 } to { opacity: 1 } } @-moz-keyframes fade { from { opacity: 0 } to { opacity: 1 } }
@keyframes fade { from { opacity: 0 } to { opacity: 1 } } @keyframes fade { from { opacity: 0 } to { opacity: 1 } }
.organisation.icon { .organization.icon {
height: 13px; height: 13px;
width: 14px; width: 14px;
background-position: 0 -118px; background-position: 0 -118px;
} }
.icon-switch:hover .organisation.icon, .icon-switch:hover .organization.icon,
.task.active .organisation.icon, .task.active .organization.icon,
.white.organisation.icon { .white.organization.icon {
background-position: 0 -132px; background-position: 0 -132px;
} }
@ -2614,7 +2614,7 @@ footer {
background: white; background: white;
} }
.popover .person .organisation { .popover .person .organization {
color: #a1a4a7; color: #a1a4a7;
} }
@ -2622,8 +2622,8 @@ footer {
margin: 8px 0; margin: 8px 0;
} }
.popover .person .organisation:before { content: '('; } .popover .person .organization:before { content: '('; }
.popover .person .organisation:after { content: ')'; } .popover .person .organization:after { content: ')'; }
.popover .column h3 { .popover .column h3 {
margin: 8px 0 1px; margin: 8px 0 1px;
@ -4073,7 +4073,7 @@ footer {
} }
.recipientList, .recipientList,
.recipientList-organisationMembers { .recipientList-organizationMembers {
list-style: none; list-style: none;
padding: 0; padding: 0;
} }
@ -4143,7 +4143,7 @@ footer {
margin-bottom: -2px; margin-bottom: -2px;
} }
.recipientList-organisationMembers { .recipientList-organizationMembers {
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;

View file

@ -34,7 +34,7 @@ class CreateObjectManager < ActiveRecord::Migration
:multiple => false, :multiple => false,
:null => false, :null => false,
:limit => 200, :limit => 200,
:placeholder => 'Enter Person or Organisation/Company', :placeholder => 'Enter Person or Organization/Company',
:minLengt => 2, :minLengt => 2,
:translate => false, :translate => false,
}, },