1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-04 13:47:31 +02:00

"Find Plugins" browser upgraded to use grid template.

This commit is contained in:
Cameron
2021-01-23 14:21:55 -08:00
parent 17a9aa2822
commit b457c8168e
2 changed files with 357 additions and 127 deletions

View File

@@ -96,7 +96,7 @@ class plugman_adminArea extends e_admin_dispatcher
'installed/list' => array('caption'=> EPL_ADLAN_22, 'perm' => 'Z'), 'installed/list' => array('caption'=> EPL_ADLAN_22, 'perm' => 'Z'),
'avail/list' => array('caption'=> EPL_ADLAN_23, 'perm' => 'Z'), 'avail/list' => array('caption'=> EPL_ADLAN_23, 'perm' => 'Z'),
'online/list' => array('caption'=> EPL_ADLAN_220, 'perm' => 'Z'), 'online/grid' => array('caption'=> EPL_ADLAN_220, 'perm' => 'Z'),
'avail/upload' => array('caption'=>EPL_ADLAN_38, 'perm' => '0'), 'avail/upload' => array('caption'=>EPL_ADLAN_38, 'perm' => '0'),
'create/build' => array('caption'=>EPL_ADLAN_114, 'perm' => '0'), 'create/build' => array('caption'=>EPL_ADLAN_114, 'perm' => '0'),
@@ -111,7 +111,8 @@ class plugman_adminArea extends e_admin_dispatcher
protected $adminMenuAliases = array( protected $adminMenuAliases = array(
'installed/uninstall' => 'installed/list', 'installed/uninstall' => 'installed/list',
'lans/list' => 'create/build' 'lans/list' => 'create/build',
'online/list' => 'online/grid',
); );
protected $adminMenuIcon = 'e-plugmanager-24'; protected $adminMenuIcon = 'e-plugmanager-24';
@@ -143,13 +144,14 @@ class plugman_adminArea extends e_admin_dispatcher
'plugin_icon' => array('title' => LAN_ICON, 'type' => 'icon', 'data' => false, "width" => "5%", 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',), 'plugin_icon' => array('title' => LAN_ICON, 'type' => 'icon', 'data' => false, "width" => "5%", 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',),
'plugin_name' => array('title' => LAN_TITLE, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',), 'plugin_name' => array('title' => LAN_TITLE, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',),
'plugin_version' => array('title' => LAN_VERSION, 'type' => 'text', 'data' => false, 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',), 'plugin_version' => array('title' => LAN_VERSION, 'type' => 'text', 'data' => false, 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',),
'plugin_description' => array('title' => LAN_DESCRIPTION, 'type' => 'textarea', 'data' => false, 'width' => 'auto', 'help' => '', 'readParms' => 'expand=1&truncate=180&bb=1', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',),
'plugin_date' => array('title' => LAN_RELEASED, 'type' => 'text', 'data' => false, "width" => "8%", 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',), 'plugin_date' => array('title' => LAN_RELEASED, 'type' => 'text', 'data' => false, "width" => "8%", 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',),
'plugin_category' => array('title' => LAN_CATEGORY, 'type' => 'dropdown', 'data' => 'str', 'width' => 'auto', 'batch' => true, 'filter' => true, 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => array(), 'class' => 'left', 'thclass' => 'left',), 'plugin_category' => array('title' => LAN_CATEGORY, 'type' => 'dropdown', 'data' => 'str', 'width' => 'auto', 'batch' => true, 'filter' => true, 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => array(), 'class' => 'left', 'thclass' => 'left',),
'plugin_author' => array('title' => LAN_AUTHOR, 'type' => 'text', 'data' => false, 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',), 'plugin_author' => array('title' => LAN_AUTHOR, 'type' => 'text', 'data' => false, 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',),
"plugin_license" => array("title" => "License", 'nolist'=>false,'data'=>false, "type"=>"text", "width" => "5%", "thclass" => "left"), "plugin_license" => array("title" => "License", 'nolist'=>false,'data'=>false, "type"=>"text", "width" => "5%", "thclass" => "left"),
'plugin_compatible' => array('title' => EPL_ADLAN_13, 'type' => 'method', 'data' => false, 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center',), 'plugin_compatible' => array('title' => EPL_ADLAN_13, 'type' => 'method', 'data' => false, 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center',),
'plugin_description' => array('title' => LAN_DESCRIPTION, 'type' => 'textarea', 'data' => false, 'width' => 'auto', 'help' => '', 'readParms' => 'expand=1&truncate=180&bb=1', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',),
'plugin_path' => array('title' => LAN_PATH, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',), 'plugin_path' => array('title' => LAN_PATH, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',),
'plugin_installflag' => array('title' => EPL_ADLAN_22, 'type' => 'boolean', 'data' => 'int', 'width' => 'auto', 'filter' => false, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center',), 'plugin_installflag' => array('title' => EPL_ADLAN_22, 'type' => 'boolean', 'data' => 'int', 'width' => 'auto', 'filter' => false, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center',),
@@ -1069,11 +1071,14 @@ class plugin_online_ui extends e_admin_ui
protected $pluginName = 'core'; protected $pluginName = 'core';
// protected $eventName = 'plugman-plugin'; // remove comment to enable event triggers in admin. // protected $eventName = 'plugman-plugin'; // remove comment to enable event triggers in admin.
protected $table = false; protected $table = false;
protected $pid = ''; protected $pid = 'plugin_id';
protected $perPage = 10; protected $perPage = 10;
protected $batchDelete = true; protected $batchDelete = true;
protected $batchExport = true; protected $batchExport = true;
protected $batchCopy = true; protected $batchCopy = true;
protected $grid = array();
// protected $sortField = 'somefield_order'; // protected $sortField = 'somefield_order';
// protected $orderStep = 10; // protected $orderStep = 10;
// protected $tabs = array('Tabl 1','Tab 2'); // Use 'tab'=>0 OR 'tab'=>1 in the $fields below to enable. // protected $tabs = array('Tabl 1','Tab 2'); // Use 'tab'=>0 OR 'tab'=>1 in the $fields below to enable.
@@ -1084,13 +1089,14 @@ class plugin_online_ui extends e_admin_ui
protected $fields = array (); protected $fields = array ();
protected $fieldpref = array('plugin_icon', 'plugin_name', 'plugin_version', 'plugin_license', 'plugin_description', 'plugin_compatible', 'plugin_date','plugin_author', 'plugin_category','plugin_installflag'); protected $fieldpref = array('plugin_icon', 'plugin_name', 'plugin_version', 'plugin_description', 'plugin_license', 'plugin_compatible', 'plugin_date','plugin_author', 'plugin_category','plugin_installflag');
// protected $preftabs = array('General', 'Other' ); // protected $preftabs = array('General', 'Other' );
protected $prefs = array( protected $prefs = array(
); );
/** @var e_marketplace */
protected $mp = null; protected $mp = null;
@@ -1098,9 +1104,11 @@ class plugin_online_ui extends e_admin_ui
{ {
$this->fields = plugman_adminArea::getPluginManagerFields(); $this->fields = plugman_adminArea::getPluginManagerFields();
unset($this->fields['checkboxes']);
$this->fields['plugin_category']['writeParms']['optArray'] = e107::getPlug()->getCategoryList(); // array('plugin_category_0','plugin_category_1', 'plugin_category_2'); // Example Drop-down array. $this->fields['plugin_category']['writeParms']['optArray'] = e107::getPlug()->getCategoryList(); // array('plugin_category_0','plugin_category_1', 'plugin_category_2'); // Example Drop-down array.
$this->fields["plugin_license"]['nolist'] = false; $this->fields["plugin_license"]['nolist'] = false;
$this->fields['plugin_category']['inline'] = false; $this->fields['plugin_category']['inline'] = false;
parent:: __construct($request, $response, $params); parent:: __construct($request, $response, $params);
} }
@@ -1204,11 +1212,78 @@ class plugin_online_ui extends e_admin_ui
public function ListObserver() public function ListObserver()
{ {
// parent::ListObserver(); $this->setupGridData();
$this->setPlugData();
parent::ListObserver();
}
public function ListAjaxObserver()
{
parent::ListAjaxObserver();
$this->setPlugData(); $this->setPlugData();
} }
public function GridAjaxObserver()
{
$this->setupGridData();
$this->setPlugData();
parent::GridAjaxObserver();
}
public function GridObserver()
{
$this->setupGridData();
$this->setPlugData();
parent::GridObserver();
}
private function setupGridData()
{
$this->fields['plugin_description']['readParms'] = 'expand=0&truncate=1800&bb=1';
$this->fields['plugin_license']['class'] = 'right';
$this->grid = array(
'price' => 'plugin_license',
'title' => 'plugin_name',
'image' => 'plugin_icon',
'date' => 'plugin_date',
'body' => 'plugin_description',
'version' => 'plugin_version',
'class' => 'col-md-6 col-lg-4',
'author' => 'plugin_author',
'perPage' => 6,
'carousel' => true
);
$this->grid['template'] = '
<div class="panel panel-primary" style="height:190px" >
<table class="table" style="height:180px;display:block" >
<tr>
<td style="width:25%">
<div class="text-center" style="height:90px;">{IMAGE}
</div>
</td>
<td><h4>{TITLE} <small> v{VERSION} {PRICE}</small></h4>
<div style="height:100px; overflow:hidden">{BODY}</div>
<div><small class="text-muted"><i class="fa fa-user"></i> {AUTHOR} <i>{DATE}</i></small> <span class="pull-right">&nbsp; {OPTIONS}</span></div>
</td></tr>
</table>
</div>';
$this->perPage = 180;
}
/** /**
@@ -1295,41 +1370,126 @@ class plugin_online_ui extends e_admin_ui
</div>"; </div>";
} }
private function setPlugData() private function truncateSentence($string, $limit = 120 )
{ {
if(strlen($string) <= $limit)
// $this->setTreeModel();
/* $tree = $this->getTreeModel();
$plg = e107::getPlug();
foreach ($tree->getTree() as $id => $model)
{ {
$path = $model->get('plugin_path'); $text = nl2br($string);
return $string;
}
$plg->load($path); $tmp = explode(".", $string);
$model->set('plugin_name',$plg->getName()); $chars = 0;
$model->set('plugin_date',$plg->getDate());
$model->set('plugin_author',$plg->getAuthor());
$model->set('plugin_compatible',$plg->getCompat());
$model->set('plugin_admin_url',$plg->getAdminUrl());
$model->set('plugin_description',$plg->getDescription());
$model->set('plugin_version_file',$plg->getVersion());
$model->set('plugin_install_required',$plg->getInstallRequired());
$model->set('plugin_icon',$plg->getIcon(32, 'path'));
}*/ $arr = array();
foreach($tmp as $line)
{
$line = str_replace("\n", '', trim($line));
$len = strlen($line);
if($chars >= $limit)
{
break;
}
$arr[] = $line;
$chars += $len;
}
$text = implode('. ', $arr).'.';
$text = nl2br($text);
return $text;
} }
public function listPage()
private function setPlugData()
{ {
$from = $this->getQuery('from', 0);
$srch = $this->getQuery('searchquery');
// $srch = preg_replace('/[^\w]/','', vartrue($_GET['srch']));
global $plugin, $e107SiteUsername, $e107SiteUserpass; $mp = $this->getMarketplace();
$cat = '';
if($filter = $this->getQuery('filter_options'))
{
list($bla, $cat) = explode("__",$filter);
}
// do the request, retrieve and parse data
$xdata = $mp->call('getList', array(
'type' => 'plugin',
'params' => array('limit' => $this->perPage, 'search' => $srch, 'from' => $from, 'cat'=>$cat)
));
$total = (int) $xdata['params']['count'];
// e107::getDebug()->log($xdata);
$tree = $this->getTreeModel();
$tree->setTotal($total);
$tp = e107::getParser();
foreach($xdata['data'] as $id => $row)
{
$v['id'] = $id;
$model = new e_model($v);
$tree->setNode($id, $model);
$badge = $this->compatibilityLabel($row['compatibility']);;
$featured = ($row['featured'] == 1) ? " <span class='label label-info'>" . EPL_ADLAN_91 . "</span>" : '';
$price = (!empty($row['price'])) ? "<span class='label label-primary'>" . $row['price'] . " " . $row['currency'] . "</span>" : "<span class='label label-success'>" . EPL_ADLAN_93 . "</span>";
$node = array(
'plugin_id' => $row['params']['id'],
'plugin_mode' => $row['params']['mode'],
'plugin_icon' => vartrue($row['icon'], e_IMAGE."logo_template.png"),
'plugin_name' => stripslashes($row['name']),
'plugin_description' => $this->truncateSentence(vartrue($row['description'])),
'plugin_featured' => $featured,
'plugin_sef' => '',
'plugin_folder' => $row['folder'],
'plugin_path' => $row['folder'],
'plugin_date' => $tp->toDate(strtotime($row['date']), 'relative'),
'plugin_category' => vartrue($row['category'], 'n/a'),
'plugin_author' => vartrue($row['author']),
'plugin_version' => $row['version'],
'plugin_compatible' => $row['compatibility'], // $badge,
'plugin_website' => vartrue($row['authorUrl']),
'plugin_url' => $row['urlView'],
'plugin_notes' => '',
'plugin_price' => $row['price'],
'plugin_license' => $price,
'plugin_installflag' => e107::isInstalled($row['folder']),
'options' => $row,
);
$model->setData($node);
}
}
public function listoldPage()
{
// e107SiteUsername
global $plugin;
$tp = e107::getParser(); $tp = e107::getParser();
$frm = $this->getUI(); $frm = $this->getUI();
@@ -1348,13 +1508,13 @@ class plugin_online_ui extends e_admin_ui
//TODO use admin_ui including filter capabilities by sending search queries back to the xml script. //TODO use admin_ui including filter capabilities by sending search queries back to the xml script.
$from = isset($_GET['frm']) ? intval($_GET['frm']) : 0; $from = isset($_GET['frm']) ? intval($_GET['frm']) : 0;
$srch = preg_replace('/[^\w]/','', vartrue($_GET['srch'])); $srch = preg_replace('/[^\w]/', '', vartrue($_GET['srch']));
$mp = $this->getMarketplace(); $mp = $this->getMarketplace();
// auth // auth
$mp->generateAuthKey($e107SiteUsername, $e107SiteUserpass); // $mp->generateAuthKey($e107SiteUsername, $e107SiteUserpass);
// do the request, retrieve and parse data // do the request, retrieve and parse data
$xdata = $mp->call('getList', array( $xdata = $mp->call('getList', array(
@@ -1391,13 +1551,13 @@ class plugin_online_ui extends e_admin_ui
// print_a($row); // print_a($row);
$badge = $this->compatibilityLabel($row['compatibility']);; $badge = $this->compatibilityLabel($row['compatibility']);;
$featured = ($row['featured']== 1) ? " <span class='label label-info'>".EPL_ADLAN_91."</span>" : ''; $featured = ($row['featured'] == 1) ? " <span class='label label-info'>" . EPL_ADLAN_91 . "</span>" : '';
$price = (!empty($row['price'])) ? "<span class='label label-primary'>".$row['price']." ".$row['currency']."</span>" : "<span class='label label-success'>".EPL_ADLAN_93."</span>"; $price = (!empty($row['price'])) ? "<span class='label label-primary'>" . $row['price'] . " " . $row['currency'] . "</span>" : "<span class='label label-success'>" . EPL_ADLAN_93 . "</span>";
$data[] = array( $data[] = array(
'plugin_id' => $row['params']['id'], 'plugin_id' => $row['params']['id'],
'plugin_mode' => $row['params']['mode'], 'plugin_mode' => $row['params']['mode'],
'plugin_icon' => vartrue($row['icon'],'e-plugins-32'), 'plugin_icon' => vartrue($row['icon'], 'e-plugins-32'),
'plugin_name' => stripslashes($row['name']), 'plugin_name' => stripslashes($row['name']),
'plugin_featured' => $featured, 'plugin_featured' => $featured,
'plugin_sef' => '', 'plugin_sef' => '',
@@ -1425,45 +1585,47 @@ class plugin_online_ui extends e_admin_ui
unset($fieldList['checkboxes']); unset($fieldList['checkboxes']);
$text = " $text = "
<form class='form-search form-inline' action='".e_SELF."?".e_QUERY."' id='core-plugin-list-form' method='get'> <form class='form-search form-inline' action='" . e_SELF . "?" . e_QUERY . "' id='core-plugin-list-form' method='get'>
<div id='admin-ui-list-filter' class='e-search '>".$frm->search('srch', $srch, 'go').$frm->hidden('mode','online')." <div id='admin-ui-list-filter' class='e-search '>" . $frm->search('srch', $srch, 'go') . $frm->hidden('mode', 'online') . "
</div> </div>
</form> </form>
<form action='".e_SELF."?".e_QUERY."' id='core-plugin-list-form' method='post'> <form action='" . e_SELF . "?" . e_QUERY . "' id='core-plugin-list-form' method='post'>
<fieldset class='e-filter' id='core-plugin-list'> <fieldset class='e-filter' id='core-plugin-list'>
<legend class='e-hideme'>".$caption."</legend> <legend class='e-hideme'>" . $caption . "</legend>
<table id=core-plugin-list' class='table adminlist table-striped'> <table id=core-plugin-list' class='table adminlist table-striped'>
".$frm->colGroup($fieldList,$this->fieldpref). " . $frm->colGroup($fieldList, $this->fieldpref) .
$frm->thead($fieldList,$this->fieldpref)." $frm->thead($fieldList, $this->fieldpref) . "
<tbody> <tbody>
"; ";
foreach($data as $key => $val)
foreach($data as $key=>$val )
{ {
// print_a($val); // print_a($val);
$text .= "<tr>"; $text .= "<tr>";
foreach($this->fields as $v=>$foo) foreach($this->fields as $v => $foo)
{ {
if(!in_array($v,$this->fieldpref) || $v == 'checkboxes' || $v === 'options') if(!in_array($v, $this->fieldpref) || $v == 'checkboxes' || $v === 'options')
{ {
continue; continue;
} }
$_value = $val[$v]; $_value = $val[$v];
if($v == 'plugin_name') $_value .= $val['plugin_featured']; if($v == 'plugin_name')
// echo '<br />v='.$v; {
$text .= "<td style='height: 40px' class='".vartrue($this->fields[$v]['class'],'left')."'>".$frm->renderValue($v, $_value, $this->fields[$v], $key)."</td>\n"; $_value .= $val['plugin_featured'];
} }
$text .= "<td class='center'>".$this->options($val)."</td>"; // echo '<br />v='.$v;
$text .= "<td style='height: 40px' class='" . vartrue($this->fields[$v]['class'], 'left') . "'>" . $frm->renderValue($v, $_value, $this->fields[$v], $key) . "</td>\n";
}
$text .= "<td class='center'>" . $this->options($val) . "</td>";
$text .= "</tr>"; $text .= "</tr>";
} }
@@ -1479,14 +1641,14 @@ class plugin_online_ui extends e_admin_ui
if($total > $this->perPage) if($total > $this->perPage)
{ {
$parms = $total.",".$this->perPage.",".$from.",".e_SELF.'?mode=online&amp;action=list&amp;frm=[FROM]'; $parms = $total . "," . $this->perPage . "," . $from . "," . e_SELF . '?mode=online&amp;action=list&amp;frm=[FROM]';
if(!empty($srch)) if(!empty($srch))
{ {
$parms .= '&amp;srch='.$srch; $parms .= '&amp;srch=' . $srch;
} }
$text .= "<div class='control-group form-inline input-inline' style='text-align:center;margin-top:10px'>".$tp->parseTemplate("{NEXTPREV=$parms}",TRUE)."</div>"; $text .= "<div class='control-group form-inline input-inline' style='text-align:center;margin-top:10px'>" . $tp->parseTemplate("{NEXTPREV=$parms}", true) . "</div>";
} }
return $text; return $text;
@@ -1627,9 +1789,76 @@ class plugin_form_online_ui extends e_admin_form_ui
} }
function options($data) function plugin_icon($curVal, $mode)
{ {
return null; return e107::getParser()->toIcon($curVal);
}
function options($bla, $data)
{
$action = $this->getController()->getAction();
if(e107::isInstalled($data['folder']))
{
if($action === 'grid')
{
return "<button class='btn btn-sm btn-default btn-secondary' disabled>".LAN_INSTALLED."</button>";
}
return '&nbsp; <span class="label label-default">'.LAN_INSTALLED."</span>";
return null;
}
$id = 'plug_'.$data['params']['id'];
$modalCaption = (!empty($data['price'])) ? EPL_ADLAN_92." ".$data['name']." ".$data['version'] : EPL_ADLAN_230." ".$data['name']." ".$data['version'];
$srcData = array(
'plugin_id' => $data['params']['id'],
'plugin_folder' => $data['folder'],
'plugin_price' => $data['price'],
'plugin_mode' => 'addon',
'plugin_url' => $data['url'],
);
$url = $this->getController()->getMarketplace()->getDownloadModal('plugin', $data);
$button = ADMIN_INSTALLPLUGIN_ICON;
$class = 'btn btn-sm btn-default btn-secondary';
$disable = '';
$title = EPL_ADLAN_237;
$tp = e107::getParser();
if($action === 'grid')
{
$button = e107::getParser()->toGlyph('fa-bolt').ADLAN_121; // Install
$class = 'btn btn-sm btn-primary';
$version = $tp->filter(e_VERSION,'version');
$compat = (float) $tp->filter($data['compatibility'], 'version');
if($compat == 2)
{
$compat = $version;
}
if(!e107::isCompatible($compat))
{
$button = e107::getParser()->toGlyph('fa-bolt').ADLAN_121;
$class = 'btn btn-sm btn-warning';
// $disable = 'data-confirm="This plugin may not be compatible with your version of e107. Are you sure?"';
$title = "Install: May not be compatible";
}
}
$dicon = '<a title="'.$title.'" '.$disable.' class="e-modal '.$class.'" href="'.$url.'" rel="external" data-loading="'.e_IMAGE.'/generic/loading_32.gif" data-cache="false" data-modal-caption="'.$modalCaption.'" target="_blank" >'.$button.'</a>';
// $dicon = "<a data-toggle='modal' data-modal-caption=\"Downloading ".$data['plugin_name']." ".$data['plugin_version']."\" href='{$url}' data-cache='false' data-target='#uiModal' title='".LAN_DOWNLOAD."' ><img class='top' src='".e_IMAGE_ABS."icons/download_32.png' alt='' /></a> ";
return $dicon;
} }
} }

View File

@@ -1593,7 +1593,8 @@ li.rssRow > div {
.admin-theme-cell-admin { background-color:#FFFFD5; border: 1px solid #FFCC00; } .admin-theme-cell-admin { background-color:#FFFFD5; border: 1px solid #FFCC00; }
#e-online table { margin-top:10px; margin-left:auto; margin-right:auto } #e-online table { margin-top:10px; margin-left:auto; margin-right:auto }
#core-plugin-list img.icon { width: 32px; height:32px } #admin-plugin-online-list .admin-main-content img.icon, #core-plugin-list img.icon { width: 32px; height:32px }
#admin-plugin-online-grid .admin-main-content img.icon { width: 128px; height: 128px }
.tab-content #coreFeed, .tab-content #coreFeed,
.tab-content #pluginFeed, .tab-content #pluginFeed,
.tab-content #themeFeed { padding-top:20px } .tab-content #themeFeed { padding-top:20px }