12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- (function($, undefined) {
- $.web2py.ajax_fields = function(target) {
- /*
- *this attaches something to a newly loaded fragment/page
- * Ideally all events should be bound to the document, so we can avoid calling
- * this over and over... all will be bound to the document
- */
- /*adds btn class to buttons*/
- $('button:not([class^="btn"])', target).addClass('btn btn-default');
- $("p.w2p-autocomplete-widget input").addClass('form-control');
- $('form input[type="submit"]:not([class^="btn"]), form input[type="button"]:not([class^="btn"])', target).addClass('btn btn-default');
- /* javascript for PasswordWidget*/
- $('input[type=password][data-w2p_entropy]', target).each(function() {
- web2py.validate_entropy($(this));
- });
- /* javascript for ListWidget*/
- $('ul.w2p_list', target).each(function() {
- function pe(ul, e) {
- var new_line = ml(ul);
- rel(ul);
- if ($(e.target).closest('li').is(':visible')) {
- /* make sure we didn't delete the element before we insert after */
- new_line.insertAfter($(e.target).closest('li'));
- } else {
- /* the line we clicked on was deleted, just add to end of list */
- new_line.appendTo(ul);
- }
- new_line.find(":text").focus();
- return false;
- }
- function rl(ul, e) {
- if ($(ul).find('li').length > 1) {
- /* only remove if we have more than 1 item so the list is never empty */
- $(e.target).closest('li').remove();
- }
- }
- function ml(ul) {
- /* clone the first field */
- var line = $(ul).find("li:first").clone(true);
- line.find(':text').val('');
- return line;
- }
- function rel(ul) {
- /* keep only as many as needed*/
- $(ul).find("li").each(function() {
- var trimmed = $.trim($(this).find(":text").val());
- if (trimmed == '') $(this).remove();
- else $(this).find(":text").val(trimmed);
- });
- }
- var ul = this;
- $(ul).find(":text").addClass('form-control').wrap("<div class='input-group'></div>").after('<div class="input-group-addon"><i class="glyphicon glyphicon-plus"></i></div><div class="input-group-addon"><i class="glyphicon glyphicon-minus"></i></div>').keypress(function(e) {
- return (e.which == 13) ? pe(ul, e) : true;
- }).next().click(function(e) {
- pe(ul, e);
- e.preventDefault();
- }).next().click(function(e) {
- rl(ul, e);
- e.preventDefault();
- });
- });
- }
- $(function() {
- $(".nav ul.dropdown-menu").each(function() {
- var toggle = jQuery(this).parent();
- if (toggle.parent().hasClass("nav")) {
- toggle.attr("data-w2pmenulevel", "l0");
- toggle.children("a")
- .addClass("dropdown-toggle")
- .append('<span class="caret"> </span>')
- .attr("data-toggle", "dropdown");
- } else {
- toggle.addClass("dropdown-submenu").removeClass("dropdown");
- };
- });
- });
- })(jQuery);
|