Пример #1
0
 /**
  * Execute
  *
  * @return	void
  */
 public function execute()
 {
     \IPS\Output::i()->breadcrumb[] = array(\IPS\Http\Url::internal('app=membermap&module=membermap&controller=showmap', 'front', 'membermap'), \IPS\Member::loggedIn()->language()->addToStack('module__membermap_membermap'));
     \IPS\Output::i()->breadcrumb = array_reverse(\IPS\Output::i()->breadcrumb);
     /* Load JS */
     \IPS\membermap\Application::getJsForMarkerForm();
     parent::execute();
 }
Пример #2
0
 /**
  * ...
  *
  * @return	void
  */
 protected function manage()
 {
     $defaultMaps = \IPS\membermap\Application::getEnabledMaps();
     \IPS\Output::i()->jsVars['membermap_defaultMaps'] = $defaultMaps;
     \IPS\Output::i()->sidebar['actions']['preview'] = array('icon' => 'eye', 'link' => \IPS\Http\Url::external('https://leaflet-extras.github.io/leaflet-providers/preview/index.html'), 'title' => 'membermap_mapmanager_preview', 'target' => '_blank');
     \IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack('menu__membermap_membermap_mapmanager');
     \IPS\Output::i()->output .= \IPS\Theme::i()->getTemplate('mapmanager')->wrapper();
 }
Пример #3
0
    /**
     * Show the map
     *
     * @return	void
     */
    protected function manage()
    {
        $markers = array();
        /* Rebuild JSON cache if needed */
        if (!\IPS\membermap\Map::i()->checkForCache()) {
            /* We clicked the tools menu item to force a rebuild */
            if (\IPS\Request::i()->isAjax()) {
                \IPS\Output::i()->redirect(\IPS\Http\Url::internal('app=membermap&module=membermap&controller=showmap', NULL, 'membermap'));
            }
        }
        $cacheTime = isset(\IPS\Data\Store::i()->membermap_cacheTime) ? \IPS\Data\Store::i()->membermap_cacheTime : 0;
        $getByUser = intval(\IPS\Request::i()->member_id);
        if (\IPS\Request::i()->filter == 'getByUser' and $getByUser) {
            $markers = \IPS\membermap\Map::i()->getMarkerByMember($getByUser);
        }
        /* Get enabled maps */
        $defaultMaps = \IPS\membermap\Application::getEnabledMaps();
        /* Add/edit marker permissions */
        $groupId = \IPS\membermap\Map::i()->getMemberGroupId();
        $existing = \IPS\membermap\Map::i()->getMarkerByMember(\IPS\Member::loggedIn()->member_id, FALSE);
        $canAdd = \IPS\membermap\Markers\Groups::load($groupId)->can('add');
        $canEdit = $existing ? $existing->canEdit() : false;
        $canDelete = $existing ? $existing->canDelete() : false;
        /* Load JS and CSS */
        \IPS\Output::i()->jsFiles = array_merge(\IPS\Output::i()->jsFiles, \IPS\Output::i()->js('leaflet/leaflet-src.js', 'membermap', 'interface'));
        \IPS\Output::i()->jsFiles = array_merge(\IPS\Output::i()->jsFiles, \IPS\Output::i()->js('leaflet/plugins/Control.FullScreen.js', 'membermap', 'interface'));
        \IPS\Output::i()->jsFiles = array_merge(\IPS\Output::i()->jsFiles, \IPS\Output::i()->js('leaflet/plugins/Control.Loading.js', 'membermap', 'interface'));
        \IPS\Output::i()->jsFiles = array_merge(\IPS\Output::i()->jsFiles, \IPS\Output::i()->js('leaflet/plugins/leaflet-providers.js', 'membermap', 'interface'));
        \IPS\Output::i()->jsFiles = array_merge(\IPS\Output::i()->jsFiles, \IPS\Output::i()->js('leaflet/plugins/leaflet.awesome-markers.js', 'membermap', 'interface'));
        \IPS\Output::i()->jsFiles = array_merge(\IPS\Output::i()->jsFiles, \IPS\Output::i()->js('leaflet/plugins/leaflet.contextmenu-src.js', 'membermap', 'interface'));
        \IPS\Output::i()->jsFiles = array_merge(\IPS\Output::i()->jsFiles, \IPS\Output::i()->js('leaflet/plugins/leaflet.markercluster-src.js', 'membermap', 'interface'));
        \IPS\Output::i()->jsFiles = array_merge(\IPS\Output::i()->jsFiles, \IPS\Output::i()->js('leaflet/plugins/subgroup.js', 'membermap', 'interface'));
        \IPS\Output::i()->jsFiles = array_merge(\IPS\Output::i()->jsFiles, \IPS\Output::i()->js('front_main.js', 'membermap', 'front'));
        \IPS\Output::i()->jsFiles = array_merge(\IPS\Output::i()->jsFiles, \IPS\Output::i()->js('jquery/jquery-ui.js', 'membermap', 'interface'));
        \IPS\Output::i()->cssFiles = array_merge(\IPS\Output::i()->cssFiles, \IPS\Theme::i()->css('membermap.css', 'membermap'));
        \IPS\Output::i()->cssFiles = array_merge(\IPS\Output::i()->cssFiles, \IPS\Theme::i()->css('leaflet.css', 'membermap', 'global'));
        \IPS\Output::i()->cssFiles = array_merge(\IPS\Output::i()->cssFiles, \IPS\Theme::i()->css('jquery-ui.css', 'membermap', 'global'));
        \IPS\Output::i()->cssFiles = array_merge(\IPS\Output::i()->cssFiles, \IPS\Theme::i()->css('plugins.combined.css', 'membermap'));
        \IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack('__app_membermap');
        \IPS\Output::i()->sidebar['enabled'] = FALSE;
        /* Update session location */
        \IPS\Session::i()->setLocation(\IPS\Http\Url::internal('app=membermap&module=membermap&controller=showmap', 'front', 'membermap'), array(), 'loc_membermap_viewing_membermap');
        /* Things we need to know in the Javascript */
        \IPS\Output::i()->jsVars = array_merge(\IPS\Output::i()->jsVars, array('is_supmod' => \IPS\Member::loggedIn()->modPermission() ?: 0, 'member_id' => \IPS\Member::loggedIn()->member_id ?: 0, 'membermap_canAdd' => $canAdd ?: 0, 'membermap_canEdit' => $canEdit ?: 0, 'membermap_canDelete' => $canDelete ?: 0, 'membermap_cacheTime' => $cacheTime, 'membermap_bbox' => json_decode(\IPS\Settings::i()->membermap_bbox), 'membermap_bbox_zoom' => intval(\IPS\Settings::i()->membermap_bbox_zoom), 'membermap_defaultMaps' => $defaultMaps, 'membermap_mapquestAPI' => \IPS\membermap\Application::getApiKeys('mapquest'), 'membermap_enable_clustering' => \IPS\Settings::i()->membermap_enable_clustering == 1 ? 1 : 0, 'membermap_groupByMemberGroup' => \IPS\Settings::i()->membermap_groupByMemberGroup == 1 ? 1 : 0));
        \IPS\Output::i()->endBodyCode .= <<<EOF
\t\t<script type='text/javascript'>
\t\t\tips.membermap.initMap();
\t\t</script>
EOF;
        \IPS\Output::i()->output = \IPS\Theme::i()->getTemplate('map')->showMap($markers, $cacheTime, $canAdd, $canEdit);
    }
