123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715 |
- <?php
- /**
- * Returns HTML for a query pager.
- *
- * Menu callbacks that display paged query results should call theme('pager') to
- * retrieve a pager control so that users can view other results. Format a list
- * of nearby pages with additional query results.
- *
- * @param $variables
- * An associative array containing:
- * - tags: An array of labels for the controls in the pager.
- * - element: An optional integer to distinguish between multiple pagers on
- * one page.
- * - parameters: An associative array of query string parameters to append to
- * the pager links.
- * - quantity: The number of pages in the list.
- *
- * @ingroup themeable
- */
- function materiobasetheme_pager($variables) {
- $tags = $variables['tags'];
- $element = $variables['element'];
- $parameters = $variables['parameters'];
- $quantity = $variables['quantity'];
- global $pager_page_array, $pager_total;
- // Calculate various markers within this pager piece:
- // Middle is used to "center" pages around the current page.
- $pager_middle = ceil($quantity / 2);
- // current is the page we are currently paged to
- $pager_current = $pager_page_array[$element] + 1;
- // first is the first page listed by this pager piece (re quantity)
- $pager_first = $pager_current - $pager_middle + 1;
- // last is the last page listed by this pager piece (re quantity)
- $pager_last = $pager_current + $quantity - $pager_middle;
- // max is the maximum page number
- $pager_max = $pager_total[$element];
- // End of marker calculations.
- // Prepare for generation loop.
- $i = $pager_first;
- if ($pager_last > $pager_max) {
- // Adjust "center" if at end of query.
- $i = $i + ($pager_max - $pager_last);
- $pager_last = $pager_max;
- }
- if ($i <= 0) {
- // Adjust "center" if at start of query.
- $pager_last = $pager_last + (1 - $i);
- $i = 1;
- }
- // End of generation loop preparation.
- $li_first = theme('pager_first', array('text' => (isset($tags[0]) ? $tags[0] : t('‹‹')), 'element' => $element, 'parameters' => $parameters));
- $li_previous = theme('pager_previous', array('text' => (isset($tags[1]) ? $tags[1] : t('‹')), 'element' => $element, 'interval' => 1, 'parameters' => $parameters));
- $li_next = theme('pager_next', array('text' => (isset($tags[3]) ? $tags[3] : t('›')), 'element' => $element, 'interval' => 1, 'parameters' => $parameters));
- $li_last = theme('pager_last', array('text' => (isset($tags[4]) ? $tags[4] : t('››')), 'element' => $element, 'parameters' => $parameters));
- if ($pager_total[$element] > 1) {
- if ($li_first) {
- $items[] = array(
- 'class' => array('pager-first'),
- 'data' => $li_first,
- );
- }
- if ($li_previous) {
- $items[] = array(
- 'class' => array('pager-previous'),
- 'data' => $li_previous,
- );
- }
- // When there is more than one page, create the pager list.
- if ($i != $pager_max) {
- if ($i > 1) {
- $items[] = array(
- 'class' => array('pager-ellipsis'),
- 'data' => '…',
- );
- }
- // Now generate the actual pager piece.
- for (; $i <= $pager_last && $i <= $pager_max; $i++) {
- if ($i < $pager_current) {
- $items[] = array(
- 'class' => array('pager-item'),
- 'data' => theme('pager_previous', array('text' => $i, 'element' => $element, 'interval' => ($pager_current - $i), 'parameters' => $parameters)),
- );
- }
- if ($i == $pager_current) {
- $items[] = array(
- 'class' => array('pager-current'),
- 'data' => $i,
- );
- }
- if ($i > $pager_current) {
- $items[] = array(
- 'class' => array('pager-item'),
- 'data' => theme('pager_next', array('text' => $i, 'element' => $element, 'interval' => ($i - $pager_current), 'parameters' => $parameters)),
- );
- }
- }
- if ($i < $pager_max) {
- $items[] = array(
- 'class' => array('pager-ellipsis'),
- 'data' => '…',
- );
- }
- }
- // End generation.
- if ($li_next) {
- $items[] = array(
- 'class' => array('pager-next'),
- 'data' => $li_next,
- );
- }
- if ($li_last) {
- $items[] = array(
- 'class' => array('pager-last'),
- 'data' => $li_last,
- );
- }
- return '<h2 class="element-invisible">' . t('Pages') . '</h2>' . theme('item_list', array(
- 'items' => $items,
- 'attributes' => array('class' => array('pager')),
- ));
- }
- }
- /**
- * Theme the loggedinblock that shows for logged-in users.
- */
- function materiobasetheme_lt_loggedinblock($variables){
- global $user;
- // return theme('username', array('account' => $variables['account'], 'link_path'=>'user/'.$user->uid.'/edit')) .' | ' . l(t('Log out'), 'user/logout');
- return l('<i class="fi-torso large"></i><span class="account">' . $user->mail . '</span> ', 'user/'.$user->uid.'/edit', array('html'=>true))
- . l('<i class="fi-power"></i><span class="logout">' . t('Log out') . '</span>', 'user/logout', array('html' => true));
- }
- function materiobasetheme_links__locale_block(&$vars) {
- global $language;
- foreach ($vars['links'] as $lang => $link) {
- $vars['links'][$lang]['title'] = $lang;
- if($lang == $language->language)
- unset($vars['link'][$lang]);
- }
- $content = theme_links($vars);
- return $content;
- }
- /**
- * Returns HTML for an image field formatter.
- *
- * @param $variables
- * An associative array containing:
- * - item: Associative array of image data, which may include "uri", "alt",
- * "width", "height", "title" and "attributes".
- * - image_style: An optional image style.
- * - path: An array containing the link 'path' and link 'options'.
- *
- * @ingroup themeable
- */
- function materiobasetheme_image_formatter($variables) {
- // dsm($variables, 'image_formatter');
- $item = $variables['item'];
- $image = array(
- 'path' => $item['uri'],
- );
- if (array_key_exists('alt', $item)) {
- $image['alt'] = $item['alt'];
- }
- if (isset($item['attributes'])) {
- $image['attributes'] = $item['attributes'];
- }
- if (isset($item['width']) && isset($item['height'])) {
- $image['width'] = $item['width'];
- $image['height'] = $item['height'];
- }
- // Do not output an empty 'title' attribute.
- if (isset($item['title']) && drupal_strlen($item['title']) > 0) {
- $image['title'] = $item['title'];
- }
- #added
- if(isset($item['delta'])) {
- $image['delta'] = $item['delta'];
- }
- if ($variables['image_style']) {
- $image['style_name'] = $variables['image_style'];
- $output = theme('image_style', $image);
- }
- else {
- $output = theme('image', $image);
- }
- // The link path and link options are both optional, but for the options to be
- // processed, the link path must at least be an empty string.
- if (isset($variables['path']['path'])) {
- $path = $variables['path']['path'];
- $options = isset($variables['path']['options']) ? $variables['path']['options'] : array();
- // When displaying an image inside a link, the html option must be TRUE.
- $options['html'] = TRUE;
- $output = l($output, $path, $options);
- }
- return $output;
- }
- /**
- * Returns HTML for an image using a specific image style.
- *
- * @param $variables
- * An associative array containing:
- * - style_name: The name of the style to be used to alter the original image.
- * - path: The path of the image file relative to the Drupal files directory.
- * This function does not work with images outside the files directory nor
- * with remotely hosted images. This should be in a format such as
- * 'images/image.jpg', or using a stream wrapper such as
- * 'public://images/image.jpg'.
- * - width: The width of the source image (if known).
- * - height: The height of the source image (if known).
- * - alt: The alternative text for text-based browsers.
- * - title: The title text is displayed when the image is hovered in some
- * popular browsers.
- * - attributes: Associative array of attributes to be placed in the img tag.
- *
- * @ingroup themeable
- */
- function materiobasetheme_image_style($variables) {
- // dsm($variables, 'image_style');
- // Determine the dimensions of the styled image.
- $fig_dimensions = "";
- if(isset($variables['width']) || $variables['height']){
- $dimensions = array(
- 'width' => $variables['width'],
- 'height' => $variables['height'],
- );
- image_style_transform_dimensions($variables['style_name'], $dimensions);
- $variables['width'] = $dimensions['width'];
- $variables['height'] = $dimensions['height'];
- $fig_dimensions = 'width:'.$dimensions['width'].'px;height:'.$dimensions['height'].'px;';
- }
- // Determine the url for the styled image.
- $variables['path'] = image_style_url($variables['style_name'], $variables['path']);
- if(!isset($variables['attributes']))
- $variables['attributes'] = array();
- if(!isset($variables['attributes']['class']))
- $variables['attributes']['class'] = array();
- # hide title and alt for non adherent users
- global $user;
- if(!isset($user->roles[10]) // student
- && !isset($user->roles[11]) // alphatesteur
- && !isset($user->roles[6]) // adherent
- && !isset($user->roles[8]) // premium
- && !isset($user->roles[12]) // translator
- && !isset($user->roles[13]) // admin showroom
- && !isset($user->roles[3]) // admin
- && !isset($user->roles[4]) // root
- ){
- unset($variables['title']);
- unset($variables['alt']);
- }
- $figure = '<figure style="'.$fig_dimensions.'" ' . (isset($variables['title']) ? 'title="'.$variables['title'].'"' : '') . '>';
- // lazyload
- $excluded_styles = array('pdf', 'card-bookmark', 'content_full', 'content_teaser', 'didactique_page', 'publications-home', 'publication-couv');
- if(!in_array($variables['style_name'], $excluded_styles) && ( (isset($variables['delta']) && $variables['delta'] > 0) || !isset($variables['delta']) ) ){
- // store the real path
- $real_path = $variables['path'];
- $variables['attributes']['data-original'] = file_create_url($real_path);
- // add Class lazy for JS
- $variables['attributes']['class'][] = "lazy";
- // replace the image by a blank
- $variables['path'] = drupal_get_path('theme', 'materiobasetheme') . '/img/blank.gif';
- $figure .= theme('image', $variables);
- }else{
- # without lazyload
- $figure .= theme('image', $variables);
- }
- $figure .= '</figure>';
- return $figure;
- }
- /**
- * Returns HTML for a list or nested list of items.
- *
- * @param $variables
- * An associative array containing:
- * - items: An array of items to be displayed in the list. If an item is a
- * string, then it is used as is. If an item is an array, then the "data"
- * element of the array is used as the contents of the list item. If an item
- * is an array with a "children" element, those children are displayed in a
- * nested list. All other elements are treated as attributes of the list
- * item element.
- * - title: The title of the list.
- * - type: The type of list to return (e.g. "ul", "ol").
- * - attributes: The attributes applied to the list element.
- */
- function materiobasetheme_item_list($variables) {
- $items = $variables['items'];
- $title = $variables['title'];
- $type = $variables['type'];
- $attributes = $variables['attributes'];
- // Only output the list container and title, if there are any list items.
- // Check to see whether the block title exists before adding a header.
- // Empty headers are not semantic and present accessibility challenges.
- $output = '';
- if (isset($title) && $title !== '') {
- $output .= '<div class="item-list">';
- $output .= '<h3>' . $title . '</h3>';
- }
- if (!empty($items)) {
- $output .= "<$type" . drupal_attributes($attributes) . '>';
- $num_items = count($items);
- foreach ($items as $i => $item) {
- $attributes = array();
- $children = array();
- $data = '';
- if (is_array($item)) {
- foreach ($item as $key => $value) {
- if ($key == 'data') {
- $data = $value;
- }
- elseif ($key == 'children') {
- $children = $value;
- }
- else {
- $attributes[$key] = $value;
- }
- }
- }
- else {
- $data = $item;
- }
- if (count($children) > 0) {
- // Render nested list.
- $data .= theme_item_list(array('items' => $children, 'title' => NULL, 'type' => $type, 'attributes' => $attributes));
- }
- if ($i == 0) {
- $attributes['class'][] = 'first';
- }
- if ($i == $num_items - 1) {
- $attributes['class'][] = 'last';
- }
- $output .= '<li' . drupal_attributes($attributes) . '>' . $data . "</li>\n";
- }
- $output .= "</$type>";
- }
- if (isset($title) && $title !== '') {
- $output .= '</div>';
- }
- return $output;
- }
- /**
- * Returns HTML for a link to a file.
- *
- * @param $variables
- * An associative array containing:
- * - file: A file object to which the link will be created.
- * - icon_directory: (optional) A path to a directory of icons to be used for
- * files. Defaults to the value of the "file_icon_directory" variable.
- *
- * @ingroup themeable
- */
- function materiobasetheme_file_link($variables) {
- $file = $variables['file'];
- $icon_directory = $variables['icon_directory'];
- $url = file_create_url($file->uri);
- $icon = theme('file_icon', array('file' => $file, 'icon_directory' => $icon_directory));
- // Set options as per anchor format described at
- // http://microformats.org/wiki/file-format-examples
- $options = array(
- 'attributes' => array(
- 'type' => $file->filemime . '; length=' . $file->filesize,
- 'target' => '_blank',
- ),
- );
- // Use the description as the link text if available.
- if (empty($file->description)) {
- $link_text = $file->filename;
- }
- else {
- $link_text = $file->description;
- $options['attributes']['title'] = check_plain($file->filename);
- }
- return '<span class="file">' . $icon . ' ' . l($link_text, $url, $options) . '</span>';
- }
- /**
- * Implements hook_form_alter().
- */
- function materiobasetheme_form_alter(&$form, &$form_state, $form_id) {
- // dsm($form_id, 'form_id');
- if($form_id == "user_login_block"){
- // dsm($form, 'form');
- unset($form['links']);
- // $items = array();
- $newpass = l(t('Lost my password'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.'))));
- $form['newpass'] = array(
- '#prefix' => '<div class="newpass">',
- '#markup' => $newpass,
- '#suffix' => '</div>',
- );
- // if (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)) {
- // $form['actions']['#weight'] = 10;
- // $register = l(t('Get a free account'), 'user/register', array('attributes' => array('title' => t('Create a new user account.'))));
- // $form['register'] = array(
- // '#prefix' => '<div class="register">',
- // '#markup' => $register,
- // '#suffix' => '</div>',
- // '#weight' => 15,
- // );
- // }
- }
- }
- /**
- * Implements hook_block_view_alter().
- */
- function materiobasetheme_block_view_alter(&$data, $block) {
- // dsm($block, 'block');
- if ($block->module == 'menu' && $block->delta == 'menu-top-menu') {
- // dsm($block, 'block');
- // dsm($data, 'data');
- $data['subject'] = '<i class="icon-align-justify"></i><span class="menu-title">' . $data['subject'] . '</span>';
- }
- if ($block->module == 'materio_flag' && $block->delta == 'materio_flag_mylists_nav') {
- // dsm($block, 'block');
- // dsm($data, 'data');
- $data['subject'] = '<i class="fi-folder"></i><span class="menu-title">' . $data['subject'] . '</span>';
- }
- }
- /**
- * Themes the checkout review order page.
- *
- * @param $variables
- * An associative array containing:
- * - form: A render element representing the form, that by default includes
- * the 'Back' and 'Submit order' buttons at the bottom of the review page.
- * - panes: An associative array for each checkout pane that has information
- * to add to the review page, keyed by the pane title:
- * - <pane title>: The data returned for that pane or an array of returned
- * data.
- *
- * @return
- * A string of HTML for the page contents.
- *
- * @ingroup themeable
- */
- function materiobasetheme_uc_cart_checkout_review($variables) {
- $panes = $variables['panes'];
- $form = $variables['form'];
- drupal_add_css(drupal_get_path('module', 'uc_cart') . '/uc_cart.css');
- $output = '<div id="review-instructions">' . filter_xss_admin(t(variable_get('uc_checkout_review_instructions', uc_get_message('review_instructions')))) . '</div>';
- $output .= '<table class="order-review-table">';
- foreach ($panes as $title => $data) {
- $output .= '<tr class="pane-title-row">';
- $output .= '<td colspan="2">' . $title . '</td>';
- $output .= '</tr>';
- if (is_array($data)) {
- foreach ($data as $row) {
- if (is_array($row)) {
- if (isset($row['border'])) {
- $border = ' class="row-border-' . $row['border'] . '"';
- }
- else {
- $border = '';
- }
- $output .= '<tr' . $border . '>';
- $output .= '<td class="title-col">' . $row['title'] . ':</td>';
- $output .= '<td class="data-col">' . $row['data'] . '</td>';
- $output .= '</tr>';
- }
- else {
- $output .= '<tr><td colspan="2">' . $row . '</td></tr>';
- }
- }
- }
- else {
- $output .= '<tr><td colspan="2">' . $data . '</td></tr>';
- }
- }
- $output .= '<tr class="review-button-row">';
- $output .= '<td colspan="2">' . drupal_render($form) . '</td>';
- $output .= '</tr>';
- $output .= '</table>';
- return $output;
- }
- /**
- * Default theme function for the checkout form.
- *
- * @param $variables
- * An associative array containing:
- * - form: A render element representing the form.
- *
- * @see uc_cart_checkout_form()
- * @ingroup themeable
- */
- function materiobasetheme_uc_cart_checkout_form($variables) {
- $form = $variables['form'];
- // dsm($variables, "variables");
- // dsm($form, "form");
- // $form['panes']['cart']['#title'] = null;
- // $form['panes']['customer']['#title'] = null;
- $form['panes']['coupon']['#description'] = null;
- $bf = array("#type"=>"fieldset", "#collapsible"=>false);
- $layout = array(
- "first-row" => $bf + array(
- "#id"=>"first-row",
- "#attributes"=>array("class"=>array("form-row")),
- "column-left" =>$bf + array(
- "#id"=>"first-row-column-left",
- "#attributes"=>array("class"=>array("form-column", "form-column-left")),
- "customer"=>"#", "billing"=>"#",
- ),
- "column-right" =>$bf + array(
- "#id"=>"first-row-column-right",
- "#attributes"=>array("class"=>array("form-column", "form-column-right")),
- "cart"=>"#", "coupon_automatic"=>"#", "coupon"=>"#", "payment"=>"#",
- ),
- ),
- // "sec-row" => $bf + array(
- // "#id"=>"sec-row",
- // "#attributes"=>array("class"=>array("form-row")),
- // "column-left" =>$bf + array(
- // "#id"=>"sec-row-column-left",
- // "#attributes"=>array("class"=>array("form-column", "form-column-left")),
- // ),
- // "column-right" =>$bf + array(
- // "#id"=>"sec-row-column-right",
- // "#attributes"=>array("class"=>array("form-column", "form-column-right")),
- // ),
- // ),
- );
- foreach ($layout as $rowkey => $row) {
- foreach ($row as $collkey => $coll) {
- if($collkey[0] != "#"){
- foreach ($coll as $panekey => $pane) {
- if($panekey[0] != "#" && isset($form['panes'][$panekey])){
- $layout[$rowkey][$collkey][$panekey] = $form['panes'][$panekey];
- }
- }
- }
- }
- }
- // dsm($layout, 'layout');
- $form = $layout + $form;
- unset($form['panes']);
- return drupal_render_children($form);
- }
- function materiobasetheme_uc_coupon_automatic_discounts($variables) {
- $form = $variables['form'];
- // dsm($form, 'auto discount form');
- if( isset($form['discounts']['#items'])){
- }
- return drupal_render_children($form);
- }
- /**
- * Formats the cart contents table on the checkout page.
- *
- * @param $variables
- * An associative array containing:
- * - show_subtotal: TRUE or FALSE indicating if you want a subtotal row
- * displayed in the table.
- * - items: An associative array of cart item information containing:
- * - qty: Quantity in cart.
- * - title: Item title.
- * - price: Item price.
- * - desc: Item description.
- *
- * @return
- * The HTML output for the cart review table.
- *
- * @ingroup themeable
- */
- function materiobasetheme_uc_cart_review_table($variables) {
- $items = $variables['items'];
- $show_subtotal = $variables['show_subtotal'];
- $subtotal = 0;
- // Set up table header.
- // $header = array(
- // array('data' => theme('uc_qty_label'), 'class' => array('qty')),
- // array('data' => t('Products'), 'class' => array('products')),
- // array('data' => t('Price'), 'class' => array('price')),
- // );
- // Set up table rows.
- $display_items = uc_order_product_view_multiple($items);
- if (!empty($display_items['uc_order_product'])) {
- foreach (element_children($display_items['uc_order_product']) as $key) {
- $display_item = $display_items['uc_order_product'][$key];
- $subtotal += $display_item['total']['#price'];
- $rows[] = array(
- // array('data' => $display_item['qty'], 'class' => array('qty')),
- array('data' => $display_item['product'], 'class' => array('products')),
- array('data' => $display_item['total'], 'class' => array('price')),
- );
- }
- }
- // Add the subtotal as the final row.
- if ($show_subtotal) {
- $rows[] = array(
- 'data' => array(
- // One cell
- array(
- // 'data' => array(
- // '#theme' => 'uc_price',
- // '#prefix' => '<span id="subtotal-title">' . t('Subtotal:') . '</span> ',
- // '#price' => $subtotal,
- // ),
- 'data'=>'<span id="subtotal-title">' . t('Subtotal:') . '</span> ',
- // Cell attributes
- // 'colspan' => 2,
- 'class' => array('subtotal'),
- ),
- array(
- 'data'=>array(
- '#theme' => 'uc_price',
- '#price' => $subtotal,
- ),
- 'class' => array('price'),
- )
- ),
- // Row attributes
- 'class' => array('subtotal'),
- );
- }
- // return theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('class' => array('cart-review'))));
- return theme('table', array('rows' => $rows, 'attributes' => array('class' => array('cart-review'))));
- }
- /**
- * Themes cart items on the checkout review order page.
- *
- * @param $variables
- * An associative array containing:
- * - items: An associative array of cart item information containing:
- * - qty: Quantity in cart.
- * - title: Item title.
- * - price: Item price.
- * - desc: Item description.
- *
- * @return
- * A string of HTML for the page contents.
- *
- * @ingroup themeable
- */
- function materiobasetheme_uc_checkout_pane_cart_review($variables) {
- $rows = array();
- $items = uc_order_product_view_multiple($variables['items']);
- foreach (element_children($items['uc_order_product']) as $key) {
- $item = $items['uc_order_product'][$key];
- $rows[] = array(
- array('data' => $item['qty'], 'class' => array('qty')),
- array('data' => $item['product'], 'class' => array('products')),
- array('data' => $item['total'], 'class' => array('price')),
- );
- }
- return theme('table', array('rows' => $rows, 'attributes' => array('class' => array('cart-review'))));;
- }
|