Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'apps/settings/js/federationscopemenu.js')
-rw-r--r--apps/settings/js/federationscopemenu.js130
1 files changed, 130 insertions, 0 deletions
diff --git a/apps/settings/js/federationscopemenu.js b/apps/settings/js/federationscopemenu.js
new file mode 100644
index 00000000000..29303258c98
--- /dev/null
+++ b/apps/settings/js/federationscopemenu.js
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2016
+ *
+ * This file is licensed under the Affero General Public License version 3
+ * or later.
+ *
+ * See the COPYING-README file.
+ *
+ */
+
+/* global OC, Handlebars */
+(function() {
+
+ /**
+ * Construct a new FederationScopeMenu instance
+ * @constructs FederationScopeMenu
+ * @memberof OC.Settings
+ */
+ var FederationScopeMenu = OC.Backbone.View.extend({
+ tagName: 'div',
+ className: 'federationScopeMenu popovermenu bubble menu menu-center',
+ field: undefined,
+ _scopes: undefined,
+
+ initialize: function(options) {
+ this.field = options.field;
+ this._scopes = [
+ {
+ name: 'private',
+ displayName: (this.field === 'avatar' || this.field === 'displayname') ? t('settings', 'Local') : t('settings', 'Private'),
+ tooltip: (this.field === 'avatar' || this.field === 'displayname') ? t('settings', 'Only visible to local users') : t('settings', 'Only visible to you'),
+ iconClass: 'icon-password',
+ active: false
+ },
+ {
+ name: 'contacts',
+ displayName: t('settings', 'Contacts'),
+ tooltip: t('settings', 'Visible to local users and to trusted servers'),
+ iconClass: 'icon-contacts-dark',
+ active: false
+ },
+ {
+ name: 'public',
+ displayName: t('settings', 'Public'),
+ tooltip: t('settings', 'Will be synced to a global and public address book'),
+ iconClass: 'icon-link',
+ active: false
+ }
+ ];
+ },
+
+ /**
+ * Current context
+ *
+ * @type OCA.Files.FileActionContext
+ */
+ _context: null,
+
+ events: {
+ 'click a.action': '_onSelectScope',
+ 'keydown a.action': '_onSelectScopeKeyboard'
+ },
+
+ /**
+ * Event handler whenever an action has been clicked within the menu
+ *
+ * @param {Object} event event object
+ */
+ _onSelectScope: function(event) {
+ var $target = $(event.currentTarget);
+ if (!$target.hasClass('menuitem')) {
+ $target = $target.closest('.menuitem');
+ }
+
+ this.trigger('select:scope', $target.data('action'));
+
+ OC.hideMenus();
+ },
+
+ _onSelectScopeKeyboard: function(event) {
+ if (event.keyCode === 13 || event.keyCode === 32) {
+ // Enter and space can be used to select a scope
+ event.preventDefault();
+ this._onSelectScope(event);
+ }
+ },
+
+ /**
+ * Renders the menu with the currently set items
+ */
+ render: function() {
+ this.$el.html(OC.Settings.Templates['federationscopemenu']({
+ items: this._scopes
+ }));
+ },
+
+ /**
+ * Displays the menu
+ */
+ show: function(context) {
+ this._context = context;
+ var currentlyActiveValue = $('#'+context.target.closest('form').id).find('input[type="hidden"]')[0].value;
+
+ for(var i in this._scopes) {
+ this._scopes[i].active = false;
+ }
+
+ switch (currentlyActiveValue) {
+ case "private":
+ this._scopes[0].active = true;
+ break;
+ case "contacts":
+ this._scopes[1].active = true;
+ break;
+ case "public":
+ this._scopes[2].active = true;
+ break;
+ }
+
+ this.render();
+ this.$el.removeClass('hidden');
+
+ OC.showMenu(null, this.$el);
+ }
+ });
+
+ OC.Settings = OC.Settings || {};
+ OC.Settings.FederationScopeMenu = FederationScopeMenu;
+
+})();