view plugins/tasks/mpiwg_geobrowser_view.inc @ 4:1b6cde0e4b83 default tip

merger
author Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
date Mon, 12 Oct 2015 08:38:25 +0200
parents 19f75fe342eb ea066ce001bd
children
line wrap: on
line source

<?php

function mpiwg_geobrowser_mpiwg_geobrowser_view_page_manager_tasks() {
    return array(
        'task type' => 'page',

        'title' => t('mpiwg_geobrowser template'),

        'admin title' => t('mpiwg_geobrowser template'),
        'admin description' => t('When enabled, this overrides the default Drupal behavior for displaying mpiwg_geobrowsers at <em>mpiwg_geobrowser/%mpiwg_geobrowser</em>. If you add variants, you may use selection criteria such as mpiwg_geobrowser type or language or user access to provide different views of mpiwg_geobrowsers. If no variant is selected, the default Drupal mpiwg_geobrowser view will be used. This page only affects mpiwg_geobrowsers viewed as pages, it will not affect mpiwg_geobrowsers viewed in lists or at other locations. Also please note that if you are using pathauto, aliases may make a mpiwg_geobrowser to be somewhere else, but as far as Drupal is concerned, they are still at mpiwg_geobrowser/%mpiwg_geobrowser.'),
        'admin path' => 'mpiwg_geobrowser/%mpiwg_geobrowser',

        'hook menu' => 'mpiwg_geobrowser_mpiwg_geobrowser_view_menu',
        'hook menu alter' => 'mpiwg_geobrowser_mpiwg_geobrowser_view_menu_alter',

        'handler type' => 'context',
        'get arguments' => 'mpiwg_geobrowser_mpiwg_geobrowser_view_get_arguments',
        'get context placeholders' => 'mpiwg_geobrowser_mpiwg_geobrowser_view_get_contexts',

        'disabled' => variable_get('mpiwg_geobrowser_mpiwg_geobrowser_view_disabled', FALSE),
        'enable callback' => 'mpiwg_geobrowser_mpiwg_geobrowser_view_enable',
        'access callback' => 'mpiwg_geobrowser_mpiwg_geobrowser_view_access_check',
    );
}

function mpiwg_geobrowser_mpiwg_geobrowser_view_menu_alter(&$items, $task) {
    if (variable_get('mpiwg_geobrowser_mpiwg_geobrowser_view_disabled', FALSE)) {
        return;
    }

    $callback = $items['mpiwg_geobrowser/%mpiwg_geobrowser']['page callback'];
    if ($callback == 'mpiwg_geobrowser_page_view' || variable_get('mpiwg_geobrowser_override_anyway', TRUE)) {
        $items['mpiwg_geobrowser/%mpiwg_geobrowser']['page callback'] = 'mpiwg_geobrowser_mpiwg_geobrowser_view_page';
        $items['mpiwg_geobrowser/%mpiwg_geobrowser']['file path'] = $task['path'];
        $items['mpiwg_geobrowser/%mpiwg_geobrowser']['file'] = $task['file'];
    }
    else {
        variable_set('mpiwg_geobrowser_mpiwg_geobrowser_view_disabled', TRUE);
        if (!empty($GLOBALS['mpiwg_geobrowser_enabling_mpiwg_geobrowser_view'])) {
            drupal_set_message(t('Page manager module is unable to enable mpiwg_geobrowser/%mpiwg_geobrowser because some other module already has overridden with %callback.', array('%callback' => $callback)), 'error');
        }
    }
}

