Exemplo n.º 1
0
 /**
  * widget function.
  *
  * @see WP_Widget
  * @access public
  * @param array $args
  * @param array $instance
  * @return void
  */
 function widget($args, $instance)
 {
     if ($this->get_cached_widget($args)) {
         return;
     }
     if (!empty($_GET['selected_package'])) {
         return;
     }
     extract($args);
     $title = apply_filters('widget_title', $instance['title'], $instance, $this->id_base);
     $icon = isset($instance['icon']) ? $instance['icon'] : null;
     if ($icon) {
         $before_title = sprintf($before_title, 'ion-' . $icon);
     }
     ob_start();
     global $post, $product;
     $products = $this->get_bookable_products($post->ID);
     $job_id = $post->ID;
     if (!$products) {
         return;
     }
     echo $before_widget;
     if ($title) {
         echo $before_title . $title . $after_title;
     }
     $booking_calendar = $this->get_booking_calendar(reset($products));
     get_component('element', 'booking-product', compact('products', 'booking_calendar'));
     echo $after_widget;
     $content = ob_get_clean();
     echo apply_filters($this->widget_id, $content);
     $this->cache_widget($args, $content);
 }
Exemplo n.º 2
0
 /**
  * Méthode permettant d'afficher l'arbre à partir de celui passé en paramètre.
  *
  * @param ITree $tree
  * @param array $options
  * @param $key
  *
  * @return mixed|string
  */
 public function render(ITree $tree, array $options, $key)
 {
     $this->defaults($tree, $tree->getRoot());
     if ($key != null && !isset($options["baseId"])) {
         $options["id"] = $this->options["id"] . "_" . $key;
         $options["baseId"] = $this->options["id"];
     } elseif ($key != null && isset($options["baseId"])) {
         $options["id"] = $options["baseId"] . "_" . $key;
     }
     if ($key != null && isset($options["selected"])) {
         $options["selected"] = isset($options["selected"][$key]) ? $options["selected"][$key] : "";
     }
     $options = array_merge($this->options, $options);
     $build = function ($tree) use(&$build, &$options, $key) {
         $output = is_string($options['rootOpen']) ? $options['rootOpen'] : $options['rootOpen']($tree);
         $nodes = $tree instanceof ITreeViewerItem && $tree->isRoot() ? array($tree) : $tree;
         /** @var ITreeViewerItem $node */
         foreach ($nodes as $node) {
             $output .= is_string($options['childOpen']) ? $options['childOpen'] : $options['childOpen']($node, $node->getType(), $key);
             $output .= $options['nodeDecorator']($node);
             if (count($node->getChildren()) > 0) {
                 $output .= $build($node->getChildren());
             }
             $output .= is_string($options['childClose']) ? $options['childClose'] : $options['childClose']($node);
         }
         return $output . (is_string($options['rootClose']) ? $options['rootClose'] : $options['rootClose']($tree));
     };
     return html_entity_decode(sfOutputEscaper::unescape(get_component("eitreeviewer", "displaySelectMode", array("root" => $tree, "html" => $build($tree->getRoot()), "options" => $options, "key" => $key, "tree" => $this))), ENT_QUOTES, "UTF-8");
 }
Exemplo n.º 3
0
 public function shortcode($atts = array(), $content = '')
 {
     $atts = $this->logic(shortcode_atts($this->get_default_atts(), $atts, $this->base));
     if ($content) {
         $atts['content'] = do_shortcode($content);
     }
     return get_component('Shortcode', $this->base, $atts, false);
 }
Exemplo n.º 4
0
 public function upload_field_upload_markup($markup, $file, $form_id, $id)
 {
     $file_path = GFFormsModel::get_file_upload_path($form_id, $file['uploaded_filename']);
     $url = explode('/', $file_path['url']);
     array_pop($url);
     array_push($url, $file['uploaded_filename']);
     $file['url'] = implode('/', $url);
     return get_component('twig', 'uploaded-file', compact('file', 'form_id', 'id'), false);
 }
Exemplo n.º 5
0
 public static function sendAdminNotification($booking)
 {
     sfContext::getInstance()->getConfiguration()->loadHelpers('Partial');
     $mailer = sfContext::getInstance()->getMailer();
     $body = '<html><body>' . get_component('Payment', 'adminNotificationEmail', array('booking' => $booking)) . '</body></html>';
     $message = $mailer->compose(array('*****@*****.**' => 'lkm.ee'), sfConfig::get('app_admin_email'), '');
     $message->setBody($body, 'text/html');
     $mailer->send($message);
 }
