From: Steve Sutton Date: Thu, 3 Oct 2019 20:56:20 +0000 (-0400) Subject: Working on the plugin management X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/?a=commitdiff_plain;h=85f5def3b26edc78760643cdd876c1a7491cd752;p=WP-Plugins%2Fglm-member-db-plugins.git Working on the plugin management import of plugins management tables. --- diff --git a/classes/data/dataPlugins.php b/classes/data/dataPlugins.php index df4ef24..0c7e746 100644 --- a/classes/data/dataPlugins.php +++ b/classes/data/dataPlugins.php @@ -142,6 +142,14 @@ class GlmDataPlugins extends GlmDataAbstract 'use' => 'a' ), + // Glm Associate Site + 'glm_associate' => array( + 'field' => 'glm_associate', + 'type' => 'checkbox', + 'required' => false, + 'use' => 'a' + ), + ); } diff --git a/classes/data/dataServers.php b/classes/data/dataServers.php index 7199327..6341cd1 100644 --- a/classes/data/dataServers.php +++ b/classes/data/dataServers.php @@ -118,6 +118,13 @@ class GlmDataServers extends GlmDataAbstract 'use' => 'a' ), + // Name + 'name' => array ( + 'field' => 'name', + 'type' => 'text', + 'required' => true, + 'use' => 'a' + ), // Location 'location' => array ( 'field' => 'location', diff --git a/classes/data/dataSites.php b/classes/data/dataSites.php index feb08de..0cee0a2 100644 --- a/classes/data/dataSites.php +++ b/classes/data/dataSites.php @@ -73,9 +73,6 @@ class GlmDataSites extends GlmDataAbstract */ public $fields = false; - public $postStats = false; - public $postSent = false; - /** * Constructor * @@ -112,10 +109,18 @@ class GlmDataSites extends GlmDataAbstract $this->fields = array ( 'id' => array ( - 'field' => 'id', - 'type' => 'integer', + 'field' => 'id', + 'type' => 'integer', 'view_only' => true, - 'use' => 'a' + 'use' => 'a' + ), + + // Active + 'active' => array( + 'field' => 'active', + 'type' => 'checkbox', + 'required' => false, + 'use' => 'a' ), // Production Server @@ -173,6 +178,22 @@ class GlmDataSites extends GlmDataAbstract 'use' => 'a' ), + // Have Contacts + 'has_contacts' => array( + 'field' => 'has_contacts', + 'type' => 'checkbox', + 'required' => false, + 'use' => 'a' + ), + + // Have Members + 'has_members' => array( + 'field' => 'has_members', + 'type' => 'checkbox', + 'required' => false, + 'use' => 'a' + ), + ); } @@ -193,30 +214,6 @@ class GlmDataSites extends GlmDataAbstract */ public function entryPostProcessing($r, $a) { - if ( $this->postStats ) { - // get number of queued emails for this message. - $queued = $this->wpdb->get_var( - $this->wpdb->prepare( - "SELECT max( queue_date ) - FROM " . GLM_MEMBERS_PLUGINS_PLUGIN_DB_PREFIX . "email_queue - WHERE message_id = %d", - $r['id'] - ) - ); - $r['stats'] = ( $queued ) ? strtotime( $queued ) : ''; - } - if ( $this->postSent ) { - // get number of queued emails for this message. - $queued = $this->wpdb->get_var( - $this->wpdb->prepare( - "SELECT max( send_date ) - FROM " . GLM_MEMBERS_PLUGINS_PLUGIN_DB_PREFIX . "email_logs - WHERE message_id = %d", - $r['id'] - ) - ); - $r['sent'] = ( $queued ) ? strtotime( $queued ) : ''; - } return $r; } diff --git a/models/admin/plugins/import.php b/models/admin/plugins/import.php new file mode 100644 index 0000000..e28d3ba --- /dev/null +++ b/models/admin/plugins/import.php @@ -0,0 +1,267 @@ + + * @license http://www.gaslightmedia.com Gaslightmedia + * @version 0.1 + */ + +// Load Members data abstract +require_once GLM_MEMBERS_PLUGINS_PLUGIN_CLASS_PATH.'/data/dataPlugins.php'; +require_once GLM_MEMBERS_PLUGINS_PLUGIN_CLASS_PATH.'/data/dataServers.php'; +require_once GLM_MEMBERS_PLUGINS_PLUGIN_CLASS_PATH.'/data/dataSites.php'; + +/* + * This class performs the work for the default action of the "Members" menu + * option, which is to display the members dashboard. + * + */ +class GlmMembersAdmin_plugins_import +{ + + /** + * WordPress Database Object + * + * @var $wpdb + * @access public + */ + public $wpdb; + /** + * Plugin Configuration Data + * + * @var $config + * @access public + */ + public $config; + + /** + * Database Connection for the plugin server. + */ + public $pdb; + + /* + * Constructor + * + * This contructor sets up this model. At this time that only includes + * storing away the WordPress data object. + * + * @return object Class object + * + */ + public function __construct ( $wpdb, $config ) + { + + // Save WordPress Database object + $this->wpdb = $wpdb; + + // Save plugin configuration object + $this->config = $config; + + } + + /* + * Perform Model Action + * + * This method does the work for this model and returns any resulting data + * + * @return array Status and data array + * + * 'status' + * + * True if successfull and false if there was a fatal failure. + * + * 'menuItemRedirect' + * + * If not false, provides a menu item the controller should + * execute after this one. Normally if this is used, there would also be a + * modelRedirect value supplied as well. + * + * 'modelRedirect' + * + * If not false, provides an action the controller should execute after + * this one. + * + * 'view' + * + * A suggested view name that the contoller should use instead of the + * default view for this model or false to indicate that the default view + * should be used. + * + * 'data' + * + * Data that the model is returning for use in merging with the view to + * produce output. + * + */ + public function modelAction ( $actionData = false ) + { + $view = 'import'; + $success = true; + $option = ''; + $option2 = false; + $viewPath = 'admin/plugins/'; + + // Setup Foundation 6 + wp_enqueue_style( 'Foundation6', GLM_MEMBERS_PLUGIN_URL . 'css/foundation-6.min.css' ); + wp_enqueue_script( 'Foundation6', GLM_MEMBERS_PLUGIN_URL . 'js/foundation-6.min.js' ); + + if ( isset( $_REQUEST['option'] ) ) { + $option = $_REQUEST['option']; + } + + if ( isset( $_REQUEST['option2'] ) ) { + $option2 = $_REQUEST['option2']; + } + + $tData = array(); + $templateData = array( + 'newEntry' => false, + 'thisOption' => $option, + ); + + switch ( $option ) { + + case 'import': + $this->connectToPluginsDatabase(); + + // Get all servers. + $servers = array(); + $res = $this->pdb->query( + "SELECT * + FROM servers" + ); + while ( $row = $res->fetch_assoc() ) { + $servers[] = $row; + } + + if ( $servers ) { + foreach ( $servers as $server ) { + // $this->wpdb->insert( + // GLM_MEMBERS_PLUGINS_PLUGIN_DB_PREFIX . 'servers', + // array( + // 'id' => $server['id'], + // 'name' => $server['name'], + // 'location' => $server['location'], + // 'php_version' => $server['php_version'], + // 'mysql_version' => $server['mysql_version'], + // ) + // ); + } + } + + // Get all Plugins + $plugins = array(); + $res2 = $this->pdb->query( + "SELECT * + FROM plugins" + ); + while ( $row2 = $res2->fetch_assoc() ) { + $plugins[] = $row2; + } + // echo '
$plugins: ' . print_r( $plugins, true ) . '
'; + if ( $plugins ) { + foreach ( $plugins as $plugin ) { + // $this->wpdb->insert( + // GLM_MEMBERS_PLUGINS_PLUGIN_DB_PREFIX . 'plugins', + // array( + // 'id' => $plugin['id'], + // 'name' => $plugin['name'], + // 'latest_version' => $plugin['latest_version'], + // 'notes' => $plugin['notes'], + // 'glm_associate' => ( ( $plugin['glm_associate'] ) ? $plugins['glm_associate'] : 0 ), + // ) + // ); + + } + } + + // Get all Sites. + $sites = array(); + $res3 = $this->pdb->query( + "SELECT * + FROM sites" + ); + while ( $row3 = $res3->fetch_assoc() ) { + $sites[] = $row3; + } + // echo '
$sites: ' . print_r( $sites, true ) . '
'; + if ( $sites ) { + foreach ( $sites as $site ) { + // $this->wpdb->insert( + // GLM_MEMBERS_PLUGINS_PLUGIN_DB_PREFIX . 'sites', + // array( + // 'id' => $site['id'], + // 'name' => $site['name'], + // 'prod_url' => $site['prod_url'], + // 'dev_url' => $site['dev_url'], + // 'prod_server' => $site['prod_server'], + // 'dev_server' => $site['dev_server'], + // 'map_key' => $site['map_key'], + // 'has_contacts' => ( ( $site['has_contacts'] ) ? $site['has_contacts'] : 0 ), + // 'has_members' => ( ( $site['has_members'] ) ? $site['has_members'] : 0 ), + // 'active' => 1, + // ) + // ); + } + } + + // Get all site to plugins records. + $sitesPlugins = array(); + $res4 = $this->pdb->query( + "SELECT * + FROM site_plugins" + ); + while ( $row4 = $res4->fetch_assoc() ) { + $sitesPlugins[] = $row4; + } + // echo '
$sitesPlugins: ' . print_r( $sitesPlugins, true ) . '
'; + if ( $sitesPlugins ) { + foreach ( $sitesPlugins as $sitePlugin ) { + // $this->wpdb->insert( + // GLM_MEMBERS_PLUGINS_PLUGIN_DB_PREFIX . 'site_plugins', + // array( + // 'id' => $sitePlugin['id'], + // 'site' => $sitePlugin['site'], + // 'plugin' => $sitePlugin['plugin'], + // 'prod_version' => $sitePlugin['prod_version'], + // 'dev_version' => $sitePlugin['dev_version'], + // ) + // ); + } + } + + break; + + default: + break; + } + + $templateData = array_merge( $templateData, $tData ); + + // Return status, suggested view, and data to controller + return array( + 'status' => $success, + 'menuItemRedirect' => false, + 'modelRedirect' => false, + 'view' => $viewPath . $view . '.html', + 'data' => $templateData + ); + + } + + public function connectToPluginsDatabase() + { + $this->pdb = new mysqli( 'dev.gaslightmedia.com', 'plugins', 'Plugins15Keep!', 'plugins' ); + if ( $this->pdb->connect_errno ) { + wp_die('failed to connect'); + } + } + +} diff --git a/models/admin/plugins/index.php b/models/admin/plugins/index.php index c8ca597..781e992 100644 --- a/models/admin/plugins/index.php +++ b/models/admin/plugins/index.php @@ -105,6 +105,10 @@ class GlmMembersAdmin_plugins_index // extends GlmDataEmailMessages $option2 = false; $viewPath = 'admin/plugins/'; + // Setup Foundation 6 + wp_enqueue_style( 'Foundation6', GLM_MEMBERS_PLUGIN_URL . 'css/foundation-6.min.css' ); + wp_enqueue_script( 'Foundation6', GLM_MEMBERS_PLUGIN_URL . 'js/foundation-6.min.js' ); + if ( isset( $_REQUEST['option'] ) ) { $option = $_REQUEST['option']; } @@ -121,6 +125,69 @@ class GlmMembersAdmin_plugins_index // extends GlmDataEmailMessages switch ( $option ) { + case 'plugins': + $view = 'plugins'; + // Get list of plugins. + $plugins = [ + [ + 'id' => 1, + 'name' => 'glm-member-db', + ], + [ + 'id' => 2, + 'name' => 'glm-member-db-contacts', + ], + [ + 'id' => 3, + 'name' => 'glm-member-db-events', + ], + ]; + $tData['plugins'] = $plugins; + break; + + case 'sites': + $view = 'sites'; + // Get list of Sites. + $sites = [ + [ + 'id' => 1, + 'name' => 'Baraga County', + ], + [ + 'id' => 2, + 'name' => 'Uptravel', + ], + [ + 'id' => 3, + 'name' => 'WMTA', + ], + ]; + $tData['sites'] = $sites; + break; + + case 'servers': + $view = 'servers'; + $servers = [ + [ + 'id' => 1, + 'name' => 'dev55', + ], + [ + 'id' => 2, + 'name' => 'dev70', + ], + [ + 'id' => 3, + 'name' => 'eleusis', + ], + [ + 'id' => 4, + 'name' => 'norax', + ], + ]; + $tData['servers'] = $servers; + break; + default: break; } diff --git a/models/admin/plugins/plugins.php b/models/admin/plugins/plugins.php new file mode 100644 index 0000000..16ee6b3 --- /dev/null +++ b/models/admin/plugins/plugins.php @@ -0,0 +1,150 @@ + + * @license http://www.gaslightmedia.com Gaslightmedia + * @version 0.1 + */ + +// Load Members data abstract +require_once GLM_MEMBERS_PLUGINS_PLUGIN_CLASS_PATH.'/data/dataPlugins.php'; + +/* + * This class performs the work for the default action of the "Members" menu + * option, which is to display the members dashboard. + * + */ +class GlmMembersAdmin_plugins_plugins extends GlmDataPlugins +{ + + /** + * WordPress Database Object + * + * @var $wpdb + * @access public + */ + public $wpdb; + /** + * Plugin Configuration Data + * + * @var $config + * @access public + */ + public $config; + + /* + * Constructor + * + * This contructor sets up this model. At this time that only includes + * storing away the WordPress data object. + * + * @return object Class object + * + */ + public function __construct ( $wpdb, $config ) + { + + // Save WordPress Database object + $this->wpdb = $wpdb; + + // Save plugin configuration object + $this->config = $config; + + // Run constructor for members data class + parent::__construct( false, false ); + + } + + /* + * Perform Model Action + * + * This method does the work for this model and returns any resulting data + * + * @return array Status and data array + * + * 'status' + * + * True if successfull and false if there was a fatal failure. + * + * 'menuItemRedirect' + * + * If not false, provides a menu item the controller should + * execute after this one. Normally if this is used, there would also be a + * modelRedirect value supplied as well. + * + * 'modelRedirect' + * + * If not false, provides an action the controller should execute after + * this one. + * + * 'view' + * + * A suggested view name that the contoller should use instead of the + * default view for this model or false to indicate that the default view + * should be used. + * + * 'data' + * + * Data that the model is returning for use in merging with the view to + * produce output. + * + */ + public function modelAction ( $actionData = false ) + { + $view = 'plugins'; + $success = true; + $option = ''; + $option2 = false; + $viewPath = 'admin/plugins/'; + + // Setup Foundation 6 + wp_enqueue_style( 'Foundation6', GLM_MEMBERS_PLUGIN_URL . 'css/foundation-6.min.css' ); + wp_enqueue_script( 'Foundation6', GLM_MEMBERS_PLUGIN_URL . 'js/foundation-6.min.js' ); + + if ( isset( $_REQUEST['option'] ) ) { + $option = $_REQUEST['option']; + } + + if ( isset( $_REQUEST['option2'] ) ) { + $option2 = $_REQUEST['option2']; + } + + $tData = array(); + $templateData = array( + 'newEntry' => false, + 'thisOption' => $option, + ); + + switch ( $option ) { + + default: + break; + } + + // Get all plugins. + $plugins = $this->getList(); + + // Setup tData array. + $tData['plugins'] = $plugins; + + $templateData = array_merge( $templateData, $tData ); + + // Return status, suggested view, and data to controller + return array( + 'status' => $success, + 'menuItemRedirect' => false, + 'modelRedirect' => false, + 'view' => $viewPath . $view . '.html', + 'data' => $templateData + ); + + } + +} diff --git a/models/admin/plugins/servers.php b/models/admin/plugins/servers.php new file mode 100644 index 0000000..2e34853 --- /dev/null +++ b/models/admin/plugins/servers.php @@ -0,0 +1,150 @@ + + * @license http://www.gaslightmedia.com Gaslightmedia + * @version 0.1 + */ + +// Load Members data abstract +require_once GLM_MEMBERS_PLUGINS_PLUGIN_CLASS_PATH.'/data/dataServers.php'; + +/* + * This class performs the work for the default action of the "Members" menu + * option, which is to display the members dashboard. + * + */ +class GlmMembersAdmin_plugins_servers extends GlmDataServers +{ + + /** + * WordPress Database Object + * + * @var $wpdb + * @access public + */ + public $wpdb; + /** + * Plugin Configuration Data + * + * @var $config + * @access public + */ + public $config; + + /* + * Constructor + * + * This contructor sets up this model. At this time that only includes + * storing away the WordPress data object. + * + * @return object Class object + * + */ + public function __construct ( $wpdb, $config ) + { + + // Save WordPress Database object + $this->wpdb = $wpdb; + + // Save plugin configuration object + $this->config = $config; + + // Run constructor for members data class + parent::__construct( false, false ); + + } + + /* + * Perform Model Action + * + * This method does the work for this model and returns any resulting data + * + * @return array Status and data array + * + * 'status' + * + * True if successfull and false if there was a fatal failure. + * + * 'menuItemRedirect' + * + * If not false, provides a menu item the controller should + * execute after this one. Normally if this is used, there would also be a + * modelRedirect value supplied as well. + * + * 'modelRedirect' + * + * If not false, provides an action the controller should execute after + * this one. + * + * 'view' + * + * A suggested view name that the contoller should use instead of the + * default view for this model or false to indicate that the default view + * should be used. + * + * 'data' + * + * Data that the model is returning for use in merging with the view to + * produce output. + * + */ + public function modelAction ( $actionData = false ) + { + $view = 'servers'; + $success = true; + $option = ''; + $option2 = false; + $viewPath = 'admin/plugins/'; + + // Setup Foundation 6 + wp_enqueue_style( 'Foundation6', GLM_MEMBERS_PLUGIN_URL . 'css/foundation-6.min.css' ); + wp_enqueue_script( 'Foundation6', GLM_MEMBERS_PLUGIN_URL . 'js/foundation-6.min.js' ); + + if ( isset( $_REQUEST['option'] ) ) { + $option = $_REQUEST['option']; + } + + if ( isset( $_REQUEST['option2'] ) ) { + $option2 = $_REQUEST['option2']; + } + + $tData = array(); + $templateData = array( + 'newEntry' => false, + 'thisOption' => $option, + ); + + switch ( $option ) { + + default: + break; + } + + // Get all plugins. + $servers = $this->getList(); + + // Setup tData array. + $tData['servers'] = $servers; + + $templateData = array_merge( $templateData, $tData ); + + // Return status, suggested view, and data to controller + return array( + 'status' => $success, + 'menuItemRedirect' => false, + 'modelRedirect' => false, + 'view' => $viewPath . $view . '.html', + 'data' => $templateData + ); + + } + +} diff --git a/models/admin/plugins/sites.php b/models/admin/plugins/sites.php new file mode 100644 index 0000000..5485529 --- /dev/null +++ b/models/admin/plugins/sites.php @@ -0,0 +1,150 @@ + + * @license http://www.gaslightmedia.com Gaslightmedia + * @version 0.1 + */ + +// Load Members data abstract +require_once GLM_MEMBERS_PLUGINS_PLUGIN_CLASS_PATH.'/data/dataSites.php'; + +/* + * This class performs the work for the default action of the "Members" menu + * option, which is to display the members dashboard. + * + */ +class GlmMembersAdmin_plugins_sites extends GlmDataSites +{ + + /** + * WordPress Database Object + * + * @var $wpdb + * @access public + */ + public $wpdb; + /** + * Plugin Configuration Data + * + * @var $config + * @access public + */ + public $config; + + /* + * Constructor + * + * This contructor sets up this model. At this time that only includes + * storing away the WordPress data object. + * + * @return object Class object + * + */ + public function __construct ( $wpdb, $config ) + { + + // Save WordPress Database object + $this->wpdb = $wpdb; + + // Save plugin configuration object + $this->config = $config; + + // Run constructor for members data class + parent::__construct( false, false ); + + } + + /* + * Perform Model Action + * + * This method does the work for this model and returns any resulting data + * + * @return array Status and data array + * + * 'status' + * + * True if successfull and false if there was a fatal failure. + * + * 'menuItemRedirect' + * + * If not false, provides a menu item the controller should + * execute after this one. Normally if this is used, there would also be a + * modelRedirect value supplied as well. + * + * 'modelRedirect' + * + * If not false, provides an action the controller should execute after + * this one. + * + * 'view' + * + * A suggested view name that the contoller should use instead of the + * default view for this model or false to indicate that the default view + * should be used. + * + * 'data' + * + * Data that the model is returning for use in merging with the view to + * produce output. + * + */ + public function modelAction ( $actionData = false ) + { + $view = 'sites'; + $success = true; + $option = ''; + $option2 = false; + $viewPath = 'admin/plugins/'; + + // Setup Foundation 6 + wp_enqueue_style( 'Foundation6', GLM_MEMBERS_PLUGIN_URL . 'css/foundation-6.min.css' ); + wp_enqueue_script( 'Foundation6', GLM_MEMBERS_PLUGIN_URL . 'js/foundation-6.min.js' ); + + if ( isset( $_REQUEST['option'] ) ) { + $option = $_REQUEST['option']; + } + + if ( isset( $_REQUEST['option2'] ) ) { + $option2 = $_REQUEST['option2']; + } + + $tData = array(); + $templateData = array( + 'newEntry' => false, + 'thisOption' => $option, + ); + + switch ( $option ) { + + default: + break; + } + + // Get all plugins. + $sites = $this->getList(); + + // Setup tData array. + $tData['sites'] = $sites; + + $templateData = array_merge( $templateData, $tData ); + + // Return status, suggested view, and data to controller + return array( + 'status' => $success, + 'menuItemRedirect' => false, + 'modelRedirect' => false, + 'view' => $viewPath . $view . '.html', + 'data' => $templateData + ); + + } + +} diff --git a/setup/databaseScripts/create_database_V0.0.1.sql b/setup/databaseScripts/create_database_V0.0.1.sql index 565c1c7..9b3bbb9 100644 --- a/setup/databaseScripts/create_database_V0.0.1.sql +++ b/setup/databaseScripts/create_database_V0.0.1.sql @@ -24,19 +24,24 @@ CREATE TABLE {prefix}plugins ( name TINYTEXT NOT NULL, latest_version TINYTEXT NOT NULL, notes TEXT NULL, + glm_associate BOOLEAN NOT NULL DEFAULT true, PRIMARY KEY (id) ); ---- -- Sites -CREATE TABLE {prefix}server ( +CREATE TABLE {prefix}sites ( id INT NOT NULL AUTO_INCREMENT, name TINYTEXT NOT NULL, prod_url TINYTEXT NULL, dev_url TINYTEXT NULL, prod_server INT NULL, dev_server INT NULL, + map_key TINYTEXT NULL, + has_contacts BOOLEAN NOT NULL DEFAULT false, + has_members BOOLEAN NOT NULL DEFAULT false, + active BOOLEAN NOT NULL DEFAULT true, PRIMARY KEY (id) ); diff --git a/setup/validActions.php b/setup/validActions.php index 30cc68b..f08a238 100644 --- a/setup/validActions.php +++ b/setup/validActions.php @@ -61,6 +61,10 @@ $glmMemberPluginsAddOnValidActions = array( 'adminActions' => array( 'plugins' => array( 'index' => GLM_MEMBERS_PLUGINS_PLUGIN_SLUG, + 'plugins' => GLM_MEMBERS_PLUGINS_PLUGIN_SLUG, + 'sites' => GLM_MEMBERS_PLUGINS_PLUGIN_SLUG, + 'servers' => GLM_MEMBERS_PLUGINS_PLUGIN_SLUG, + 'import' => GLM_MEMBERS_PLUGINS_PLUGIN_SLUG, ), ), 'frontActions' => array( diff --git a/views/admin/header.html b/views/admin/header.html index dd460b4..37e444b 100644 --- a/views/admin/header.html +++ b/views/admin/header.html @@ -1,8 +1,28 @@