function mpiwg_geobrowser_mpiwg_geobrowser_view_page($mpiwg_geobrowser) {
	drupal_add_css(drupal_get_path('module', 'mpiwg_geobrowser') . '/css/mpiwg_geobrowser_style.css', array('group' => CSS_DEFAULT, 'type' => 'file'));
    drupal_add_js(drupal_get_path('module', "mpiwg_geobrowser") . '/lib/moment.min.js');
    drupal_add_js(drupal_get_path('module', "mpiwg_geobrowser") . '/lib/filesaver/FileSaver.min.js');
    #drupal_add_js(libraries_get_path("platin") . '/platin.js');
    drupal_add_js(libraries_get_path("platin") . '/devel/platin.js');
    drupal_add_css(drupal_get_path('module', 'mpiwg_geobrowser') . '/lib/GeoTemCo/css/platin.css', array('group' => CSS_DEFAULT, 'type' => 'file'));
    drupal_add_css(libraries_get_path("platin") . '/devel/css/platin.css');
    drupal_add_css(libraries_get_path("platin") . '/devel/css/style.css');
    $task = page_manager_get_task('mpiwg_geobrowser_view');
	dpm($task);
    ctools_include('context');
    ctools_include('context-task-handler');

    drupal_set_title($mpiwg_geobrowser->item_description);
    dpm($mpiwg_geobrowser);
    $uri = entity_uri('mpiwg_geobrowser', $mpiwg_geobrowser);
    drupal_add_html_head_link(array('rel' => 'canonical', 'href' => url($uri['path'], $uri['options'])), TRUE);
    drupal_add_html_head_link(array('rel' => 'shortlink', 'href' => url($uri['path'], array_merge($uri['options'], array('alias' => TRUE)))), TRUE);
    $contexts = ctools_context_handler_get_task_contexts($task, '', array($mpiwg_geobrowser));
    $output = ctools_context_handler_render($task, '', $contexts, array($mpiwg_geobrowser->mpiwg_geobrowser_instance_id));
  	dpm($contexts);
  	dpm($output);
  	
    $geoTemCoIntegration = '
        <script type="text/javascript">
	
            var mpiwg_geobrowser_widgetsCount = 0;
            var mpiwg_geobrowser_widgetsLoaded = 0;
            var mpiwg_geobrowser_noWidgetLoaded = true;
            var widgetLoadedEvent = new Event("mpiwg_geobrowser_widget_loaded");
            var allWidgetsLoadedEvent = new Event("mpiwg_geobrowser_all_widgets_loaded");
            
            Drupal.behaviors.mpiwg_geobrowser_entity = {
                attach: function (context, settings) {
	
                   // jQuery(document).ready(function(){
                        if (context[0] !== undefined && context[0].attributes !== undefined) {
                            var contextAttributes = context[0].attributes;
                            for (i=0; i<contextAttributes.length; i++) {
                                if (contextAttributes[i].name == "id" && contextAttributes[i].value == "panels-ipe-edit-control-form") {
                                    window.location.reload();
                                }
                            }
                        }
                        
                        document.addEventListener("mpiwg_geobrowser_widget_loaded", function (e) {
                            if (mpiwg_geobrowser_noWidgetLoaded) {

                                mpiwg_geobrowser_widgetsCount = mpiwg_geobrowser_widgetsCount;


                                mpiwg_geobrowser_noWidgetLoaded = false;
                            }
                            mpiwg_geobrowser_widgetsLoaded++;
                            if (mpiwg_geobrowser_widgetsLoaded == mpiwg_geobrowser_widgetsCount) {
                                document.dispatchEvent(allWidgetsLoadedEvent);
                            }
                        }, false);
		//	});
                 
                }
            }
        </script>
    ';
    
    

    if (isset($output["content"])){ //unterschiedliches Verhalten, je nach dem ob der Inhalt noch in einen admin rahmen eingebettet ist
    //$output["content"]["#markup"] = $geoTemCoIntegration . $output["content"]["#markup"];
    $output["content"]["#markup"]  = $geoTemCoIntegration . $output["content"]["#markup"];
   
    if ($output != FALSE) {
        return $output;
    }
    } else {
 
   return $geoTemCoIntegration . $output;
   }

    $function = 'mpiwg_geobrowser_page_view';
    foreach (module_implements('mpiwg_geobrowser_override') as $module) {
        $call = $module . '_mpiwg_geobrowser_override';
        if (($rc = $call('mpiwg_geobrowser_view')) && function_exists($rc)) {
            $function = $rc;
            break;
        }
    }

    return $function($mpiwg_geobrowser);
}

function mpiwg_geobrowser_mpiwg_geobrowser_view_get_arguments($task, $subtask_id) {
    return array(
        array(
            'keyword' => 'mpiwg_geobrowser',
            'identifier' => t('mpiwg_geobrowser being viewed'),
            'id' => 1,
            'name' => 'entity_id:mpiwg_geobrowser',
            'settings' => array(),
        ),
    );
}

function mpiwg_geobrowser_mpiwg_geobrowser_view_get_contexts($task, $subtask_id) {
    return ctools_context_get_placeholders_from_argument(mpiwg_geobrowser_mpiwg_geobrowser_view_get_arguments($task, $subtask_id));
}

function mpiwg_geobrowser_mpiwg_geobrowser_view_enable($cache, $status) {
    variable_set('mpiwg_geobrowser_mpiwg_geobrowser_view_disabled', $status);

    if (!$status) {
        $GLOBALS['mpiwg_geobrowser_enabling_mpiwg_geobrowser_view'] = TRUE;
    }
}

function mpiwg_geobrowser_mpiwg_geobrowser_view_access_check($task, $subtask_id, $contexts) {
    $context = reset($contexts);
    return mpiwg_geobrowser_access('view', $context->data);
}