AntonLV 9 anni fa
parent
commit
0ea6e97740

+ 8 - 0
modules/boonex/accounts/classes/BxAccntConfig.php

@@ -26,6 +26,8 @@ class BxAccntConfig extends BxBaseModGeneralConfig
         	'URL_MANAGE_ADMINISTRATION' => 'page.php?i=accounts-administration',
 
 	        // objects
+	        'OBJECT_FORM_ACCOUNT' => 'bx_accounts_account',
+            'OBJECT_FORM_ACCOUNT_DISPLAY_SETTINGS_EMAIL' => 'bx_accounts_account_settings_email',
 	        'OBJECT_MENU_MANAGE_TOOLS' => 'bx_accounts_menu_manage_tools', //manage menu in content administration tools
         	'OBJECT_GRID_ADMINISTRATION' => 'bx_accounts_administration',
         	'OBJECT_GRID_MODERATION' => 'bx_accounts_moderation',
@@ -46,10 +48,12 @@ class BxAccntConfig extends BxBaseModGeneralConfig
         );
 
         $this->_aJsClasses = array(
+        	'main' => 'BxAccntMain',
         	'manage_tools' => 'BxAccntManageTools'
         );
 
         $this->_aJsObjects = array(
+        	'main' => 'oBxAccntMain',
         	'manage_tools' => 'oBxAccntManageTools'
         );
 
@@ -63,6 +67,10 @@ class BxAccntConfig extends BxBaseModGeneralConfig
         $this->_aHtmlIds = array(
         	'profile' => $sHtmlPrefix . '-profile-',
         	'profile_more_popup' => $sHtmlPrefix . '-profile-more-popup-',
+
+        	'password_text' => $sHtmlPrefix . '-txt-password',
+            'password_button' => $sHtmlPrefix . '-btn-copy',
+        	'password_popup' => $sHtmlPrefix . '-password-popup',
         );
     }
 

+ 24 - 0
modules/boonex/accounts/classes/BxAccntFormAccount.php

