1 |
85ad3d82
|
Assos Assos
|
<?php
|
2 |
|
|
|
3 |
|
|
/**
|
4 |
|
|
* @file
|
5 |
|
|
* Implimentation of an Adaptivetheme Panels Layout Plugin
|
6 |
|
|
* A panels layout plugin on steroids and an implementation of
|
7 |
|
|
* hook_panels_layouts().
|
8 |
|
|
*
|
9 |
|
|
* These plugins must use the function method - Panels can support two
|
10 |
|
|
* methods, one that uses a function name and one that simply defines
|
11 |
|
|
* a $plugins array. You MUST use the function method, which requires
|
12 |
|
|
* correct naming of the function:
|
13 |
|
|
* function [theme name]_[plugin name]_panels_layouts()
|
14 |
|
|
*
|
15 |
|
|
* Adaptivetheme needs more data to build the actual CSS since it does not use
|
16 |
|
|
* Panels normal method of defining a static CSS file. In AT the CSS is built
|
17 |
|
|
* programmatically for each selected option when the user saves the theme
|
18 |
|
|
* settings. This is for two main reasons - first so we are optimizing the
|
19 |
|
|
* CSS and not adding any duplicate CSS declarations, and secondly so we can
|
20 |
|
|
* easily insert the CSS into the right media query in the generated stylsheet.
|
21 |
|
|
*
|
22 |
|
|
* Adding Selectors and CSS Declarations:
|
23 |
|
|
* Each CSS declaration is an array, keyed by an "identifier". The array items
|
24 |
|
|
* are selector/css pairs. For example:
|
25 |
|
|
* '40' => array('.five-5x20 .row-1' => 'width:40%'),
|
26 |
|
|
* Here '40' is the identifier, '.five-5x20 .row-1' is the selector and 'width:40%'
|
27 |
|
|
* is the actual CSS style.
|
28 |
|
|
*
|
29 |
|
|
* Identifiers:
|
30 |
|
|
* Each identifier represents a CSS style. It's basically shorthand notation for the
|
31 |
|
|
* actual CSS. To ensure the CSS is optimized as much as possible you should use an
|
32 |
|
|
* existing identifier if it exists, although you can use your own, just make sure
|
33 |
|
|
* to re-use them as much as possible in order to get the smallest CSS files -
|
34 |
|
|
* here is a full list of the existing identifiers used by AT Core Panels plugins:
|
35 |
|
|
|
36 |
|
|
Basic Widths (all must be in percentages):
|
37 |
|
|
|
38 |
|
|
ID CSS
|
39 |
|
|
|
40 |
|
|
'25' 'width:25%'
|
41 |
|
|
'33' 'width:33.333333%'
|
42 |
|
|
'40' 'width:40%'
|
43 |
|
|
'50' 'width:50%'
|
44 |
|
|
'60' 'width:60%'
|
45 |
|
|
'66' 'width:66.666666%'
|
46 |
|
|
'75' 'width:75%'
|
47 |
|
|
'100' 'width:100%'
|
48 |
|
|
|
49 |
|
|
Floats with widths:
|
50 |
|
|
|
51 |
|
|
'25fl' 'width:25%;float:left'
|
52 |
|
|
'25fr' 'width:25%;float:right'
|
53 |
|
|
'33fl' 'width:33.333333%;float:left'
|
54 |
|
|
'50fl' 'width:50%;float:left'
|
55 |
|
|
'75fl' 'width:75%;float:left'
|
56 |
|
|
'75fr' 'width:75%;float:right'
|
57 |
|
|
|
58 |
|
|
Floats:
|
59 |
|
|
|
60 |
|
|
'fl' 'float:left'
|
61 |
|
|
'fr' 'float:right'
|
62 |
|
|
'fn' 'float:none'
|
63 |
|
|
|
64 |
|
|
Stacked Regions get a specail cased identifier:
|
65 |
|
|
|
66 |
|
|
'fdw' 'float:none;display:block;width:100%;clear:both'
|
67 |
|
|
|
68 |
|
|
*/
|
69 |
|
|
|
70 |
|
|
function adaptivetheme_five_5x20_panels_layouts() {
|
71 |
|
|
$items['five_5x20'] = array(
|
72 |
|
|
'title' => t('AT Five column 5x20'),
|
73 |
|
|
'category' => t('AT Responsive Panels - 4,5,6 column'),
|
74 |
|
|
'icon' => 'five_5x20.png', // Used in Panels Admin only. AT Core uses a CSS sprite for the icons in theme settings.
|
75 |
|
|
'theme' => 'five_5x20',
|
76 |
|
|
'admin css' => 'five_5x20.admin.css', // This holds a basic layout for Panels Admin and the CSS for theme settings sprite. Sprite icons must be 40px by 40px.
|
77 |
|
|
'theme arguments' => array('id', 'content'),
|
78 |
|
|
'regions' => array(
|
79 |
|
|
'five_first' => t('Column 1'),
|
80 |
|
|
'five_second' => t('Column 2'),
|
81 |
|
|
'five_third' => t('Column 3'),
|
82 |
|
|
'five_fourth' => t('Column 4'),
|
83 |
|
|
'five_fifth' => t('Column 5'),
|
84 |
|
|
),
|
85 |
|
|
|
86 |
|
|
// The array items below are added by Adaptivetheme and are not normally present
|
87 |
|
|
// in a Panels layout plugin. AT uses these to build the theme settings and generate
|
88 |
|
|
// the CSS used when rendering the layout in the front end.
|
89 |
|
|
'type' => 'five', // - type: dictates what group it will fall into in theme settings.
|
90 |
|
|
'options' => array( // - options: the various layout options the user can choose in theme settings for each device group.
|
91 |
|
|
'five-5x20' => 'default', // - option key: the key used here MUST match the key used in the 'styles', the first one must be called 'default'.
|
92 |
|
|
'five-5x20-2x3-grid' => '2/3 split grid',
|
93 |
|
|
'five-5x20-1x2x2-grid' => 'stack',
|
94 |
|
|
'five-5x20-stack-2' => 'Stack 50/50 bottom',
|
95 |
|
|
'five-5x20-stack' => 'stack', // stack should always refer to "all regions stacked", and use the 'fdw' identifier in 'styles'.
|
96 |
|
|
),
|
97 |
|
|
'styles' => array( // - styles: these items are used to programatically build and optimize the CSS for each break-point.
|
98 |
|
|
'five-5x20' => array( // - styles keys: these key must match the 'options' keys, the first one must be the default.
|
99 |
|
|
'css' => array( // - css: holds the array of CSS identifiers
|
100 |
|
|
'40' => array('.five-5x20 > .row-1' => 'width:40%'), // selectors as keys, CSS as values, values should align to the the "css" array key identifiers.
|
101 |
|
|
'60' => array('.five-5x20 > .row-2' => 'width:60%'),
|
102 |
|
|
'fl' => array('.five-5x20 > .panel-row' => 'float:left'),
|
103 |
|
|
'50' => array('.five-5x20 > .row-1 > .region' => 'width:50%'),
|
104 |
|
|
'33' => array('.five-5x20 > .row-2 > .region' => 'width:33.333333%'),
|
105 |
|
|
),
|
106 |
|
|
),
|
107 |
|
|
'five-5x20-2x3-grid' => array(
|
108 |
|
|
'css' => array(
|
109 |
|
|
'33' => array('.five-5x20 > .panel-row > .region' => 'width:33.333333%'),
|
110 |
|
|
'50' => array('.five-5x20 > .row-1 div.region-five-first,.five-5x20 .row-1 div.region-five-second' => 'width:50%'),
|
111 |
|
|
'fdw' => array('.five-5x20 > .panel-row' => 'float:none;display:block;width:100%;clear:both'),
|
112 |
|
|
),
|
113 |
|
|
),
|
114 |
|
|
'five-5x20-1x2x2-grid' => array(
|
115 |
|
|
'css' => array(
|
116 |
|
|
'50' => array('.five-5x20 > .panel-row > div.region' => 'width:50%'),
|
117 |
|
|
'fdw' => array('.five-5x20 > div.panel-row,.five-5x20 > div.panel-row > div.region-five-fifth' => 'float:none;display:block;width:100%;clear:both'),
|
118 |
|
|
),
|
119 |
|
|
),
|
120 |
|
|
'five-5x20-stack-2' => array(
|
121 |
|
|
'css' => array(
|
122 |
|
|
'50' => array('.five-5x20 > .row-1 > div.region' => 'width:50%'),
|
123 |
|
|
'fdw' => array('.five-5x20 > .panel-row,.five-5x20 > .row-2 > .region' => 'float:none;display:block;width:100%;clear:both'),
|
124 |
|
|
),
|
125 |
|
|
),
|
126 |
|
|
'five-5x20-stack' => array(
|
127 |
|
|
'css' => array(
|
128 |
|
|
'fdw' => array('.five-5x20 > .panel-row > .region,.five-5x20 > .panel-row' => 'float:none;display:block;width:100%;clear:both'),
|
129 |
|
|
),
|
130 |
|
|
),
|
131 |
|
|
),
|
132 |
|
|
);
|
133 |
|
|
|
134 |
|
|
return $items;
|
135 |
|
|
}
|
136 |
|
|
|
137 |
|
|
/**
|
138 |
|
|
* Preprocess variables for five-5x20.tpl.php
|
139 |
|
|
*/
|
140 |
|
|
function template_preprocess_five_5x20(&$vars) {
|
141 |
74f6bef0
|
Assos Assos
|
/**
|
142 |
|
|
* We need to initialize these variables when Panels is displaying the template.
|
143 |
|
|
* These are used primarily when the template is being rendered via Display suite
|
144 |
|
|
* as a "node" so we can programatically wrap the layout in <article> elements
|
145 |
|
|
* with appropriate classes and id.
|
146 |
|
|
*
|
147 |
|
|
* Note that in Display Suite layout plugin preprocess and process functions are
|
148 |
|
|
* not fired, instead we need to use the functions for the template being
|
149 |
|
|
* modified by DS, such as node, user or search. AT Core sets these prefix and
|
150 |
|
|
* suffix vars for nodes in adaptivetheme_process_node().
|
151 |
|
|
*/
|
152 |
85ad3d82
|
Assos Assos
|
$vars['panel_prefix'] = '';
|
153 |
|
|
$vars['panel_suffix'] = '';
|
154 |
|
|
} |