Skip to content

Commit

Permalink
Fixed issue #16132: ext.SettingsWidget.SettingsWidget add uneeded, br…
Browse files Browse the repository at this point in the history
…oken and anasked buttons

Dev: use buttons
Dev: add some option in button to get label from metadata (more clear)
  • Loading branch information
Shnoulle committed Apr 13, 2020
1 parent 71a953e commit e636c51
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 16 deletions.
26 changes: 25 additions & 1 deletion application/controllers/admin/PluginManagerController.php
Expand Up @@ -262,7 +262,30 @@ public function configure($id)

// Prepare settings to be send to the view.
$aSettings = $oPluginObject->getPluginSettings();

// Add button if permission
$aButtons = array();
if (Permission::model()->hasGlobalPermission('settings', 'update')) {
$url = App()->createUrl("admin/pluginmanager/sa/index");
$aButtons = array(
'save' => array(
'label' => '<span class="fa fa-floppy-o" aria-hidden="true"</span> '.gT('Save'),
'class' => array('btn-success'),
'type' => 'submit'
),
'redirect' => array(
'label' => '<span class="fa fa-floppy-o" aria-hidden="true"</span> '.gT('Save and close'),
'class' => array('btn-default'),
'type' => 'submit',
'value' => $url,
),
'cancel' => array(
'label' => gT('Close'),
'class' => array('btn-danger'),
'type' => 'link',
'href' => $url,
),
);
}
// Send to view plugin porperties: name and description
$aPluginProp = App()->getPluginManager()->getPluginInfo($plugin->name);

Expand All @@ -275,6 +298,7 @@ public function configure($id)
'configure',
[
'settings' => $aSettings,
'buttons' => $aButtons,
'plugin' => $plugin,
'pluginObject' => $oPluginObject,
'properties' => $aPluginProp,
Expand Down
26 changes: 12 additions & 14 deletions application/extensions/SettingsWidget/SettingsWidget.php
Expand Up @@ -108,16 +108,24 @@ protected function renderButton($label, $metaData)
$htmlOptions = $this->htmlOptions($metaData);

if (isset($metaData['type']) && $metaData['type'] == 'link') {
if(!empty($metaData['label'])) {
$label = $metaData['label'];
unset($metaData['label']);
}
// This allow cancel without js
return CHtml::link($label, $metaData['href'], $htmlOptions);
} elseif (isset($metaData['type'])) {
$htmlOptions['type']=$metaData['type'];
if (!empty($metaData['name']) && is_string($metaData['name'])) {
$htmlOptions['name']=$metaData['name'];
}
return CHtml::htmlButton($label, $htmlOptions);
} elseif (isset($htmlOptions['type'])) {
// Allow type button or cancel in pluginSettings>settings>button
if(!empty($metaData['label'])) {
if(empty($metaData['name'])) {
$htmlOptions['name'] = $label;
}
$label = $metaData['label'];
unset($metaData['label']);
}
return CHtml::htmlButton($label, $htmlOptions);
} else {
return CHtml::submitButton($label, $htmlOptions);
Expand Down Expand Up @@ -218,7 +226,6 @@ protected function renderSettings()
public function run()
{
parent::run();

// Render settings
$this->renderSettings();
// Render buttons
Expand All @@ -235,16 +242,7 @@ public function run()
*/
protected function renderAdditionalHtml()
{
$url = App()->createUrl("admin/pluginmanager/sa/index");
echo "<div class='form-group'>";
echo "<div class='col-sm-6 col-md-offset-4'>";
if (Permission::model()->hasGlobalPermission('settings', 'update')) {
echo "<button name='save' class='btn btn-success' type='submit'><span class='fa fa-floppy-o'></span>&nbsp;".gT('Save')."</button>&nbsp;";
echo "<button name='redirect' value='" . $url . "' class='btn btn-default' type='submit'><span class='fa fa-saved'></span>&nbsp;".gT('Save and close')."</button>&nbsp;";
}
echo "<a class='btn btn-danger' href='" . $url . "'>".gT('Close')."</a>";
echo "</div>";
echo "</div>";
echo $this->additionalHtml;
}

/**
Expand Down
3 changes: 2 additions & 1 deletion application/views/admin/pluginmanager/configure.php
Expand Up @@ -44,7 +44,8 @@
],
'labelWidth' =>4,
'controlWidth' =>6,
'method' => 'post'
'method' => 'post',
'buttons' => $buttons,
]
);
?>
Expand Down

0 comments on commit e636c51

Please sign in to comment.