Exemplo n.º 6
0
 protected function render($view, $vars = array(), $echo = true)
 {
     $path = str_replace('Controller', '', implode('/', explode('\\', str_replace('App\\Controllers\\', '', get_called_class()))));
     $html = get_component($path, $view, $vars, $echo);
     if ($echo) {
         echo $html;
     } else {
         return $html;
     }
 }
Exemplo n.º 7
0
function fossa_sidebar2_ads()
{
    if (component_exists('sidebar2-ads')) {
        echo "<div class=\"sidebarads\">";
        get_component('sidebar2-ads');
        echo "</div><div class=\"clear\"></div>";
    } else {
        return;
    }
}
 public function display_instagramfeed()
 {
     $instagram_uid = "1186117710";
     $access_token = "19039620.87d5630.e4a8f758e4ad4901b195c97fac5c4caf";
     $photo_count = 12;
     $json_link = "https://api.instagram.com/v1/users/{$instagram_uid}/media/recent/?";
     $json_link .= "access_token={$access_token}&count={$photo_count}";
     $json = file_get_contents($json_link);
     $obj = json_decode($json, true, 512, JSON_BIGINT_AS_STRING);
     get_component('elements', 'instagram-feed', compact('obj'));
 }
/**
 * Return the HTML code for an unordered list showing opinions that can be voted
 * If the user has already voted, then a message appears
 * 
 * @param  BaseObject  $object   Propel object instance to vote
 * @param  string      $domid    unique css identifier for the block (div) containing the voter tool
 * @param  string      $message  a message string to be displayed in the voting-message block
 * @param  array       $options  Array of HTML options to apply on the HTML list
 * @return string
 **/
function depp_voter($object, $domid = 'depp-voter-block', $message = '', $options = array())
{
    if (is_null($object)) {
        sfLogger::getInstance()->debug('A NULL object cannot be voted');
        return '';
    }
    $user_id = deppPropelActAsVotableBehaviorToolkit::getUserId();
    // anonymous votes
    if ((is_null($user_id) || $user_id == '') && !$object->allowsAnonymousVoting()) {
        return __('Anonymous voting is not allowed') . ", " . __('please') . " " . link_to('login', '/login');
    }
    try {
        $voting_range = $object->getVotingRange();
        $options = _parse_attributes($options);
        if (!isset($options['id'])) {
            $options = array_merge($options, array('id' => 'voting-items'));
        }
        if ($object instanceof sfOutputEscaperObjectDecorator) {
            $object_class = get_class($object->getRawValue());
        } else {
            $object_class = get_class($object);
        }
        $object_id = $object->getReferenceKey();
        $token = deppPropelActAsVotableBehaviorToolkit::addTokenToSession($object_class, $object_id);
        // already voted
        if ($object->hasBeenVotedByUser($user_id)) {
            $message .= "&nbsp;" . link_to_remote(__('Take your vote back'), array('url' => sprintf('deppVoting/unvote?domid=%s&token=%s', $domid, $token), 'update' => $domid, 'script' => true, 'complete' => visual_effect('appear', $domid) . visual_effect('highlight', $domid)));
        }
        $list_content = '';
        for ($i = -1 * $voting_range; $i <= $voting_range; $i++) {
            if ($i == 0 && !$object->allowsNeutralPosition()) {
                continue;
            }
            $text = sprintf("[%d]", $i);
            $label = sprintf(__('Vote %d!'), $i);
            if ($object->hasBeenVotedByUser($user_id) && $object->getUserVoting($user_id) == $i) {
                $list_content .= content_tag('li', $text);
            } else {
                $list_content .= '  <li>' . link_to_remote($text, array('url' => sprintf('deppVoting/vote?domid=%s&token=%s&voting=%d', $domid, $token, $i), 'update' => $domid, 'script' => true, 'complete' => visual_effect('appear', $domid) . visual_effect('highlight', $domid)), array('title' => $label)) . '</li>';
            }
        }
        $results = get_component('deppVoting', 'votingDetails', array('object' => $object));
        return content_tag('ul', $list_content, $options) . content_tag('div', $message, array('id' => 'voting-message')) . content_tag('div', $results, array('id' => 'voting-results'));
    } catch (Exception $e) {
        sfLogger::getInstance()->err('Exception catched from sf_rater helper: ' . $e->getMessage());
    }
}
Exemplo n.º 10
0
function get_nested_set_manager($model, $field, $root = 0)
{
    if (!sfConfig::has('app_sfJqueryTree_withContextMenu')) {
        sfConfig::set('app_sfJqueryTree_withContextMenu', true);
    }
    sfContext::getInstance()->getResponse()->addStylesheet('/sfJqueryTreeDoctrineManagerPlugin/jsTree/themes/default/style.css');
    sfContext::getInstance()->getResponse()->addStylesheet('/sfJqueryTreeDoctrineManagerPlugin/css/screen.css');
    //      by vit
    //        sfContext::getInstance()->getResponse()->addJavascript('/sfJqueryTreeDoctrineManagerPlugin/jsTree/jquery.js');
    sfContext::getInstance()->getResponse()->addJavascript('/sfJqueryTreeDoctrineManagerPlugin/jsTree/jquery.cookie.js');
    sfContext::getInstance()->getResponse()->addJavascript('/sfJqueryTreeDoctrineManagerPlugin/jsTree/jquery.tree.min.js');
    sfContext::getInstance()->getResponse()->addJavascript('/sfJqueryTreeDoctrineManagerPlugin/jsTree/plugins/jquery.tree.cookie.js');
    if (sfConfig::get('app_sfJqueryTree_withContextMenu')) {
        sfContext::getInstance()->getResponse()->addJavascript('/sfJqueryTreeDoctrineManagerPlugin/jsTree/plugins/jquery.tree.contextmenu.js');
    }
    return get_component('sfJqueryTreeDoctrineManager', 'manager', array('model' => $model, 'field' => $field, 'root' => $root));
}
Exemplo n.º 11
0
 public function getSlotValue($slot)
 {
     sfLoader::loadHelpers(array('Partial'));
     $components = sfYaml::load($slot->getValue());
     $res = '';
     foreach ($components as $name => $params) {
         if (!isset($params['component']) && !isset($params['partial'])) {
             return sprintf('<strong>Error</strong>: The value of slot %s in incorrect. Component %s has no \'component\' or \'partial\' key.', $slot->getName(), $name);
         }
         if (isset($params['component'])) {
             // component
             list($module, $action) = split('/', $params['component']);
             unset($params['component']);
             $res .= get_component($module, $action, $params);
         } else {
             // partial
             $res .= get_partial($params['partial'], $params);
             unset($params['partial']);
         }
     }
     return $res;
 }
