Presented by Steve Persch (@stevector)
Senior Engineer and Team Lead at Palantir.net
@stevector on Twitter
Los AngelesAustinPortlandAmsterdamPragueMunichImagine how hard it would be to make a select element in the 1990s or 2000s if it didn't exist. How hard to style.
Your user agent does not support the HTML5 Audio element.
Your user agent does not support the HTML5 Audio element.
After 10ish years of debate. Usage of HTML5 elements is normal. Easier to imagine getting by without them. Easier to customize.You don't need them. Customization/Extension is built in.
dist/ ├── layout.html ├── platform.js ├── polymer.html ├── polymer.js ├── polymer.js.map ├── x-gif.angular.js ├── x-gif.css ├── x-gif.html ├── x-gif.js └── x-gif.local.html
< ? php print $front; ?>< ?php print $back; ?>
stdClass Object ( [vid] => 1 [uid] => 1 [title] => This is an Article [log] => [status] => 1 [comment] => 0 [promote] => 1 [sticky] => 0 [nid] => 1 [type] => article [language] => und [created] => 1431529567 [changed] => 1431529567 [tnid] => 0 [translate] => 0 [revision_timestamp] => 1431529567 [revision_uid] => 1 [body] => Array ( [und] => Array ( [0] => Array ( [value] => With a Body field! [summary] => [format] => plain_text [safe_value] =>
With a Body field!
[safe_summary] => ) ) ) [name] => admin [picture] => 0 [data] => b:0; [entity_view_prepared] => 1$handler = new stdClass(); $handler->disabled = FALSE; /* Edit this to true to make a default handler disabled initially */ $handler->api_version = 1; $handler->name = 'node_view_panel_context'; $handler->task = 'node_view'; $handler->subtask = ''; $handler->handler = 'panel_context'; $handler->weight = 1; $handler->conf = array( 'title' => 'Person', 'no_blocks' => 0, 'pipeline' => 'standard', 'body_classes_to_remove' => '', 'body_classes_to_add' => '', 'css_id' => '', 'css' => '', 'contexts' => array(), 'relationships' => array(), 'access' => array( 'logic' => 'and', 'plugins' => array( 0 => array( 'name' => 'node_type', 'settings' => array( 'type' => array( 'person' => 'person', ), ), 'context' => 'argument_entity_id:node_1', 'not' => FALSE, ), ), ), ); $display = new panels_display(); $display->layout = 'onecol'; $display->layout_settings = array(); $display->panel_settings = array( 'style_settings' => array( 'default' => NULL, 'middle' => NULL, ), ); $display->cache = array(); $display->title = '%node:title'; $display->content = array(); $display->panels = array(); $pane = new stdClass(); $pane->pid = 'new-1'; $pane->panel = 'middle'; $pane->type = 'custom'; $pane->subtype = 'custom'; $pane->shown = TRUE; $pane->access = array( 'plugins' => array( 0 => array( 'name' => 'entity_field_value:node:person:field_ref_term_designation', 'settings' => array( 'field_ref_term_designation' => array( 'und' => array( 0 => array( 'tid' => '73', ), ), ), 'field_ref_term_designation_tid' => array( 73 => '73', 1 => NULL, 2 => NULL, 3 => NULL, 72 => NULL, ), ), 'context' => 'argument_entity_id:node_1', 'not' => FALSE, ), ), ); $pane->configuration = array( 'admin_title' => 'Honorary Member', 'title' => '', 'body' => '
function render_a_panel($nodes_or_other_data, $name_of_panels_config) { // Each Panels layout plugin becomes a theme hook. $name_of_theme_hook = $this->get_theme_hook_name($name_of_panels_config); // Panels stringifies render arrays before passing to theme(). $printable_vars = $this->get_printable_vars($nodes_or_other_data, $name_of_panels_config); // Dead simple insertion of variables into a template. return theme($name_of_theme_hook, $printable_vars); }
vendor/ ├── autoload.php ├── behat ├── bin ├── composer ├── doctrine ├── easyrdf ├── egulias ├── fabpot ├── guzzlehttp ├── masterminds ├── mikey179 ├── phpunit ├── psr ├── react ├── sdboyer ├── sebastian ├── symfony ├── symfony-cmf ├── twig └── zendframework
assets/vendor/ ├── backbone ├── ckeditor ├── classList ├── domready ├── farbtastic ├── html5shiv ├── jquery ├── jquery-form ├── jquery-joyride ├── jquery-once ├── jquery-ui-touch-punch ├── jquery.cookie ├── jquery.ui ├── matchMedia ├── modernizr ├── normalize-css ├── picturefill └── underscore
John Albin Wikins in Drupal 7 module development(Packt Publishing)
Each internal layer of Drupal is reflected in the markupYou can debate endlessly whether a given html element should be coming out of a given theme hook or it's parent. Are you theming the Views row? Or the thing in the Row?Whichever is the Panel. Whichever is the web component.WikipediaUsed by riot.js and Backbone (kind of)
WikipediaUsed by Knockout.js
WikipediaUsed by Drupal?
$plugin = array( 'title' => t('Three column 33/34/33 stacked'), 'category' => t('Columns: 3'), 'icon' => 'threecol_33_34_33_stacked.png', 'theme' => 'panels_threecol_33_34_33_stacked', 'css' => 'threecol_33_34_33_stacked.css', 'regions' => array( 'top' => t('Top'), 'left' => t('Left side'), 'middle' => t('Middle column'), 'right' => t('Right side'), 'bottom' => t('Bottom') ), );