Plugin Manager

- -
+ +
+
+
+ +
+
+
+ +
diff --git a/views/admin/plugins/import.html b/views/admin/plugins/import.html new file mode 100644 index 0000000..e56353c --- /dev/null +++ b/views/admin/plugins/import.html @@ -0,0 +1,8 @@ +{* Import View *} +{include file='admin/header.html'} + +

Import from dev database

+ +Import + +{include file='admin/footer.html'} diff --git a/views/admin/plugins/index.html b/views/admin/plugins/index.html index 9e75412..7b59e93 100644 --- a/views/admin/plugins/index.html +++ b/views/admin/plugins/index.html @@ -1,18 +1,27 @@ {include file='admin/header.html'} -

Plugins Dashboard

+

Plugins Dashboard

+ +
+
+ +
+
diff --git a/views/admin/plugins/plugins.html b/views/admin/plugins/plugins.html new file mode 100644 index 0000000..a987d03 --- /dev/null +++ b/views/admin/plugins/plugins.html @@ -0,0 +1,33 @@ +{* Plugins View File *} + +{* Header *} +{include file="admin/header.html"} +

List Plugins

+ + + + + + + + + + + + {if $plugins} + {foreach $plugins as $plugin} + + + + + + + {/foreach} + {/if} + + +
IDNameLatest VersionGLMA
{$plugin.id}{$plugin.name}{$plugin.latest_version}{if $plugin.glm_associate.value}Yes{else}No{/if}
+ + +{* Footer *} +{include file="../../admin/footer.html"} diff --git a/views/admin/plugins/servers.html b/views/admin/plugins/servers.html new file mode 100644 index 0000000..9e5579a --- /dev/null +++ b/views/admin/plugins/servers.html @@ -0,0 +1,35 @@ +{* Servers View File *} + +{* Header *} +{include file="admin/header.html"} +

List Servers

+ + + + + + + + + + + + + {if $servers} + {foreach $servers as $server} + + + + + + + + {/foreach} + {/if} + + +
IDNameLocationPHP VersionMysql Version
{$server.id}{$server.name}{$server.location}{$server.php_version}{$server.mysql_version}
+ + +{* Footer *} +{include file="../../admin/footer.html"} diff --git a/views/admin/plugins/sites.html b/views/admin/plugins/sites.html new file mode 100644 index 0000000..b0ddc5c --- /dev/null +++ b/views/admin/plugins/sites.html @@ -0,0 +1,33 @@ +{* Sites View File *} + +{* Header *} +{include file="admin/header.html"} +

List Sites

+ + + + + + + + + + + + {if $sites} + {foreach $sites as $site} + + + + + + + {/foreach} + {/if} + + +
IDNameProduction UrlDev Url
{$site.id}{$site.name}{$site.prod_url}{$site.dev_url}
+ + +{* Footer *} +{include file="../../admin/footer.html"}