Commit 3ba392b3cb82a655a814e34759e678cdef94fdfa
1 parent
5f900772
Exists in
master
and in
4 other branches
new ref switch
Showing
9 changed files
with
1314 additions
and
50 deletions
Show diff stats
396 Bytes
| @@ -0,0 +1,901 @@ | @@ -0,0 +1,901 @@ | ||
| 1 | +// Chosen, a Select Box Enhancer for jQuery and Protoype | ||
| 2 | +// by Patrick Filler for Harvest, http://getharvest.com | ||
| 3 | +// | ||
| 4 | +// Version 0.9.5 | ||
| 5 | +// Full source at https://github.com/harvesthq/chosen | ||
| 6 | +// Copyright (c) 2011 Harvest http://getharvest.com | ||
| 7 | + | ||
| 8 | +// MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md | ||
| 9 | +// This file is generated by `cake build`, do not edit it by hand. | ||
| 10 | +(function() { | ||
| 11 | + var SelectParser; | ||
| 12 | + SelectParser = (function() { | ||
| 13 | + function SelectParser() { | ||
| 14 | + this.options_index = 0; | ||
| 15 | + this.parsed = []; | ||
| 16 | + } | ||
| 17 | + SelectParser.prototype.add_node = function(child) { | ||
| 18 | + if (child.nodeName === "OPTGROUP") { | ||
| 19 | + return this.add_group(child); | ||
| 20 | + } else { | ||
| 21 | + return this.add_option(child); | ||
| 22 | + } | ||
| 23 | + }; | ||
| 24 | + SelectParser.prototype.add_group = function(group) { | ||
| 25 | + var group_position, option, _i, _len, _ref, _results; | ||
| 26 | + group_position = this.parsed.length; | ||
| 27 | + this.parsed.push({ | ||
| 28 | + array_index: group_position, | ||
| 29 | + group: true, | ||
| 30 | + label: group.label, | ||
| 31 | + children: 0, | ||
| 32 | + disabled: group.disabled | ||
| 33 | + }); | ||
| 34 | + _ref = group.childNodes; | ||
| 35 | + _results = []; | ||
| 36 | + for (_i = 0, _len = _ref.length; _i < _len; _i++) { | ||
| 37 | + option = _ref[_i]; | ||
| 38 | + _results.push(this.add_option(option, group_position, group.disabled)); | ||
| 39 | + } | ||
| 40 | + return _results; | ||
| 41 | + }; | ||
| 42 | + SelectParser.prototype.add_option = function(option, group_position, group_disabled) { | ||
| 43 | + if (option.nodeName === "OPTION") { | ||
| 44 | + if (option.text !== "") { | ||
| 45 | + if (group_position != null) { | ||
| 46 | + this.parsed[group_position].children += 1; | ||
| 47 | + } | ||
| 48 | + this.parsed.push({ | ||
| 49 | + array_index: this.parsed.length, | ||
| 50 | + options_index: this.options_index, | ||
| 51 | + value: option.value, | ||
| 52 | + text: option.text, | ||
| 53 | + html: option.innerHTML, | ||
| 54 | + selected: option.selected, | ||
| 55 | + disabled: group_disabled === true ? group_disabled : option.disabled, | ||
| 56 | + group_array_index: group_position, | ||
| 57 | + classes: option.className, | ||
| 58 | + style: option.style.cssText | ||
| 59 | + }); | ||
| 60 | + } else { | ||
| 61 | + this.parsed.push({ | ||
| 62 | + array_index: this.parsed.length, | ||
| 63 | + options_index: this.options_index, | ||
| 64 | + empty: true | ||
| 65 | + }); | ||
| 66 | + } | ||
| 67 | + return this.options_index += 1; | ||
| 68 | + } | ||
| 69 | + }; | ||
| 70 | + return SelectParser; | ||
| 71 | + })(); | ||
| 72 | + SelectParser.select_to_array = function(select) { | ||
| 73 | + var child, parser, _i, _len, _ref; | ||
| 74 | + parser = new SelectParser(); | ||
| 75 | + _ref = select.childNodes; | ||
| 76 | + for (_i = 0, _len = _ref.length; _i < _len; _i++) { | ||
| 77 | + child = _ref[_i]; | ||
| 78 | + parser.add_node(child); | ||
| 79 | + } | ||
| 80 | + return parser.parsed; | ||
| 81 | + }; | ||
| 82 | + this.SelectParser = SelectParser; | ||
| 83 | +}).call(this); | ||
| 84 | +(function() { | ||
| 85 | + /* | ||
| 86 | + Chosen source: generate output using 'cake build' | ||
| 87 | + Copyright (c) 2011 by Harvest | ||
| 88 | + */ | ||
| 89 | + var AbstractChosen, root; | ||
| 90 | + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; | ||
| 91 | + root = this; | ||
| 92 | + AbstractChosen = (function() { | ||
| 93 | + function AbstractChosen(form_field, options) { | ||
| 94 | + this.form_field = form_field; | ||
| 95 | + this.options = options != null ? options : {}; | ||
| 96 | + this.set_default_values(); | ||
| 97 | + this.is_multiple = this.form_field.multiple; | ||
| 98 | + this.default_text_default = this.is_multiple ? "Select Some Options" : "Select an Option"; | ||
| 99 | + this.setup(); | ||
| 100 | + this.set_up_html(); | ||
| 101 | + this.register_observers(); | ||
| 102 | + this.finish_setup(); | ||
| 103 | + } | ||
| 104 | + AbstractChosen.prototype.set_default_values = function() { | ||
| 105 | + this.click_test_action = __bind(function(evt) { | ||
| 106 | + return this.test_active_click(evt); | ||
| 107 | + }, this); | ||
| 108 | + this.activate_action = __bind(function(evt) { | ||
| 109 | + return this.activate_field(evt); | ||
| 110 | + }, this); | ||
| 111 | + this.active_field = false; | ||
| 112 | + this.mouse_on_container = false; | ||
| 113 | + this.results_showing = false; | ||
| 114 | + this.result_highlighted = null; | ||
| 115 | + this.result_single_selected = null; | ||
| 116 | + this.allow_single_deselect = (this.options.allow_single_deselect != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false; | ||
| 117 | + this.disable_search_threshold = this.options.disable_search_threshold || 0; | ||
| 118 | + this.choices = 0; | ||
| 119 | + return this.results_none_found = this.options.no_results_text || "No results match"; | ||
| 120 | + }; | ||
| 121 | + AbstractChosen.prototype.mouse_enter = function() { | ||
| 122 | + return this.mouse_on_container = true; | ||
| 123 | + }; | ||
| 124 | + AbstractChosen.prototype.mouse_leave = function() { | ||
| 125 | + return this.mouse_on_container = false; | ||
| 126 | + }; | ||
| 127 | + AbstractChosen.prototype.input_focus = function(evt) { | ||
| 128 | + if (!this.active_field) { | ||
| 129 | + return setTimeout((__bind(function() { | ||
| 130 | + return this.container_mousedown(); | ||
| 131 | + }, this)), 50); | ||
| 132 | + } | ||
| 133 | + }; | ||
| 134 | + AbstractChosen.prototype.input_blur = function(evt) { | ||
| 135 | + if (!this.mouse_on_container) { | ||
| 136 | + this.active_field = false; | ||
| 137 | + return setTimeout((__bind(function() { | ||
| 138 | + return this.blur_test(); | ||
| 139 | + }, this)), 100); | ||
| 140 | + } | ||
| 141 | + }; | ||
| 142 | + AbstractChosen.prototype.result_add_option = function(option) { | ||
| 143 | + var classes, style; | ||
| 144 | + if (!option.disabled) { | ||
| 145 | + option.dom_id = this.container_id + "_o_" + option.array_index; | ||
| 146 | + classes = option.selected && this.is_multiple ? [] : ["active-result"]; | ||
| 147 | + if (option.selected) { | ||
| 148 | + classes.push("result-selected"); | ||
| 149 | + } | ||
| 150 | + if (option.group_array_index != null) { | ||
| 151 | + classes.push("group-option"); | ||
| 152 | + } | ||
| 153 | + if (option.classes !== "") { | ||
| 154 | + classes.push(option.classes); | ||
| 155 | + } | ||
| 156 | + style = option.style.cssText !== "" ? " style=\"" + option.style + "\"" : ""; | ||
| 157 | + return '<li id="' + option.dom_id + '" class="' + classes.join(' ') + '"' + style + '>' + option.html + '</li>'; | ||
| 158 | + } else { | ||
| 159 | + return ""; | ||
| 160 | + } | ||
| 161 | + }; | ||
| 162 | + AbstractChosen.prototype.results_update_field = function() { | ||
| 163 | + this.result_clear_highlight(); | ||
| 164 | + this.result_single_selected = null; | ||
| 165 | + return this.results_build(); | ||
| 166 | + }; | ||
| 167 | + AbstractChosen.prototype.results_toggle = function() { | ||
| 168 | + if (this.results_showing) { | ||
| 169 | + return this.results_hide(); | ||
| 170 | + } else { | ||
| 171 | + return this.results_show(); | ||
| 172 | + } | ||
| 173 | + }; | ||
| 174 | + AbstractChosen.prototype.results_search = function(evt) { | ||
| 175 | + if (this.results_showing) { | ||
| 176 | + return this.winnow_results(); | ||
| 177 | + } else { | ||
| 178 | + return this.results_show(); | ||
| 179 | + } | ||
| 180 | + }; | ||
| 181 | + AbstractChosen.prototype.keyup_checker = function(evt) { | ||
| 182 | + var stroke, _ref; | ||
| 183 | + stroke = (_ref = evt.which) != null ? _ref : evt.keyCode; | ||
| 184 | + this.search_field_scale(); | ||
| 185 | + switch (stroke) { | ||
| 186 | + case 8: | ||
| 187 | + if (this.is_multiple && this.backstroke_length < 1 && this.choices > 0) { | ||
| 188 | + return this.keydown_backstroke(); | ||
| 189 | + } else if (!this.pending_backstroke) { | ||
| 190 | + this.result_clear_highlight(); | ||
| 191 | + return this.results_search(); | ||
| 192 | + } | ||
| 193 | + break; | ||
| 194 | + case 13: | ||
| 195 | + evt.preventDefault(); | ||
| 196 | + if (this.results_showing) { | ||
| 197 | + return this.result_select(evt); | ||
| 198 | + } | ||
| 199 | + break; | ||
| 200 | + case 27: | ||
| 201 | + if (this.results_showing) { | ||
| 202 | + return this.results_hide(); | ||
| 203 | + } | ||
| 204 | + break; | ||
| 205 | + case 9: | ||
| 206 | + case 38: | ||
| 207 | + case 40: | ||
| 208 | + case 16: | ||
| 209 | + case 91: | ||
| 210 | + case 17: | ||
| 211 | + break; | ||
| 212 | + default: | ||
| 213 | + return this.results_search(); | ||
| 214 | + } | ||
| 215 | + }; | ||
| 216 | + AbstractChosen.prototype.generate_field_id = function() { | ||
| 217 | + var new_id; | ||
| 218 | + new_id = this.generate_random_id(); | ||
| 219 | + this.form_field.id = new_id; | ||
| 220 | + return new_id; | ||
| 221 | + }; | ||
| 222 | + AbstractChosen.prototype.generate_random_char = function() { | ||
| 223 | + var chars, newchar, rand; | ||
| 224 | + chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ"; | ||
| 225 | + rand = Math.floor(Math.random() * chars.length); | ||
| 226 | + return newchar = chars.substring(rand, rand + 1); | ||
| 227 | + }; | ||
| 228 | + return AbstractChosen; | ||
| 229 | + })(); | ||
| 230 | + root.AbstractChosen = AbstractChosen; | ||
| 231 | +}).call(this); | ||
| 232 | +(function() { | ||
| 233 | + /* | ||
| 234 | + Chosen source: generate output using 'cake build' | ||
| 235 | + Copyright (c) 2011 by Harvest | ||
| 236 | + */ | ||
| 237 | + var $, Chosen, get_side_border_padding, root; | ||
| 238 | + var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { | ||
| 239 | + for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } | ||
| 240 | + function ctor() { this.constructor = child; } | ||
| 241 | + ctor.prototype = parent.prototype; | ||
| 242 | + child.prototype = new ctor; | ||
| 243 | + child.__super__ = parent.prototype; | ||
| 244 | + return child; | ||
| 245 | + }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; | ||
| 246 | + root = this; | ||
| 247 | + $ = jQuery; | ||
| 248 | + $.fn.extend({ | ||
| 249 | + chosen: function(options) { | ||
| 250 | + if ($.browser.msie && ($.browser.version === "6.0" || $.browser.version === "7.0")) { | ||
| 251 | + return this; | ||
| 252 | + } | ||
| 253 | + return $(this).each(function(input_field) { | ||
| 254 | + if (!($(this)).hasClass("chzn-done")) { | ||
| 255 | + return new Chosen(this, options); | ||
| 256 | + } | ||
| 257 | + }); | ||
| 258 | + } | ||
| 259 | + }); | ||
| 260 | + Chosen = (function() { | ||
| 261 | + __extends(Chosen, AbstractChosen); | ||
| 262 | + function Chosen() { | ||
| 263 | + Chosen.__super__.constructor.apply(this, arguments); | ||
| 264 | + } | ||
| 265 | + Chosen.prototype.setup = function() { | ||
| 266 | + this.form_field_jq = $(this.form_field); | ||
| 267 | + return this.is_rtl = this.form_field_jq.hasClass("chzn-rtl"); | ||
| 268 | + }; | ||
| 269 | + Chosen.prototype.finish_setup = function() { | ||
| 270 | + return this.form_field_jq.addClass("chzn-done"); | ||
| 271 | + }; | ||
| 272 | + Chosen.prototype.set_up_html = function() { | ||
| 273 | + var container_div, dd_top, dd_width, sf_width; | ||
| 274 | + this.container_id = this.form_field.id.length ? this.form_field.id.replace(/(:|\.)/g, '_') : this.generate_field_id(); | ||
| 275 | + this.container_id += "_chzn"; | ||
| 276 | + this.f_width = this.form_field_jq.outerWidth(); | ||
| 277 | + this.default_text = this.form_field_jq.data('placeholder') ? this.form_field_jq.data('placeholder') : this.default_text_default; | ||
| 278 | + container_div = $("<div />", { | ||
| 279 | + id: this.container_id, | ||
| 280 | + "class": "chzn-container" + (this.is_rtl ? ' chzn-rtl' : ''), | ||
| 281 | + style: 'width: ' + this.f_width + 'px;' | ||
| 282 | + }); | ||
| 283 | + if (this.is_multiple) { | ||
| 284 | + container_div.html('<ul class="chzn-choices"><li class="search-field"><input type="text" value="' + this.default_text + '" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chzn-drop" style="left:-9000px;"><ul class="chzn-results"></ul></div>'); | ||
| 285 | + } else { | ||
| 286 | + container_div.html('<a href="javascript:void(0)" class="chzn-single"><span>' + this.default_text + '</span><div><b></b></div></a><div class="chzn-drop" style="left:-9000px;"><div class="chzn-search"><input type="text" autocomplete="off" /></div><ul class="chzn-results"></ul></div>'); | ||
| 287 | + } | ||
| 288 | + this.form_field_jq.hide().after(container_div); | ||
| 289 | + this.container = $('#' + this.container_id); | ||
| 290 | + this.container.addClass("chzn-container-" + (this.is_multiple ? "multi" : "single")); | ||
| 291 | + this.dropdown = this.container.find('div.chzn-drop').first(); | ||
| 292 | + dd_top = this.container.height(); | ||
| 293 | + dd_width = this.f_width - get_side_border_padding(this.dropdown); | ||
| 294 | + this.dropdown.css({ | ||
| 295 | + "width": dd_width + "px", | ||
| 296 | + "top": dd_top + "px" | ||
| 297 | + }); | ||
| 298 | + this.search_field = this.container.find('input').first(); | ||
| 299 | + this.search_results = this.container.find('ul.chzn-results').first(); | ||
| 300 | + this.search_field_scale(); | ||
| 301 | + this.search_no_results = this.container.find('li.no-results').first(); | ||
| 302 | + if (this.is_multiple) { | ||
| 303 | + this.search_choices = this.container.find('ul.chzn-choices').first(); | ||
| 304 | + this.search_container = this.container.find('li.search-field').first(); | ||
| 305 | + } else { | ||
| 306 | + this.search_container = this.container.find('div.chzn-search').first(); | ||
| 307 | + this.selected_item = this.container.find('.chzn-single').first(); | ||
| 308 | + sf_width = dd_width - get_side_border_padding(this.search_container) - get_side_border_padding(this.search_field); | ||
| 309 | + this.search_field.css({ | ||
| 310 | + "width": sf_width + "px" | ||
| 311 | + }); | ||
| 312 | + } | ||
| 313 | + this.results_build(); | ||
| 314 | + this.set_tab_index(); | ||
| 315 | + return this.form_field_jq.trigger("liszt:ready", { | ||
| 316 | + chosen: this | ||
| 317 | + }); | ||
| 318 | + }; | ||
| 319 | + Chosen.prototype.register_observers = function() { | ||
| 320 | + this.container.mousedown(__bind(function(evt) { | ||
| 321 | + return this.container_mousedown(evt); | ||
| 322 | + }, this)); | ||
| 323 | + this.container.mouseup(__bind(function(evt) { | ||
| 324 | + return this.container_mouseup(evt); | ||
| 325 | + }, this)); | ||
| 326 | + this.container.mouseenter(__bind(function(evt) { | ||
| 327 | + return this.mouse_enter(evt); | ||
| 328 | + }, this)); | ||
| 329 | + this.container.mouseleave(__bind(function(evt) { | ||
| 330 | + return this.mouse_leave(evt); | ||
| 331 | + }, this)); | ||
| 332 | + this.search_results.mouseup(__bind(function(evt) { | ||
| 333 | + return this.search_results_mouseup(evt); | ||
| 334 | + }, this)); | ||
| 335 | + this.search_results.mouseover(__bind(function(evt) { | ||
| 336 | + return this.search_results_mouseover(evt); | ||
| 337 | + }, this)); | ||
| 338 | + this.search_results.mouseout(__bind(function(evt) { | ||
| 339 | + return this.search_results_mouseout(evt); | ||
| 340 | + }, this)); | ||
| 341 | + this.form_field_jq.bind("liszt:updated", __bind(function(evt) { | ||
| 342 | + return this.results_update_field(evt); | ||
| 343 | + }, this)); | ||
| 344 | + this.search_field.blur(__bind(function(evt) { | ||
| 345 | + return this.input_blur(evt); | ||
| 346 | + }, this)); | ||
| 347 | + this.search_field.keyup(__bind(function(evt) { | ||
| 348 | + return this.keyup_checker(evt); | ||
| 349 | + }, this)); | ||
| 350 | + this.search_field.keydown(__bind(function(evt) { | ||
| 351 | + return this.keydown_checker(evt); | ||
| 352 | + }, this)); | ||
| 353 | + if (this.is_multiple) { | ||
| 354 | + this.search_choices.click(__bind(function(evt) { | ||
| 355 | + return this.choices_click(evt); | ||
| 356 | + }, this)); | ||
| 357 | + return this.search_field.focus(__bind(function(evt) { | ||
| 358 | + return this.input_focus(evt); | ||
| 359 | + }, this)); | ||
| 360 | + } | ||
| 361 | + }; | ||
| 362 | + Chosen.prototype.search_field_disabled = function() { | ||
| 363 | + this.is_disabled = this.form_field_jq[0].disabled; | ||
| 364 | + if (this.is_disabled) { | ||
| 365 | + this.container.addClass('chzn-disabled'); | ||
| 366 | + this.search_field[0].disabled = true; | ||
| 367 | + if (!this.is_multiple) { | ||
| 368 | + this.selected_item.unbind("focus", this.activate_action); | ||
| 369 | + } | ||
| 370 | + return this.close_field(); | ||
| 371 | + } else { | ||
| 372 | + this.container.removeClass('chzn-disabled'); | ||
| 373 | + this.search_field[0].disabled = false; | ||
| 374 | + if (!this.is_multiple) { | ||
| 375 | + return this.selected_item.bind("focus", this.activate_action); | ||
| 376 | + } | ||
| 377 | + } | ||
| 378 | + }; | ||
| 379 | + Chosen.prototype.container_mousedown = function(evt) { | ||
| 380 | + var target_closelink; | ||
| 381 | + if (!this.is_disabled) { | ||
| 382 | + target_closelink = evt != null ? ($(evt.target)).hasClass("search-choice-close") : false; | ||
| 383 | + if (evt && evt.type === "mousedown") { | ||
| 384 | + evt.stopPropagation(); | ||
| 385 | + } | ||
| 386 | + if (!this.pending_destroy_click && !target_closelink) { | ||
| 387 | + if (!this.active_field) { | ||
| 388 | + if (this.is_multiple) { | ||
| 389 | + this.search_field.val(""); | ||
| 390 | + } | ||
| 391 | + $(document).click(this.click_test_action); | ||
| 392 | + this.results_show(); | ||
| 393 | + } else if (!this.is_multiple && evt && ($(evt.target) === this.selected_item || $(evt.target).parents("a.chzn-single").length)) { | ||
| 394 | + evt.preventDefault(); | ||
| 395 | + this.results_toggle(); | ||
| 396 | + } | ||
| 397 | + return this.activate_field(); | ||
| 398 | + } else { | ||
| 399 | + return this.pending_destroy_click = false; | ||
| 400 | + } | ||
| 401 | + } | ||
| 402 | + }; | ||
| 403 | + Chosen.prototype.container_mouseup = function(evt) { | ||
| 404 | + if (evt.target.nodeName === "ABBR") { | ||
| 405 | + return this.results_reset(evt); | ||
| 406 | + } | ||
| 407 | + }; | ||
| 408 | + Chosen.prototype.blur_test = function(evt) { | ||
| 409 | + if (!this.active_field && this.container.hasClass("chzn-container-active")) { | ||
| 410 | + return this.close_field(); | ||
| 411 | + } | ||
| 412 | + }; | ||
| 413 | + Chosen.prototype.close_field = function() { | ||
| 414 | + $(document).unbind("click", this.click_test_action); | ||
| 415 | + if (!this.is_multiple) { | ||
| 416 | + this.selected_item.attr("tabindex", this.search_field.attr("tabindex")); | ||
| 417 | + this.search_field.attr("tabindex", -1); | ||
| 418 | + } | ||
| 419 | + this.active_field = false; | ||
| 420 | + this.results_hide(); | ||
| 421 | + this.container.removeClass("chzn-container-active"); | ||
| 422 | + this.winnow_results_clear(); | ||
| 423 | + this.clear_backstroke(); | ||
| 424 | + this.show_search_field_default(); | ||
| 425 | + return this.search_field_scale(); | ||
| 426 | + }; | ||
| 427 | + Chosen.prototype.activate_field = function() { | ||
| 428 | + if (!this.is_multiple && !this.active_field) { | ||
| 429 | + this.search_field.attr("tabindex", this.selected_item.attr("tabindex")); | ||
| 430 | + this.selected_item.attr("tabindex", -1); | ||
| 431 | + } | ||
| 432 | + this.container.addClass("chzn-container-active"); | ||
| 433 | + this.active_field = true; | ||
| 434 | + this.search_field.val(this.search_field.val()); | ||
| 435 | + return this.search_field.focus(); | ||
| 436 | + }; | ||
| 437 | + Chosen.prototype.test_active_click = function(evt) { | ||
| 438 | + if ($(evt.target).parents('#' + this.container_id).length) { | ||
| 439 | + return this.active_field = true; | ||
| 440 | + } else { | ||
| 441 | + return this.close_field(); | ||
| 442 | + } | ||
| 443 | + }; | ||
| 444 | + Chosen.prototype.results_build = function() { | ||
| 445 | + var content, data, startTime, _i, _len, _ref; | ||
| 446 | + startTime = new Date(); | ||
| 447 | + this.parsing = true; | ||
| 448 | + this.results_data = root.SelectParser.select_to_array(this.form_field); | ||
| 449 | + if (this.is_multiple && this.choices > 0) { | ||
| 450 | + this.search_choices.find("li.search-choice").remove(); | ||
| 451 | + this.choices = 0; | ||
| 452 | + } else if (!this.is_multiple) { | ||
| 453 | + this.selected_item.find("span").text(this.default_text); | ||
| 454 | + if (this.form_field.options.length <= this.disable_search_threshold) { | ||
| 455 | + this.container.addClass("chzn-container-single-nosearch"); | ||
| 456 | + } else { | ||
| 457 | + this.container.removeClass("chzn-container-single-nosearch"); | ||
| 458 | + } | ||
| 459 | + } | ||
| 460 | + content = ''; | ||
| 461 | + _ref = this.results_data; | ||
| 462 | + for (_i = 0, _len = _ref.length; _i < _len; _i++) { | ||
| 463 | + data = _ref[_i]; | ||
| 464 | + if (data.group) { | ||
| 465 | + content += this.result_add_group(data); | ||
| 466 | + } else if (!data.empty) { | ||
| 467 | + content += this.result_add_option(data); | ||
| 468 | + if (data.selected && this.is_multiple) { | ||
| 469 | + this.choice_build(data); | ||
| 470 | + } else if (data.selected && !this.is_multiple) { | ||
| 471 | + this.selected_item.find("span").text(data.text); | ||
| 472 | + if (this.allow_single_deselect) { | ||
| 473 | + this.single_deselect_control_build(); | ||
| 474 | + } | ||
| 475 | + } | ||
| 476 | + } | ||
| 477 | + } | ||
| 478 | + this.search_field_disabled(); | ||
| 479 | + this.show_search_field_default(); | ||
| 480 | + this.search_field_scale(); | ||
| 481 | + this.search_results.html(content); | ||
| 482 | + return this.parsing = false; | ||
| 483 | + }; | ||
| 484 | + Chosen.prototype.result_add_group = function(group) { | ||
| 485 | + if (!group.disabled) { | ||
| 486 | + group.dom_id = this.container_id + "_g_" + group.array_index; | ||
| 487 | + return '<li id="' + group.dom_id + '" class="group-result">' + $("<div />").text(group.label).html() + '</li>'; | ||
| 488 | + } else { | ||
| 489 | + return ""; | ||
| 490 | + } | ||
| 491 | + }; | ||
| 492 | + Chosen.prototype.result_do_highlight = function(el) { | ||
| 493 | + var high_bottom, high_top, maxHeight, visible_bottom, visible_top; | ||
| 494 | + if (el.length) { | ||
| 495 | + this.result_clear_highlight(); | ||
| 496 | + this.result_highlight = el; | ||
| 497 | + this.result_highlight.addClass("highlighted"); | ||
| 498 | + maxHeight = parseInt(this.search_results.css("maxHeight"), 10); | ||
| 499 | + visible_top = this.search_results.scrollTop(); | ||
| 500 | + visible_bottom = maxHeight + visible_top; | ||
| 501 | + high_top = this.result_highlight.position().top + this.search_results.scrollTop(); | ||
| 502 | + high_bottom = high_top + this.result_highlight.outerHeight(); | ||
| 503 | + if (high_bottom >= visible_bottom) { | ||
| 504 | + return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0); | ||
| 505 | + } else if (high_top < visible_top) { | ||
| 506 | + return this.search_results.scrollTop(high_top); | ||
| 507 | + } | ||
| 508 | + } | ||
| 509 | + }; | ||
| 510 | + Chosen.prototype.result_clear_highlight = function() { | ||
| 511 | + if (this.result_highlight) { | ||
| 512 | + this.result_highlight.removeClass("highlighted"); | ||
| 513 | + } | ||
| 514 | + return this.result_highlight = null; | ||
| 515 | + }; | ||
| 516 | + Chosen.prototype.results_show = function() { | ||
| 517 | + var dd_top; | ||
| 518 | + if (!this.is_multiple) { | ||
| 519 | + this.selected_item.addClass("chzn-single-with-drop"); | ||
| 520 | + if (this.result_single_selected) { | ||
| 521 | + this.result_do_highlight(this.result_single_selected); | ||
| 522 | + } | ||
| 523 | + } | ||
| 524 | + dd_top = this.is_multiple ? this.container.height() : this.container.height() - 1; | ||
| 525 | + this.dropdown.css({ | ||
| 526 | + "top": dd_top + "px", | ||
| 527 | + "left": 0 | ||
| 528 | + }); | ||
| 529 | + this.results_showing = true; | ||
| 530 | + this.search_field.focus(); | ||
| 531 | + this.search_field.val(this.search_field.val()); | ||
| 532 | + return this.winnow_results(); | ||
| 533 | + }; | ||
| 534 | + Chosen.prototype.results_hide = function() { | ||
| 535 | + if (!this.is_multiple) { | ||
| 536 | + this.selected_item.removeClass("chzn-single-with-drop"); | ||
| 537 | + } | ||
| 538 | + this.result_clear_highlight(); | ||
| 539 | + this.dropdown.css({ | ||
| 540 | + "left": "-9000px" | ||
| 541 | + }); | ||
| 542 | + return this.results_showing = false; | ||
| 543 | + }; | ||
| 544 | + Chosen.prototype.set_tab_index = function(el) { | ||
| 545 | + var ti; | ||
| 546 | + if (this.form_field_jq.attr("tabindex")) { | ||
| 547 | + ti = this.form_field_jq.attr("tabindex"); | ||
| 548 | + this.form_field_jq.attr("tabindex", -1); | ||
| 549 | + if (this.is_multiple) { | ||
| 550 | + return this.search_field.attr("tabindex", ti); | ||
| 551 | + } else { | ||
| 552 | + this.selected_item.attr("tabindex", ti); | ||
| 553 | + return this.search_field.attr("tabindex", -1); | ||
| 554 | + } | ||
| 555 | + } | ||
| 556 | + }; | ||
| 557 | + Chosen.prototype.show_search_field_default = function() { | ||
| 558 | + if (this.is_multiple && this.choices < 1 && !this.active_field) { | ||
| 559 | + this.search_field.val(this.default_text); | ||
| 560 | + return this.search_field.addClass("default"); | ||
| 561 | + } else { | ||
| 562 | + this.search_field.val(""); | ||
| 563 | + return this.search_field.removeClass("default"); | ||
| 564 | + } | ||
| 565 | + }; | ||
| 566 | + Chosen.prototype.search_results_mouseup = function(evt) { | ||
| 567 | + var target; | ||
| 568 | + target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); | ||
| 569 | + if (target.length) { | ||
| 570 | + this.result_highlight = target; | ||
| 571 | + return this.result_select(evt); | ||
| 572 | + } | ||
| 573 | + }; | ||
| 574 | + Chosen.prototype.search_results_mouseover = function(evt) { | ||
| 575 | + var target; | ||
| 576 | + target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); | ||
| 577 | + if (target) { | ||
| 578 | + return this.result_do_highlight(target); | ||
| 579 | + } | ||
| 580 | + }; | ||
| 581 | + Chosen.prototype.search_results_mouseout = function(evt) { | ||
| 582 | + if ($(evt.target).hasClass("active-result" || $(evt.target).parents('.active-result').first())) { | ||
| 583 | + return this.result_clear_highlight(); | ||
| 584 | + } | ||
| 585 | + }; | ||
| 586 | + Chosen.prototype.choices_click = function(evt) { | ||
| 587 | + evt.preventDefault(); | ||
| 588 | + if (this.active_field && !($(evt.target).hasClass("search-choice" || $(evt.target).parents('.search-choice').first)) && !this.results_showing) { | ||
| 589 | + return this.results_show(); | ||
| 590 | + } | ||
| 591 | + }; | ||
| 592 | + Chosen.prototype.choice_build = function(item) { | ||
| 593 | + var choice_id, link; | ||
| 594 | + choice_id = this.container_id + "_c_" + item.array_index; | ||
| 595 | + this.choices += 1; | ||
| 596 | + this.search_container.before('<li class="search-choice" id="' + choice_id + '"><span>' + item.html + '</span><a href="javascript:void(0)" class="search-choice-close" rel="' + item.array_index + '"></a></li>'); | ||
| 597 | + link = $('#' + choice_id).find("a").first(); | ||
| 598 | + return link.click(__bind(function(evt) { | ||
| 599 | + return this.choice_destroy_link_click(evt); | ||
| 600 | + }, this)); | ||
| 601 | + }; | ||
| 602 | + Chosen.prototype.choice_destroy_link_click = function(evt) { | ||
| 603 | + evt.preventDefault(); | ||
| 604 | + if (!this.is_disabled) { | ||
| 605 | + this.pending_destroy_click = true; | ||
| 606 | + return this.choice_destroy($(evt.target)); | ||
| 607 | + } else { | ||
| 608 | + return evt.stopPropagation; | ||
| 609 | + } | ||
| 610 | + }; | ||
| 611 | + Chosen.prototype.choice_destroy = function(link) { | ||
| 612 | + this.choices -= 1; | ||
| 613 | + this.show_search_field_default(); | ||
| 614 | + if (this.is_multiple && this.choices > 0 && this.search_field.val().length < 1) { | ||
| 615 | + this.results_hide(); | ||
| 616 | + } | ||
| 617 | + this.result_deselect(link.attr("rel")); | ||
| 618 | + return link.parents('li').first().remove(); | ||
| 619 | + }; | ||
| 620 | + Chosen.prototype.results_reset = function(evt) { | ||
| 621 | + this.form_field.options[0].selected = true; | ||
| 622 | + this.selected_item.find("span").text(this.default_text); | ||
| 623 | + this.show_search_field_default(); | ||
| 624 | + $(evt.target).remove(); | ||
| 625 | + this.form_field_jq.trigger("change"); | ||
| 626 | + if (this.active_field) { | ||
| 627 | + return this.results_hide(); | ||
| 628 | + } | ||
| 629 | + }; | ||
| 630 | + Chosen.prototype.result_select = function(evt) { | ||
| 631 | + var high, high_id, item, position; | ||
| 632 | + if (this.result_highlight) { | ||
| 633 | + high = this.result_highlight; | ||
| 634 | + high_id = high.attr("id"); | ||
| 635 | + this.result_clear_highlight(); | ||
| 636 | + if (this.is_multiple) { | ||
| 637 | + this.result_deactivate(high); | ||
| 638 | + } else { | ||
| 639 | + this.search_results.find(".result-selected").removeClass("result-selected"); | ||
| 640 | + this.result_single_selected = high; | ||
| 641 | + } | ||
| 642 | + high.addClass("result-selected"); | ||
| 643 | + position = high_id.substr(high_id.lastIndexOf("_") + 1); | ||
| 644 | + item = this.results_data[position]; | ||
| 645 | + item.selected = true; | ||
| 646 | + this.form_field.options[item.options_index].selected = true; | ||
| 647 | + if (this.is_multiple) { | ||
| 648 | + this.choice_build(item); | ||
| 649 | + } else { | ||
| 650 | + this.selected_item.find("span").first().text(item.text); | ||
| 651 | + if (this.allow_single_deselect) { | ||
| 652 | + this.single_deselect_control_build(); | ||
| 653 | + } | ||
| 654 | + } | ||
| 655 | + if (!(evt.metaKey && this.is_multiple)) { | ||
| 656 | + this.results_hide(); | ||
| 657 | + } | ||
| 658 | + this.search_field.val(""); | ||
| 659 | + this.form_field_jq.trigger("change"); | ||
| 660 | + return this.search_field_scale(); | ||
| 661 | + } | ||
| 662 | + }; | ||
| 663 | + Chosen.prototype.result_activate = function(el) { | ||
| 664 | + return el.addClass("active-result"); | ||
| 665 | + }; | ||
| 666 | + Chosen.prototype.result_deactivate = function(el) { | ||
| 667 | + return el.removeClass("active-result"); | ||
| 668 | + }; | ||
| 669 | + Chosen.prototype.result_deselect = function(pos) { | ||
| 670 | + var result, result_data; | ||
| 671 | + result_data = this.results_data[pos]; | ||
| 672 | + result_data.selected = false; | ||
| 673 | + this.form_field.options[result_data.options_index].selected = false; | ||
| 674 | + result = $("#" + this.container_id + "_o_" + pos); | ||
| 675 | + result.removeClass("result-selected").addClass("active-result").show(); | ||
| 676 | + this.result_clear_highlight(); | ||
| 677 | + this.winnow_results(); | ||
| 678 | + this.form_field_jq.trigger("change"); | ||
| 679 | + return this.search_field_scale(); | ||
| 680 | + }; | ||
| 681 | + Chosen.prototype.single_deselect_control_build = function() { | ||
| 682 | + if (this.allow_single_deselect && this.selected_item.find("abbr").length < 1) { | ||
| 683 | + return this.selected_item.find("span").first().after("<abbr class=\"search-choice-close\"></abbr>"); | ||
| 684 | + } | ||
| 685 | + }; | ||
| 686 | + Chosen.prototype.winnow_results = function() { | ||
| 687 | + var found, option, part, parts, regex, result_id, results, searchText, startTime, startpos, text, zregex, _i, _j, _len, _len2, _ref; | ||
| 688 | + startTime = new Date(); | ||
| 689 | + this.no_results_clear(); | ||
| 690 | + results = 0; | ||
| 691 | + searchText = this.search_field.val() === this.default_text ? "" : $('<div/>').text($.trim(this.search_field.val())).html(); | ||
| 692 | + regex = new RegExp('^' + searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i'); | ||
| 693 | + zregex = new RegExp(searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i'); | ||
| 694 | + _ref = this.results_data; | ||
| 695 | + for (_i = 0, _len = _ref.length; _i < _len; _i++) { | ||
| 696 | + option = _ref[_i]; | ||
| 697 | + if (!option.disabled && !option.empty) { | ||
| 698 | + if (option.group) { | ||
| 699 | + $('#' + option.dom_id).hide(); | ||
| 700 | + } else if (!(this.is_multiple && option.selected)) { | ||
| 701 | + found = false; | ||
| 702 | + result_id = option.dom_id; | ||
| 703 | + if (regex.test(option.html)) { | ||
| 704 | + found = true; | ||
| 705 | + results += 1; | ||
| 706 | + } else if (option.html.indexOf(" ") >= 0 || option.html.indexOf("[") === 0) { | ||
| 707 | + parts = option.html.replace(/\[|\]/g, "").split(" "); | ||
| 708 | + if (parts.length) { | ||
| 709 | + for (_j = 0, _len2 = parts.length; _j < _len2; _j++) { | ||
| 710 | + part = parts[_j]; | ||
| 711 | + if (regex.test(part)) { | ||
| 712 | + found = true; | ||
| 713 | + results += 1; | ||
| 714 | + } | ||
| 715 | + } | ||
| 716 | + } | ||
| 717 | + } | ||
| 718 | + if (found) { | ||
| 719 | + if (searchText.length) { | ||
| 720 | + startpos = option.html.search(zregex); | ||
| 721 | + text = option.html.substr(0, startpos + searchText.length) + '</em>' + option.html.substr(startpos + searchText.length); | ||
| 722 | + text = text.substr(0, startpos) + '<em>' + text.substr(startpos); | ||
| 723 | + } else { | ||
| 724 | + text = option.html; | ||
| 725 | + } | ||
| 726 | + if ($("#" + result_id).html !== text) { | ||
| 727 | + $("#" + result_id).html(text); | ||
| 728 | + } | ||
| 729 | + this.result_activate($("#" + result_id)); | ||
| 730 | + if (option.group_array_index != null) { | ||
| 731 | + $("#" + this.results_data[option.group_array_index].dom_id).show(); | ||
| 732 | + } | ||
| 733 | + } else { | ||
| 734 | + if (this.result_highlight && result_id === this.result_highlight.attr('id')) { | ||
| 735 | + this.result_clear_highlight(); | ||
| 736 | + } | ||
| 737 | + this.result_deactivate($("#" + result_id)); | ||
| 738 | + } | ||
| 739 | + } | ||
| 740 | + } | ||
| 741 | + } | ||
| 742 | + if (results < 1 && searchText.length) { | ||
| 743 | + return this.no_results(searchText); | ||
| 744 | + } else { | ||
| 745 | + return this.winnow_results_set_highlight(); | ||
| 746 | + } | ||
| 747 | + }; | ||
| 748 | + Chosen.prototype.winnow_results_clear = function() { | ||
| 749 | + var li, lis, _i, _len, _results; | ||
| 750 | + this.search_field.val(""); | ||
| 751 | + lis = this.search_results.find("li"); | ||
| 752 | + _results = []; | ||
| 753 | + for (_i = 0, _len = lis.length; _i < _len; _i++) { | ||
| 754 | + li = lis[_i]; | ||
| 755 | + li = $(li); | ||
| 756 | + _results.push(li.hasClass("group-result") ? li.show() : !this.is_multiple || !li.hasClass("result-selected") ? this.result_activate(li) : void 0); | ||
| 757 | + } | ||
| 758 | + return _results; | ||
| 759 | + }; | ||
| 760 | + Chosen.prototype.winnow_results_set_highlight = function() { | ||
| 761 | + var do_high, selected_results; | ||
| 762 | + if (!this.result_highlight) { | ||
| 763 | + selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : []; | ||
| 764 | + do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first(); | ||
| 765 | + if (do_high != null) { | ||
| 766 | + return this.result_do_highlight(do_high); | ||
| 767 | + } | ||
| 768 | + } | ||
| 769 | + }; | ||
| 770 | + Chosen.prototype.no_results = function(terms) { | ||
| 771 | + var no_results_html; | ||
| 772 | + no_results_html = $('<li class="no-results">' + this.results_none_found + ' "<span></span>"</li>'); | ||
| 773 | + no_results_html.find("span").first().html(terms); | ||
| 774 | + return this.search_results.append(no_results_html); | ||
| 775 | + }; | ||
| 776 | + Chosen.prototype.no_results_clear = function() { | ||
| 777 | + return this.search_results.find(".no-results").remove(); | ||
| 778 | + }; | ||
| 779 | + Chosen.prototype.keydown_arrow = function() { | ||
| 780 | + var first_active, next_sib; | ||
| 781 | + if (!this.result_highlight) { | ||
| 782 | + first_active = this.search_results.find("li.active-result").first(); | ||
| 783 | + if (first_active) { | ||
| 784 | + this.result_do_highlight($(first_active)); | ||
| 785 | + } | ||
| 786 | + } else if (this.results_showing) { | ||
| 787 | + next_sib = this.result_highlight.nextAll("li.active-result").first(); | ||
| 788 | + if (next_sib) { | ||
| 789 | + this.result_do_highlight(next_sib); | ||
| 790 | + } | ||
| 791 | + } | ||
| 792 | + if (!this.results_showing) { | ||
| 793 | + return this.results_show(); | ||
| 794 | + } | ||
| 795 | + }; | ||
| 796 | + Chosen.prototype.keyup_arrow = function() { | ||
| 797 | + var prev_sibs; | ||
| 798 | + if (!this.results_showing && !this.is_multiple) { | ||
| 799 | + return this.results_show(); | ||
| 800 | + } else if (this.result_highlight) { | ||
| 801 | + prev_sibs = this.result_highlight.prevAll("li.active-result"); | ||
| 802 | + if (prev_sibs.length) { | ||
| 803 | + return this.result_do_highlight(prev_sibs.first()); | ||
| 804 | + } else { | ||
| 805 | + if (this.choices > 0) { | ||
| 806 | + this.results_hide(); | ||
| 807 | + } | ||
| 808 | + return this.result_clear_highlight(); | ||
| 809 | + } | ||
| 810 | + } | ||
| 811 | + }; | ||
| 812 | + Chosen.prototype.keydown_backstroke = function() { | ||
| 813 | + if (this.pending_backstroke) { | ||
| 814 | + this.choice_destroy(this.pending_backstroke.find("a").first()); | ||
| 815 | + return this.clear_backstroke(); | ||
| 816 | + } else { | ||
| 817 | + this.pending_backstroke = this.search_container.siblings("li.search-choice").last(); | ||
| 818 | + return this.pending_backstroke.addClass("search-choice-focus"); | ||
| 819 | + } | ||
| 820 | + }; | ||
| 821 | + Chosen.prototype.clear_backstroke = function() { | ||
| 822 | + if (this.pending_backstroke) { | ||
| 823 | + this.pending_backstroke.removeClass("search-choice-focus"); | ||
| 824 | + } | ||
| 825 | + return this.pending_backstroke = null; | ||
| 826 | + }; | ||
| 827 | + Chosen.prototype.keydown_checker = function(evt) { | ||
| 828 | + var stroke, _ref; | ||
| 829 | + stroke = (_ref = evt.which) != null ? _ref : evt.keyCode; | ||
| 830 | + this.search_field_scale(); | ||
| 831 | + if (stroke !== 8 && this.pending_backstroke) { | ||
| 832 | + this.clear_backstroke(); | ||
| 833 | + } | ||
| 834 | + switch (stroke) { | ||
| 835 | + case 8: | ||
| 836 | + this.backstroke_length = this.search_field.val().length; | ||
| 837 | + break; | ||
| 838 | + case 9: | ||
| 839 | + if (this.results_showing && !this.is_multiple) { | ||
| 840 | + this.result_select(evt); | ||
| 841 | + } | ||
| 842 | + this.mouse_on_container = false; | ||
| 843 | + break; | ||
| 844 | + case 13: | ||
| 845 | + evt.preventDefault(); | ||
| 846 | + break; | ||
| 847 | + case 38: | ||
| 848 | + evt.preventDefault(); | ||
| 849 | + this.keyup_arrow(); | ||
| 850 | + break; | ||
| 851 | + case 40: | ||
| 852 | + this.keydown_arrow(); | ||
| 853 | + break; | ||
| 854 | + } | ||
| 855 | + }; | ||
| 856 | + Chosen.prototype.search_field_scale = function() { | ||
| 857 | + var dd_top, div, h, style, style_block, styles, w, _i, _len; | ||
| 858 | + if (this.is_multiple) { | ||
| 859 | + h = 0; | ||
| 860 | + w = 0; | ||
| 861 | + style_block = "position:absolute; left: -1000px; top: -1000px; display:none;"; | ||
| 862 | + styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing']; | ||
| 863 | + for (_i = 0, _len = styles.length; _i < _len; _i++) { | ||
| 864 | + style = styles[_i]; | ||
| 865 | + style_block += style + ":" + this.search_field.css(style) + ";"; | ||
| 866 | + } | ||
| 867 | + div = $('<div />', { | ||
| 868 | + 'style': style_block | ||
| 869 | + }); | ||
| 870 | + div.text(this.search_field.val()); | ||
| 871 | + $('body').append(div); | ||
| 872 | + w = div.width() + 25; | ||
| 873 | + div.remove(); | ||
| 874 | + if (w > this.f_width - 10) { | ||
| 875 | + w = this.f_width - 10; | ||
| 876 | + } | ||
| 877 | + this.search_field.css({ | ||
| 878 | + 'width': w + 'px' | ||
| 879 | + }); | ||
| 880 | + dd_top = this.container.height(); | ||
| 881 | + return this.dropdown.css({ | ||
| 882 | + "top": dd_top + "px" | ||
| 883 | + }); | ||
| 884 | + } | ||
| 885 | + }; | ||
| 886 | + Chosen.prototype.generate_random_id = function() { | ||
| 887 | + var string; | ||
| 888 | + string = "sel" + this.generate_random_char() + this.generate_random_char() + this.generate_random_char(); | ||
| 889 | + while ($("#" + string).length > 0) { | ||
| 890 | + string += this.generate_random_char(); | ||
| 891 | + } | ||
| 892 | + return string; | ||
| 893 | + }; | ||
| 894 | + return Chosen; | ||
| 895 | + })(); | ||
| 896 | + get_side_border_padding = function(elmt) { | ||
| 897 | + var side_border_padding; | ||
| 898 | + return side_border_padding = elmt.outerWidth() - elmt.width(); | ||
| 899 | + }; | ||
| 900 | + root.get_side_border_padding = get_side_border_padding; | ||
| 901 | +}).call(this); |
| @@ -0,0 +1,367 @@ | @@ -0,0 +1,367 @@ | ||
| 1 | +/* @group Base */ | ||
| 2 | +.chzn-container { | ||
| 3 | + font-size: 13px; | ||
| 4 | + position: relative; | ||
| 5 | + display: inline-block; | ||
| 6 | + zoom: 1; | ||
| 7 | + *display: inline; | ||
| 8 | +} | ||
| 9 | +.chzn-container .chzn-drop { | ||
| 10 | + background: #fff; | ||
| 11 | + border: 1px solid #aaa; | ||
| 12 | + border-top: 0; | ||
| 13 | + position: absolute; | ||
| 14 | + top: 29px; | ||
| 15 | + left: 0; | ||
| 16 | + -webkit-box-shadow: 0 4px 5px rgba(0,0,0,.15); | ||
| 17 | + -moz-box-shadow : 0 4px 5px rgba(0,0,0,.15); | ||
| 18 | + -o-box-shadow : 0 4px 5px rgba(0,0,0,.15); | ||
| 19 | + box-shadow : 0 4px 5px rgba(0,0,0,.15); | ||
| 20 | + z-index: 999; | ||
| 21 | +} | ||
| 22 | +/* @end */ | ||
| 23 | + | ||
| 24 | +/* @group Single Chosen */ | ||
| 25 | +.chzn-container-single .chzn-single { | ||
| 26 | + background-color: #fff; | ||
| 27 | + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.5, white)); | ||
| 28 | + background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 50%); | ||
| 29 | + background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 50%); | ||
| 30 | + background-image: -o-linear-gradient(top, #eeeeee 0%,#ffffff 50%); | ||
| 31 | + background-image: -ms-linear-gradient(top, #eeeeee 0%,#ffffff 50%); | ||
| 32 | + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff',GradientType=0 ); | ||
| 33 | + background-image: linear-gradient(top, #eeeeee 0%,#ffffff 50%); | ||
| 34 | + -webkit-border-radius: 4px; | ||
| 35 | + -moz-border-radius : 4px; | ||
| 36 | + border-radius : 4px; | ||
| 37 | + -moz-background-clip : padding; | ||
| 38 | + -webkit-background-clip: padding-box; | ||
| 39 | + background-clip : padding-box; | ||
| 40 | + border: 1px solid #aaa; | ||
| 41 | + display: block; | ||
| 42 | + overflow: hidden; | ||
| 43 | + white-space: nowrap; | ||
| 44 | + position: relative; | ||
| 45 | + height: 26px; | ||
| 46 | + line-height: 26px; | ||
| 47 | + padding: 0 0 0 8px; | ||
| 48 | + color: #444; | ||
| 49 | + text-decoration: none; | ||
| 50 | +} | ||
| 51 | +.chzn-container-single .chzn-single span { | ||
| 52 | + margin-right: 26px; | ||
| 53 | + display: block; | ||
| 54 | + overflow: hidden; | ||
| 55 | + white-space: nowrap; | ||
| 56 | + -o-text-overflow: ellipsis; | ||
| 57 | + -ms-text-overflow: ellipsis; | ||
| 58 | + text-overflow: ellipsis; | ||
| 59 | +} | ||
| 60 | +.chzn-container-single .chzn-single abbr { | ||
| 61 | + display: block; | ||
| 62 | + position: absolute; | ||
| 63 | + right: 26px; | ||
| 64 | + top: 8px; | ||
| 65 | + width: 12px; | ||
| 66 | + height: 13px; | ||
| 67 | + font-size: 1px; | ||
| 68 | + background: url(chosen-sprite.png) right top no-repeat; | ||
| 69 | +} | ||
| 70 | +.chzn-container-single .chzn-single abbr:hover { | ||
| 71 | + background-position: right -11px; | ||
| 72 | +} | ||
| 73 | +.chzn-container-single .chzn-single div { | ||
| 74 | + -webkit-border-radius: 0 4px 4px 0; | ||
| 75 | + -moz-border-radius : 0 4px 4px 0; | ||
| 76 | + border-radius : 0 4px 4px 0; | ||
| 77 | + -moz-background-clip : padding; | ||
| 78 | + -webkit-background-clip: padding-box; | ||
| 79 | + background-clip : padding-box; | ||
| 80 | + background: #ccc; | ||
| 81 | + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee)); | ||
| 82 | + background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%); | ||
| 83 | + background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%); | ||
| 84 | + background-image: -o-linear-gradient(bottom, #ccc 0%, #eee 60%); | ||
| 85 | + background-image: -ms-linear-gradient(top, #cccccc 0%,#eeeeee 60%); | ||
| 86 | + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cccccc', endColorstr='#eeeeee',GradientType=0 ); | ||
| 87 | + background-image: linear-gradient(top, #cccccc 0%,#eeeeee 60%); | ||
| 88 | + border-left: 1px solid #aaa; | ||
| 89 | + position: absolute; | ||
| 90 | + right: 0; | ||
| 91 | + top: 0; | ||
| 92 | + display: block; | ||
| 93 | + height: 100%; | ||
| 94 | + width: 18px; | ||
| 95 | +} | ||
| 96 | +.chzn-container-single .chzn-single div b { | ||
| 97 | + background: url('chosen-sprite.png') no-repeat 0 1px; | ||
| 98 | + display: block; | ||
| 99 | + width: 100%; | ||
| 100 | + height: 100%; | ||
| 101 | +} | ||
| 102 | +.chzn-container-single .chzn-search { | ||
| 103 | + padding: 3px 4px; | ||
| 104 | + position: relative; | ||
| 105 | + margin: 0; | ||
| 106 | + white-space: nowrap; | ||
| 107 | + z-index: 1010; | ||
| 108 | +} | ||
| 109 | +.chzn-container-single .chzn-search input { | ||
| 110 | + background: #fff url('chosen-sprite.png') no-repeat 100% -22px; | ||
| 111 | + background: url('chosen-sprite.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee)); | ||
| 112 | + background: url('chosen-sprite.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%); | ||
| 113 | + background: url('chosen-sprite.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%); | ||
| 114 | + background: url('chosen-sprite.png') no-repeat 100% -22px, -o-linear-gradient(bottom, white 85%, #eeeeee 99%); | ||
| 115 | + background: url('chosen-sprite.png') no-repeat 100% -22px, -ms-linear-gradient(top, #ffffff 85%,#eeeeee 99%); | ||
| 116 | + background: url('chosen-sprite.png') no-repeat 100% -22px, linear-gradient(top, #ffffff 85%,#eeeeee 99%); | ||
| 117 | + margin: 1px 0; | ||
| 118 | + padding: 4px 20px 4px 5px; | ||
| 119 | + outline: 0; | ||
| 120 | + border: 1px solid #aaa; | ||
| 121 | + font-family: sans-serif; | ||
| 122 | + font-size: 1em; | ||
| 123 | +} | ||
| 124 | +.chzn-container-single .chzn-drop { | ||
| 125 | + -webkit-border-radius: 0 0 4px 4px; | ||
| 126 | + -moz-border-radius : 0 0 4px 4px; | ||
| 127 | + border-radius : 0 0 4px 4px; | ||
| 128 | + -moz-background-clip : padding; | ||
| 129 | + -webkit-background-clip: padding-box; | ||
| 130 | + background-clip : padding-box; | ||
| 131 | +} | ||
| 132 | +/* @end */ | ||
| 133 | + | ||
| 134 | +.chzn-container-single-nosearch .chzn-search input { | ||
| 135 | + position: absolute; | ||
| 136 | + left: -9000px; | ||
| 137 | +} | ||
| 138 | + | ||
| 139 | +/* @group Multi Chosen */ | ||
| 140 | +.chzn-container-multi .chzn-choices { | ||
| 141 | + background-color: #fff; | ||
| 142 | + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee)); | ||
| 143 | + background-image: -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%); | ||
| 144 | + background-image: -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%); | ||
| 145 | + background-image: -o-linear-gradient(bottom, white 85%, #eeeeee 99%); | ||
| 146 | + background-image: -ms-linear-gradient(top, #ffffff 85%,#eeeeee 99%); | ||
| 147 | + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee',GradientType=0 ); | ||
| 148 | + background-image: linear-gradient(top, #ffffff 85%,#eeeeee 99%); | ||
| 149 | + border: 1px solid #aaa; | ||
| 150 | + margin: 0; | ||
| 151 | + padding: 0; | ||
| 152 | + cursor: text; | ||
| 153 | + overflow: hidden; | ||
| 154 | + height: auto !important; | ||
| 155 | + height: 1%; | ||
| 156 | + position: relative; | ||
| 157 | +} | ||
| 158 | +.chzn-container-multi .chzn-choices li { | ||
| 159 | + float: left; | ||
| 160 | + list-style: none; | ||
| 161 | +} | ||
| 162 | +.chzn-container-multi .chzn-choices .search-field { | ||
| 163 | + white-space: nowrap; | ||
| 164 | + margin: 0; | ||
| 165 | + padding: 0; | ||
| 166 | +} | ||
| 167 | +.chzn-container-multi .chzn-choices .search-field input { | ||
| 168 | + color: #666; | ||
| 169 | + background: transparent !important; | ||
| 170 | + border: 0 !important; | ||
| 171 | + padding: 5px; | ||
| 172 | + margin: 1px 0; | ||
| 173 | + outline: 0; | ||
| 174 | + -webkit-box-shadow: none; | ||
| 175 | + -moz-box-shadow : none; | ||
| 176 | + -o-box-shadow : none; | ||
| 177 | + box-shadow : none; | ||
| 178 | +} | ||
| 179 | +.chzn-container-multi .chzn-choices .search-field .default { | ||
| 180 | + color: #999; | ||
| 181 | +} | ||
| 182 | +.chzn-container-multi .chzn-choices .search-choice { | ||
| 183 | + -webkit-border-radius: 3px; | ||
| 184 | + -moz-border-radius : 3px; | ||
| 185 | + border-radius : 3px; | ||
| 186 | + -moz-background-clip : padding; | ||
| 187 | + -webkit-background-clip: padding-box; | ||
| 188 | + background-clip : padding-box; | ||
| 189 | + background-color: #e4e4e4; | ||
| 190 | + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #e4e4e4), color-stop(0.7, #eeeeee)); | ||
| 191 | + background-image: -webkit-linear-gradient(center bottom, #e4e4e4 0%, #eeeeee 70%); | ||
| 192 | + background-image: -moz-linear-gradient(center bottom, #e4e4e4 0%, #eeeeee 70%); | ||
| 193 | + background-image: -o-linear-gradient(bottom, #e4e4e4 0%, #eeeeee 70%); | ||
| 194 | + background-image: -ms-linear-gradient(top, #e4e4e4 0%,#eeeeee 70%); | ||
| 195 | + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e4e4e4', endColorstr='#eeeeee',GradientType=0 ); | ||
| 196 | + background-image: linear-gradient(top, #e4e4e4 0%,#eeeeee 70%); | ||
| 197 | + color: #333; | ||
| 198 | + border: 1px solid #b4b4b4; | ||
| 199 | + line-height: 13px; | ||
| 200 | + padding: 3px 19px 3px 6px; | ||
| 201 | + margin: 3px 0 3px 5px; | ||
| 202 | + position: relative; | ||
| 203 | +} | ||
| 204 | +.chzn-container-multi .chzn-choices .search-choice span { | ||
| 205 | + cursor: default; | ||
| 206 | +} | ||
| 207 | +.chzn-container-multi .chzn-choices .search-choice-focus { | ||
| 208 | + background: #d4d4d4; | ||
| 209 | +} | ||
| 210 | +.chzn-container-multi .chzn-choices .search-choice .search-choice-close { | ||
| 211 | + display: block; | ||
| 212 | + position: absolute; | ||
| 213 | + right: 3px; | ||
| 214 | + top: 4px; | ||
| 215 | + width: 12px; | ||
| 216 | + height: 13px; | ||
| 217 | + font-size: 1px; | ||
| 218 | + background: url(chosen-sprite.png) right top no-repeat; | ||
| 219 | +} | ||
| 220 | +.chzn-container-multi .chzn-choices .search-choice .search-choice-close:hover { | ||
| 221 | + background-position: right -11px; | ||
| 222 | +} | ||
| 223 | +.chzn-container-multi .chzn-choices .search-choice-focus .search-choice-close { | ||
| 224 | + background-position: right -11px; | ||
| 225 | +} | ||
| 226 | +/* @end */ | ||
| 227 | + | ||
| 228 | +/* @group Results */ | ||
| 229 | +.chzn-container .chzn-results { | ||
| 230 | + margin: 0 4px 4px 0; | ||
| 231 | + max-height: 190px; | ||
| 232 | + padding: 0 0 0 4px; | ||
| 233 | + position: relative; | ||
| 234 | + overflow-x: hidden; | ||
| 235 | + overflow-y: auto; | ||
| 236 | +} | ||
| 237 | +.chzn-container-multi .chzn-results { | ||
| 238 | + margin: -1px 0 0; | ||
| 239 | + padding: 0; | ||
| 240 | +} | ||
| 241 | +.chzn-container .chzn-results li { | ||
| 242 | + display: none; | ||
| 243 | + line-height: 80%; | ||
| 244 | + padding: 7px 7px 8px; | ||
| 245 | + margin: 0; | ||
| 246 | + list-style: none; | ||
| 247 | +} | ||
| 248 | +.chzn-container .chzn-results .active-result { | ||
| 249 | + cursor: pointer; | ||
| 250 | + display: list-item; | ||
| 251 | +} | ||
| 252 | +.chzn-container .chzn-results .highlighted { | ||
| 253 | + background: #3875d7; | ||
| 254 | + color: #fff; | ||
| 255 | +} | ||
| 256 | +.chzn-container .chzn-results li em { | ||
| 257 | + background: #feffde; | ||
| 258 | + font-style: normal; | ||
| 259 | +} | ||
| 260 | +.chzn-container .chzn-results .highlighted em { | ||
| 261 | + background: transparent; | ||
| 262 | +} | ||
| 263 | +.chzn-container .chzn-results .no-results { | ||
| 264 | + background: #f4f4f4; | ||
| 265 | + display: list-item; | ||
| 266 | +} | ||
| 267 | +.chzn-container .chzn-results .group-result { | ||
| 268 | + cursor: default; | ||
| 269 | + color: #999; | ||
| 270 | + font-weight: bold; | ||
| 271 | +} | ||
| 272 | +.chzn-container .chzn-results .group-option { | ||
| 273 | + padding-left: 20px; | ||
| 274 | +} | ||
| 275 | +.chzn-container-multi .chzn-drop .result-selected { | ||
| 276 | + display: none; | ||
| 277 | +} | ||
| 278 | +/* @end */ | ||
| 279 | + | ||
| 280 | +/* @group Active */ | ||
| 281 | +.chzn-container-active .chzn-single { | ||
| 282 | + -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3); | ||
| 283 | + -moz-box-shadow : 0 0 5px rgba(0,0,0,.3); | ||
| 284 | + -o-box-shadow : 0 0 5px rgba(0,0,0,.3); | ||
| 285 | + box-shadow : 0 0 5px rgba(0,0,0,.3); | ||
| 286 | + border: 1px solid #5897fb; | ||
| 287 | +} | ||
| 288 | +.chzn-container-active .chzn-single-with-drop { | ||
| 289 | + border: 1px solid #aaa; | ||
| 290 | + -webkit-box-shadow: 0 1px 0 #fff inset; | ||
| 291 | + -moz-box-shadow : 0 1px 0 #fff inset; | ||
| 292 | + -o-box-shadow : 0 1px 0 #fff inset; | ||
| 293 | + box-shadow : 0 1px 0 #fff inset; | ||
| 294 | + background-color: #eee; | ||
| 295 | + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, white), color-stop(0.5, #eeeeee)); | ||
| 296 | + background-image: -webkit-linear-gradient(center bottom, white 0%, #eeeeee 50%); | ||
| 297 | + background-image: -moz-linear-gradient(center bottom, white 0%, #eeeeee 50%); | ||
| 298 | + background-image: -o-linear-gradient(bottom, white 0%, #eeeeee 50%); | ||
| 299 | + background-image: -ms-linear-gradient(top, #ffffff 0%,#eeeeee 50%); | ||
| 300 | + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee',GradientType=0 ); | ||
| 301 | + background-image: linear-gradient(top, #ffffff 0%,#eeeeee 50%); | ||
| 302 | + -webkit-border-bottom-left-radius : 0; | ||
| 303 | + -webkit-border-bottom-right-radius: 0; | ||
| 304 | + -moz-border-radius-bottomleft : 0; | ||
| 305 | + -moz-border-radius-bottomright: 0; | ||
| 306 | + border-bottom-left-radius : 0; | ||
| 307 | + border-bottom-right-radius: 0; | ||
| 308 | +} | ||
| 309 | +.chzn-container-active .chzn-single-with-drop div { | ||
| 310 | + background: transparent; | ||
| 311 | + border-left: none; | ||
| 312 | +} | ||
| 313 | +.chzn-container-active .chzn-single-with-drop div b { | ||
| 314 | + background-position: -18px 1px; | ||
| 315 | +} | ||
| 316 | +.chzn-container-active .chzn-choices { | ||
| 317 | + -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3); | ||
| 318 | + -moz-box-shadow : 0 0 5px rgba(0,0,0,.3); | ||
| 319 | + -o-box-shadow : 0 0 5px rgba(0,0,0,.3); | ||
| 320 | + box-shadow : 0 0 5px rgba(0,0,0,.3); | ||
| 321 | + border: 1px solid #5897fb; | ||
| 322 | +} | ||
| 323 | +.chzn-container-active .chzn-choices .search-field input { | ||
| 324 | + color: #111 !important; | ||
| 325 | +} | ||
| 326 | +/* @end */ | ||
| 327 | + | ||
| 328 | +/* @group Disabled Support */ | ||
| 329 | +.chzn-disabled { | ||
| 330 | + cursor: default; | ||
| 331 | + opacity:0.5 !important; | ||
| 332 | +} | ||
| 333 | +.chzn-disabled .chzn-single { | ||
| 334 | + cursor: default; | ||
| 335 | +} | ||
| 336 | +.chzn-disabled .chzn-choices .search-choice .search-choice-close { | ||
| 337 | + cursor: default; | ||
| 338 | +} | ||
| 339 | + | ||
| 340 | +/* @group Right to Left */ | ||
| 341 | +.chzn-rtl { direction:rtl;text-align: right; } | ||
| 342 | +.chzn-rtl .chzn-single { padding-left: 0; padding-right: 8px; } | ||
| 343 | +.chzn-rtl .chzn-single span { margin-left: 26px; margin-right: 0; } | ||
| 344 | +.chzn-rtl .chzn-single div { | ||
| 345 | + left: 0; right: auto; | ||
| 346 | + border-left: none; border-right: 1px solid #aaaaaa; | ||
| 347 | + -webkit-border-radius: 4px 0 0 4px; | ||
| 348 | + -moz-border-radius : 4px 0 0 4px; | ||
| 349 | + border-radius : 4px 0 0 4px; | ||
| 350 | +} | ||
| 351 | +.chzn-rtl .chzn-choices li { float: right; } | ||
| 352 | +.chzn-rtl .chzn-choices .search-choice { padding: 3px 6px 3px 19px; margin: 3px 5px 3px 0; } | ||
| 353 | +.chzn-rtl .chzn-choices .search-choice .search-choice-close { left: 5px; right: auto; background-position: right top;} | ||
| 354 | +.chzn-rtl.chzn-container-single .chzn-results { margin-left: 4px; margin-right: 0; padding-left: 0; padding-right: 4px; } | ||
| 355 | +.chzn-rtl .chzn-results .group-option { padding-left: 0; padding-right: 20px; } | ||
| 356 | +.chzn-rtl.chzn-container-active .chzn-single-with-drop div { border-right: none; } | ||
| 357 | +.chzn-rtl .chzn-search input { | ||
| 358 | + background: url('chosen-sprite.png') no-repeat -38px -22px, #ffffff; | ||
| 359 | + background: url('chosen-sprite.png') no-repeat -38px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee)); | ||
| 360 | + background: url('chosen-sprite.png') no-repeat -38px -22px, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%); | ||
| 361 | + background: url('chosen-sprite.png') no-repeat -38px -22px, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%); | ||
| 362 | + background: url('chosen-sprite.png') no-repeat -38px -22px, -o-linear-gradient(bottom, white 85%, #eeeeee 99%); | ||
| 363 | + background: url('chosen-sprite.png') no-repeat -38px -22px, -ms-linear-gradient(top, #ffffff 85%,#eeeeee 99%); | ||
| 364 | + background: url('chosen-sprite.png') no-repeat -38px -22px, linear-gradient(top, #ffffff 85%,#eeeeee 99%); | ||
| 365 | + padding: 4px 5px 4px 20px; | ||
| 366 | +} | ||
| 367 | +/* @end */ |
app/assets/stylesheets/projects.css.scss
| @@ -706,3 +706,16 @@ table.highlighttable pre{ | @@ -706,3 +706,16 @@ table.highlighttable pre{ | ||
| 706 | line-height:16px !important; | 706 | line-height:16px !important; |
| 707 | font-size:12px !important; | 707 | font-size:12px !important; |
| 708 | } | 708 | } |
| 709 | + | ||
| 710 | +.project-refs-form { | ||
| 711 | + span { | ||
| 712 | + background: none !important; | ||
| 713 | + position:static !important; | ||
| 714 | + width:auto !important; | ||
| 715 | + height: auto !important; | ||
| 716 | + } | ||
| 717 | +} | ||
| 718 | + | ||
| 719 | +.project-refs-select { | ||
| 720 | + width:200px; | ||
| 721 | +} |
app/controllers/application_controller.rb
| @@ -57,19 +57,13 @@ class ApplicationController < ActionController::Base | @@ -57,19 +57,13 @@ class ApplicationController < ActionController::Base | ||
| 57 | end | 57 | end |
| 58 | 58 | ||
| 59 | def load_refs | 59 | def load_refs |
| 60 | - @branch = unless params[:branch].blank? | ||
| 61 | - params[:branch] | ||
| 62 | - else | ||
| 63 | - nil | ||
| 64 | - end | ||
| 65 | - | ||
| 66 | - @tag = unless params[:tag].blank? | ||
| 67 | - params[:tag] | ||
| 68 | - else | ||
| 69 | - nil | ||
| 70 | - end | ||
| 71 | - | ||
| 72 | - @ref = @branch || @tag || "master" | 60 | + unless params[:ref].blank? |
| 61 | + @ref = params[:ref] | ||
| 62 | + else | ||
| 63 | + @branch = params[:branch].blank? ? nil : params[:branch] | ||
| 64 | + @tag = params[:tag].blank? ? nil : params[:tag] | ||
| 65 | + @ref = @branch || @tag || "master" | ||
| 66 | + end | ||
| 73 | end | 67 | end |
| 74 | 68 | ||
| 75 | def render_404 | 69 | def render_404 |
app/helpers/application_helper.rb
| @@ -32,6 +32,15 @@ module ApplicationHelper | @@ -32,6 +32,15 @@ module ApplicationHelper | ||
| 32 | "Never" | 32 | "Never" |
| 33 | end | 33 | end |
| 34 | 34 | ||
| 35 | + def grouped_options_refs | ||
| 36 | + options = [ | ||
| 37 | + ["Branch", @repo.heads.map(&:name) ], | ||
| 38 | + [ "Tag", @project.tags ] | ||
| 39 | + ] | ||
| 40 | + | ||
| 41 | + grouped_options_for_select(options, @ref) | ||
| 42 | + end | ||
| 43 | + | ||
| 35 | def markdown(text) | 44 | def markdown(text) |
| 36 | RDiscount.new(text, :autolink, :no_pseudo_protocols, :safelink, :smart, :filter_html).to_html.html_safe | 45 | RDiscount.new(text, :autolink, :no_pseudo_protocols, :safelink, :smart, :filter_html).to_html.html_safe |
| 37 | end | 46 | end |
app/views/commits/index.html.haml
| 1 | - content_for(:body_class, "project-page commits-page") | 1 | - content_for(:body_class, "project-page commits-page") |
| 2 | 2 | ||
| 3 | -.left | ||
| 4 | - = form_tag project_commits_path(@project), :method => :get do | ||
| 5 | - = select_tag "branch", options_for_select(@repo.heads.map(&:name), @branch), :onchange => "this.form.submit();", :class => "", :prompt => "Branches" | ||
| 6 | -.left | ||
| 7 | - = form_tag project_commits_path(@project), :method => :get do | ||
| 8 | - = select_tag "tag", options_for_select(@project.tags, @tag), :onchange => "this.form.submit();", :class => "", :prompt => "Tags" | ||
| 9 | -.clear | ||
| 10 | - | ||
| 11 | -%br | ||
| 12 | - | ||
| 13 | - | ||
| 14 | -#%a.right.button{:href => "#"} Download | 3 | -#%a.right.button{:href => "#"} Download |
| 15 | -#-if can? current_user, :admin_project, @project | 4 | -#-if can? current_user, :admin_project, @project |
| 16 | %a.right.button.blue{:href => "#"} EDIT | 5 | %a.right.button.blue{:href => "#"} EDIT |
| 17 | %h2.icon | 6 | %h2.icon |
| 18 | %span | 7 | %span |
| 19 | - %a.project-name{:href => "#"} | ||
| 20 | - %i.arrow> | ||
| 21 | - Project | ||
| 22 | - | ||
| 23 | %d | 8 | %d |
| 24 | - %a{:href => "#"} | ||
| 25 | - = @ref | ||
| 26 | - - if params[:path] | ||
| 27 | - | ||
| 28 | - %d | 9 | + = link_to project_commits_path(@project) do |
| 10 | + = @project.name | ||
| 11 | + - if params[:path] | ||
| 12 | + \/ | ||
| 29 | %a{:href => "#"}= params[:path].split("/").join(" / ") | 13 | %a{:href => "#"}= params[:path].split("/").join(" / ") |
| 30 | 14 | ||
| 15 | +.right= render "projects/refs" | ||
| 31 | 16 | ||
| 32 | %div{:id => dom_id(@project)} | 17 | %div{:id => dom_id(@project)} |
| 33 | = render "commits" | 18 | = render "commits" |
| @@ -0,0 +1,8 @@ | @@ -0,0 +1,8 @@ | ||
| 1 | += form_tag project_commits_path(@project), :method => :get, :class => "project-refs-form" do | ||
| 2 | + = select_tag "ref", grouped_options_refs, :onchange => "this.form.submit();", :class => "project-refs-select" | ||
| 3 | + | ||
| 4 | + | ||
| 5 | +:javascript | ||
| 6 | + $(function(){ | ||
| 7 | + $('.project-refs-select').chosen(); | ||
| 8 | + }) |
app/views/projects/_tree.html.haml
| 1 | -.left | ||
| 2 | - = form_tag tree_project_path(@project), :method => :get do | ||
| 3 | - = select_tag "branch", options_for_select(@repo.heads.map(&:name), @branch), :onchange => "this.form.submit();", :class => "", :prompt => "Branches" | ||
| 4 | -.left | ||
| 5 | - = form_tag tree_project_path(@project), :method => :get do | ||
| 6 | - = select_tag "tag", options_for_select(@project.tags, @tag), :onchange => "this.form.submit();", :class => "", :prompt => "Tags" | ||
| 7 | -.clear | ||
| 8 | - | ||
| 9 | -%br | ||
| 10 | 1 | ||
| 11 | -#%a.right.button{:href => "#"} Download | 2 | -#%a.right.button{:href => "#"} Download |
| 12 | -#-if can? current_user, :admin_project, @project | 3 | -#-if can? current_user, :admin_project, @project |
| @@ -14,14 +5,9 @@ | @@ -14,14 +5,9 @@ | ||
| 14 | #tree-breadcrumbs | 5 | #tree-breadcrumbs |
| 15 | %h2.icon | 6 | %h2.icon |
| 16 | %span | 7 | %span |
| 17 | - = link_to tree_project_path(@project, :path => nil, :commit_id => @commit.try(:id)), :remote => true, :class => 'project-name' do | ||
| 18 | - %i.arrow> | ||
| 19 | - = @project.name | ||
| 20 | - | ||
| 21 | %d | 8 | %d |
| 22 | - %a{:href => "#"} | ||
| 23 | - = @ref | ||
| 24 | - | 9 | + = link_to tree_project_path(@project, :path => nil, :commit_id => @commit.try(:id)), :remote => true do |
| 10 | + = @project.name | ||
| 25 | - if params[:path] | 11 | - if params[:path] |
| 26 | - part_path = "" | 12 | - part_path = "" |
| 27 | - params[:path].split("\/").each do |part| | 13 | - params[:path].split("\/").each do |part| |
| @@ -30,7 +16,8 @@ | @@ -30,7 +16,8 @@ | ||
| 30 | - part_path = part | 16 | - part_path = part |
| 31 | \/ | 17 | \/ |
| 32 | = link_to truncate(part, :length => 40), tree_file_project_path(@project, :path => part_path, :commit_id => @commit.try(:id), :branch => @branch, :tag => @tag), :remote => :true | 18 | = link_to truncate(part, :length => 40), tree_file_project_path(@project, :path => part_path, :commit_id => @commit.try(:id), :branch => @branch, :tag => @tag), :remote => :true |
| 33 | - | 19 | + |
| 20 | + .right= render "projects/refs" | ||
| 34 | .clear | 21 | .clear |
| 35 | 22 | ||
| 36 | #tree-content-holder | 23 | #tree-content-holder |