1 From 259750f02a678feeb3ce1da00c8af596ab584303 Mon Sep 17 00:00:00 2001
2 From: Minkyu Kang <mk7.kang@samsung.com>
3 Date: Thu, 16 Feb 2012 18:01:41 +0900
4 Subject: [PATCH 2/2] JQM: Add back button into header/footer
7 .../js/jquery.mobile.page.sections.js | 105 +++++++++++++++++---
8 1 files changed, 91 insertions(+), 14 deletions(-)
10 diff --git a/libs/js/jquery-mobile-1.0.1pre/js/jquery.mobile.page.sections.js b/libs/js/jquery-mobile-1.0.1pre/js/jquery.mobile.page.sections.js
11 index 2317c0c..9c81ac6 100644
12 --- a/libs/js/jquery-mobile-1.0.1pre/js/jquery.mobile.page.sections.js
13 +++ b/libs/js/jquery-mobile-1.0.1pre/js/jquery.mobile.page.sections.js
16 -* This plugin handles theming and layout of headers, footers, and content areas
18 + * Page can be created using the calendarpicker() method or by adding a
19 + * data-role="page" attribute to an element.
21 + * Page has 3 main sub element. Header, Footer, Content
22 + * 3 sub element can be created using <div> element
26 + * data-back-Btn-Text : determine which text is displayed in back button
27 + * data-add-Back-Btn : Defines if header/footer has back button or not(default "false")
28 + * data-back-Btn-Theme : defines back button's theme
29 + * data-header-Theme = defines header <div>'s theme
30 + * data-footer-Theme = defines footer <div>'s theme
31 + * data-content-Theme = defines content <div>'s theme
32 + * data-footer-Exist = defines to show default footer or not in each page (SLP default true)
33 + * data-footer-User-Control-Theme = defines to show default footer in whole page(SLP default false. if true, all document do not has footer)
37 + * HTML markup for creating Page:
38 + * <div data-role="page">
40 + * How to show back button
41 + * <div data-role="page" id="no-contents-0" data-add-back-btn="true">
43 + * How to remove footer of specific page
44 + * <div data-role="page" id="no-contents-0" data-footer-Exist="false">
46 + * How to remove footer of whole page
47 + * <div data-role="page" id="no-contents-0" data-footer-User-Control="true">
50 (function( $, undefined ) {
51 @@ -10,29 +39,36 @@ $.mobile.page.prototype.options.backBtnTheme = null;
52 $.mobile.page.prototype.options.headerTheme = "a";
53 $.mobile.page.prototype.options.footerTheme = "a";
54 $.mobile.page.prototype.options.contentTheme = null;
55 +$.mobile.page.prototype.options.footerExist = true; /* SLP Default Footer : Jinhyuk */
56 +$.mobile.page.prototype.options.footerUserControl = false; /* SLP Default Footer : Jinhyuk */
58 $( ":jqmData(role='page'), :jqmData(role='dialog')" ).live( "pagecreate", function( e ) {
60 var $page = $( this ),
61 o = $page.data( "page" ).options,
62 - pageRole = $page.jqmData( "role" ),
65 $( ":jqmData(role='header'), :jqmData(role='footer'), :jqmData(role='content')", this ).each(function() {
66 var $this = $( this ),
67 role = $this.jqmData( "role" ),
68 theme = $this.jqmData( "theme" ),
69 - contentTheme = theme || o.contentTheme || ( pageRole === "dialog" && pageTheme ),
70 + contentTheme = theme || o.contentTheme || pageTheme,
75 + normalFooter, /* SLP Default Footer : Jinhyuk */
77 + footerExist = $this.jqmData("footerexist"); /* Footer on / off option : Wongi */
79 + if ( footerExist != undefined && (footerExist == true || footerExist == false) ){
80 + /*$.mobile.page.prototype.options.footerExist = footerExist;*/
81 + o.footerExist = footerExist;
84 $this.addClass( "ui-" + role );
86 //apply theming and markup modifications to page,header,content,footer
87 if ( role === "header" || role === "footer" ) {
89 var thisTheme = theme || ( role === "header" ? o.headerTheme : o.footerTheme ) || pageTheme;
92 @@ -47,20 +83,29 @@ $( ":jqmData(role='page'), :jqmData(role='dialog')" ).live( "pagecreate", functi
93 rightbtn = $headeranchors.hasClass( "ui-btn-right" );
95 leftbtn = leftbtn || $headeranchors.eq( 0 ).not( ".ui-btn-right" ).addClass( "ui-btn-left" ).length;
97 rightbtn = rightbtn || $headeranchors.eq( 1 ).addClass( "ui-btn-right" ).length;
99 + // set default userControl value _ SLP
100 + if( o.footerUserControl )
101 + $.mobile.page.prototype.options.footerUserControl = "true";
103 // Auto-add back btn on pages beyond first view
104 - if ( o.addBackBtn &&
105 - role === "header" &&
106 - $( ".ui-page" ).length > 1 &&
107 + // create backbtn in case footer exist _ SLP
108 + if( o.addBackBtn &&
110 + ( role === "footer" ) &&
111 $this.jqmData( "url" ) !== $.mobile.path.stripHash( location.hash ) &&
114 - backBtn = $( "<a href='#' class='ui-btn-left' data-"+ $.mobile.ns +"rel='back' data-"+ $.mobile.ns +"icon='arrow-l'>"+ o.backBtnText +"</a>" )
116 + backBtn = $( "<a href='#' class='ui-btn-back' data-"+ $.mobile.ns +"rel='back' data-"+ $.mobile.ns +"icon='header-back-btn'></a>" )
117 // If theme is provided, override default inheritance
118 .attr( "data-"+ $.mobile.ns +"theme", o.backBtnTheme || thisTheme )
119 - .prependTo( $this );
120 + .prependTo( $this );
122 + backBtn.bind( "vclick", function( event ) {
123 + window.history.back();
129 @@ -72,6 +117,10 @@ $( ":jqmData(role='page'), :jqmData(role='dialog')" ).live( "pagecreate", functi
134 + // prevent winset selection for header & footer
135 +// $this.preventDefaultBehaviour();
138 } else if ( role === "content" ) {
139 if ( contentTheme ) {
140 @@ -80,8 +129,36 @@ $( ":jqmData(role='page'), :jqmData(role='dialog')" ).live( "pagecreate", functi
143 $this.attr( "role", "main" );
145 + /* Add default footer to add backbtn */
146 + // set backbtn in case footer is not exist _ SLP
148 + if( o.footerExist ){
149 + backBtn = $( "<a href='#' class='ui-btn-back' data-"+ $.mobile.ns +"rel='back' data-"+ $.mobile.ns +"icon='header-back-btn'></a>" )
150 + .attr( "data-"+ $.mobile.ns +"theme", o.backBtnTheme || thisTheme );
151 + var footer = $page.find( "div:jqmData(role='footer')" );
153 + if( footer.length != 0 ){
154 + // add backbtn in case toolbar _ SLP
155 + if( !footer.find("jqmData(role='navbar')").is("jqmData(style='tabbar')") ){
156 + backBtn.appendTo( footer );
159 + if( !$.mobile.page.prototype.options.footerUserControl ) {
160 + normalFooter = $( "<div data-role='footer' class='ui-footer ui-bar-s ui-footer-fixed fade ui-fixed-overlay' data-position='fixed'></div>" )
161 + .insertAfter( $page.find( ".ui-content" ) );
162 + backBtn.appendTo( normalFooter );
166 + backBtn.bind( "vclick", function( event ) {
167 + window.history.back();
177 \ No newline at end of file