Exemplo n.º 12
0
function dynpages_replace_match($match)
{
    global $args;
    $replacement = '';
    if ($match[1] && (!isset($match[4]) || !$match[4])) {
        $replacement .= $match[1];
    }
    if (isset($args)) {
        $saved_args = $args;
    }
    $args = array();
    $paramstr = isset($match[3]) ? html_entity_decode(trim($match[3]), ENT_QUOTES, 'UTF-8') : '';
    while ($paramstr && preg_match('/^([^"\', ]*|"[^"]*"|\'[^\']*\')(\\s+|\\s*,\\s*|$)/', $paramstr, $pmatch)) {
        $value = trim($pmatch[1]);
        if (substr($value, 0, 1) == '"' || substr($value, 0, 1) == "'") {
            $value = substr($value, 1, strlen($value) - 2);
        }
        $args[] = $value;
        $paramstr = substr($paramstr, strlen($pmatch[0]));
    }
    ob_start();
    if (function_exists('get_i18n_component')) {
        get_i18n_component($match[2]);
    } else {
        get_component($match[2]);
    }
    $replacement .= ob_get_contents();
    ob_end_clean();
    if (isset($saved_args)) {
        $args = $saved_args;
    } else {
        unset($args);
    }
    if (!$match[1] && isset($match[4]) && $match[4]) {
        $replacement .= $match[4];
    }
    return $replacement;
}
 /**
  * Executes the filter chain, returning the response content with an additional admin toolbar.
  * 
  * @param sfFilterChain $filterChain
  */
 public function execute(sfFilterChain $filterChain)
 {
     $filterChain->execute();
     $user = $this->getContext()->getUser();
     $sf_format = $this->getContext()->getRequest()->getParameter('sf_format');
     if ($sf_format !== '' && !is_null($sf_format) || !$user->isAuthenticated() || !$user->hasPermission(sfConfig::get('app_rt_admin_menu_credential', 'show_admin_menu'))) {
         return;
     }
     $response = $this->getContext()->getResponse();
     // Enable admin tools...
     $response->setContent(str_replace(array('<!--RTAS', 'RTAS-->'), '', $response->getContent()));
     if (function_exists('use_helper')) {
         $css = '<link rel="stylesheet" type="text/css" media="screen" href="/rtCorePlugin/css/admin-toolbar.css" />';
         $js = '<script type="text/javascript" src="/rtCorePlugin/vendor/jquery/js/jquery.min.js"></script>';
         use_helper('Partial', 'I18N');
         $toolbar = get_component('rtAdmin', 'menu');
         $response->setContent(str_ireplace('<!--rt-admin-holder-->', $toolbar, $response->getContent()));
         $response->setContent(str_ireplace('</head>', $css . '</head>', $response->getContent()));
         if (!preg_match("/jquery/i", $response->getContent())) {
             $response->setContent(str_ireplace('</head>', $js . '</head>', $response->getContent()));
         }
     }
 }
