diff --git a/dev/Screen/Admin/Settings.js b/dev/Screen/Admin/Settings.js index 1b1e6a388..bac2bedd5 100644 --- a/dev/Screen/Admin/Settings.js +++ b/dev/Screen/Admin/Settings.js @@ -64,11 +64,11 @@ kn.addSettingsViewModel(require('Settings/Admin/Plugins'), 'AdminSettingsPlugins', 'TABS_LABELS/LABEL_PLUGINS_NAME', 'plugins'); + kn.addSettingsViewModel(require('Settings/Admin/Packages'), + 'AdminSettingsPackages', 'TABS_LABELS/LABEL_PACKAGES_NAME', 'packages'); + if (!RL_COMMUNITY) { - kn.addSettingsViewModel(require('Settings/Admin/Prem/Packages'), - 'AdminSettingsPackages', 'TABS_LABELS/LABEL_PACKAGES_NAME', 'packages'); - kn.addSettingsViewModel(require('Settings/Admin/Prem/Licensing'), 'AdminSettingsLicensing', 'TABS_LABELS/LABEL_LICENSING_NAME', 'licensing'); } diff --git a/dev/Settings/Admin/Packages.js b/dev/Settings/Admin/Packages.js new file mode 100644 index 000000000..f901f3b01 --- /dev/null +++ b/dev/Settings/Admin/Packages.js @@ -0,0 +1,113 @@ + +(function () { + + 'use strict'; + + var + window = require('window'), + _ = require('_'), + ko = require('ko'), + + Enums = require('Common/Enums'), + Translator = require('Common/Translator'), + + PackageStore = require('Stores/Admin/Package'), + Remote = require('Remote/Admin/Ajax') + ; + + /** + * @constructor + */ + function PackagesAdminSettings() + { + this.packagesError = ko.observable(''); + + this.packages = PackageStore.packages; + this.packagesReal = PackageStore.packagesReal; + this.packagesMainUpdatable = PackageStore.packagesMainUpdatable; + + this.packagesCurrent = this.packages.filter(function (oItem) { + return oItem && '' !== oItem['installed'] && !oItem['compare']; + }); + + this.packagesAvailableForUpdate = this.packages.filter(function (oItem) { + return oItem && '' !== oItem['installed'] && !!oItem['compare']; + }); + + this.packagesAvailableForInstallation = this.packages.filter(function (oItem) { + return oItem && '' === oItem['installed']; + }); + + this.visibility = ko.computed(function () { + return PackageStore.packages.loading() ? 'visible' : 'hidden'; + }, this); + } + + PackagesAdminSettings.prototype.onShow = function () + { + this.packagesError(''); + }; + + PackagesAdminSettings.prototype.onBuild = function () + { + require('App/Admin').reloadPackagesList(); + }; + + PackagesAdminSettings.prototype.requestHelper = function (oPackage, bInstall) + { + var self = this; + return function (sResult, oData) { + + if (Enums.StorageResultType.Success !== sResult || !oData || !oData.Result) + { + if (oData && oData.ErrorCode) + { + self.packagesError(Translator.getNotification(oData.ErrorCode)); + } + else + { + self.packagesError(Translator.getNotification( + bInstall ? Enums.Notification.CantInstallPackage : Enums.Notification.CantDeletePackage)); + } + } + + _.each(self.packages(), function (oItem) { + if (oItem && oPackage && oItem['loading']() && oPackage['file'] === oItem['file']) + { + oPackage['loading'](false); + oItem['loading'](false); + } + }); + + if (Enums.StorageResultType.Success === sResult && oData && oData.Result && oData.Result['Reload']) + { + window.location.reload(); + } + else + { + require('App/Admin').reloadPackagesList(); + } + }; + }; + + PackagesAdminSettings.prototype.deletePackage = function (oPackage) + { + if (oPackage) + { + oPackage['loading'](true); + Remote.packageDelete(this.requestHelper(oPackage, false), oPackage); + } + }; + + PackagesAdminSettings.prototype.installPackage = function (oPackage) + { + if (oPackage) + { + oPackage['loading'](true); + Remote.packageInstall(this.requestHelper(oPackage, true), oPackage); + } + }; + + module.exports = PackagesAdminSettings; + +}()); \ No newline at end of file diff --git a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsPlugins.html b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsPlugins.html index b9e4b9ebf..fff7a120e 100644 --- a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsPlugins.html +++ b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsPlugins.html @@ -19,10 +19,8 @@