improved static/js/web2py-bootstrap3.js

This commit is contained in:
mdipierro committed 2015-03-10 22:18:42 -05:00
1 parent ac24ce446e
commit a2060eedce
6 files changed
+126 -107

No files matched your search

@@ -0,0 +1,8 @@
def index():
types = ['string','text','date','time','datetime','integer','double',
'list:string','list:integer']
db.define_table('mytable',*[Field('f_'+t.replace(':','_'),t) for t in types])
return dict(
form = SQLFORM(db.mytable).process(),
grid = SQLFORM.grid(db.mytable),
)
+27
View File
@@ -53,3 +53,30 @@ CREATE TABLE auth_cas(
renew CHAR(1) renew CHAR(1)
); );
success! success!
timestamp: 2015-03-10T21:30:43.774215
CREATE TABLE mytable(
id INTEGER PRIMARY KEY AUTOINCREMENT,
f_string CHAR(512),
f_text TEXT,
f_date DATE,
f_time TIME,
f_datetime TIMESTAMP,
f_integer INTEGER,
f_double DOUBLE,
f_list:string TEXT,
f_list:integer TEXT
);
timestamp: 2015-03-10T21:31:46.944243
CREATE TABLE mytable(
id INTEGER PRIMARY KEY AUTOINCREMENT,
f_string CHAR(512),
f_text TEXT,
f_date DATE,
f_time TIME,
f_datetime TIMESTAMP,
f_integer INTEGER,
f_double DOUBLE,
f_list_string TEXT,
f_list_integer TEXT
);
success!
Binary file not shown.
+4 -10
View File
@@ -6,12 +6,14 @@
######################################################################### #########################################################################
response.logo = A(B('web',SPAN(2),'py'),XML('™ '), response.logo = A(B('web',SPAN(2),'py'),XML('™ '),
_class="brand",_href="http://www.web2py.com/") _class="navbar-brand",_href="http://www.web2py.com/",
_id="web2py-logo")
response.title = request.application.replace('_',' ').title() response.title = request.application.replace('_',' ').title()
response.subtitle = '' response.subtitle = ''
## read more at http://dev.w3.org/html5/markup/meta.name.html ## read more at http://dev.w3.org/html5/markup/meta.name.html
response.meta.author = 'Your Name <you@example.com>' response.meta.author = 'Your Name <you@example.com>'
response.meta.description = 'a cool new app'
response.meta.keywords = 'web2py, python, framework' response.meta.keywords = 'web2py, python, framework'
response.meta.generator = 'Web2py Web Framework' response.meta.generator = 'Web2py Web Framework'
@@ -124,15 +126,7 @@ def _():
(T('Live Chat'), False, (T('Live Chat'), False,
'http://webchat.freenode.net/?channels=web2py'), 'http://webchat.freenode.net/?channels=web2py'),
]), ]),
(T('Plugins'), False, None, [ (T('Plugins'), False, 'http://web2py.com/plugins')]
('plugin_wiki', False,
'http://web2py.com/examples/default/download'),
(T('Other Plugins'), False,
'http://web2py.com/plugins'),
(T('Layout Plugins'),
False, 'http://web2py.com/layouts'),
])
]
)] )]
if DEVELOPMENT_MENU: _() if DEVELOPMENT_MENU: _()
@@ -14,12 +14,11 @@
*/ */
(function ($) { jQuery(function(){
// bootstrap3 classes for elements of horizontal form - data // bootstrap3 classes for elements of horizontal form - data
var FH_CL_PREFIX = 'col-md-', // class prefix var FH_CL_PREFIX = 'col-md-', // class prefix
FH_LABEL_COLW = '4', // nr. of columns of 12 FH_LABEL_COLW = '4', // nr. of columns of 12
FH_CONTROL_COLW = '8' // 12 - FH_LABEL_COLW; FH_CONTROL_COLW = '8'; // 12 - FH_LABEL_COLW;
// bootstrap3 classes for elements of horizontal form - calculations // bootstrap3 classes for elements of horizontal form - calculations
var fh_label_class = FH_CL_PREFIX + FH_LABEL_COLW, var fh_label_class = FH_CL_PREFIX + FH_LABEL_COLW,
@@ -28,52 +27,54 @@
// functions // functions
function menu_is_collapsed() { function menu_is_collapsed() {
return !$('.navbar-toggle').is(':hidden') return !jQuery('.navbar-toggle').is(':hidden');
}; };
function closeSubmenu() { function closeSubmenu() {
$(".dropdown-submenu>a.active").each(function(){ jQuery(".dropdown-submenu > a.active").each(function(){
var o = $(this); var o = jQuery(this);
o.parent().children("ul").toggleClass('open').data('phase', null); o.parent().children("ul")
.toggleClass('open').data('phase', null);
o.toggleClass('active'); o.toggleClass('active');
}); });
}; };
$.fn.center = function (options) { jQuery.fn.center = function (options) {
var defaults = {'parent': false, 'mode': "both"}; var defaults = {'parent': false, 'mode': "both"};
var settings = $.extend(defaults, options); var settings = jQuery.extend(defaults, options);
var parent; var parent;
if (settings.parent) { if (settings.parent)
parent = this.parent(); parent = this.parent();
} else { else
parent = window; parent = window;
}
if (settings.mode != "horizontally") { if (settings.mode != "horizontally") {
this.css("top", Math.max(0, (($(parent).height() - $(this).outerHeight()) / 2) + $(parent).scrollTop()) + "px");} this.css("top", Math.max
(0, ((jQuery(parent).height() - jQuery(this).outerHeight()) / 2) + jQuery(parent).scrollTop()) + "px");
}
if (settings.mode != "vertically") { if (settings.mode != "vertically") {
this.css("left", Math.max(0, (($(parent).width() - $(this).outerWidth()) / 2) + $(parent).scrollLeft()) + "px");} this.css("left", Math.max
(0, ((jQuery(parent).width() - jQuery(this).outerWidth()) / 2) + jQuery(parent).scrollLeft()) + "px");
}
return this; return this;
}; };
function adjust_maxheight_of_collapsed_nav() { function adjust_maxheight_of_collapsed_nav() {
var cn = $('div.navbar-collapse'); var cn = jQuery('div.navbar-collapse');
var sh = $(window).height(); var sh = jQuery(window).height();
if (cn.get(0)) { if (cn.get(0)) {
if (sh<320) { if (sh<320)
cn.addClass('short-screen'); cn.addClass('short-screen');
} else if(cn.hasClass('short-screen'))
else {
cn.removeClass('short-screen'); cn.removeClass('short-screen');
} }
}
}; };
// alert centering // alert centering
$('.flash.alert.centered').center({'mode': "horizontally"}); jQuery('.flash.alert.centered').center({'mode': "horizontally"});
// navs // navs
$(".nav ul.dropdown-menu").not("#w2p-auth-bar").each(function() { jQuery(".nav ul.dropdown-menu").not("#w2p-auth-bar").each(function() {
var toggle = $(this).parent(); var toggle = jQuery(this).parent();
if (toggle.parent().hasClass("nav")) { if (toggle.parent().hasClass("nav")) {
toggle.attr("data-w2pmenulevel", "l0"); toggle.attr("data-w2pmenulevel", "l0");
toggle.children("a") toggle.children("a")
@@ -85,21 +86,20 @@
}; };
}); });
$('.navbar-nav a.dropdown-toggle').click(function(e) { jQuery('.navbar-nav a.dropdown-toggle').click(function(e) {
if (menu_is_collapsed()) { if (menu_is_collapsed())
e.preventDefault(); e.preventDefault();
}else{ else
window.location=$(this).attr('href'); window.location=jQuery(this).attr('href');
};
}); });
$(".dropdown-submenu>a").click(function(event) { jQuery(".dropdown-submenu>a").click(function(event) {
if (menu_is_collapsed()) { if (menu_is_collapsed()) {
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
var submenu = $(this).parent().children("ul"); var submenu = jQuery(this).parent().children("ul");
submenu.data('phase','opening'); submenu.data('phase','opening');
var dropdownOfThis = $(this).parent().parent(); var dropdownOfThis = jQuery(this).parent().parent();
var actives = dropdownOfThis.find('ul.dropdown-menu.open'); var actives = dropdownOfThis.find('ul.dropdown-menu.open');
if (actives && actives.length) { if (actives && actives.length) {
var hasData = actives.data('phase'); var hasData = actives.data('phase');
@@ -110,46 +110,44 @@
}; };
}; };
submenu.toggleClass('open').data('phase','opened'); submenu.toggleClass('open').data('phase','opened');
$(this).toggleClass('active'); jQuery(this).toggleClass('active');
}else{ }else{
window.location=$(this).attr('href'); window.location=jQuery(this).attr('href');
}; };
}); });
$(".nav-tabs .web2py-menu-active").addClass('active'); jQuery(".nav-tabs .web2py-menu-active").addClass('active');
$(".nav-tabs a").not(".dropdown-toggle").attr("data-toggle", "tab"); jQuery(".nav-tabs a").not(".dropdown-toggle").attr("data-toggle", "tab");
// form fixes // form fixes
$(document).ready(function() { jQuery("ul.w2p_list").css('margin-left',0);
$("form.bs3-form .w2p_list a").each(function() { jQuery("ul.w2p_list input").addClass('form-control');
jQuery("input.date,input.time,input.datetime,input.double,input.integer").css('width','33.33333333%');
// the plus and minus buttons are generated by web2py.js // the plus and minus buttons are generated by web2py.js
$(this).addClass('btn btn-default'); jQuery("form.bs3-form .w2p_list a").addClass('btn btn-default');
});
$("form.bs3-form p.w2p-autocomplete-widget").each(function() {
// not generated by formstyle // not generated by formstyle
$(this).children('input').addClass('form-control'); jQuery("form.bs3-form p.w2p-autocomplete-widget input").addClass('form-control');
}); jQuery("form.bs3-form input[name='password_two']").each(function() {
$("form.bs3-form input[name='password_two']").each(function() {
// auth addition after form creation // auth addition after form creation
var $this = $(this).addClass('form-control'); var self = jQuery(this).addClass('form-control');
var groupClass = 'form-group' var groupClass = 'form-group';
var labelClass = 'control-label'; var labelClass = 'control-label';
var commentClass = 'help-block'; var commentClass = 'help-block';
var comment; var comment;
var mode; var mode;
var hasError = false; var hasError = false;
if ($this.parent().hasClass('form-horizontal')) { if (self.parent().hasClass('form-horizontal')) {
mode = 'horizontal'; mode = 'horizontal';
labelClass = fh_label_class+' control-label'; labelClass = fh_label_class+' control-label';
}; };
if ($this.parent().hasClass('form-inline')) { if (self.parent().hasClass('form-inline')) {
mode = 'inline'; mode = 'inline';
labelClass = 'sr-only'; labelClass = 'sr-only';
commentClass = 'sr-only'; commentClass = 'sr-only';
var labelText = $this.prev('label').text(); var labelText = self.prev('label').text();
$this.attr("placeholder", labelText.slice(0,-2)); self.attr("placeholder", labelText.slice(0,-2));
}; };
var error = $this.next('div.error_wrapper'); var error = self.next('div.error_wrapper');
if (error.length > 0) { if (error.length > 0) {
var hasError = true; var hasError = true;
groupClass = 'form-group has-error' groupClass = 'form-group has-error'
@@ -159,24 +157,24 @@
error[0].parentNode.removeChild(error[0].nextSibling); error[0].parentNode.removeChild(error[0].nextSibling);
}; };
} else { } else {
var text = $this[0].nextSibling.nodeValue; var text = self[0].nextSibling.nodeValue;
if (text) { if (text) {
comment = "<span class='"+commentClass+"'>"+text+"</span>"; comment = "<span class='"+commentClass+"'>"+text+"</span>";
$this[0].parentNode.removeChild($this[0].nextSibling); self[0].parentNode.removeChild(self[0].nextSibling);
}; };
}; };
$this.prev('label').addClass(labelClass).andSelf().wrapAll("<div class='"+groupClass+"' id='auth_user_verify_password__row'></div>"); self.prev('label').addClass(labelClass).andSelf().wrapAll("<div class='"+groupClass+"' id='auth_user_verify_password__row'></div>");
if (mode == 'horizontal') { if (mode == 'horizontal') {
$this.wrap('<div class="'+fh_control_class+'"></div>'); self.wrap('<div class="'+fh_control_class+'"></div>');
}; };
if (hasError) { if (hasError) {
$this.parent().append(error); self.parent().append(error);
}; };
$this.parent().append(comment); self.parent().append(comment);
}); });
$('form.bs3-form #auth_user_remember').each(function() { jQuery('form.bs3-form #auth_user_remember').each(function() {
// auth addition after form creation // auth addition after form creation
var $input = $(this); var $input = jQuery(this);
var $label = $input.next('label'); var $label = $input.next('label');
var $iParent = $input.parent(); var $iParent = $input.parent();
$input.removeClass('checkbox'); $input.removeClass('checkbox');
@@ -185,69 +183,61 @@
var newGroup = $label; var newGroup = $label;
$iParent.replaceWith(newGroup); $iParent.replaceWith(newGroup);
if (newGroup.parent().hasClass('form-horizontal')) { if (newGroup.parent().hasClass('form-horizontal')) {
newGroup.wrap($('<div class="form-group"><div class="'+fh_offest_class+' '+fh_control_class+'"><div class="checkbox"></div></div></div>')); newGroup.wrap(jQuery('<div class="form-group"><div class="'+fh_offest_class+' '+fh_control_class+'"><div class="checkbox"></div></div></div>'));
} else { } else {
newGroup.wrap($('<div class="form-group"><div class="checkbox"></div></div>')); newGroup.wrap(jQuery('<div class="form-group"><div class="checkbox"></div></div>'));
}; };
}); });
});
// form errors // form errors
$('form.bs3-form .error_wrapper').each(function() { jQuery('form.bs3-form .error_wrapper').each(function() {
var $this = $(this) var self = jQuery(this);
var rcContainer = $this.parents('.rc_container'); var rcContainer = self.parents('.rc_container');
if (rcContainer.length > 0) { if (rcContainer.length > 0) {
$this.appendTo(rcContainer); self.appendTo(rcContainer);
} }
}); });
$('form.bs3-form').find('div.error').addClass('text-danger').closest(".form-group").addClass('has-error'); jQuery('form.bs3-form').find('div.error').addClass('text-danger').closest(".form-group").addClass('has-error');
// uploadwidget // uploadwidget
$('#file-reset-btn').click(function() { jQuery('#file-reset-btn').click(function() {
var el = $('div.w2p-uploaded-file')[0]; var el = jQuery('div.w2p-uploaded-file')[0];
var whatReset = jQuery.data(el, "reset"); var whatReset = jQuery.data(el, "reset");
if (whatReset == "changed") { if (whatReset == "changed") {
$('.w2p-uploaded-file input[type="file"]') jQuery('.w2p-uploaded-file input[type="file"]')
.replaceWith( .replaceWith(jQuery('.w2p-uploaded-file input[type="file"]').clone());
$('.w2p-uploaded-file input[type="file"]') jQuery('.w2p-file-preview, .w2p-uploaded-file input[type="file"], #edit-btn-dd, #file-reset-btn').toggle();
.clone()); } else {
$('.w2p-file-preview, .w2p-uploaded-file input[type="file"], #edit-btn-dd, #file-reset-btn').toggle(); jQuery('.w2p-file-preview, #no-file, #edit-btn-dd, #file-reset-btn').toggle();
}else{ jQuery('div.w2p-uploaded-file').children('input[type=checkbox]').trigger('click');
$('.w2p-file-preview, #no-file, #edit-btn-dd, #file-reset-btn').toggle();
$('div.w2p-uploaded-file').children('input[type=checkbox]').trigger('click');
} }
jQuery.removeData(el, "reset"); jQuery.removeData(el, "reset");
}); });
$('#change-file-option').click(function(e) { jQuery('#change-file-option').click(function(e) {
e.preventDefault(); e.preventDefault();
$('.w2p-file-preview, .w2p-uploaded-file input[type="file"], #edit-btn-dd, #file-reset-btn').toggle(); jQuery('.w2p-file-preview, .w2p-uploaded-file input[type="file"], #edit-btn-dd, #file-reset-btn').toggle();
jQuery.data($('div.w2p-uploaded-file')[0], "reset", "changed"); jQuery.data(jQuery('div.w2p-uploaded-file')[0], "reset", "changed");
}); });
$('#delete-file-option').click(function(e) { jQuery('#delete-file-option').click(function(e) {
e.preventDefault(); e.preventDefault();
var wimg = $('#image-thumb').outerWidth(), var wimg = jQuery('#image-thumb').outerWidth(),
himg = $('#image-thumb').outerHeight(); himg = jQuery('#image-thumb').outerHeight();
$('#no-file') jQuery('#no-file').width(wimg).height(himg).css({'line-height':himg+'px'});
.width(wimg) jQuery('.w2p-file-preview, #no-file, #edit-btn-dd, #file-reset-btn').toggle();
.height(himg) jQuery('div.w2p-uploaded-file').children('input[type=checkbox]').trigger('click');
.css({'line-height':himg+'px'}); jQuery.data(jQuery('div.w2p-uploaded-file')[0], "reset", "deleted");
$('.w2p-file-preview, #no-file, #edit-btn-dd, #file-reset-btn').toggle();
$('div.w2p-uploaded-file').children('input[type=checkbox]').trigger('click');
jQuery.data($('div.w2p-uploaded-file')[0], "reset", "deleted");
}); });
// on page load // on page load
adjust_maxheight_of_collapsed_nav(); adjust_maxheight_of_collapsed_nav();
// resize and orientation change events // resize and orientation change events
$(window).on('orientationchange resize', function(event) { jQuery(window).on('orientationchange resize', function(event) {
adjust_maxheight_of_collapsed_nav(); adjust_maxheight_of_collapsed_nav();
$('.flash.alert').center({'mode':"horizontally"}); jQuery('.flash.alert').center({'mode':"horizontally"});
if (menu_is_collapsed() === false) { if (menu_is_collapsed() === false) {
closeSubmenu(); closeSubmenu();
$('.navbar-nav .dropdown.open a.dropdown-toggle').dropdown('toggle'); jQuery('.navbar-nav .dropdown.open a.dropdown-toggle').dropdown('toggle');
$('#main-menu.in, #login-menu.in').collapse('hide'); jQuery('#main-menu.in, #login-menu.in').collapse('hide');
}; };
}); });
});
}(jQuery));