|
27 | 27 | $columnVisibility = \ZakharovAndrew\user\models\User::getColumnVisibility();
|
28 | 28 |
|
29 | 29 | $toggleUrl = Url::to(['/user/user/toggle-column-visibility']);
|
| 30 | +$pasteRolesUrl = Url::to(['/user/user/paste-roles']); |
30 | 31 | $language = \Yii::$app->language;
|
31 | 32 | $waitMessage = Module::t('Processing, please wait..');
|
32 | 33 | $rolesCopiedMessage = Module::t('Roles Copied');
|
| 34 | +$copyRolesdMessage = Module::t('Copy Roles'); |
33 | 35 |
|
34 | 36 | $script = <<< JS
|
35 | 37 | $('#submit-reset-password').on('click', function() {
|
@@ -104,29 +106,55 @@ function updateSelectedCount() {
|
104 | 106 |
|
105 | 107 |
|
106 | 108 | $(document).on('click', '.copy-roles', function(e) {
|
107 |
| - const userId = $(this).data('id'); |
108 |
| - console.log('Copy roles for user ID:', userId); |
| 109 | + localStorage.setItem('copyRolesUserId', $(this).data('id')); |
| 110 | + loadCopiedUserId(); |
109 | 111 |
|
110 |
| - localStorage.setItem('copyRolesUserId', userId); |
111 |
| - |
112 |
| - $(this).attr('disabled', true).text('$rolesCopiedMessage'); |
113 |
| - |
114 |
| - $('.paste-roles').show(); |
115 |
| - $(this).parent().find('.paste-roles').hide(); |
116 | 112 | e.preventDefault();
|
117 | 113 | });
|
118 |
| - |
119 |
| - let copiedUserId = localStorage.getItem('copyRolesUserId'); |
120 |
| - if (copiedUserId) { |
121 |
| - $('.paste-roles').show(); |
122 |
| - } |
| 114 | +
|
| 115 | + loadCopiedUserId(); |
123 | 116 |
|
124 | 117 | $(document).on('click', '.paste-roles', function() {
|
125 |
| - copiedUserId = localStorage.getItem('copyRolesUserId'); |
| 118 | + // check disabled |
| 119 | + let disabled = $(this).attr("disabled"); |
| 120 | + if (disabled === 'disabled') { |
| 121 | + return false; |
| 122 | + } |
| 123 | + // copying |
| 124 | + let copiedUserId = loadCopiedUserId(); |
| 125 | + let userId = $(this).data('id'); |
126 | 126 | if (copiedUserId) {
|
127 | 127 | console.log(copiedUserId);
|
| 128 | + $.ajax({ |
| 129 | + type: "POST", |
| 130 | + url: "$pasteRolesUrl", |
| 131 | + data: { |
| 132 | + from: copiedUserId, |
| 133 | + to: userId |
| 134 | + }, |
| 135 | + success: function(data) { |
| 136 | + window.location.reload(); |
| 137 | + } |
| 138 | + }); |
128 | 139 | }
|
129 | 140 | });
|
| 141 | + |
| 142 | + function loadCopiedUserId() { |
| 143 | + let copiedUserId = localStorage.getItem('copyRolesUserId'); |
| 144 | + |
| 145 | + console.log(copiedUserId); |
| 146 | + |
| 147 | + if (copiedUserId) { |
| 148 | + console.log(copiedUserId); |
| 149 | + $('.paste-roles').show(); |
| 150 | + $('.copy-roles').attr('disabled', false).text('$copyRolesdMessage'); |
| 151 | + $('.copy-roles-'+copiedUserId).attr('disabled', true).text('$rolesCopiedMessage'); |
| 152 | + $('.copy-roles-'+copiedUserId).parent().find('.paste-roles').hide(); |
| 153 | + } |
| 154 | + |
| 155 | + return copiedUserId; |
| 156 | + } |
| 157 | + |
130 | 158 |
|
131 | 159 |
|
132 | 160 | JS;
|
@@ -257,8 +285,15 @@ function updateSelectedCount() {
|
257 | 285 | background-color: #f06445;color:#fff;
|
258 | 286 | }
|
259 | 287 | .dropdown-menu-action .dropdown-menu {
|
260 |
| - right: 0; |
261 |
| - left: auto; |
| 288 | + right: 0 !important; |
| 289 | + left: auto !important; |
| 290 | +} |
| 291 | +.dropdown-menu-action .paste-roles { |
| 292 | + display:none; |
| 293 | +} |
| 294 | +.dropdown-menu-action a[disabled="disabled"] { |
| 295 | + pointer-events: none; |
| 296 | + color: #898989; |
262 | 297 | }
|
263 | 298 | </style>
|
264 | 299 | <div class="user-index">
|
@@ -413,22 +448,40 @@ function updateSelectedCount() {
|
413 | 448 | 'items' => [
|
414 | 449 | ['label' => Module::t('Profile'), 'url' => Url::toRoute(['profile', 'id' => $model->id])],
|
415 | 450 | ['label' => Module::t('Edit'), 'url' => Url::toRoute(['edit-profile', 'id' => $model->id])],
|
416 |
| - ['label' => Module::t('Delete'), 'url' => Url::toRoute(['delete', 'id' => $model->id])], |
| 451 | + [ |
| 452 | + 'label' => Module::t('Delete'), |
| 453 | + 'url' => Url::toRoute(['delete', 'id' => $model->id]), |
| 454 | + 'linkOptions' => [ |
| 455 | + 'data' => [ |
| 456 | + 'method' => 'post', |
| 457 | + 'confirm' => Module::t('Are you sure you want to delete this user?'), |
| 458 | + ], |
| 459 | + ], |
| 460 | + ], |
417 | 461 | '<div class="dropdown-divider divider"></div>',
|
418 | 462 | ['label' => Module::t('Appreciation'), 'url' => Url::toRoute(['/user/thanks/view', 'id' => $model->id])],
|
419 | 463 | ['label' => Module::t('Reset password'), 'url' => Url::toRoute(['admin-reset-password', 'id' => $model->id])],
|
420 | 464 | '<div class="dropdown-divider divider"></div>',
|
421 | 465 | // roles
|
422 |
| - ['label' => Module::t('Copy Roles'), 'url' => '#', 'options' => [ |
423 |
| - 'class' => 'copy-roles', |
424 |
| - 'data-id' => $model->id, |
425 |
| - ]], |
426 |
| - ['label' => Module::t('Paste Roles'), 'url' => '#', 'options' => [ |
427 |
| - 'class' => 'paste-roles', |
428 |
| - 'style' => 'display: none;' |
429 |
| - ]], |
| 466 | + [ |
| 467 | + 'label' => Module::t('Copy Roles'), |
| 468 | + 'url' => '#', |
| 469 | + 'linkOptions' => [ |
| 470 | + 'class' => 'copy-roles copy-roles-'.$model->id, |
| 471 | + 'data-id' => $model->id, |
| 472 | + ], |
| 473 | + ], |
| 474 | + [ |
| 475 | + 'label' => Module::t('Paste Roles'), |
| 476 | + 'url' => '#', |
| 477 | + 'linkOptions' => [ |
| 478 | + 'class' => 'paste-roles', |
| 479 | + 'data-id' => $model->id, |
| 480 | + ] |
| 481 | + ], |
430 | 482 | ],
|
431 | 483 | ],
|
| 484 | + |
432 | 485 | ]);
|
433 | 486 | },
|
434 | 487 | 'contentOptions' => ['class' => 'dropdown-menu-action'],
|
|
0 commit comments