/**
 * Evaluates and echoes a component.
 * For a variable to be accessible to the component and its partial, 
 * it has to be passed in the third argument.
 *
 * <b>Example:</b>
 * <code>
 *  include_component('mymodule', 'mypartial', array('myvar' => 12345));
 * </code>
 *
 * @param  string module name
 * @param  string component name
 * @param  array variables to be made accessible to the component
 * @return void
 * @see    get_component, include_partial, include_component_slot
 */
function include_component($moduleName, $componentName, $vars = array())
{
    echo get_component($moduleName, $componentName, $vars);
}
Exemplo n.º 15
0
 /**
  * Get a symfony resource (partial or component)
  * 
  * This basically looks first for a component defined by the given module
  * and action. If one doesn't exist, it then looks for a partial matching
  * the module and action pair.
  *
  * @param string $module 
  * @param string $action 
  * @param array $variables 
  * @return string $html
  */
 public static function getSymfonyResource($module, $action = null, $variables = array())
 {
     if (strpos($module, '/')) {
         $variables = (array) $action;
         $e = explode('/', $module);
         list($module, $action) = $e;
     }
     $context = sfContext::getInstance();
     $context->getConfiguration()->loadHelpers('Partial');
     $controller = $context->getController();
     if ($controller->componentExists($module, $action)) {
         return get_component($module, $action, $variables);
     } else {
         return get_partial($module . '/' . $action, $variables);
     }
     throw new sfException('Could not find component or partial for the module "' . $module . '" and action "' . $action . '"');
 }
Exemplo n.º 16
0
<?php

echo get_component('specimenwidget', 'loan', array('table' => 'specimens', 'eid' => $eid, 'view' => true));
Exemplo n.º 17
0
<div class="column sidebar" id="sidebar-first">
  <div class="section">

    <?php 
echo get_component_slot('sidebar');
?>

    <?php 
echo get_component('menu', 'browseMenu');
?>

  </div> <!-- /.section -->
</div> <!-- /.column.sidebar#sidebar-first -->
Exemplo n.º 18
0
            <div>
                <h1><a href="<?php 
get_site_url();
?>
" alt="<?php 
get_site_name();
?>
" title="<?php 
get_site_name();
?>
"><?php 
get_site_name();
?>
</a></h1>
                <h2><?php 
if (component_exists('sous-titre')) {
    get_component('sous-titre');
} else {
    echo "";
}
?>
</h2> 
            </div>
            <div>
                <img src="<?php 
get_site_url();
?>
/data/uploads/illustrations/portrait-2016-1.jpg" class="ombre-bouton" alt="portrait Anne Jaussiomme" title="Anne Jaussiomme, Coach">
            </div>
        </div>
    </header><!-- header .branding -->
