Browse Source

Added api setting to admin interface and tokens to user preferences.

Martin Edenhofer 8 years ago
parent
commit
e200378dd6

+ 2 - 2
app/assets/javascripts/app/controllers/_profile/calendar_subscriptions.coffee

@@ -66,7 +66,7 @@ class CalendarSubscriptions extends App.Controller
     @ajax(
       id:          'preferences'
       type:        'PUT'
-      url:         @apiPath + '/users/preferences'
+      url:         "#{@apiPath}/users/preferences"
       data:        JSON.stringify data
       success:     @success
       error:       @error
@@ -91,4 +91,4 @@ class CalendarSubscriptions extends App.Controller
       msg:  App.i18n.translateContent(data.message)
     )
 
-App.Config.set( 'CalendarSubscriptions', { prio: 3000, name: 'Calendar', parent: '#profile', target: '#profile/calendar_subscriptions', role: ['Agent'], controller: CalendarSubscriptions }, 'NavBarProfile' )
+App.Config.set('CalendarSubscriptions', { prio: 3000, name: 'Calendar', parent: '#profile', target: '#profile/calendar_subscriptions', role: ['Agent'], controller: CalendarSubscriptions }, 'NavBarProfile')

+ 9 - 3
app/assets/javascripts/app/controllers/_profile/devices.coffee

@@ -15,12 +15,17 @@ class Index extends App.Controller
     )
 
   # fetch data, render view
-  load: =>
+  load: (force = false) =>
     @ajax(
       id:    'user_devices'
       type:  'GET'
       url:   "#{@apiPath}/user_devices"
       success: (data) =>
+
+        # verify is rerender is needed
+        if !force && @lastestUpdated && data && data[0] && @lastestUpdated.updated_at is data[0].updated_at
+          return
+        @lastestUpdated = data[0]
         @data = data
         @render()
     )
@@ -39,8 +44,9 @@ class Index extends App.Controller
       type:        'DELETE'
       url:         "#{@apiPath}/user_devices/#{id}"
       processData: true
-      success:     @load
-      error:       @error
+      success: =>
+        @load(true)
+      error: @error
     )
 
   error: (xhr, status, error) =>

+ 92 - 0
app/assets/javascripts/app/controllers/_profile/token_access.coffee

@@ -0,0 +1,92 @@
+class Index extends App.Controller
+  events:
+    'click [data-type=delete]': 'delete'
+    'submit form.js-create': 'create'
+
+  constructor: ->
+    super
+    return if !@authenticate()
+    @title 'Token Access', true
+
+    @load()
+    @interval(
+      =>
+        @load()
+      12000
+    )
+
+  # fetch data, render view
+  load: (force = false) =>
+    @ajax(
+      id:    'user_access_token'
+      type:  'GET'
+      url:   "#{@apiPath}/user_access_token"
+      success: (data) =>
+
+        # verify is rerender is needed
+        if !force && @lastestUpdated && data && data[0] && @lastestUpdated.updated_at is data[0].updated_at
+          return
+        @lastestUpdated = data[0]
+        @data = data
+        @render()
+    )
+
+  render: =>
+    @html App.view('profile/token_access')(
+      tokens: @data
+    )
+
+  create: (e) =>
+    e.preventDefault()
+    params = @formParam(e.target)
+
+    @ajax(
+      id:          'user_access_token_create'
+      type:        'POST'
+      url:         "#{@apiPath}/user_access_token"
+      data:        JSON.stringify(params)
+      processData: true
+      success:     @show
+      error:       @error
+    )
+
+  show: (data) =>
+    @load()
+    ui = @
+    new App.ControllerModal(
+      head: 'Your New Personal Access Token'
+      buttonSubmit: 'OK, I\'ve copied my token'
+      content: ->
+        App.view('profile/token_access_created')(
+          name: data.name
+        )
+      post: ->
+        @el.find('.js-select').on('click', ui.selectAll)
+      onCancel: ->
+        @close()
+      onSubmit: ->
+        @close()
+    )
+
+  delete: (e) =>
+    e.preventDefault()
+    return if !confirm(App.i18n.translateInline('Sure?'))
+    id = $(e.target).closest('a').data('token-id')
+    @ajax(
+      id:          'user_access_token_delete'
+      type:        'DELETE'
+      url:         "#{@apiPath}/user_access_token/#{id}"
+      processData: true
+      success: =>
+        @load(true)
+      error: @error
+    )
+
+  error: (xhr, status, error) =>
+    data = JSON.parse(xhr.responseText)
+    @notify(
+      type: 'error'
+      msg:  App.i18n.translateContent(data.message)
+    )
+
+App.Config.set('Token Access', { prio: 3200, name: 'Token Access', parent: '#profile', target: '#profile/token_access', controller: Index, role: [ 'Agent', 'Admin' ]  }, 'NavBarProfile')

