/** * Application management screen. * * @since 2.0.0 * @access public * @param string $Filter 'enabled', 'disabled', or 'all' (default) * @param string $ApplicationName Unique ID of app to be modified. * @param string $TransientKey Security token. */ public function Applications($Filter = '', $ApplicationName = '', $TransientKey = '') { $this->Permission('Garden.Settings.Manage'); // Page setup $this->AddJsFile('addons.js'); $this->AddJsFile('applications.js'); $this->Title(T('Applications')); $this->AddSideMenu('dashboard/settings/applications'); // Validate & set parameters $Session = Gdn::Session(); if ($ApplicationName && !$Session->ValidateTransientKey($TransientKey)) { $ApplicationName = ''; } if (!in_array($Filter, array('enabled', 'disabled'))) { $Filter = 'all'; } $this->Filter = $Filter; $ApplicationManager = new Gdn_ApplicationManager(); $this->AvailableApplications = $ApplicationManager->AvailableVisibleApplications(); $this->EnabledApplications = $ApplicationManager->EnabledVisibleApplications(); if ($ApplicationName != '') { $this->EventArguments['ApplicationName'] = $ApplicationName; if (array_key_exists($ApplicationName, $this->EnabledApplications) === TRUE) { try { $ApplicationManager->DisableApplication($ApplicationName); Gdn_LibraryMap::ClearCache(); $this->FireEvent('AfterDisableApplication'); } catch (Exception $e) { $this->Form->AddError(strip_tags($e->getMessage())); } } else { try { $ApplicationManager->CheckRequirements($ApplicationName); } catch (Exception $e) { $this->Form->AddError(strip_tags($e->getMessage())); } if ($this->Form->ErrorCount() == 0) { $Validation = new Gdn_Validation(); $ApplicationManager->RegisterPermissions($ApplicationName, $Validation); $ApplicationManager->EnableApplication($ApplicationName, $Validation); Gdn_LibraryMap::ClearCache(); $this->Form->SetValidationResults($Validation->Results()); $this->EventArguments['Validation'] = $Validation; $this->FireEvent('AfterEnableApplication'); } } if ($this->Form->ErrorCount() == 0) { Redirect('settings/applications/' . $this->Filter); } } $this->Render(); }
/** * Application management screen. */ public function Applications($Filter = '', $ApplicationName = '', $TransientKey = '') { $this->AddJsFile('addons.js'); $Session = Gdn::Session(); $ApplicationName = $Session->ValidateTransientKey($TransientKey) ? $ApplicationName : ''; if (!in_array($Filter, array('enabled', 'disabled'))) { $Filter = 'all'; } $this->Filter = $Filter; $this->Permission('Garden.Applications.Manage'); $this->AddSideMenu('dashboard/settings/applications'); $this->AddJsFile('applications.js'); $this->Title(T('Applications')); $AuthenticatedPostBack = $this->Form->AuthenticatedPostBack(); $ApplicationManager = new Gdn_ApplicationManager(); $this->AvailableApplications = $ApplicationManager->AvailableVisibleApplications(); $this->EnabledApplications = $ApplicationManager->EnabledVisibleApplications(); // Loop through all of the available visible apps and mark them if they have an update available // Retrieve the list of apps that require updates from the config file $RequiredUpdates = Gdn_Format::Unserialize(C('Garden.RequiredUpdates', '')); if (is_array($RequiredUpdates)) { foreach ($RequiredUpdates as $UpdateInfo) { if (is_object($UpdateInfo)) { $UpdateInfo = Gdn_Format::ObjectAsArray($UpdateInfo); } $NewVersion = ArrayValue('Version', $UpdateInfo, ''); $Name = ArrayValue('Name', $UpdateInfo, ''); $Type = ArrayValue('Type', $UpdateInfo, ''); foreach ($this->AvailableApplications as $App => $Info) { $CurrentName = ArrayValue('Name', $Info, $App); if ($CurrentName == $Name && $Type == 'Application') { $Info['NewVersion'] = $NewVersion; $this->AvailableApplications[$App] = $Info; } } } } if ($ApplicationName != '') { $this->EventArguments['ApplicationName'] = $ApplicationName; if (array_key_exists($ApplicationName, $this->EnabledApplications) === TRUE) { try { $ApplicationManager->DisableApplication($ApplicationName); $this->FireEvent('AfterDisableApplication'); } catch (Exception $e) { $this->Form->AddError(strip_tags($e->getMessage())); } } else { try { $ApplicationManager->CheckRequirements($ApplicationName); } catch (Exception $e) { $this->Form->AddError(strip_tags($e->getMessage())); } if ($this->Form->ErrorCount() == 0) { $Validation = new Gdn_Validation(); $ApplicationManager->RegisterPermissions($ApplicationName, $Validation); $ApplicationManager->EnableApplication($ApplicationName, $Validation); $this->Form->SetValidationResults($Validation->Results()); $this->EventArguments['Validation'] = $Validation; $this->FireEvent('AfterEnableApplication'); } } if ($this->Form->ErrorCount() == 0) { Redirect('settings/applications/' . $this->Filter); } } $this->Render(); }
</div> <h1><?php echo T('Homepage'); ?> </h1> <div class="Info"> <?php printf(T('Use the content at this url as your homepage.', 'Choose the page people should see when they visit: <strong style="white-space: nowrap;">%s</strong>'), Url('/', TRUE)); ?> </div> <div class="Homepage"> <div class="HomeOptions"> <?php // Only show the vanilla pages if Vanilla is enabled $ApplicationManager = new Gdn_ApplicationManager(); $EnabledApplications = $ApplicationManager->EnabledVisibleApplications(); $CurrentTarget = $this->Data('CurrentTarget'); if (array_key_exists('Vanilla', $EnabledApplications)) { echo WriteHomepageOption('Discussions', 'discussions', 'SpDiscussions', $CurrentTarget); echo WriteHomepageOption('Categories', 'categories', 'SpCategories', $CurrentTarget); // echo WriteHomepageOption('Categories & Discussions', 'categories/discussions', 'categoriesdiscussions', $CurrentTarget); } echo WriteHomepageOption('Activity', 'activity', 'SpActivity', $CurrentTarget); ?> </div> <?php if (array_key_exists('Vanilla', $EnabledApplications)) { ?> <div class="LayoutOptions DiscussionsLayout"> <p> <?php
/** * Application management screen. */ public function Applications($Filter = '', $TransientKey = '') { $Session = Gdn::Session(); $ApplicationName = $Session->ValidateTransientKey($TransientKey) ? $Filter : ''; if (!in_array($Filter, array('enabled', 'disabled'))) { $Filter = ''; } $this->Filter = $Filter; $this->Permission('Garden.Applications.Manage'); $this->AddSideMenu('dashboard/settings/applications'); $this->AddJsFile('applications.js'); $this->Title(T('Applications')); $AuthenticatedPostBack = $this->Form->AuthenticatedPostBack(); $ApplicationManager = new Gdn_ApplicationManager(); $this->AvailableApplications = $ApplicationManager->AvailableVisibleApplications(); $this->EnabledApplications = $ApplicationManager->EnabledVisibleApplications(); // Loop through all of the available visible apps and mark them if they have an update available // Retrieve the list of apps that require updates from the config file $RequiredUpdates = Gdn_Format::Unserialize(Gdn::Config('Garden.RequiredUpdates', '')); if (is_array($RequiredUpdates)) { foreach ($RequiredUpdates as $UpdateInfo) { if (is_object($UpdateInfo)) { $UpdateInfo = Gdn_Format::ObjectAsArray($UpdateInfo); } $NewVersion = ArrayValue('Version', $UpdateInfo, ''); $Name = ArrayValue('Name', $UpdateInfo, ''); $Type = ArrayValue('Type', $UpdateInfo, ''); foreach ($this->AvailableApplications as $App => $Info) { $CurrentName = ArrayValue('Name', $Info, $App); if ($CurrentName == $Name && $Type == 'Application') { $Info['NewVersion'] = $NewVersion; $this->AvailableApplications[$App] = $Info; } } } } if ($ApplicationName != '') { if (array_key_exists($ApplicationName, $this->EnabledApplications) === TRUE) { try { $ApplicationManager->DisableApplication($ApplicationName); } catch (Exception $e) { $this->Form->AddError(strip_tags($e->getMessage())); } } else { try { $ApplicationManager->CheckRequirements($ApplicationName); } catch (Exception $e) { $this->Form->AddError(strip_tags($e->getMessage())); } if ($this->Form->ErrorCount() == 0) { $Test = ProxyRequest(Url('/dashboard/settings/testaddon/Application/' . $ApplicationName . '/' . $Session->TransientKey() . '?DeliveryType=JSON', TRUE)); if ($Test != 'Success') { $this->Form->AddError(sprintf(T('The application could not be enabled because it generated a fatal error: <pre>%s</pre>'), strip_tags($Test))); } else { $Validation = new Gdn_Validation(); $ApplicationManager->RegisterPermissions($ApplicationName, $Validation); $ApplicationManager->EnableApplication($ApplicationName, $Validation); $this->Form->SetValidationResults($Validation->Results()); } } } if ($this->Form->ErrorCount() == 0) { Redirect('settings/applications'); } } $this->Render(); }
/** * Application management screen. */ public function Applications($Filter = '', $TransientKey = '') { $Session = Gdn::Session(); $ApplicationName = $Session->ValidateTransientKey($TransientKey) ? $Filter : ''; if (!in_array($Filter, array('enabled', 'disabled'))) { $Filter = ''; } $this->Filter = $Filter; $this->Permission('Garden.Applications.Manage'); $this->AddSideMenu('garden/settings/applications'); if ($this->Head) { $this->Head->AddScript('/applications/garden/js/applications.js'); $this->Head->Title(Translate('Applications')); } $Session = Gdn::Session(); $AuthenticatedPostBack = $this->Form->AuthenticatedPostBack(); $ApplicationManager = new Gdn_ApplicationManager(); $this->AvailableApplications = $ApplicationManager->AvailableVisibleApplications(); $this->EnabledApplications = $ApplicationManager->EnabledVisibleApplications(); // Loop through all of the available visible apps and mark them if they have an update available // Retrieve the list of apps that require updates from the config file $RequiredUpdates = Format::Unserialize(Gdn::Config('Garden.RequiredUpdates', '')); if (is_array($RequiredUpdates)) { foreach ($RequiredUpdates as $UpdateInfo) { if (is_object($UpdateInfo)) { $UpdateInfo = Format::ObjectAsArray($UpdateInfo); } $NewVersion = ArrayValue('Version', $UpdateInfo, ''); $Name = ArrayValue('Name', $UpdateInfo, ''); $Type = ArrayValue('Type', $UpdateInfo, ''); foreach ($this->AvailableApplications as $App => $Info) { $CurrentName = ArrayValue('Name', $Info, $App); if ($CurrentName == $Name && $Type == 'Application') { $Info['NewVersion'] = $NewVersion; $this->AvailableApplications[$App] = $Info; } } } } // Check the update server for updates to these applications $this->UpdateManager = new Gdn_UpdateManager(); // TODO: FIX UP THE PHONE-HOME CODE - AJAX, PERHAPS? // $this->CurrentVersions = $this->UpdateManager->Check(ADDON_TYPE_APPLICATION, array_keys($this->AvailableApplications)); if ($ApplicationName != '') { if (array_key_exists($ApplicationName, $this->EnabledApplications) === TRUE) { try { $ApplicationManager->DisableApplication($ApplicationName); } catch (Exception $e) { $this->Form->AddError(strip_tags($e->getMessage())); } } else { try { $ApplicationManager->CheckRequirements($ApplicationName); } catch (Exception $e) { $this->Form->AddError(strip_tags($e->getMessage())); } if ($this->Form->ErrorCount() == 0) { $Validation = new Gdn_Validation(); $ApplicationManager->RegisterPermissions($ApplicationName, $Validation); $ApplicationManager->EnableApplication($ApplicationName, $Validation); } $this->Form->SetValidationResults($Validation->Results()); } if ($this->Form->ErrorCount() == 0) { Redirect('settings/applications'); } } $this->Render(); }