1 (function( $, undefined ) {
3 $.widget( "mobile.barlayout", $.mobile.widget, {
8 initSelector: ":jqmData(role='header'), :jqmData(role='footer')"
13 /* this call api will be moved to jquery.mobile.page.section.js patch */
14 /* call _generateFooter in header(just 1 time in first step) because to calculate another layout width footer/header */
15 /* skip below step to attach bind/addclass only 1 time */
16 self._generateFooter();
17 self._addBackbutton();
18 self._disableSelection();
19 self._disableContext();
23 * because minimum fixed bar needs to attach back button
24 * check footer exist on current page, then check footer-Exist option check */
25 _generateFooter: function(){
28 $elPage = $el.closest( ".ui-page" ),
31 if ( $elPage.children(":jqmData(role='footer')").length == 0 && $elPage.data().page.options.footerExist != false ) {
32 dummyFooter = $( "<div data-role='footer' class='ui-footer ui-bar-s ui-footer-fixed fade ui-fixed-overlay' data-position='fixed'></div>" )
33 .insertAfter( $elPage.find( ".ui-content" ) );
37 _addBackbutton: function( target, status ) {
38 // need to add parameter target wherels this requert occurs header/footer
41 $elHeader = $( this.element ).jqmData( "role" )=="header" ? self.element : $el.siblings( ":jqmData(role='header')" ),
42 $elFooter = $( this.element ).jqmData( "role" )=="footer" ? self.element : $el.siblings( ":jqmData(role='footer')" ),
43 $elPage = $el.closest( ".ui-page" ),
45 attachElement = $elFooter,
46 o = $elPage.data( "page" ).options;
48 /* Back button skip case :
50 * 2. footer does not exit
51 * 3. user define data-add-Back-Btn = "false"
53 if ( status != "external" ) {
54 if ( $elFooter.children( ":jqmData(role='controlbar')" ).jqmData( "style" ) == "tabbar" || $elPage.data().page.options.footerExist == false || $elPage.data().page.options.addBackBtn == "none" ) {
59 $elPage.data().page.options.addBackBtn == "header"? attachElement = $elHeader : attachElement = $elFooter;
61 backBtn = $( "<a href='#' class='ui-btn-back' data-"+ $.mobile.ns +"rel='back'></a>" )
62 .buttonMarkup( {icon: "header-back-btn", theme : "s"} );
64 if ( status == "external" ) {
65 if ( $el.is(".ui-page") ) {
66 $elHeader = $el.find( ":jqmData(role='header')" );
67 $elFooter = $el.find( ":jqmData(role='footer')" );
68 target == "header" ? attachElement = $elHeader : attachElement = $elFooter;
72 if ( attachElement.find(".ui-btn-back").length == 0 ) {
73 backBtn.prependTo( attachElement );
77 if ( $elPage.jqmData( "url" ) !== $.mobile.path.stripHash( location.hash ) ) {
78 if ( attachElement.find(".ui-btn-back").length == 0) {
79 backBtn.prependTo( attachElement );
83 /* jQM 1.1.0 do not need this code
84 * navigation.js control whote back button */
85 /* backBtn.bind( "vclick", function( event ) {
86 window.history.back();
90 _disableSelection : function() {
93 $elHeader = $( this.element ).jqmData( "role" )=="header" ? self.element : $el.siblings( ":jqmData(role='header')" ),
94 $elFooter = $( this.element ).jqmData( "role" )=="footer" ? self.element : $el.siblings( ":jqmData(role='footer')" );
96 $.mobile.tizen.disableSelection( $elHeader );
97 $.mobile.tizen.disableSelection( $elFooter );
100 _disableContext : function() {
103 $elHeader = $( this.element ).jqmData( "role" )=="header" ? self.element : $el.siblings( ":jqmData(role='header')" ),
104 $elFooter = $( this.element ).jqmData( "role" )=="footer" ? self.element : $el.siblings( ":jqmData(role='footer')" );
106 $.mobile.tizen.disableContextMenu( $elHeader );
107 $.mobile.tizen.disableContextMenu( $elFooter );
110 addBackBtn : function(target) {
111 this._addBackbutton( target, "external" );
116 var self = $( this.element );
118 self.siblings( ".ui-content" ).pagelayout( "updatePageLayout" );
122 var self = $( this.element );
124 self.siblings( ".ui-content" ).pagelayout( "updatePageLayout" );
128 $( document ).bind("pagecreate", function( e ){
129 $.mobile.barlayout.prototype.enhanceWithin( e.target );