diff options
author | Tristan Darricau <tristan.darricau@gmail.com> | 2018-07-08 17:57:56 +0200 |
---|---|---|
committer | Tristan Darricau <tristan.darricau@gmail.com> | 2018-07-08 17:57:56 +0200 |
commit | 0e842e1d63a5dff8b75f3d66904cc08d56ee8d80 (patch) | |
tree | ac38218242aa45ae03a73fe705eb3f1807989747 /phpBB/adm | |
parent | Merge branch '3.2.x' (diff) | |
parent | [ticket/15664] Add support for multi step processes (diff) | |
download | phpbb-0e842e1d63a5dff8b75f3d66904cc08d56ee8d80.tar.gz phpbb-0e842e1d63a5dff8b75f3d66904cc08d56ee8d80.tar.bz2 phpbb-0e842e1d63a5dff8b75f3d66904cc08d56ee8d80.zip |
Merge pull request #5223 from senky/ticket/15664
[ticket/15664] Manage extensions with ajax
* github.com:/phpbb/phpbb:
[ticket/15664] Add support for multi step processes
[ticket/15664] Ajaxify ext actions in ACP
Diffstat (limited to 'phpBB/adm')
-rw-r--r-- | phpBB/adm/style/acp_ext_actions.html | 6 | ||||
-rw-r--r-- | phpBB/adm/style/acp_ext_delete_data.html | 40 | ||||
-rw-r--r-- | phpBB/adm/style/acp_ext_disable.html | 34 | ||||
-rw-r--r-- | phpBB/adm/style/acp_ext_enable.html | 40 | ||||
-rw-r--r-- | phpBB/adm/style/acp_ext_list.html | 19 | ||||
-rw-r--r-- | phpBB/adm/style/admin.js | 58 | ||||
-rw-r--r-- | phpBB/adm/style/ajax.js | 28 |
7 files changed, 97 insertions, 128 deletions
diff --git a/phpBB/adm/style/acp_ext_actions.html b/phpBB/adm/style/acp_ext_actions.html new file mode 100644 index 0000000000..6f2341f381 --- /dev/null +++ b/phpBB/adm/style/acp_ext_actions.html @@ -0,0 +1,6 @@ +{% for action in enabled.actions %} +<a href="{{ action.U_ACTION }}"{% if action.L_ACTION_EXPLAIN %} title="{{ action.L_ACTION_EXPLAIN }}"{% endif %}{% if action.COLOR %} style="color: {{ action.COLOR }};"{% endif %} data-ajax="{{ action.ACTION_AJAX }}" data-refresh="true">{{ action.L_ACTION }}</a>{% if not action.S_LAST_ROW %} | {% endif %} +{% endfor %} +{% for action in disabled.actions %} +<a href="{{ action.U_ACTION }}"{% if action.L_ACTION_EXPLAIN %} title="{{ action.L_ACTION_EXPLAIN }}"{% endif %}{% if action.COLOR %} style="color: {{ action.COLOR }};"{% endif %} data-ajax="{{ action.ACTION_AJAX }}" data-refresh="true">{{ action.L_ACTION }}</a>{% if not action.S_LAST_ROW %} | {% endif %} +{% endfor %}
\ No newline at end of file diff --git a/phpBB/adm/style/acp_ext_delete_data.html b/phpBB/adm/style/acp_ext_delete_data.html deleted file mode 100644 index 0f3adb7cfe..0000000000 --- a/phpBB/adm/style/acp_ext_delete_data.html +++ /dev/null @@ -1,40 +0,0 @@ -<!-- INCLUDE overall_header.html --> - - <a id="maincontent"></a> - - <h1>{L_EXTENSIONS_ADMIN}</h1> - - <p>{L_EXTENSIONS_EXPLAIN}</p> - <p>{L_EXTENSION_DELETE_DATA_EXPLAIN}</p> - - <!-- IF MIGRATOR_ERROR --> - <div class="errorbox"> - <p><strong>{L_MIGRATION_EXCEPTION_ERROR}</strong></p> - <p>{MIGRATOR_ERROR}</p> - <p><a href="{U_RETURN}">{L_RETURN_TO_EXTENSION_LIST}</a></p> - </div> - <!-- ELSEIF PRE --> - <div class="errorbox"> - <p>{L_CONFIRM_MESSAGE}</p> - </div> - - <form id="acp_extensions" method="post" action="{U_PURGE}"> - <fieldset class="submit-buttons"> - <legend>{L_EXTENSION_DELETE_DATA}</legend> - <input class="button1" type="submit" name="delete_data" value="{L_EXTENSION_DELETE_DATA}" /> - <input class="button2" type="submit" name="cancel" value="{L_CANCEL}" /> - </fieldset> - </form> - <!-- ELSEIF S_NEXT_STEP --> - <div class="errorbox"> - <p>{L_EXTENSION_DELETE_DATA_IN_PROGRESS}</p> - </div> - <!-- ELSE --> - <div class="successbox"> - <p>{L_EXTENSION_DELETE_DATA_SUCCESS}</p> - <br /> - <p><a href="{U_RETURN}">{L_RETURN_TO_EXTENSION_LIST}</a></p> - </div> - <!-- ENDIF --> - -<!-- INCLUDE overall_footer.html --> diff --git a/phpBB/adm/style/acp_ext_disable.html b/phpBB/adm/style/acp_ext_disable.html deleted file mode 100644 index d2b5c46fe8..0000000000 --- a/phpBB/adm/style/acp_ext_disable.html +++ /dev/null @@ -1,34 +0,0 @@ -<!-- INCLUDE overall_header.html --> - - <a id="maincontent"></a> - - <h1>{L_EXTENSIONS_ADMIN}</h1> - - <p>{L_EXTENSIONS_EXPLAIN}</p> - <p>{L_EXTENSION_DISABLE_EXPLAIN}</p> - - <!-- IF PRE --> - <fieldset> - <h2>{L_CONFIRM}</h2> - <p>{L_CONFIRM_MESSAGE}</p> - </fieldset> - - <form id="acp_extensions" method="post" action="{U_DISABLE}"> - <fieldset class="submit-buttons"> - <input class="button1" type="submit" name="disable" value="{L_EXTENSION_DISABLE}" /> - <input class="button2" type="submit" name="cancel" value="{L_CANCEL}" /> - </fieldset> - </form> - <!-- ELSEIF S_NEXT_STEP --> - <div class="successbox notice"> - <p>{L_EXTENSION_DISABLE_IN_PROGRESS}</p> - </div> - <!-- ELSE --> - <div class="successbox"> - <p>{L_EXTENSION_DISABLE_SUCCESS}</p> - <br /> - <p><a href="{U_RETURN}">{L_RETURN_TO_EXTENSION_LIST}</a></p> - </div> - <!-- ENDIF --> - -<!-- INCLUDE overall_footer.html --> diff --git a/phpBB/adm/style/acp_ext_enable.html b/phpBB/adm/style/acp_ext_enable.html deleted file mode 100644 index 8a4a35359e..0000000000 --- a/phpBB/adm/style/acp_ext_enable.html +++ /dev/null @@ -1,40 +0,0 @@ -<!-- INCLUDE overall_header.html --> - - <a id="maincontent"></a> - - <h1>{L_EXTENSIONS_ADMIN}</h1> - - <p>{L_EXTENSIONS_EXPLAIN}</p> - <p>{L_EXTENSION_ENABLE_EXPLAIN}</p> - - <!-- IF MIGRATOR_ERROR --> - <div class="errorbox"> - <p><strong>{L_MIGRATION_EXCEPTION_ERROR}</strong></p> - <p>{MIGRATOR_ERROR}</p> - <p><a href="{U_RETURN}">{L_RETURN_TO_EXTENSION_LIST}</a></p> - </div> - <!-- ELSEIF PRE --> - <fieldset> - <h2>{L_CONFIRM}</h2> - <p>{L_CONFIRM_MESSAGE}</p> - </fieldset> - - <form id="acp_extensions" method="post" action="{U_ENABLE}"> - <fieldset class="submit-buttons"> - <input class="button1" type="submit" name="enable" value="{L_EXTENSION_ENABLE}" /> - <input class="button2" type="submit" name="cancel" value="{L_CANCEL}" /> - </fieldset> - </form> - <!-- ELSEIF S_NEXT_STEP --> - <div class="successbox notice"> - <p>{L_EXTENSION_ENABLE_IN_PROGRESS}</p> - </div> - <!-- ELSE --> - <div class="successbox"> - <p>{L_EXTENSION_ENABLE_SUCCESS}</p> - <br /> - <p><a href="{U_RETURN}">{L_RETURN_TO_EXTENSION_LIST}</a></p> - </div> - <!-- ENDIF --> - -<!-- INCLUDE overall_footer.html --> diff --git a/phpBB/adm/style/acp_ext_list.html b/phpBB/adm/style/acp_ext_list.html index 5375342a5e..30caed313f 100644 --- a/phpBB/adm/style/acp_ext_list.html +++ b/phpBB/adm/style/acp_ext_list.html @@ -42,8 +42,8 @@ </tr> </thead> <tbody> - <!-- IF .enabled --> - <tr> + + <tr id="ext_enabled_header"<!-- IF not .enabled --> class="hidden"<!-- ENDIF -->> <td class="row3" colspan="4"><strong>{L_EXTENSIONS_ENABLED}</strong><!-- EVENT acp_ext_list_enabled_title_after --></td> </tr> <!-- BEGIN enabled --> @@ -59,17 +59,12 @@ </td> <td style="text-align: center;"><a href="{enabled.U_DETAILS}">{L_DETAILS}</a></td> <td style="text-align: center;"> - <!-- BEGIN actions --> - <a href="{enabled.actions.U_ACTION}"<!-- IF enabled.actions.L_ACTION_EXPLAIN --> title="{enabled.actions.L_ACTION_EXPLAIN}"<!-- ENDIF --><!-- IF enabled.actions.COLOR --> style="color: {enabled.actions.COLOR};"<!-- ENDIF -->>{enabled.actions.L_ACTION}</a> - <!-- IF not enabled.actions.S_LAST_ROW --> | <!-- ENDIF --> - <!-- END actions --> + <!-- INCLUDE acp_ext_actions.html --> </td> </tr> <!-- END enabled --> - <!-- ENDIF --> - <!-- IF .disabled --> - <tr> + <tr id="ext_disabled_header"<!-- IF not .disabled --> class="hidden"<!-- ENDIF -->> <td class="row3" colspan="4"><strong>{L_EXTENSIONS_DISABLED}</strong><!-- EVENT acp_ext_list_disabled_title_after --></td> </tr> <!-- BEGIN disabled --> @@ -87,14 +82,10 @@ <!-- IF disabled.U_DETAILS --><a href="{disabled.U_DETAILS}">{L_DETAILS}</a><!-- ENDIF --> </td> <td style="text-align: center;"> - <!-- BEGIN actions --> - <a href="{disabled.actions.U_ACTION}"<!-- IF disabled.actions.L_ACTION_EXPLAIN --> title="{disabled.actions.L_ACTION_EXPLAIN}"<!-- ENDIF --><!-- IF disabled.actions.COLOR --> style="color: {disabled.actions.COLOR};"<!-- ENDIF -->>{disabled.actions.L_ACTION}</a> - <!-- IF not disabled.actions.S_LAST_ROW --> | <!-- ENDIF --> - <!-- END actions --> + <!-- INCLUDE acp_ext_actions.html --> </td> </tr> <!-- END disabled --> - <!-- ENDIF --> </tbody> </table> diff --git a/phpBB/adm/style/admin.js b/phpBB/adm/style/admin.js index 551c78a4a3..5fdd07356c 100644 --- a/phpBB/adm/style/admin.js +++ b/phpBB/adm/style/admin.js @@ -229,6 +229,64 @@ function parse_document(container) } /** + * Extension actions helper functions + */ +function move_to_enabled(element) +{ + var disabled_header = document.querySelector('#ext_disabled_header'); + disabled_header.parentNode.insertBefore(element, disabled_header); + element.classList.remove('ext_disabled'); + element.classList.add('ext_enabled'); +} +function move_to_disabled(element) +{ + var table_body = document.querySelector('#ext_disabled_header').parentNode; + table_body.appendChild(element); + element.classList.remove('ext_enabled'); + element.classList.add('ext_disabled'); +} +function set_actions(container, actions) { + container.innerHTML = ''; + for (var i = 0; i < actions.length; i++) { + var a = document.createElement('a'); + a.href = actions[i].U_ACTION.split('&').join('&'); // replace all occurances + a.title = actions[i].L_ACTION_EXPLAIN; + if (actions[i].COLOR) { + a.style = actions[i].COLOR; + } + a.innerHTML = actions[i].L_ACTION; + // ajaxify this action as well + phpbb.ajaxify({ + selector: a, + refresh: true, + callback: actions[i].ACTION_AJAX + }); + + container.appendChild(a); + + if (i < actions.length - 1) { + container.innerHTML += ' | '; + } + } +} +function show_enabled_header() { + document.querySelector('#ext_enabled_header').classList.remove('hidden'); +} +function show_disabled_header() { + document.querySelector('#ext_disabled_header').classList.remove('hidden'); +} +function hide_disabled_header_if_empty() { + if (!document.querySelector('.ext_disabled')) { + document.querySelector('#ext_disabled_header').classList.add('hidden'); + } +} +function hide_enabled_header_if_empty() { + if (!document.querySelector('.ext_enabled')) { + document.querySelector('#ext_enabled_header').classList.add('hidden'); + } +} + +/** * Run onload functions */ (function($) { diff --git a/phpBB/adm/style/ajax.js b/phpBB/adm/style/ajax.js index 895bb056e5..644e74bef7 100644 --- a/phpBB/adm/style/ajax.js +++ b/phpBB/adm/style/ajax.js @@ -158,6 +158,34 @@ phpbb.addAjaxCallback('row_delete', function(res) { }); /** + * Callbacks for extension actions + */ +phpbb.addAjaxCallback('ext_enable', function(res) { + if (res.EXT_ENABLE_SUCCESS) { + move_to_enabled(this.parentNode.parentNode); + set_actions(this.parentNode, res.ACTIONS); + show_enabled_header(); + hide_disabled_header_if_empty(); + } +}); +phpbb.addAjaxCallback('ext_delete_data', function(res) { + if (res.EXT_DELETE_DATA_SUCCESS) { + move_to_disabled(this.parentNode.parentNode); + set_actions(this.parentNode, res.ACTIONS); + show_disabled_header(); + hide_enabled_header_if_empty(); + } +}); +phpbb.addAjaxCallback('ext_disable', function(res) { + if (res.EXT_DISABLE_SUCCESS) { + move_to_disabled(this.parentNode.parentNode); + set_actions(this.parentNode, res.ACTIONS); + show_disabled_header(); + hide_enabled_header_if_empty(); + } +}); + +/** * Handler for submitting permissions form in chunks * This call will submit permissions forms in chunks of 5 fieldsets. */ |