+ 1 - 1
app/assets/javascripts/app/controllers/package.coffee

@@ -58,4 +58,4 @@ class Index extends App.ControllerContent
           @load()
         )
 
-App.Config.set('Packages', { prio: 1000, name: 'Packages', parent: '#system', target: '#system/package', controller: Index, role: ['Admin'] }, 'NavBarAdmin')
+App.Config.set('Packages', { prio: 3600, name: 'Packages', parent: '#system', target: '#system/package', controller: Index, role: ['Admin'] }, 'NavBarAdmin')

+ 1 - 1
app/assets/javascripts/app/controllers/session.coffee

@@ -53,4 +53,4 @@ class Index extends App.ControllerContent
         @load()
     )
 
-App.Config.set('Session', { prio: 3700, name: 'Sessions', parent: '#system', target: '#system/sessions', controller: Index, role: ['Admin'] }, 'NavBarAdmin' )
+App.Config.set('Session', { prio: 3800, name: 'Sessions', parent: '#system', target: '#system/sessions', controller: Index, role: ['Admin'] }, 'NavBarAdmin' )

+ 2 - 2
app/assets/javascripts/app/controllers/widget/translation_inline.coffee

@@ -63,8 +63,8 @@ class Widget extends App.Controller
         App.i18n.setMap(source, translation_new)
 
         # replace rest in page
-        source = source.replace('\'', '\\\'')
-        $(".translation[title='#{source}']").text(translation_new)
+        sourceQuoted = source.replace('\'', '\\\'')
+        $(".translation[title='#{sourceQuoted}']").text(translation_new)
 
         # update permanent translation mapString
         translation = App.Translation.findByAttribute('source', source)

+ 1 - 1
app/assets/javascripts/app/views/profile/devices.jst.eco

@@ -1,5 +1,5 @@
 <div class="page-header">
-  <div class="page-header-title"><h1><%- @T( 'Devices' ) %></h1></div>
+  <div class="page-header-title"><h1><%- @T('Devices') %></h1></div>
 </div>
 
 <form class="page-content">

+ 3 - 3
app/assets/javascripts/app/views/profile/language.jst.eco

@@ -1,12 +1,12 @@
 <div class="page-header">
   <div class="page-header-title">
-    <h1><%- @T( 'Language' ) %></h1>
+    <h1><%- @T('Language') %></h1>
   </div>
 </div>
 <div class="page-content">
-  <p><%- @T( 'Change your language.' ) %></p>
+  <p><%- @T('Change your language.') %></p>
   <form class="settings-entry horizontal end">
     <div class="form-item language_item flex"></div>
-    <button type="submit" class="btn btn--primary"><%- @T( 'Submit' ) %></button>
+    <button type="submit" class="btn btn--primary"><%- @T('Submit') %></button>
   </form>
 </div>

+ 1 - 1
app/assets/javascripts/app/views/profile/linked_accounts.jst.eco

@@ -1,6 +1,6 @@
 <div class="page-header">
   <div class="page-header-title">
-    <h1><%- @T( 'Link Accounts' ) %></h1>
+    <h1><%- @T('Link Accounts') %></h1>
   </div>
 </div>
 <div class="page-content">

+ 2 - 2
app/assets/javascripts/app/views/profile/password.jst.eco

@@ -1,11 +1,11 @@
 <div class="page-header">
   <div class="page-header-title">
-    <h1><%- @T( 'Change your password' ) %></h1>
+    <h1><%- @T('Change your password') %></h1>
   </div>
 </div>
 <div class="page-content">
   <form class="settings-entry form--flexibleWidth">
     <div class="password_item"></div>
-    <button type="submit" class="btn btn--primary"><%- @T( 'Submit' ) %></button>
+    <button type="submit" class="btn btn--primary"><%- @T('Submit') %></button>
   </form>
 </div>

Some files were not shown because too many files changed in this diff