Statistics
| Branch: | Tag: | Revision:

root / cloudcms / static / cloudcms / js / forms.js @ 4b5adcc3

History | View | Annotate | Download (2.9 kB)

1 c6fdba44 Olga Brani
(function($){
2 c6fdba44 Olga Brani
  
3 c6fdba44 Olga Brani
  $.fn.formCheckBoxes = function(options) {
4 c6fdba44 Olga Brani
    
5 c6fdba44 Olga Brani
    return this.each(function() {
6 4b5adcc3 Olga Brani
      // process checkboxes
7 c6fdba44 Olga Brani
      var $this = $(this);
8 4b5adcc3 Olga Brani
      var el = $('<a class="checkbox-widget" href="javascript:void(0)"/>');
9 4b5adcc3 Olga Brani
      var form = $this.closest(".form-row");
10 4b5adcc3 Olga Brani
11 4b5adcc3 Olga Brani
      // add class to identify form rows which contain a checkbox
12 4b5adcc3 Olga Brani
      form.addClass("with-checkbox");
13 4b5adcc3 Olga Brani
      
14 4b5adcc3 Olga Brani
      if ($this.prev().length > 0) {
15 4b5adcc3 Olga Brani
        var lbl = $this.prev()[0];
16 4b5adcc3 Olga Brani
        if (lbl.nodeName == "LABEL" || lbl.nodeName == "label") {
17 4b5adcc3 Olga Brani
            $(lbl).addClass("checkbox-label");
18 4b5adcc3 Olga Brani
19 4b5adcc3 Olga Brani
            $(lbl).click(function(e){
20 4b5adcc3 Olga Brani
                var src = e.srcElement.nodeName;
21 4b5adcc3 Olga Brani
                if (src == "LABEL" || src == "label") {
22 4b5adcc3 Olga Brani
                    el.toggleClass("checked");
23 4b5adcc3 Olga Brani
                };
24 4b5adcc3 Olga Brani
            })
25 4b5adcc3 Olga Brani
        }
26 4b5adcc3 Olga Brani
      }
27 c6fdba44 Olga Brani
      $this.hide();
28 c6fdba44 Olga Brani
      
29 4b5adcc3 Olga Brani
      if ($this.attr('checked')) {
30 c6fdba44 Olga Brani
        el.addClass("checked");  
31 c6fdba44 Olga Brani
      }
32 c6fdba44 Olga Brani
33 c6fdba44 Olga Brani
      el.click(function() {
34 c6fdba44 Olga Brani
        el.toggleClass("checked");
35 c6fdba44 Olga Brani
        $this.attr('checked', el.hasClass("checked"));
36 4b5adcc3 Olga Brani
      });
37 4b5adcc3 Olga Brani
      
38 4b5adcc3 Olga Brani
      el.keypress(function(e){
39 4b5adcc3 Olga Brani
              
40 4b5adcc3 Olga Brani
              if (e.keyCode == 0 || e.keyCode == 32){
41 4b5adcc3 Olga Brani
                      e.preventDefault();
42 4b5adcc3 Olga Brani
                      el.toggleClass("checked");
43 4b5adcc3 Olga Brani
                $this.attr('checked', el.hasClass("checked"));
44 4b5adcc3 Olga Brani
              }
45 c6fdba44 Olga Brani
      })
46 c6fdba44 Olga Brani
47 4b5adcc3 Olga Brani
      $this.prev('label').before(el);
48 c6fdba44 Olga Brani
    });
49 c6fdba44 Olga Brani
50 c6fdba44 Olga Brani
51 c6fdba44 Olga Brani
  }
52 c6fdba44 Olga Brani
53 c6fdba44 Olga Brani
  $.fn.formErrors = function(options) {  
54 c6fdba44 Olga Brani
    return this.each(function() {
55 c6fdba44 Olga Brani
        var $this = $(this);
56 c6fdba44 Olga Brani
57 c6fdba44 Olga Brani
        // does the field has any errors ?
58 c6fdba44 Olga Brani
        var errors = $this.find(".errorlist");
59 c6fdba44 Olga Brani
        if (errors.length == 0) {
60 c6fdba44 Olga Brani
            return;
61 c6fdba44 Olga Brani
        }
62 c6fdba44 Olga Brani
        
63 c6fdba44 Olga Brani
        // create the custom error message block
64 c6fdba44 Olga Brani
        // and copy the contents of the original
65 c6fdba44 Olga Brani
        // error list
66 c6fdba44 Olga Brani
        var el = $('<div class="form-error" />');
67 c6fdba44 Olga Brani
        errors.find("li").each(function(){
68 c6fdba44 Olga Brani
            el.html(el.html() + $(this).text() + "<br />");
69 c6fdba44 Olga Brani
        })
70 c6fdba44 Olga Brani
        
71 c6fdba44 Olga Brani
        var formel = $this.find("input, select");
72 c6fdba44 Olga Brani
        var lbl = $this.find("label");
73 c6fdba44 Olga Brani
        var form = $this.closest("form");
74 c6fdba44 Olga Brani
75 c6fdba44 Olga Brani
76 c6fdba44 Olga Brani
        // append element on form row 
77 c6fdba44 Olga Brani
        // and apply the appropriate styles
78 c6fdba44 Olga Brani
        formel.closest(".form-row").append(el);
79 c6fdba44 Olga Brani
        errors.remove();
80 c6fdba44 Olga Brani
        var left = formel.width();
81 c6fdba44 Olga Brani
        var top = formel.height();
82 c6fdba44 Olga Brani
        var marginleft = lbl.width();
83 c6fdba44 Olga Brani
        
84 c6fdba44 Olga Brani
        // identify the position
85 c6fdba44 Olga Brani
        // forms with innerlbales class
86 c6fdba44 Olga Brani
        // display the label within the input fields
87 c6fdba44 Olga Brani
        if ($(form).hasClass("innerlabels")) {
88 c6fdba44 Olga Brani
            marginleft = 0;
89 c6fdba44 Olga Brani
        }
90 c6fdba44 Olga Brani
        
91 c6fdba44 Olga Brani
        var styles = {
92 c6fdba44 Olga Brani
            left: left + "px", 
93 c6fdba44 Olga Brani
            top: top + "px", 
94 c6fdba44 Olga Brani
            width: formel.outerWidth() - 10,
95 c6fdba44 Olga Brani
            marginLeft: marginleft,
96 c6fdba44 Olga Brani
            marginBottom: 5
97 c6fdba44 Olga Brani
        }
98 4b5adcc3 Olga Brani
        
99 4b5adcc3 Olga Brani
        if (formel.attr("type") != "checkbox") {
100 4b5adcc3 Olga Brani
            el.css(styles);
101 4b5adcc3 Olga Brani
        } else {
102 4b5adcc3 Olga Brani
            el.css("margin-top", "5px");
103 4b5adcc3 Olga Brani
        }
104 c6fdba44 Olga Brani
    });
105 c6fdba44 Olga Brani
106 c6fdba44 Olga Brani
  };
107 4b5adcc3 Olga Brani
})( jQuery );