* @version $Revision: 1253 $ * * This is some of the ugliest code I've ever written. Please do not * judge me by it. :) */ GalleryCoreApi::requireOnce('modules/map/classes/mapHelper.class'); GalleryCoreApi::requireOnce('modules/map/classes/GoogleMapUtilities.class'); /** * @package map * @subpackage UserInterface */ class MapLegendAdminController extends GalleryController { /** * @see GalleryController::handleRequest */ function handleRequest($form) { include(dirname(__FILE__) . '/includes/MapAdminControllerInit.inc'); /* Cancel hit, return to the default Legend Admin Page */ if (isset($form['action']['cancel'])) { $results['status'] = $status; $results['error'] = array(); $results['redirect']['view'] = 'core.SiteAdmin'; $results['redirect']['subView'] = 'map.MapLegendAdmin'; } /* Save Legend information */ if (isset($form['action']['save'])) { $form['AlbumLegend'] = false; $form['PhotoLegend'] = false; $form['GroupLegend'] = false; if (array_key_exists('usealbumlegend', $_POST) and $_POST['usealbumlegend']) { $form['AlbumLegend'] = true; } if (array_key_exists('usephotolegend', $_POST) and $_POST['usephotolegend']) { $form['PhotoLegend'] = true; } if (array_key_exists('UseGroupLegend', $_POST) and $_POST['UseGroupLegend']) { $form['GroupLegend'] = true; } $form['ExpandAlbumLegend'] = false; $form['ExpandPhotoLegend'] = false; $form['ExpandGroupLegend'] = false; if (array_key_exists('ExpandAlbumLegend', $_POST) and $_POST['ExpandAlbumLegend']) { $form['ExpandAlbumLegend'] = true; } if (array_key_exists('ExpandPhotoLegend', $_POST) and $_POST['ExpandPhotoLegend']) { $form['ExpandPhotoLegend'] = true; } if (array_key_exists('ExpandGroupLegend', $_POST) and $_POST['ExpandGroupLegend']) { $form['ExpandGroupLegend'] = true; } $albumlegenditem = ''; $photolegenditem = ''; $grouplegenditem = ''; for ($i = 0; $i < 10; $i++) { if ($form['AlbumLegend']) { $albumlegenditem .= $_POST['A' . $i] . '|'; } if ($form['PhotoLegend']) { $photolegenditem .= $_POST['P' . $i] . '|'; } if ($form['GroupLegend']) { $grouplegenditem .= $_POST['G' . $i] . '|'; } } $form['PhotoLegends'] = $photolegenditem; $form['AlbumLegends'] = $albumlegenditem; $form['GroupLegends'] = $grouplegenditem; switch ($form['LegendPos']) { case 1: /* Legend is on the left, add the map.Legend Block */ /* Grab the Default theme value (used for the google map) */ list ($ret, $themeId) = GalleryCoreApi::getPluginParameter('module', 'core', 'default.theme'); if ($ret) { return array($ret->wrap(__FILE__, __LINE__), null); } /* Grab the Theme Default settings */ list ($ret, $deftheme) = GalleryCoreApi::loadPlugin('theme', $themeId); if ($ret) { return array($ret->wrap(__FILE__, __LINE__), null); } $settings = $deftheme->getSettings(null); list ($thememajor, $thememinor) = $deftheme->getApiVersion(); /* * This block manipulation logic only works for earlier block encoding, * so skip it for later Theme API versions to avoid corrupting the * block list. */ if ($thememajor == 2 && $thememinor <= 3) { if (array_key_exists('2', $settings)) { $settings = $settings[2]; foreach ($settings as $key => $values) { if ($key == 'sidebarBlocks') { list ($ret, $value) = $deftheme->unpackSetting('block-list', $values); $value = str_replace('[map.Legend]', '', $value); $value = '[map.Legend] ' . $value; list ($ret, $newvalue) = $deftheme->packSetting('block-list', $value); $ret = $deftheme->setParameter('sidebarBlocks', $newvalue); } } } else if (is_array($settings[1])) { foreach ($settings[1] as $num => $arrayvalue) { if ($arrayvalue['key'] == "sidebarBlocks") { list ($success, $value) = $deftheme->unpackSetting('block-list', $settings[1][$num]['value']); $value = str_replace('[map.Legend]', '', $value); $value = '[map.Legend] ' . $value; list ($ret, $newvalue) = $deftheme->packSetting('block-list', $value); $ret = $deftheme->setParameter('sidebarBlocks', $newvalue); } } } } break; case 2: /* Legend on the top -> continue */ case 3: /* Legend on the bottom -> continue */ case 4: /* No Legend to show -> continue */ case 0: /* Legend on the right, remove the map.Legend block from the sidebar */ /* Grab the Default theme value (used for the google map) */ list ($ret, $themeId) = GalleryCoreApi::getPluginParameter('module', 'core', 'default.theme'); if ($ret) { return array($ret->wrap(__FILE__, __LINE__), null); } /* Grab the Theme Default settings */ list ($ret, $deftheme) = GalleryCoreApi::loadPlugin('theme', $themeId); if ($ret) { return array($ret->wrap(__FILE__, __LINE__), null); } $settings = $deftheme->getSettings(null); list ($thememajor, $thememinor) = $deftheme->getApiVersion(); /* * This block manipulation logic only works for earlier block encoding, * so skip it for later Theme API versions to avoid corrupting the * block list. */ if ($thememajor == 2 && $thememinor <= 3) { if (array_key_exists('2', $settings)) { $settings = $settings[2]; foreach ($settings as $key => $values) { if ($key == 'sidebarBlocks') { list ($ret, $value) = $deftheme->unpackSetting('block-list', $values); $value = str_replace('[map.Legend]', '', $value); list ($ret, $newvalue) = $deftheme->packSetting('block-list', $value); $ret = $deftheme->setParameter('sidebarBlocks', $newvalue); } } } else if (is_array($settings[1])) { foreach ($settings[1] as $num => $arrayvalue) { if ($arrayvalue['key'] == "sidebarBlocks") { list ($success, $value) = $deftheme->unpackSetting('block-list', $settings[1][$num]['value']); $value = str_replace('[map.Legend]', '', $value); list ($ret, $newvalue) = $deftheme->packSetting('block-list', $value); $ret = $deftheme->setParameter('sidebarBlocks', $newvalue); } } } } } foreach (array('AlbumLegends', 'PhotoLegends', 'GroupLegends', 'LegendPos') as $setting) { GalleryCoreApi::setPluginParameter('module', 'map', $setting, $form[$setting]); } foreach (array('AlbumLegend', 'PhotoLegend', 'GroupLegend', 'ExpandAlbumLegend', 'ExpandGroupLegend', 'ExpandPhotoLegend') as $setting) { GalleryCoreApi::setPluginParameter('module', 'map', $setting, (isset($form[$setting]) && $form[$setting]) ? 1 : 0); } $status['saved'] = 1; $results['status'] = $status; $results['error'] = array(); $results['redirect']['view'] = 'core.SiteAdmin'; $results['redirect']['subView'] = 'map.MapLegendAdmin'; } return array (null, $results); } } /** * @package map * @subpackage UserInterface */ class MapLegendAdminView extends GalleryView { /** * @see GalleryView::loadTemplate */ function loadTemplate(&$template, &$form) { include(dirname(__FILE__).'/includes/MapAdminViewInit.inc'); $template->head('modules/map/includes/GoogleMap.css'); $form['formName'] = 'MapLegendAdmin'; /* Set default values for undefined plugin parameters */ if(!array_key_exists('AlbumLegend', $form)) { $form['AlbumLegend'] = false; } if(!array_key_exists('PhotoLegend', $form)) { $form['PhotoLegend'] = false; } if(!array_key_exists('AlbumLegends', $form)) { $form['AlbumLegends'] = ''; } if(!array_key_exists('GroupLegend', $form)) { $form['GroupLegend'] = false; } if(!array_key_exists('GroupLegends', $form)) { $form['GroupLegends'] = ''; } if(!array_key_exists('PhotoLegends', $form)) { $form['PhotoLegends'] = ''; } if(!array_key_exists('ExpandAlbumLegend', $form)) { $form['ExpandAlbumLegend'] = true; } if(!array_key_exists('ExpandPhotoLegend', $form)) { $form['ExpandPhotoLegend'] = true; } if(!array_key_exists('ExpandGroupLegend', $form)) { $form['ExpandGroupLegend'] = true; } if(!array_key_exists('LegendPos', $form)) { $form['LegendPos'] = 0; /* right by default */ } /* Explode the list of information in the legends if available */ if ($form['PhotoLegends'] <> '') { $photolegends = explode('|', $form['PhotoLegends']); $form['PhotoLegends'] = $photolegends; } if ($form['AlbumLegends'] <> '') { $albumlegends = explode('|', $form['AlbumLegends']); $form['AlbumLegends'] = $albumlegends; } if ($form['GroupLegends'] <> '') { $grouplegends = explode('|', $form['GroupLegends']); $form['GroupLegends'] = $grouplegends; } include(dirname(__FILE__) . '/includes/MapAdminEdits.inc'); $form['allmarkers'] = GoogleMapUtilities::AllMarkers(); if ($template->hasVariable('SiteAdmin')) { $SiteAdmin =& $template->getVariableByReference('SiteAdmin'); $SiteAdmin['enctype'] = 'multipart/form-data'; } else { $SiteAdmin['enctype'] = 'multipart/form-data'; $template->setVariable('SiteAdmin', $SiteAdmin); } $template->setVariable('controller', 'map.MapLegendAdmin'); return array(null, array('body' => 'modules/map/templates/MapLegendAdmin.tpl')); } } ?>