Пример #4
0
 /**
  * Execute
  *
  * @return	void
  */
 public function execute()
 {
     try {
         $this->marker = \IPS\membermap\Markers\Markers::loadAndCheckPerms(\IPS\Request::i()->id);
     } catch (\OutOfRangeException $e) {
         \IPS\Output::i()->error('node_error', '2MM1/1', 404, '');
     }
     \IPS\Output::i()->breadcrumb[] = array(\IPS\Http\Url::internal('app=membermap&module=membermap&controller=showmap', 'front', 'membermap'), \IPS\Member::loggedIn()->language()->addToStack('module__membermap_membermap'));
     \IPS\Output::i()->breadcrumb = array_reverse(\IPS\Output::i()->breadcrumb);
     \IPS\Output::i()->breadcrumb[] = array($this->marker->container()->url(), $this->marker->container()->_title);
     \IPS\Output::i()->breadcrumb[] = array('', $this->marker->_title);
     /* Load JS */
     \IPS\membermap\Application::getJsForMarkerForm();
     parent::execute();
 }
Пример #5
0
 /**
  * ...
  *
  * @return	void
  */
 protected function manage()
 {
     \IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack('menu__membermap_membermap_settings');
     \IPS\Output::i()->jsFiles = array_merge(\IPS\Output::i()->jsFiles, \IPS\Output::i()->js('jquery/jquery-ui.js', 'membermap', 'interface'));
     \IPS\Output::i()->jsFiles = array_merge(\IPS\Output::i()->jsFiles, \IPS\Output::i()->js('admin_membermap.js', 'membermap', 'admin'));
     \IPS\Output::i()->cssFiles = array_merge(\IPS\Output::i()->cssFiles, \IPS\Theme::i()->css('jquery-ui.css', 'membermap', 'global'));
     \IPS\Output::i()->jsVars['membermap_mapquestAPI'] = \IPS\membermap\Application::getApiKeys('mapquest');
     $form = new \IPS\Helpers\Form();
     $form->addHeader('api_settings');
     $form->add(new \IPS\Helpers\Form\Text('membermap_mapQuestAPI', \IPS\Settings::i()->membermap_mapQuestAPI, TRUE, array(), NULL, NULL, NULL, 'membermap_mapQuestAPI'));
     if (!empty(\IPS\Settings::i()->membermap_mapQuestAPI)) {
         $form->attributes['data-controller'] = 'membermap.admin.membermap.settings';
         $form->attributes['id'] = 'membermap_form_settings';
         $form->addHeader('map_settings');
         $form->add(new \IPS\Helpers\Form\YesNo('membermap_groupByMemberGroup', \IPS\Settings::i()->membermap_groupByMemberGroup));
         $form->add(new \IPS\Helpers\Form\YesNo('membermap_enable_clustering', \IPS\Settings::i()->membermap_enable_clustering));
         $form->add(new \IPS\Helpers\Form\Text('membermap_bbox_location', \IPS\Settings::i()->membermap_bbox_location, FALSE, array(), NULL, NULL, NULL, 'membermap_bbox_location'));
         $form->add(new \IPS\Helpers\Form\Number('membermap_bbox_zoom', intval(\IPS\Settings::i()->membermap_bbox_zoom), FALSE, array('min' => 1, 'max' => 18)));
         $form->hiddenValues['membermap_bbox'] = \IPS\Settings::i()->membermap_bbox;
         $form->addHeader('membermap_autoUpdate');
         $profileFields = array('' => ' -- ' . \IPS\Member::loggedIn()->language()->addToStack('membermap_profileLocationField') . ' -- ');
         foreach (\IPS\core\ProfileFields\Field::fields(array(), \IPS\core\ProfileFields\Field::PROFILE) as $group => $fields) {
             foreach ($fields as $id => $field) {
                 $profileFields['core_pfieldgroups_' . $group][$id] = $field->name;
             }
         }
         $form->add(new \IPS\Helpers\Form\YesNo('membermap_monitorLocationField', \IPS\Settings::i()->membermap_monitorLocationField, FALSE, array('togglesOn' => array('membermap_profileLocationField', 'membermap_monitorLocationField_groupPerm', 'membermap_syncLocationField'))));
         $form->add(new \IPS\Helpers\Form\Select('membermap_profileLocationField', \IPS\Settings::i()->membermap_profileLocationField ? intval(\IPS\Settings::i()->membermap_profileLocationField) : NULL, FALSE, array('options' => $profileFields), NULL, NULL, NULL, 'membermap_profileLocationField'));
         $form->add(new \IPS\Helpers\Form\Select('membermap_monitorLocationField_groupPerm', \IPS\Settings::i()->membermap_monitorLocationField_groupPerm != '' ? \IPS\Settings::i()->membermap_monitorLocationField_groupPerm === '*' ? '*' : explode(",", \IPS\Settings::i()->membermap_monitorLocationField_groupPerm) : '*', FALSE, array('options' => \IPS\Member\Group::groups(), 'multiple' => TRUE, 'parse' => 'normal', 'unlimited' => '*', 'unlimitedLang' => 'all'), NULL, NULL, NULL, 'membermap_monitorLocationField_groupPerm'));
         $form->add(new \IPS\Helpers\Form\YesNo('membermap_syncLocationField', \IPS\Settings::i()->membermap_syncLocationField, FALSE, array(), NULL, NULL, NULL, 'membermap_syncLocationField'));
     }
     if ($values = $form->values(TRUE)) {
         $values['membermap_bbox'] = \IPS\Request::i()->membermap_bbox;
         if (empty($values['membermap_bbox_location'])) {
             $values['membermap_bbox'] = "";
         }
         \IPS\DB::i()->update('core_tasks', array('enabled' => isset($values['membermap_syncLocationField']) and $values['membermap_syncLocationField'] ? 1 : 0), array('`key`=?', 'locationSync'));
         $form->saveAsSettings($values);
         \IPS\Session::i()->log('acplogs__membermap_settings');
         \IPS\Output::i()->redirect(\IPS\Http\Url::internal("app=membermap&module=membermap&controller=settings"), 'saved');
     }
     \IPS\Output::i()->output = $form;
 }
Пример #6
0
 /**
  * Geocode, get lat/lng by location
  *
  * @param 	string 	Location
  * @return 	array 	Lat/lng/formatted address
  */
 public function getLatLng($location)
 {
     static $locCache = array();
     $locKey = md5($location);
     if (isset($locCache['cache-' . $locKey])) {
         return $locCache['cache-' . $locKey];
     }
     $apiKey = \IPS\membermap\Application::getApiKeys('mapquest');
     if ($apiKey) {
         try {
             $data = \IPS\Http\Url::external("https://open.mapquestapi.com/nominatim/v1/search.php?key={$apiKey}&format=json&limit=1&q=" . urlencode($location))->request(15)->get()->decodeJson();
             if (is_array($data) and count($data)) {
                 $locCache['cache-' . $locKey] = array('lat' => $data[0]['lat'], 'lng' => $data[0]['lon'], 'location' => $data[0]['display_name']);
                 return $locCache['cache-' . $locKey];
             } else {
                 /* No result for this */
                 $locCache['cache-' . $locKey] = false;
             }
         } catch (\RuntimeException $e) {
             \IPS\Log::log($e, 'membermap');
             return false;
         }
     }
     return false;
 }