Yaffs site version 1.1
[yaffs-website] / web / modules / contrib / advagg / advagg_validator / js / csslint_form.js
1 /**
2  * @file
3  * Run CSSLint in the browser against the servers CSS.
4  */
5
6 /* global jQuery:false */
7 /* global Drupal:false */
8 /* global CSSLint:false */
9
10 /**
11  * Have clicks to advagg_validator_css classes run CSSLint clientside.
12  */
13 (function ($) {
14   'use strict';
15   Drupal.behaviors.advagg_validator_css_simple = {
16     attach: function (context, settings) {
17       $('.advagg_validator_css', context).click(function (context) {
18         // Get Results Div.
19         var results = $(this).siblings('.results');
20         // Clear out the results.
21         $(results).html('');
22         // Loop over each filename.
23         $.each($(this).siblings('.filenames'), function () {
24           var filename = $(this).val();
25           if (filename) {
26             advagg_validator_css($, results, filename, settings);
27           }
28         });
29
30         return false;
31       });
32     }
33   };
34 }(jQuery));
35
36 /**
37  * Have clicks to advagg_validator_recursive_css classes run CSSLint clientside.
38  */
39 (function ($) {
40   'use strict';
41   Drupal.behaviors.advagg_validator_css_recursive = {
42     attach: function (context, settings) {
43       $('.advagg_validator_recursive_css', context).click(function (context) {
44         // Get Results Div.
45         var results = $(this).siblings('.results');
46         // Clear out the results.
47         $(results).html('');
48         // Loop over each filename.
49         $.each($(this).parent().find('.filenames'), function () {
50           var filename = $(this).val();
51           if (filename) {
52             advagg_validator_css($, results, filename, settings);
53           }
54         });
55         return false;
56       });
57     }
58   };
59 }(jQuery));
60
61 /**
62  * Given the filename, run contents through CSSLint.
63  *
64  * @param object $
65  *   jQuery object.
66  * @param object results
67  *   jQuery object from the results class in the dom.
68  * @param string filename
69  *   Name of the file, also includes the relative path.
70  * @param object settings
71  *   The drupal settings object.
72  */
73 function advagg_validator_css($, results, filename, settings) {
74   'use strict';
75   try {
76     // Use the current time to bust the browser cache.
77     var t = new Date().getTime();
78     jQuery.ajax({
79       url: settings.path.baseUrl + filename + '?t=' + t,
80       dataType: 'text',
81       async: false,
82       success: function (data) {
83         // File was downloaded; run through CSSLint.
84         var y = CSSLint.verify(data, settings.csslint.rules);
85         var z = y.messages;
86         $(results).append('<p><h4>' + filename + '</h4><ul>');
87         for (var i = 0, len = z.length; i < len; i++) {
88           // Output lint errors.
89           var w = z[i].message + ' (line ' + z[i].line + ', col ' + z[i].col + ', rule ' + z[i].rule.id + ')';
90           $(results).append('<li class="' + z[i].type + '">' + w.replace(/ /g, '&nbsp;') + '</li>');
91         }
92         $(results).append('</ul></p>');
93       },
94       error: function (data, textStatus, errorThrown) {
95         // File could not be downloaded; display error.
96         $(results).append('<p><h4>' + filename + '</h4><ul>');
97         $(results).append('<li class="error">' + Drupal.t('Browser unable to read file. @error', {'@error': errorThrown}) + '</li>');
98         $(results).append('</ul></p>');
99       }
100     });
101   }
102   catch (err) {
103     $(results).append(err);
104   }
105 }