Exemplo n.º 19
0
foreach ($representations as $usageId => $representation) {
    ?>

    <fieldset class="collapsible">

      <legend><?php 
    echo __('%1% representation', array('%1%' => QubitTerm::getById($usageId)));
    ?>
</legend>

      <?php 
    if (isset($representation)) {
        ?>

        <?php 
        echo get_component('digitalobject', 'editRepresentation', array('resource' => $resource, 'representation' => $representation));
        ?>

        <?php 
        $rightComponent = "rightEditComponent_{$usageId}";
        ?>
        <?php 
        echo get_partial('right/edit', ${$rightComponent}->getVarHolder()->getAll() + array('tableId' => $usageId));
        ?>

      <?php 
    } else {
        ?>

        <?php 
        echo $form["repFile_{$usageId}"]->label(__('Select a digital object to upload'))->renderRow();
Exemplo n.º 20
0
<?php

slot('subject');
?>
<h1><?php 
echo __('Dimensions');
?>
</h1>
<?php 
end_slot();
?>

<?php 
get_component('bottomArticlesWidget', 'render');
?>

<?php 
slot('content');
?>

<div id="roofcarousel" class="roofcarousel">
    <div class="boxinrighttop">
        <ul>
            <?php 
foreach ($data as $index => $info) {
    ?>
             <li>
                <div class="roofimg">
                    <div class="roofid" style="display:none"><?php 
    echo $index;
    ?>
Exemplo n.º 21
0
<?php

if ($eid) {
    echo get_component('cataloguewidget', 'properties', array('table' => 'loans', 'eid' => $eid));
} else {
    echo __('Please save your loan in order to add properties');
}
Exemplo n.º 22
0
<?php

use_helper('opAlbum');
?>

<?php 
decorate_with('layoutB');
slot('op_sidemenu', get_component('album', 'sidemenu', array('member' => $member)));
?>

<?php 
if ($sf_user->getMemberId() === $member->getId()) {
    op_include_box('newalbumLink', link_to(__('Post a album'), 'album_new'), array('title' => __('Post a album')));
}
?>

<?php 
$title = __('albums of %1%', array('%1%' => $member->getName()));
if ($pager->getNbResults()) {
    ?>
<div class="dparts recentAlbumList"><div class="parts">
<div class="partsHeading"><h3><?php 
    echo $title;
    ?>
</h3></div>
<?php 
    echo op_include_pager_navigation($pager, 'album/listMember?page=%d&id=' . $member->getId());
    ?>

<?php 
    foreach ($pager->getResults() as $album) {
 public function getComponent($moduleName, $componentName, $vars = null)
 {
     $this->getContext()->getConfiguration()->loadHelpers('Partial');
     $vars = null !== $vars ? $vars : $this->varHolder->getAll();
     return get_component($moduleName, $componentName, $vars);
 }
Exemplo n.º 24
0
<?php 
if (0 < count($resource->digitalObjects)) {
    ?>

  <?php 
    echo get_partial('digitalobject/metadata', array('resource' => $resource->digitalObjects[0]));
    ?>

  <?php 
    echo get_partial('digitalobject/rights', array('resource' => $resource->digitalObjects[0]));
    ?>

<?php 
}
?>

<div class="section" id="accessionArea">

  <h2><?php 
echo __('Accession area');
?>
</h2>

  <?php 
echo get_component('informationobject', 'accessions', array('resource' => $resource));
?>

</div> <!-- /.section#accessionArea -->

<?php 
echo get_partial('informationobject/actions', array('resource' => $resource));
Exemplo n.º 25
0
<?php

echo get_component('cataloguewidget', 'informativeWorkflow', array('table' => 'people', 'eid' => $eid, 'view' => true));
Exemplo n.º 26
0
<?php

echo get_component('cataloguewidgetview', 'extLinks', array('table' => 'specimens', 'eid' => $eid));
Exemplo n.º 27
0
 public function renderComponent($moduleName, $componentName, $vars = array())
 {
     $this->context->getConfiguration()->loadHelpers('Partial');
     return get_component($moduleName, $componentName, $vars);
 }
Exemplo n.º 28
0
/**
 * Displays a tree administration panel.
 *
 * @package    Reditype
 * @subpackage helper
 * @author     Piers Warmers <*****@*****.**>
 * @param      string $model
 * @param      string $field
 * @param      string $root
 * @return     string
 */
function get_tree_manager($model, $field, $root = 0)
{
    if (!sfConfig::has('app_sfJqueryTree_withContextMenu')) {
        sfConfig::set('app_sfJqueryTree_withContextMenu', true);
    }
    sfContext::getInstance()->getResponse()->addStylesheet('/rtCorePlugin/vendor/jsTree/themes/default/style.css');
    sfContext::getInstance()->getResponse()->addJavascript('/rtCorePlugin/vendor/jquery/js/jquery.min.js');
    sfContext::getInstance()->getResponse()->addJavascript('/rtCorePlugin/vendor/jsTree/lib/jquery.cookie.js');
    sfContext::getInstance()->getResponse()->addJavascript('/rtCorePlugin/vendor/jsTree/jquery.tree.js');
    sfContext::getInstance()->getResponse()->addJavascript('/rtCorePlugin/vendor/jsTree/plugins/jquery.tree.cookie.js');
    sfContext::getInstance()->getResponse()->addJavascript('/rtCorePlugin/vendor/jsTree/plugins/jquery.tree.contextmenu.js');
    return get_component('rtTreeAdmin', 'manager', array('model' => $model, 'field' => $field, 'root' => $root));
}
/**
 * Return the HTML code for an unordered list showing opinions that can be voted (no AJAX)
 * If the user has already voted, then a message appears
 * 
 * @param  BaseObject  $object   Propel object instance to vote
 * @param  string      $message  a message string to be displayed in the voting-message block
 * @param  array       $options  Array of HTML options to apply on the HTML list
 * @return string
 **/
function depp_voter_no_ajax($object, $message = '', $options = array())
{
    if (is_null($object)) {
        sfLogger::getInstance()->debug('A NULL object cannot be voted');
        return '';
    }
    $results = get_component('deppVoting', 'votingDetails', array('object' => $object));
    $user_id = deppPropelActAsVotableBehaviorToolkit::getUserId();
    // anonymous votes
    if ((is_null($user_id) || $user_id == '') && !$object->allowsAnonymousVoting()) {
        $msg = "<ul id='voting-items'>" . link_to('<li>' . image_tag('/images/btn-voted-yes.png', array('alt' => 'effettua il login per votare')) . '</li><li>' . image_tag('/images/btn-voted-no.png', array('alt' => 'effettua il login per votare')) . '</li></ul><br />effettua il login per votare', '/login');
        return content_tag('div', $msg, array('id' => 'voting-message')) . content_tag('div', $results, array('id' => 'voting-results'));
    }
    try {
        $options = _parse_attributes($options);
        if (!isset($options['id'])) {
            $options = array_merge($options, array('id' => 'voting-items'));
        }
        if ($object instanceof sfOutputEscaperObjectDecorator) {
            $object_class = get_class($object->getRawValue());
        } else {
            $object_class = get_class($object);
        }
        $object_id = $object->getReferenceKey();
        $token = deppPropelActAsVotableBehaviorToolkit::addTokenToSession($object_class, $object_id);
        // already voted
        if ($object->hasBeenVotedByUser($user_id)) {
            $message .= "&nbsp;" . link_to(__('Take your vote back'), sprintf('deppVoting/unvoteNoAjax?token=%s', $token), array('post' => true));
        }
        $list_content = '';
        for ($i = 1; $i >= -1; $i -= 2) {
            $text = $i == 1 ? 'yes' : 'no';
            $label = sprintf(__('Vote %s!'), $text);
            if ($object->hasBeenVotedByUser($user_id)) {
                $image_name = $object->getUserVoting($user_id) == $i ? "btn-has-voted-{$text}.png" : "btn-non-voted-{$text}.png";
                $list_content .= content_tag('li', image_tag($image_name, $label));
            } else {
                $list_content .= content_tag('li', link_to(image_tag("btn-vote-{$text}.png", $label), sprintf('deppVoting/voteNoAjax?token=%s&voting=%d', $token, $i), array('post' => true)));
            }
        }
        return content_tag('ul', $list_content, $options) . content_tag('div', $message, array('id' => 'voting-message')) . content_tag('div', $results, array('id' => 'voting-results'));
    } catch (Exception $e) {
        sfLogger::getInstance()->err('Exception catched from sf_rater helper: ' . $e->getMessage());
    }
}
Exemplo n.º 30
0
<footer class="footer">

  <?php 
if (QubitAcl::check('userInterface', 'translate')) {
    ?>
    <?php 
    echo get_component('sfTranslatePlugin', 'translate');
    ?>
  <?php 
}
?>

  <?php 
echo get_component_slot('footer');
?>

    <div class="footer-container">
      <div class="container">
        <div class="col-md-2 text-center">
          <?php 
echo image_tag('/plugins/arKbStyle2Plugin/images/kb_logo_black.svg');
?>
        </div>
        <div class="col-md-10 text-black">
          <p>
            <strong><a href="http://www.kb.se" alt="Länk till Kungl. bibliotekets webbplats">
              KUNGL. BIBLIOTEKET
            </a></strong>
            <br>
            <span>Support: <a href="mailto:test.test@kb.se">test.test@kb.se</a></span>
          </p>