@@ -0,0 +1,24 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    Accounts Accounts
+ * @ingroup     UnaModules
+ * 
+ * @{
+ */
+
+bx_import('BxTemplFormAccount');
+
+class BxAccntFormAccountCheckerHelper extends BxFormAccountCheckerHelper {}
+
+class BxAccntFormAccount extends BxTemplFormAccount
+{
+    function __construct($aInfo, $oTemplate = false)
+    {
+        parent::__construct($aInfo, $oTemplate);
+    }
+}
+
+/** @} */

+ 121 - 1
modules/boonex/accounts/classes/BxAccntGridAdministration.php

@@ -9,7 +9,6 @@
  * @{
  */
 
-
 class BxAccntGridAdministration extends BxBaseModProfileGridAdministration
 {
     public function __construct ($aOptions, $oTemplate = false)
@@ -18,6 +17,13 @@ class BxAccntGridAdministration extends BxBaseModProfileGridAdministration
         parent::__construct ($aOptions, $oTemplate);
     }
 
+    public function getCode($isDisplayHeader = true)
+    {
+        return $this->_oModule->_oTemplate->getJsCode('main', array(
+        	'aHtmlIds' => $this->_oModule->_oConfig->getHtmlIds()
+        )) . parent::getCode($isDisplayHeader);
+    }
+
     public function performActionActivate()
     {
     	$this->_performActionEnable(true);
@@ -28,6 +34,58 @@ class BxAccntGridAdministration extends BxBaseModProfileGridAdministration
     	$this->_performActionEnable(false);
     }
 
+    public function performActionEditEmail()
+    {
+        $CNF = &$this->_oModule->_oConfig->CNF;
+
+        $aIds = bx_get('ids');
+        if(!$aIds || !is_array($aIds)) {
+            $iId = (int)bx_get('id');
+            if(!$iId)
+                return echoJson(array());
+
+            $aIds = array($iId);
+        }
+
+        $iId = $aIds[0];
+        $oAccount = BxDolAccount::getInstance($iId);
+        if(!$oAccount)
+            return echoJson(array());
+
+        $aAccount = $oAccount->getInfo();
+        $sAction = 'edit_email';
+
+        $oForm = BxDolForm::getObjectInstance($CNF['OBJECT_FORM_ACCOUNT'], $CNF['OBJECT_FORM_ACCOUNT_DISPLAY_SETTINGS_EMAIL']);
+        $oForm->aFormAttrs['action'] = BX_DOL_URL_ROOT . 'grid.php?o=' . $this->_sObject . '&a=' . $sAction . '&id=' . $iId;
+        $oForm->initChecker($aAccount);
+
+        if($oForm->isSubmittedAndValid()) {
+            $sEmail = $oForm->getCleanValue('email');
+            if(strcmp($aAccount['email'], $sEmail) !== 0 && BxDolAccountQuery::getInstance()->getIdByEmail($sEmail))
+                return echoJson(array('msg' => _t('_sys_form_account_input_email_uniq_error_loggedin')));
+
+            if($oForm->update($aAccount['id'])) {
+                bx_alert('account', 'edited', $aAccount['id'], BxDolAccount::getInstance()->id(), array('display' => $CNF['OBJECT_FORM_ACCOUNT_DISPLAY_SETTINGS_EMAIL']));
+
+                $aRes = array('grid' => $this->getCode(false), 'blink' => $iId);
+            }
+            else
+                $aRes = array('msg' => _t('_sys_txt_error_account_update'));
+
+            echoJson($aRes);
+        }
+        else {
+            $sContent = BxTemplStudioFunctions::getInstance()->popupBox('bx-account-edit-email-popup', _t('_bx_accounts_form_display_account_settings_email_popup'), $this->_oModule->_oTemplate->parseHtmlByName('edit_email.html', array(
+                'form_id' => $oForm->id,
+                'form' => $oForm->getCode(true),
+                'object' => $this->_sObject,
+                'action' => $sAction
+            )));
+
+            echoJson(array('popup' => array('html' => $sContent, 'options' => array())));
+        }
+    }
+
     public function performActionResendCemail()
     {
     	$CNF = &$this->_oModule->_oConfig->CNF;
@@ -51,6 +109,44 @@ class BxAccntGridAdministration extends BxBaseModProfileGridAdministration
 		echoJson($iAffected ? array('grid' => $this->getCode(false), 'blink' => $aIdsAffected) : array('msg' => _t($CNF['T']['grid_action_err_perform'])));
     }
 
+    public function performActionResetPassword()
+    {
+    	$aIds = bx_get('ids');
+        if(!$aIds || !is_array($aIds)) {
+            echoJson(array());
+            return;
+        }
+
+        $iId = $aIds[0];
+        $oAccount = BxDolAccount::getInstance($iId);
+        if(!$oAccount)
+            return echoJson(array());
+
+        $sPwd = genRndPwd();
+        $sSalt = genRndSalt();
+        $sPasswordHash = encryptUserPwd($sPwd, $sSalt);
+
+        $aRes = array();
+        if((int)BxDolAccountQuery::getInstance()->updatePassword($sPasswordHash, $sSalt, $iId) > 0) {
+            bx_alert('account', 'edit', $iId, BxDolAccount::getInstance()->id(), array('action' => 'reset_password'));
+
+            $sPopupId = $this->_oModule->_oConfig->getHtmlIds('password_popup');
+            $sPopupTitle = _t('_bx_accounts_form_display_account_settings_password_popup');
+            $sPopupContent = $this->_oModule->_oTemplate->parseHtmlByName('reset_password.html', array(
+                'js_object' => $this->_oModule->_oConfig->getJsObject('main'),
+                'html_id_text' => $this->_oModule->_oConfig->getHtmlIds('password_text'),
+                'html_id_button' => $this->_oModule->_oConfig->getHtmlIds('password_button'),
+                'password' => $sPwd,
+            ));
+
+            $aRes = array('popup' => BxTemplStudioFunctions::getInstance()->popupBox($sPopupId, $sPopupTitle, $sPopupContent));
+        }
+        else 
+            $aRes = array('msg' => _t('_bx_accnt_grid_action_err_perform'));
+
+        return echoJson($aRes);
+    }
+
 	public function performActionMakeOperator()
     {
     	$this->_performActionChangeRole(3);
@@ -131,12 +227,22 @@ class BxAccntGridAdministration extends BxBaseModProfileGridAdministration
     }
 
     //--- Layout methods ---//
+    protected function _getActionEditEmail($sType, $sKey, $a, $isSmall = false, $isDisabled = false, $aRow = array())
+    {
+        return '';
+    }
+
     protected function _getCellEmailConfirmed($mixedValue, $sKey, $aField, $aRow)
     {
     	$mixedValue = (int)$mixedValue == 1 ? '_Yes' : '_No';
         return parent::_getCellDefault(_t($mixedValue), $sKey, $aField, $aRow);
     }
 
+    protected function _getActionResetPassword($sType, $sKey, $a, $isSmall = false, $isDisabled = false, $aRow = array())
+    {
+        return '';
+    }
+
 	protected function _getCellProfiles($mixedValue, $sKey, $aField, $aRow)
     {
         $s = $this->_oModule->_oTemplate->getProfilesByAccount($aRow);
@@ -163,6 +269,20 @@ class BxAccntGridAdministration extends BxBaseModProfileGridAdministration
     {
     	return BxDolAccount::getInstance($iId)->delete(isset($aParams['with_content']) && $aParams['with_content'] === true);
     }
+    protected function _addJsCss()
+    {
+        parent::_addJsCss();
+        
+        $this->_oTemplate->addJs(array(
+            'main.css'
+        ));
+
+        $this->_oTemplate->addJs(array(
+        	'jquery.form.min.js',
+            'clipboard.min.js',
+            'main.js'
+        ));
+    }
 }
 
 /** @} */

+ 13 - 3
modules/boonex/accounts/install/langs/en.xml

@@ -2,6 +2,9 @@
 <resources name="en" flag="gb" title="English">
 	<string name="_bx_accnt"><![CDATA[Accounts]]></string>
 
+	<string name="_bx_accounts_form_display_account_settings_email_popup"><![CDATA[Edit Email]]></string>
+	<string name="_bx_accounts_form_display_account_settings_password_popup"><![CDATA[Reset Password]]></string>
+
 	<string name="_bx_accnt_page_title_sys_manage_administration"><![CDATA[Manage All Accounts]]></string>
 	<string name="_bx_accnt_page_title_manage"><![CDATA[Manage Accounts]]></string>
 	<string name="_bx_accnt_page_title_browse"><![CDATA[Accounts]]></string>
@@ -11,8 +14,12 @@
 
 	<string name="_bx_accnt_menu_set_title_manage_tools"><![CDATA[Manage Tools Submenu]]></string>
     <string name="_bx_accnt_menu_title_manage_tools"><![CDATA[Manage Tools Submenu]]></string>
-    <string name="_bx_accnt_menu_item_title_system_resend_cemail"><![CDATA[Confirm Email]]></string>
-    <string name="_bx_accnt_menu_item_title_resend_cemail"><![CDATA[Confirm Email]]></string>
+    <string name="_bx_accnt_menu_item_title_system_resend_cemail"><![CDATA[Resend Confirmation]]></string>
+    <string name="_bx_accnt_menu_item_title_resend_cemail"><![CDATA[Resend Confirmation]]></string>
+    <string name="_bx_accnt_menu_item_title_system_edit_email"><![CDATA[Edit Email]]></string>
+    <string name="_bx_accnt_menu_item_title_edit_email"><![CDATA[Edit Email]]></string>
+    <string name="_bx_accnt_menu_item_title_system_reset_password"><![CDATA[Reset Password]]></string>
+    <string name="_bx_accnt_menu_item_title_reset_password"><![CDATA[Reset Password]]></string>
     <string name="_bx_accnt_menu_item_title_system_delete"><![CDATA[Delete]]></string>
     <string name="_bx_accnt_menu_item_title_delete"><![CDATA[Delete]]></string>
     <string name="_bx_accnt_menu_item_title_system_delete_with_content"><![CDATA[Delete With Content]]></string>
@@ -39,7 +46,9 @@
     <string name="_bx_accnt_grid_column_title_adm_logged"><![CDATA[Last Online]]></string>
     <string name="_bx_accnt_grid_action_title_adm_activate"><![CDATA[Activate]]></string>
 	<string name="_bx_accnt_grid_action_title_adm_suspend"><![CDATA[Suspend]]></string>
-    <string name="_bx_accnt_grid_action_title_adm_resend_cemail"><![CDATA[Confirm Email]]></string>
+	<string name="_bx_accnt_grid_action_title_adm_edit_email"><![CDATA[Edit Email]]></string>
+    <string name="_bx_accnt_grid_action_title_adm_resend_cemail"><![CDATA[Resend Confirmation]]></string>
+    <string name="_bx_accnt_grid_action_title_adm_reset_password"><![CDATA[Reset Password]]></string>
     <string name="_bx_accnt_grid_action_title_adm_delete"><![CDATA[Delete]]></string>
     <string name="_bx_accnt_grid_action_title_adm_delete_with_content"><![CDATA[Delete With Content]]></string>
     <string name="_bx_accnt_grid_action_title_adm_more_actions"><![CDATA[More Actions]]></string>
@@ -48,4 +57,5 @@
 
 	<string name="_bx_accnt_txt_more"><![CDATA[{0} more]]></string>
 	<string name="_bx_accnt_txt_see_more"><![CDATA[See more]]></string>
+	<string name="_bx_accnt_txt_copy_to_clipboard"><![CDATA[Copy to Clipboard]]></string>
 </resources>

+ 1 - 1
modules/boonex/accounts/install/sql/disable.sql

@@ -20,4 +20,4 @@ DELETE FROM `sys_acl_actions` WHERE `Module` = @sName;
 -- GRIDS
 DELETE FROM `sys_objects_grid` WHERE `object` IN ('bx_accounts_administration');
 DELETE FROM `sys_grid_fields` WHERE `object` IN ('bx_accounts_administration');
-DELETE FROM `sys_grid_actions` WHERE `object` IN ('bx_accounts_administration');
+DELETE FROM `sys_grid_actions` WHERE `object` IN ('bx_accounts_administration');

+ 10 - 6
modules/boonex/accounts/install/sql/enable.sql

@@ -17,11 +17,13 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_accounts_menu_manage_tools', @sName, '_bx_accnt_menu_set_title_manage_tools', 0);
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
-('bx_accounts_menu_manage_tools', @sName, 'resend-cemail', '_bx_accnt_menu_item_title_system_resend_cemail', '_bx_accnt_menu_item_title_resend_cemail', 'javascript:void(0)', 'javascript:{js_object}.onClickResendCemail({content_id}, this);', '_self', 'envelope-o', '', 192, 1, 0, 1),
-('bx_accounts_menu_manage_tools', @sName, 'delete', '_bx_accnt_menu_item_title_system_delete', '_bx_accnt_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id}, this);', '_self', 'trash-o', '', 192, 1, 0, 2),
-('bx_accounts_menu_manage_tools', @sName, 'delete-with-content', '_bx_accnt_menu_item_title_system_delete_with_content', '_bx_accnt_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id}, this);', '_self', 'trash-o', '', 192, 1, 0, 3),
-('bx_accounts_menu_manage_tools', @sName, 'make-operator', '_bx_accnt_menu_item_title_system_make_operator', '_bx_accnt_menu_item_title_make_operator', 'javascript:void(0)', 'javascript:{js_object}.onClickMakeOperator({content_id}, this);', '_self', 'wrench', '', 192, 1, 0, 4),
-('bx_accounts_menu_manage_tools', @sName, 'unmake-operator', '_bx_accnt_menu_item_title_system_unmake_operator', '_bx_accnt_menu_item_title_unmake_operator', 'javascript:void(0)', 'javascript:{js_object}.onClickUnmakeOperator({content_id}, this);', '_self', 'wrench', '', 192, 1, 0, 5);
+('bx_accounts_menu_manage_tools', @sName, 'edit-email', '_bx_accnt_menu_item_title_system_edit_email', '_bx_accnt_menu_item_title_edit_email', 'javascript:void(0)', 'javascript:{js_object}.onClickEditEmail({content_id}, this);', '_self', 'at', '', 192, 1, 0, 1),
+('bx_accounts_menu_manage_tools', @sName, 'resend-cemail', '_bx_accnt_menu_item_title_system_resend_cemail', '_bx_accnt_menu_item_title_resend_cemail', 'javascript:void(0)', 'javascript:{js_object}.onClickResendCemail({content_id}, this);', '_self', 'envelope-o', '', 192, 1, 0, 2),
+('bx_accounts_menu_manage_tools', @sName, 'reset-password', '_bx_accnt_menu_item_title_system_reset_password', '_bx_accnt_menu_item_title_reset_password', 'javascript:void(0)', 'javascript:{js_object}.onClickResetPassword({content_id}, this);', '_self', 'eraser', '', 192, 1, 0, 3),
+('bx_accounts_menu_manage_tools', @sName, 'delete', '_bx_accnt_menu_item_title_system_delete', '_bx_accnt_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id}, this);', '_self', 'trash-o', '', 192, 1, 0, 4),
+('bx_accounts_menu_manage_tools', @sName, 'delete-with-content', '_bx_accnt_menu_item_title_system_delete_with_content', '_bx_accnt_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id}, this);', '_self', 'trash-o', '', 192, 1, 0, 5),
+('bx_accounts_menu_manage_tools', @sName, 'make-operator', '_bx_accnt_menu_item_title_system_make_operator', '_bx_accnt_menu_item_title_make_operator', 'javascript:void(0)', 'javascript:{js_object}.onClickMakeOperator({content_id}, this);', '_self', 'wrench', '', 192, 1, 0, 6),
+('bx_accounts_menu_manage_tools', @sName, 'unmake-operator', '_bx_accnt_menu_item_title_system_unmake_operator', '_bx_accnt_menu_item_title_unmake_operator', 'javascript:void(0)', 'javascript:{js_object}.onClickUnmakeOperator({content_id}, this);', '_self', 'wrench', '', 192, 1, 0, 7);
 
 -- MENU: dashboard manage tools
 SET @iManageMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name`='sys_account_dashboard_manage_tools' LIMIT 1);
@@ -71,4 +73,6 @@ INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon
 ('bx_accounts_administration', 'bulk', 'resend_cemail', '_bx_accnt_grid_action_title_adm_resend_cemail', '', 0, 0, 3),
 ('bx_accounts_administration', 'bulk', 'delete', '_bx_accnt_grid_action_title_adm_delete', '', 0, 1, 4),
 ('bx_accounts_administration', 'bulk', 'delete_with_content', '_bx_accnt_grid_action_title_adm_delete_with_content', '', 0, 1, 5),
-('bx_accounts_administration', 'single', 'settings', '_bx_accnt_grid_action_title_adm_more_actions', 'cog', 1, 0, 1);
+('bx_accounts_administration', 'single', 'edit_email', '_bx_accnt_grid_action_title_adm_edit_email', '', 0, 0, 0),
+('bx_accounts_administration', 'single', 'reset_password', '_bx_accnt_grid_action_title_adm_reset_password', '', 0, 0, 0),
+('bx_accounts_administration', 'single', 'settings', '_bx_accnt_grid_action_title_adm_more_actions', 'cog', 1, 0, 1);

+ 20 - 0
modules/boonex/accounts/install/sql/install.sql

@@ -1,6 +1,26 @@
 SET @sName = 'bx_accounts';
 
 
+-- FORMS
+INSERT INTO `sys_objects_form` (`object`, `module`, `title`, `action`, `form_attrs`, `submit_name`, `table`, `key`, `uri`, `uri_title`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES
+('bx_accounts_account', @sName, '_sys_form_account', '', '', 'do_submit', 'sys_accounts', 'id', '', '', 'a:1:{s:14:"checker_helper";s:31:"BxAccntFormAccountCheckerHelper";}', 0, 1, 'BxAccntFormAccount', 'modules/boonex/accounts/classes/BxAccntFormAccount.php');
+
+INSERT INTO `sys_form_displays` (`display_name`, `module`, `object`, `title`, `view_mode`) VALUES
+('bx_accounts_account_settings_email', @sName, 'bx_accounts_account', '_sys_form_display_account_settings_email', 0);
+
+INSERT INTO `sys_form_inputs` (`object`, `module`, `name`, `value`, `values`, `checked`, `type`, `caption_system`, `caption`, `info`, `required`, `collapsed`, `html`, `attrs`, `attrs_tr`, `attrs_wrapper`, `checker_func`, `checker_params`, `checker_error`, `db_pass`, `db_params`, `editable`, `deletable`) VALUES
+('bx_accounts_account', @sName, 'email', '', '', 0, 'text', '_sys_form_login_input_caption_system_email', '_sys_form_account_input_email', '', 1, 0, 0, '', '', '', 'Email', '', '_sys_form_account_input_email_error', 'Xss', '', 0, 0),
+('bx_accounts_account', @sName, 'receive_updates', '1', '', 1, 'switcher', '_sys_form_login_input_caption_system_receive_updates', '_sys_form_account_input_receive_updates', '', 0, 0, 0, '', '', '', '', '', '', 'Int', '', 0, 0),
+('bx_accounts_account', @sName, 'receive_news', '1', '', 1, 'switcher', '_sys_form_login_input_caption_system_receive_news', '_sys_form_account_input_receive_news', '', 0, 0, 0, '', '', '', '', '', '', 'Int', '', 0, 0),
+('bx_accounts_account', @sName, 'do_submit', '_sys_form_account_input_submit', '', 0, 'submit', '_sys_form_login_input_caption_system_do_submit', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 0, 0);
+
+INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES
+('bx_accounts_account_settings_email', 'email', 2147483647, 1, 1),
+('bx_accounts_account_settings_email', 'receive_updates', 2147483647, 1, 2),
+('bx_accounts_account_settings_email', 'receive_news', 2147483647, 1, 3),
+('bx_accounts_account_settings_email', 'do_submit', 2147483647, 1, 4);
+
+
 -- STUDIO PAGE & WIDGET
 INSERT INTO `sys_std_pages`(`index`, `name`, `header`, `caption`, `icon`) VALUES
 (3, @sName, '_bx_accnt', '_bx_accnt', 'bx_accounts@modules/boonex/accounts/|std-icon.svg');

+ 8 - 0
modules/boonex/accounts/install/sql/uninstall.sql

@@ -1,5 +1,13 @@
 SET @sName = 'bx_accounts';
 
+
+-- FORMS
+DELETE FROM `sys_form_display_inputs` WHERE `display_name` IN  (SELECT `display_name` FROM `sys_form_displays` WHERE `module` = @sName);
+DELETE FROM `sys_form_inputs` WHERE `module` = @sName;
+DELETE FROM `sys_form_displays` WHERE `module` = @sName;
+DELETE FROM `sys_objects_form` WHERE `module` = @sName;
+
+
 -- STUDIO PAGE & WIDGET
 DELETE FROM `tp`, `tw`, `tpw`
 USING `sys_std_pages` AS `tp`, `sys_std_widgets` AS `tw`, `sys_std_pages_widgets` AS `tpw`

+ 26 - 0
modules/boonex/accounts/js/main.js

@@ -0,0 +1,26 @@
+function BxAccntMain(oOptions) {
+	this._sActionsUri = oOptions.sActionUri;
+    this._sActionsUrl = oOptions.sActionUrl;
+    this._sObjName = oOptions.sObjName == undefined ? 'oAccntMain' : oOptions.sObjName;
+    this._aHtmlIds = oOptions.aHtmlIds == undefined ? {} : oOptions.aHtmlIds;
+    this._oRequestParams = oOptions.oRequestParams == undefined ? {} : oOptions.oRequestParams;
+}
+
+BxAccntMain.prototype.copyToClipboard = function(oElement) {
+    var $this = this;
+
+    oClipboard = new Clipboard('#' + this._aHtmlIds['password_button'], {
+	    target: function(oTrigger) {
+	        return $('#' + $this._aHtmlIds['password_text']).get(0);
+	    }
+	});
+	oClipboard.on('success', function(oObject) {
+		$this.hidePopup();
+	});
+};
+
+BxAccntMain.prototype.hidePopup = function() {
+	$('.bx-popup-applied:visible').dolPopupHide({onHide: function() {
+		$(this).remove();
+	}});	
+};

+ 16 - 0
modules/boonex/accounts/js/manage_tools.js

@@ -42,6 +42,14 @@ BxAccntManageTools.prototype.onClickSettings = function(sMenuObject, oButton) {
 	});
 };
 
+BxAccntManageTools.prototype.onClickEditEmail = function(iContentId, oLink) {
+	$('.bx-popup-applied:visible').dolPopupHide();
+
+	var oGrid = glGrids[this._sObjNameGrid];
+	var oData = oGrid._checkAppend(oLink, oGrid._getActionDataForReload());
+	oGrid.actionWithId(iContentId, 'edit_email', oData, '', false, 0);
+};
+
 BxAccntManageTools.prototype.onClickResendCemail = function(iContentId, oLink) {
 	$('.bx-popup-applied:visible').dolPopupHide();
 
@@ -50,6 +58,14 @@ BxAccntManageTools.prototype.onClickResendCemail = function(iContentId, oLink) {
 	oGrid.actionWithId(iContentId, 'resend_cemail', oData, '', false, 0);
 };
 
+BxAccntManageTools.prototype.onClickResetPassword = function(iContentId, oLink) {
+	$('.bx-popup-applied:visible').dolPopupHide();
+
+	var oGrid = glGrids[this._sObjNameGrid];
+	var oData = oGrid._checkAppend(oLink, oGrid._getActionDataForReload());
+	oGrid.actionWithId(iContentId, 'reset_password', oData, '', false, 0);
+};
+
 BxAccntManageTools.prototype.onClickDelete = function(iContentId, oLink) {
 	$('.bx-popup-applied:visible').dolPopupHide();
 

+ 4 - 0
modules/boonex/accounts/template/css/main.css

@@ -0,0 +1,4 @@
+.bx-accnt-reset-password .bx-btn {
+	display: inline-block;
+	float: none;
+}

+ 19 - 0
modules/boonex/accounts/template/edit_email.html

@@ -0,0 +1,19 @@
+<div class="bx-accnt-edit-email bx-def-color-bg-block">
+    <div class="bx-accnt-edit-email-cnt">
+        __form__
+        <script type="text/javascript">
+            $(document).ready(function () {
+                $("#__form_id__").ajaxForm({ 
+                    dataType: "json",
+                    beforeSubmit: function (formData, jqForm, options) {
+                        bx_loading($("#__form_id__"), true);
+                    },
+                    success: function (data) {
+                        $(".bx-popup-applied:visible").dolPopupHide();
+                        glGrids.__object__.processJson(data, '__action__');
+                    }
+                });
+            });
+        </script>
+    </div>
+</div>

+ 10 - 0
modules/boonex/accounts/template/reset_password.html

@@ -0,0 +1,10 @@
+<div class="bx-accnt-reset-password bx-def-color-bg-block">
+    <div class="bx-accnt-reset-password-cnt bx-def-font-align-center">
+        <p>
+            <h2 id="__html_id_text__">__password__</h2>
+        </p>
+        <p>
+            <a class="bx-btn bx-def-margin-right" id="__html_id_button__" href="javascript:void(0)" onclick="javascript:__js_object__.copyToClipboard(this);"><bx_text:_bx_accnt_txt_copy_to_clipboard /></a>
+        </p>
+    </div>
+</div>

+ 13 - 3
modules/boonex/russian/data/langs/bx_accounts/ru.xml

@@ -2,6 +2,9 @@
 <resources name="ru" flag="ru" title="Russian">
 	<string name="_bx_accnt"><![CDATA[Аккаунты]]></string>
 
+    <string name="_bx_accounts_form_display_account_settings_email_popup"><![CDATA[Изменить имейл]]></string>
+    <string name="_bx_accounts_form_display_account_settings_password_popup"><![CDATA[Сбросить пароль]]></string>
+
 	<string name="_bx_accnt_page_title_sys_manage_administration"><![CDATA[Управление всеми аккаунтами]]></string>
 	<string name="_bx_accnt_page_title_manage"><![CDATA[Управление аккаунтами]]></string>
 	<string name="_bx_accnt_page_title_browse"><![CDATA[Аккаунты]]></string>
@@ -11,8 +14,12 @@
 
 	<string name="_bx_accnt_menu_set_title_manage_tools"><![CDATA[Управление меню инструментов]]></string>
     <string name="_bx_accnt_menu_title_manage_tools"><![CDATA[Управление меню инструментов]]></string>
-    <string name="_bx_accnt_menu_item_title_system_resend_cemail"><![CDATA[Подтвердить имейл]]></string>
-    <string name="_bx_accnt_menu_item_title_resend_cemail"><![CDATA[Подтвердить имейл]]></string>
+    <string name="_bx_accnt_menu_item_title_system_edit_email"><![CDATA[Изменить имейл]]></string>
+    <string name="_bx_accnt_menu_item_title_edit_email"><![CDATA[Изменить имейл]]></string>
+    <string name="_bx_accnt_menu_item_title_system_resend_cemail"><![CDATA[Переслать подтверждение]]></string>
+    <string name="_bx_accnt_menu_item_title_resend_cemail"><![CDATA[Переслать подтверждение]]></string>
+    <string name="_bx_accnt_menu_item_title_system_reset_password"><![CDATA[Сбросить пароль]]></string>
+    <string name="_bx_accnt_menu_item_title_reset_password"><![CDATA[Сбросить пароль]]></string>
     <string name="_bx_accnt_menu_item_title_system_delete"><![CDATA[Удалить]]></string>
     <string name="_bx_accnt_menu_item_title_delete"><![CDATA[Удалить]]></string>
     <string name="_bx_accnt_menu_item_title_system_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
@@ -35,7 +42,9 @@
     <string name="_bx_accnt_grid_column_title_adm_logged"><![CDATA[Последнее посещение]]></string>
     <string name="_bx_accnt_grid_action_title_adm_activate"><![CDATA[Активировать]]></string>
 	<string name="_bx_accnt_grid_action_title_adm_suspend"><![CDATA[Заблокировать]]></string>
-    <string name="_bx_accnt_grid_action_title_adm_resend_cemail"><![CDATA[Подтвердить имейл]]></string>
+	<string name="_bx_accnt_grid_action_title_adm_edit_email"><![CDATA[Изменить имейл]]></string>
+    <string name="_bx_accnt_grid_action_title_adm_resend_cemail"><![CDATA[Переслать подтверждение]]></string>
+    <string name="_bx_accnt_grid_action_title_adm_reset_password"><![CDATA[Сбросить пароль]]></string>
     <string name="_bx_accnt_grid_action_title_adm_delete"><![CDATA[Удалить]]></string>
     <string name="_bx_accnt_grid_action_title_adm_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
     <string name="_bx_accnt_grid_action_title_adm_more_actions"><![CDATA[Дополнительно]]></string>
@@ -44,4 +53,5 @@
 
 	<string name="_bx_accnt_txt_more"><![CDATA[{0} ещё]]></string>
 	<string name="_bx_accnt_txt_see_more"><![CDATA[Ещё]]></string>
+	<string name="_bx_accnt_txt_copy_to_clipboard"><![CDATA[Скопировать]]></string>
 </resources>