diff --git a/app/assets/javascripts/app/controllers/_profile/calendar_subscriptions.js.coffee b/app/assets/javascripts/app/controllers/_profile/calendar_subscriptions.js.coffee new file mode 100644 index 000000000..73d7e142e --- /dev/null +++ b/app/assets/javascripts/app/controllers/_profile/calendar_subscriptions.js.coffee @@ -0,0 +1,104 @@ +class CalendarSubscriptions extends App.Controller + elements: + 'input[type=checkbox]': 'options' + 'output': 'output' + + events: + 'change input[type=checkbox]': 'onOptionsChange' + 'click .js-select': 'selectAll' + 'click .js-showLink': 'showLink' + + constructor: -> + super + return if !@authenticate() + + @translationTable = + new_open: App.i18n.translatePlain('new & open') + pending: App.i18n.translatePlain('pending') + escalation: App.i18n.translatePlain('escalation') + + @render() + + render: => + userPreferences = @Session.get('preferences') + @preferences = + new_open: + own: true + not_assigned: false + pending: + own: true + not_assigned: false + escalation: + own: true + not_assigned: false + + if userPreferences.ical + if userPreferences.ical.ticket + _.extend(@preferences, userPreferences.ical.ticket) + + @html App.view('profile/calendar_subscriptions') + baseurl: window.location.origin + preferences: @preferences + translationTable: @translationTable + + showLink: (e) -> + $(e.currentTarget).next().removeClass('is-hidden') + $(e.currentTarget).remove() + + selectAll: (e) -> + e.currentTarget.focus() + e.currentTarget.select() + + onOptionsChange: => + @setAllPreferencesToFalse() + + for i, checkbox of @options.serializeArray() + [state, option] = checkbox.name.split('/') + @preferences[state][option] = true + + @store() + + setAllPreferencesToFalse: -> + for state of @preferences + @preferences[state].own = false + @preferences[state].not_assigned = false + + store: -> + # get data + data = + user: + ical: + ticket: @preferences + + @ajax( + id: 'preferences' + type: 'PUT' + url: @apiPath + '/users/preferences' + data: JSON.stringify data + success: @success + error: @error + ) + + success: (data, status, xhr) => + App.User.full( + App.Session.get( 'id' ), + => + App.i18n.set( @locale ) + App.Event.trigger( 'ui:rerender' ) + @notify( + type: 'success' + msg: App.i18n.translateContent( 'Successfully!' ) + ) + , + true + ) + + error: (xhr, status, error) => + @render() + data = JSON.parse( xhr.responseText ) + @notify( + type: 'error' + msg: App.i18n.translateContent( data.message ) + ) + +App.Config.set( 'CalendarSubscriptions', { prio: 4000, name: 'Calendar Subscriptions', parent: '#profile', target: '#profile/calendar_subscriptions', controller: CalendarSubscriptions }, 'NavBarProfile' ) \ No newline at end of file diff --git a/app/assets/javascripts/app/controllers/layout_ref.js.coffee b/app/assets/javascripts/app/controllers/layout_ref.js.coffee index 2a0f005a6..7de2b4b98 100644 --- a/app/assets/javascripts/app/controllers/layout_ref.js.coffee +++ b/app/assets/javascripts/app/controllers/layout_ref.js.coffee @@ -1444,7 +1444,7 @@ class calendarSubscriptionsRef extends App.ControllerContent @render() render: -> - @html App.view('layout_ref/calendar_subscription') + @html App.view('layout_ref/calendar_subscriptions') selectAll: (e) -> e.currentTarget.focus() @@ -1498,7 +1498,7 @@ class calendarSubscriptionsRef extends App.ControllerContent return "#{ items.slice(0, -1).join(', ') } and #{ items[items.length-1] }" -App.Config.set( 'layout_ref/calendar_subscription', calendarSubscriptionsRef, 'Routes' ) +App.Config.set( 'layout_ref/calendar_subscriptions', calendarSubscriptionsRef, 'Routes' ) App.Config.set( 'LayoutRef', { prio: 1700, parent: '#current_user', name: 'Layout Reference', translate: true, target: '#layout_ref', role: [ 'Admin' ] }, 'NavBarRight' ) \ No newline at end of file diff --git a/app/assets/javascripts/app/views/layout_ref/calendar_subscription.jst.eco b/app/assets/javascripts/app/views/layout_ref/calendar_subscriptions.jst.eco similarity index 100% rename from app/assets/javascripts/app/views/layout_ref/calendar_subscription.jst.eco rename to app/assets/javascripts/app/views/layout_ref/calendar_subscriptions.jst.eco diff --git a/app/assets/javascripts/app/views/profile/calendar_subscriptions.jst.eco b/app/assets/javascripts/app/views/profile/calendar_subscriptions.jst.eco new file mode 100644 index 000000000..f7bab0810 --- /dev/null +++ b/app/assets/javascripts/app/views/profile/calendar_subscriptions.jst.eco @@ -0,0 +1,32 @@ +
<%= @T('See your tickets from within your favorite calendar by adding the following url to your calendar app.') %>
+ +<%= @T('Status Type') %> + | <%= @T('Options') %> + | <%= @T('Direct URL') %> + | |
---|---|---|---|
<%= @translationTable[stateType] %> + | + | + | <%= @T('Show') %>
+ |