compass-jquery-plugin 0.3.0.0 → 0.3.1.beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.textile +69 -13
- data/Rakefile +1 -1
- data/VERSION.yml +2 -2
- data/gem_tasks/jqgrid.rake +119 -0
- data/gem_tasks/jrails.rake +78 -77
- data/gem_tasks/mobile.rake +156 -0
- data/gem_tasks/rubygems.rake +5 -1
- data/gem_tasks/secret_sauce.rake +64 -0
- data/lib/jquery/gridify.rb +42 -0
- data/lib/jquery/gridify/assertions.rb +37 -0
- data/lib/jquery/gridify/grid.rb +210 -0
- data/lib/jquery/gridify/grid_column.rb +134 -0
- data/lib/jquery/gridify/grid_finder.rb +223 -0
- data/lib/jquery/gridify/grid_options.rb +279 -0
- data/lib/jquery/gridify/grid_view.rb +435 -0
- data/lib/jquery/jqgrid.rb +5 -0
- data/lib/jquery/jqgrid/jqgrid.rb +438 -0
- data/lib/jquery/mobile.rb +3 -0
- data/lib/jquery/secret_sauce.rb +9 -0
- data/lib/jquery/secret_sauce/controller/ui_dialog_controls.rb +14 -0
- data/lib/jquery/secret_sauce/controller/ui_grid_controls.rb +18 -0
- data/lib/jquery/secret_sauce/helpers/ui_dialog_helper.rb +6 -0
- data/lib/jquery/secret_sauce/helpers/ui_form_helper.rb +118 -0
- data/lib/jquery/secret_sauce/helpers/ui_grid_helper.rb +226 -0
- data/lib/jquery/secret_sauce/model/find_for_grid.rb +42 -0
- data/templates/dynatree/jquery.dynatree.js +258 -147
- data/templates/dynatree/jquery.dynatree.min.js +81 -79
- data/templates/dynatree/jquery/dynatree/aero.scss +35 -18
- data/templates/dynatree/jquery/dynatree/aero/drop_sibling_here.png +0 -0
- data/templates/dynatree/jquery/dynatree/aqua.scss +36 -19
- data/templates/dynatree/jquery/dynatree/aqua/drop_sibling_here.png +0 -0
- data/templates/dynatree/jquery/dynatree/crystal.scss +38 -21
- data/templates/dynatree/jquery/dynatree/crystal/drop_sibling_here.png +0 -0
- data/templates/dynatree/jquery/dynatree/xp.scss +59 -42
- data/templates/dynatree/jquery/dynatree/xp/drop_sibling_here.png +0 -0
- data/templates/dynatree/manifest.rb +4 -0
- data/templates/jqgrid/config/initializers/jqgrid.rb +4 -0
- data/templates/jqgrid/config/locales/jquery/jqgrid/de.yml +7 -0
- data/templates/jqgrid/config/locales/jquery/jqgrid/en.yml +7 -0
- data/templates/jqgrid/i18n/jqgrid/locale-bg.js +132 -0
- data/templates/jqgrid/i18n/jqgrid/locale-bg.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-bg1251.js +132 -0
- data/templates/jqgrid/i18n/jqgrid/locale-bg1251.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-cat.js +128 -0
- data/templates/jqgrid/i18n/jqgrid/locale-cat.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-cn.js +132 -0
- data/templates/jqgrid/i18n/jqgrid/locale-cn.min.js +5 -0
- data/templates/jqgrid/i18n/jqgrid/locale-cs.js +128 -0
- data/templates/jqgrid/i18n/jqgrid/locale-cs.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-da.js +128 -0
- data/templates/jqgrid/i18n/jqgrid/locale-da.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-de.js +133 -0
- data/templates/jqgrid/i18n/jqgrid/locale-de.min.js +7 -0
- data/templates/jqgrid/i18n/jqgrid/locale-el.js +126 -0
- data/templates/jqgrid/i18n/jqgrid/locale-el.min.js +7 -0
- data/templates/jqgrid/i18n/jqgrid/locale-en.js +128 -0
- data/templates/jqgrid/i18n/jqgrid/locale-en.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-es.js +128 -0
- data/templates/jqgrid/i18n/jqgrid/locale-es.min.js +7 -0
- data/templates/jqgrid/i18n/jqgrid/locale-fa.js +125 -0
- data/templates/jqgrid/i18n/jqgrid/locale-fa.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-fi.js +130 -0
- data/templates/jqgrid/i18n/jqgrid/locale-fi.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-fr.js +126 -0
- data/templates/jqgrid/i18n/jqgrid/locale-fr.min.js +7 -0
- data/templates/jqgrid/i18n/jqgrid/locale-gl.js +126 -0
- data/templates/jqgrid/i18n/jqgrid/locale-gl.min.js +7 -0
- data/templates/jqgrid/i18n/jqgrid/locale-he.js +127 -0
- data/templates/jqgrid/i18n/jqgrid/locale-he.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-hu.js +129 -0
- data/templates/jqgrid/i18n/jqgrid/locale-hu.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-is.js +126 -0
- data/templates/jqgrid/i18n/jqgrid/locale-is.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-it.js +1 -0
- data/templates/jqgrid/i18n/jqgrid/locale-it.min.js +7 -0
- data/templates/jqgrid/i18n/jqgrid/locale-ja.js +155 -0
- data/templates/jqgrid/i18n/jqgrid/locale-ja.min.js +5 -0
- data/templates/jqgrid/i18n/jqgrid/locale-nl.js +149 -0
- data/templates/jqgrid/i18n/jqgrid/locale-nl.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-no.js +1 -0
- data/templates/jqgrid/i18n/jqgrid/locale-no.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-pl.js +127 -0
- data/templates/jqgrid/i18n/jqgrid/locale-pl.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-pt-br.js +127 -0
- data/templates/jqgrid/i18n/jqgrid/locale-pt-br.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-pt.js +125 -0
- data/templates/jqgrid/i18n/jqgrid/locale-pt.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-ro.js +139 -0
- data/templates/jqgrid/i18n/jqgrid/locale-ro.min.js +7 -0
- data/templates/jqgrid/i18n/jqgrid/locale-ru.js +127 -0
- data/templates/jqgrid/i18n/jqgrid/locale-ru.min.js +7 -0
- data/templates/jqgrid/i18n/jqgrid/locale-sk.js +127 -0
- data/templates/jqgrid/i18n/jqgrid/locale-sk.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-sr.js +128 -0
- data/templates/jqgrid/i18n/jqgrid/locale-sr.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-sv.js +127 -0
- data/templates/jqgrid/i18n/jqgrid/locale-sv.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-tr.js +126 -0
- data/templates/jqgrid/i18n/jqgrid/locale-tr.min.js +6 -0
- data/templates/jqgrid/i18n/jqgrid/locale-ua.js +127 -0
- data/templates/jqgrid/i18n/jqgrid/locale-ua.min.js +7 -0
- data/templates/jqgrid/jquery.jqGrid.js +11604 -0
- data/templates/jqgrid/jquery.jqGrid.min.js +472 -0
- data/templates/jqgrid/jquery/jqGrid.scss +692 -0
- data/templates/jqgrid/manifest.rb +72 -0
- data/templates/jqgrid/public/stylesheets/ellipsis-xbl.xml +13 -0
- data/templates/jqtouch/jquery/touch/apple.scss +5 -5
- data/templates/jqtouch/jquery/touch/default.scss +5 -5
- data/templates/jqtouch/jquery/touch/jqt.scss +5 -5
- data/templates/jrails/config/initializers/jrails.rb +3 -0
- data/templates/jrails/jquery-ui.js +45 -62
- data/templates/jrails/jquery-ui.min.js +22 -22
- data/templates/jrails/jquery.js +340 -206
- data/templates/jrails/jquery.min.js +152 -151
- data/templates/jrails/jquery.tmpl.js +489 -0
- data/templates/jrails/jquery.tmpl.min.js +12 -0
- data/templates/jrails/jquery.tmplPlus.js +98 -0
- data/templates/jrails/jquery.tmplPlus.min.js +3 -0
- data/templates/jrails/jquery/ui/_theme.scss +3 -1
- data/templates/jrails/manifest.rb +4 -0
- data/templates/jstree/jquery.jstree.js +4479 -4468
- data/templates/jstree/jquery.jstree.min.js +4 -3
- data/templates/mobile/config/initializers/mobile.rb +6 -0
- data/templates/mobile/glyphish/Read me first - license.txt +14 -0
- data/templates/mobile/glyphish/icons-black/01-refresh.png +0 -0
- data/templates/mobile/glyphish/icons-black/02-redo.png +0 -0
- data/templates/mobile/glyphish/icons-black/03-loopback.png +0 -0
- data/templates/mobile/glyphish/icons-black/04-squiggle.png +0 -0
- data/templates/mobile/glyphish/icons-black/05-shuffle.png +0 -0
- data/templates/mobile/glyphish/icons-black/06-magnifying-glass.png +0 -0
- data/templates/mobile/glyphish/icons-black/07-map-marker.png +0 -0
- data/templates/mobile/glyphish/icons-black/08-chat.png +0 -0
- data/templates/mobile/glyphish/icons-black/09-chat2.png +0 -0
- data/templates/mobile/glyphish/icons-black/10-medical.png +0 -0
- data/templates/mobile/glyphish/icons-black/100-coffee.png +0 -0
- data/templates/mobile/glyphish/icons-black/101-gameplan.png +0 -0
- data/templates/mobile/glyphish/icons-black/102-walk.png +0 -0
- data/templates/mobile/glyphish/icons-black/103-map.png +0 -0
- data/templates/mobile/glyphish/icons-black/104-index-cards.png +0 -0
- data/templates/mobile/glyphish/icons-black/105-piano.png +0 -0
- data/templates/mobile/glyphish/icons-black/106-sliders.png +0 -0
- data/templates/mobile/glyphish/icons-black/107-widescreen.png +0 -0
- data/templates/mobile/glyphish/icons-black/108-badge.png +0 -0
- data/templates/mobile/glyphish/icons-black/109-chicken.png +0 -0
- data/templates/mobile/glyphish/icons-black/11-clock.png +0 -0
- data/templates/mobile/glyphish/icons-black/110-bug.png +0 -0
- data/templates/mobile/glyphish/icons-black/111-user.png +0 -0
- data/templates/mobile/glyphish/icons-black/112-group.png +0 -0
- data/templates/mobile/glyphish/icons-black/113-navigation.png +0 -0
- data/templates/mobile/glyphish/icons-black/114-balloon.png +0 -0
- data/templates/mobile/glyphish/icons-black/115-bow-and-arrow.png +0 -0
- data/templates/mobile/glyphish/icons-black/116-controller.png +0 -0
- data/templates/mobile/glyphish/icons-black/117-todo.png +0 -0
- data/templates/mobile/glyphish/icons-black/118-coathanger.png +0 -0
- data/templates/mobile/glyphish/icons-black/119-piggybank.png +0 -0
- data/templates/mobile/glyphish/icons-black/12-eye.png +0 -0
- data/templates/mobile/glyphish/icons-black/120-headphones.png +0 -0
- data/templates/mobile/glyphish/icons-black/121-lanscape.png +0 -0
- data/templates/mobile/glyphish/icons-black/122-stats.png +0 -0
- data/templates/mobile/glyphish/icons-black/123-id-card.png +0 -0
- data/templates/mobile/glyphish/icons-black/124-bullhorn.png +0 -0
- data/templates/mobile/glyphish/icons-black/125-food.png +0 -0
- data/templates/mobile/glyphish/icons-black/126-moon.png +0 -0
- data/templates/mobile/glyphish/icons-black/127-sock.png +0 -0
- data/templates/mobile/glyphish/icons-black/128-bone.png +0 -0
- data/templates/mobile/glyphish/icons-black/129-golf.png +0 -0
- data/templates/mobile/glyphish/icons-black/13-target.png +0 -0
- data/templates/mobile/glyphish/icons-black/130-dice.png +0 -0
- data/templates/mobile/glyphish/icons-black/14-tag.png +0 -0
- data/templates/mobile/glyphish/icons-black/15-tags.png +0 -0
- data/templates/mobile/glyphish/icons-black/16-line-chart.png +0 -0
- data/templates/mobile/glyphish/icons-black/17-bar-chart.png +0 -0
- data/templates/mobile/glyphish/icons-black/18-envelope.png +0 -0
- data/templates/mobile/glyphish/icons-black/19-gear.png +0 -0
- data/templates/mobile/glyphish/icons-black/20-gear2.png +0 -0
- data/templates/mobile/glyphish/icons-black/21-skull.png +0 -0
- data/templates/mobile/glyphish/icons-black/22-skull-n-crossbones.png +0 -0
- data/templates/mobile/glyphish/icons-black/23-bird.png +0 -0
- data/templates/mobile/glyphish/icons-black/24-gift.png +0 -0
- data/templates/mobile/glyphish/icons-black/25-weather.png +0 -0
- data/templates/mobile/glyphish/icons-black/26-bandaid.png +0 -0
- data/templates/mobile/glyphish/icons-black/27-planet.png +0 -0
- data/templates/mobile/glyphish/icons-black/28-star.png +0 -0
- data/templates/mobile/glyphish/icons-black/29-heart.png +0 -0
- data/templates/mobile/glyphish/icons-black/30-key.png +0 -0
- data/templates/mobile/glyphish/icons-black/31-ipod.png +0 -0
- data/templates/mobile/glyphish/icons-black/32-iphone.png +0 -0
- data/templates/mobile/glyphish/icons-black/33-cabinet.png +0 -0
- data/templates/mobile/glyphish/icons-black/34-coffee.png +0 -0
- data/templates/mobile/glyphish/icons-black/35-shopping-bag.png +0 -0
- data/templates/mobile/glyphish/icons-black/36-toolbox.png +0 -0
- data/templates/mobile/glyphish/icons-black/37-suitcase.png +0 -0
- data/templates/mobile/glyphish/icons-black/38-airplane.png +0 -0
- data/templates/mobile/glyphish/icons-black/39-spraycan.png +0 -0
- data/templates/mobile/glyphish/icons-black/40-inbox.png +0 -0
- data/templates/mobile/glyphish/icons-black/41-picture-frame.png +0 -0
- data/templates/mobile/glyphish/icons-black/42-photos.png +0 -0
- data/templates/mobile/glyphish/icons-black/43-film-roll.png +0 -0
- data/templates/mobile/glyphish/icons-black/44-shoebox.png +0 -0
- data/templates/mobile/glyphish/icons-black/45-movie1.png +0 -0
- data/templates/mobile/glyphish/icons-black/46-movie2.png +0 -0
- data/templates/mobile/glyphish/icons-black/47-fuel.png +0 -0
- data/templates/mobile/glyphish/icons-black/48-fork-and-knife.png +0 -0
- data/templates/mobile/glyphish/icons-black/49-battery.png +0 -0
- data/templates/mobile/glyphish/icons-black/50-beaker.png +0 -0
- data/templates/mobile/glyphish/icons-black/51-outlet.png +0 -0
- data/templates/mobile/glyphish/icons-black/52-pinetree.png +0 -0
- data/templates/mobile/glyphish/icons-black/53-house.png +0 -0
- data/templates/mobile/glyphish/icons-black/54-lock.png +0 -0
- data/templates/mobile/glyphish/icons-black/55-network.png +0 -0
- data/templates/mobile/glyphish/icons-black/56-cloud.png +0 -0
- data/templates/mobile/glyphish/icons-black/57-download.png +0 -0
- data/templates/mobile/glyphish/icons-black/58-bookmark.png +0 -0
- data/templates/mobile/glyphish/icons-black/59-flag.png +0 -0
- data/templates/mobile/glyphish/icons-black/60-signpost.png +0 -0
- data/templates/mobile/glyphish/icons-black/61-brightness.png +0 -0
- data/templates/mobile/glyphish/icons-black/62-contrast.png +0 -0
- data/templates/mobile/glyphish/icons-black/63-runner.png +0 -0
- data/templates/mobile/glyphish/icons-black/64-zap.png +0 -0
- data/templates/mobile/glyphish/icons-black/65-note.png +0 -0
- data/templates/mobile/glyphish/icons-black/66-microphone.png +0 -0
- data/templates/mobile/glyphish/icons-black/67-tshirt.png +0 -0
- data/templates/mobile/glyphish/icons-black/68-paperclip.png +0 -0
- data/templates/mobile/glyphish/icons-black/69-display.png +0 -0
- data/templates/mobile/glyphish/icons-black/70-tv.png +0 -0
- data/templates/mobile/glyphish/icons-black/71-compass.png +0 -0
- data/templates/mobile/glyphish/icons-black/72-pin.png +0 -0
- data/templates/mobile/glyphish/icons-black/73-radar.png +0 -0
- data/templates/mobile/glyphish/icons-black/74-location.png +0 -0
- data/templates/mobile/glyphish/icons-black/75-phone.png +0 -0
- data/templates/mobile/glyphish/icons-black/76-baby.png +0 -0
- data/templates/mobile/glyphish/icons-black/77-ekg.png +0 -0
- data/templates/mobile/glyphish/icons-black/78-stopwatch.png +0 -0
- data/templates/mobile/glyphish/icons-black/79-medical-bag.png +0 -0
- data/templates/mobile/glyphish/icons-black/80-shopping-cart.png +0 -0
- data/templates/mobile/glyphish/icons-black/81-dashboard.png +0 -0
- data/templates/mobile/glyphish/icons-black/82-dogpaw.png +0 -0
- data/templates/mobile/glyphish/icons-black/83-calendar.png +0 -0
- data/templates/mobile/glyphish/icons-black/84-lightbulb.png +0 -0
- data/templates/mobile/glyphish/icons-black/85-trophy.png +0 -0
- data/templates/mobile/glyphish/icons-black/86-camera.png +0 -0
- data/templates/mobile/glyphish/icons-black/87-wineglass.png +0 -0
- data/templates/mobile/glyphish/icons-black/88-beermug.png +0 -0
- data/templates/mobile/glyphish/icons-black/89-dumbbell.png +0 -0
- data/templates/mobile/glyphish/icons-black/90-lifebuoy.png +0 -0
- data/templates/mobile/glyphish/icons-black/91-beaker2.png +0 -0
- data/templates/mobile/glyphish/icons-black/92-testtube.png +0 -0
- data/templates/mobile/glyphish/icons-black/93-thermometer.png +0 -0
- data/templates/mobile/glyphish/icons-black/94-pill.png +0 -0
- data/templates/mobile/glyphish/icons-black/95-equalizer.png +0 -0
- data/templates/mobile/glyphish/icons-black/96-book.png +0 -0
- data/templates/mobile/glyphish/icons-black/97-puzzle.png +0 -0
- data/templates/mobile/glyphish/icons-black/98-palette.png +0 -0
- data/templates/mobile/glyphish/icons-black/99-umbrella.png +0 -0
- data/templates/mobile/glyphish/icons-white/09-chat2.png +0 -0
- data/templates/mobile/glyphish/icons-white/100-coffee.png +0 -0
- data/templates/mobile/glyphish/icons-white/18-envelope.png +0 -0
- data/templates/mobile/glyphish/icons-white/19-gear.png +0 -0
- data/templates/mobile/glyphish/icons-white/21-skull.png +0 -0
- data/templates/mobile/glyphish/icons-white/30-key.png +0 -0
- data/templates/mobile/glyphish/icons-white/34-coffee.png +0 -0
- data/templates/mobile/glyphish/icons-white/88-beermug.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/band-aid.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/chat.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/clock.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/eye.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/flag.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/fork-and-knife.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/gear.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/heart.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/lightning-bolt.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/magnifying-glass.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/map-marker.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/map-pin.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/microphone.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/music-note.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/paw.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/plus.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/puzzle.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/star.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/tag.png +0 -0
- data/templates/mobile/glyphish/mini-icons-black/tshirt.png +0 -0
- data/templates/mobile/jquery.mobile.js +3995 -0
- data/templates/mobile/jquery.mobile.min.js +28 -0
- data/templates/mobile/jquery/mobile/_base.scss +1344 -0
- data/templates/mobile/jquery/mobile/default.scss +745 -0
- data/templates/mobile/jquery/mobile/default/ajax-loader.png +0 -0
- data/templates/mobile/jquery/mobile/default/form-check-off.png +0 -0
- data/templates/mobile/jquery/mobile/default/form-check-on.png +0 -0
- data/templates/mobile/jquery/mobile/default/form-radio-off.png +0 -0
- data/templates/mobile/jquery/mobile/default/form-radio-on.png +0 -0
- data/templates/mobile/jquery/mobile/default/icon-search-black.png +0 -0
- data/templates/mobile/jquery/mobile/default/icons-18-black.png +0 -0
- data/templates/mobile/jquery/mobile/default/icons-18-white.png +0 -0
- data/templates/mobile/jquery/mobile/default/icons-36-black.png +0 -0
- data/templates/mobile/jquery/mobile/default/icons-36-white.png +0 -0
- data/templates/mobile/jquery/mobile/valencia.scss +807 -0
- data/templates/mobile/jquery/mobile/valencia/ajax-loader.png +0 -0
- data/templates/mobile/jquery/mobile/valencia/form-check-off.png +0 -0
- data/templates/mobile/jquery/mobile/valencia/form-check-on.png +0 -0
- data/templates/mobile/jquery/mobile/valencia/form-radio-off.png +0 -0
- data/templates/mobile/jquery/mobile/valencia/form-radio-on.png +0 -0
- data/templates/mobile/jquery/mobile/valencia/icon-search-black.png +0 -0
- data/templates/mobile/jquery/mobile/valencia/icons-18-black.png +0 -0
- data/templates/mobile/jquery/mobile/valencia/icons-18-white.png +0 -0
- data/templates/mobile/jquery/mobile/valencia/icons-36-black.png +0 -0
- data/templates/mobile/jquery/mobile/valencia/icons-36-white.png +0 -0
- data/templates/mobile/jquery/mobile/valencia/texture_05.png +0 -0
- data/templates/mobile/jquery/mobile/valencia/texture_075.png +0 -0
- data/templates/mobile/lib/tasks/jquery.mobile.rake +106 -0
- data/templates/mobile/manifest.rb +191 -0
- data/templates/secret_sauce/app/views/shared/_ui_form_error_messages.html.haml +6 -0
- data/templates/secret_sauce/app/views/shared/_ui_grid_for_without_block.js.haml +144 -0
- data/templates/secret_sauce/app/views/shared/_ui_static_dialog.html.haml +6 -0
- data/templates/secret_sauce/config/initializers/secret_sauce.rb +8 -0
- data/templates/secret_sauce/jquery/secret_sauce.scss +33 -0
- data/templates/secret_sauce/manifest.rb +10 -0
- data/templates/secret_sauce/secret_sauce.js +12 -0
- data/templates/secret_sauce/secret_sauce.min.js +1 -0
- metadata +313 -17
- data/.gitignore +0 -22
- data/compass-jquery-plugin.gemspec +0 -1064
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
jquery.dynatree.js
|
|
3
3
|
Dynamic tree view control, with support for lazy loading of branches.
|
|
4
4
|
|
|
5
|
-
Copyright (c) 2008-2010,
|
|
5
|
+
Copyright (c) 2008-2010, Martin Wendt (http://wwWendt.de)
|
|
6
6
|
Dual licensed under the MIT or GPL Version 2 licenses.
|
|
7
7
|
http://code.google.com/p/dynatree/wiki/LicenseInfo
|
|
8
8
|
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
@depends: jquery.cookie.js
|
|
18
18
|
*************************************************************************/
|
|
19
19
|
|
|
20
|
+
/*jslint laxbreak: true */
|
|
20
21
|
|
|
21
22
|
/*************************************************************************
|
|
22
23
|
* Debug functions
|
|
@@ -64,7 +65,7 @@ function logMsg(msg) {
|
|
|
64
65
|
|
|
65
66
|
|
|
66
67
|
// Forward declaration
|
|
67
|
-
var getDynaTreePersistData =
|
|
68
|
+
var getDynaTreePersistData = null;
|
|
68
69
|
|
|
69
70
|
|
|
70
71
|
|
|
@@ -127,6 +128,9 @@ DynaTreeNode.prototype = {
|
|
|
127
128
|
this.childList = null; // no subnodes yet
|
|
128
129
|
this.isLoading = false; // Lazy content is being loaded
|
|
129
130
|
this.hasSubSel = false;
|
|
131
|
+
this.bExpanded = false;
|
|
132
|
+
this.bSelected = false;
|
|
133
|
+
|
|
130
134
|
},
|
|
131
135
|
|
|
132
136
|
toString: function() {
|
|
@@ -155,7 +159,7 @@ DynaTreeNode.prototype = {
|
|
|
155
159
|
|
|
156
160
|
fromDict: function(dict) {
|
|
157
161
|
/**
|
|
158
|
-
* Update node data. If dict contains 'children', then also replace
|
|
162
|
+
* Update node data. If dict contains 'children', then also replace
|
|
159
163
|
* the hole sub tree.
|
|
160
164
|
*/
|
|
161
165
|
var children = dict.children;
|
|
@@ -170,7 +174,7 @@ DynaTreeNode.prototype = {
|
|
|
170
174
|
this.removeChildren();
|
|
171
175
|
this.addChild(children);
|
|
172
176
|
},
|
|
173
|
-
|
|
177
|
+
|
|
174
178
|
_getInnerHtml: function() {
|
|
175
179
|
var opts = this.tree.options;
|
|
176
180
|
var cache = this.tree.cache;
|
|
@@ -479,22 +483,27 @@ DynaTreeNode.prototype = {
|
|
|
479
483
|
// Create, modify or remove the status child node (pass 'null', to remove it).
|
|
480
484
|
var firstChild = ( this.childList ? this.childList[0] : null );
|
|
481
485
|
if( !data ) {
|
|
482
|
-
if ( firstChild ) {
|
|
486
|
+
if ( firstChild && firstChild.isStatusNode()) {
|
|
483
487
|
try{
|
|
484
|
-
|
|
488
|
+
// I've seen exceptions here with loadKeyPath...
|
|
489
|
+
if(this.ul){
|
|
490
|
+
this.ul.removeChild(firstChild.li);
|
|
491
|
+
}
|
|
485
492
|
}catch(e){};
|
|
486
493
|
if( this.childList.length === 1 ){
|
|
487
|
-
this.childList =
|
|
494
|
+
this.childList = [];
|
|
488
495
|
}else{
|
|
489
496
|
this.childList.shift();
|
|
490
497
|
}
|
|
491
498
|
}
|
|
492
499
|
} else if ( firstChild ) {
|
|
493
500
|
data.isStatusNode = true;
|
|
501
|
+
data.key = "_statusNode";
|
|
494
502
|
firstChild.data = data;
|
|
495
503
|
firstChild.render();
|
|
496
504
|
} else {
|
|
497
505
|
data.isStatusNode = true;
|
|
506
|
+
data.key = "_statusNode";
|
|
498
507
|
firstChild = this.addChild(data);
|
|
499
508
|
}
|
|
500
509
|
},
|
|
@@ -505,12 +514,11 @@ DynaTreeNode.prototype = {
|
|
|
505
514
|
switch( lts ) {
|
|
506
515
|
case DTNodeStatus_Ok:
|
|
507
516
|
this._setStatusNode(null);
|
|
508
|
-
|
|
517
|
+
$(this.span).removeClass(this.tree.options.classNames.nodeLoading);
|
|
509
518
|
this.isLoading = false;
|
|
510
519
|
this.render();
|
|
511
520
|
if( this.tree.options.autoFocus ) {
|
|
512
|
-
|
|
513
|
-
if( this === this.tree.tnRoot && this.childList ) {
|
|
521
|
+
if( this === this.tree.tnRoot && this.childList && this.childList.length > 0) {
|
|
514
522
|
// special case: using ajaxInit
|
|
515
523
|
this.childList[0].focus();
|
|
516
524
|
} else {
|
|
@@ -520,14 +528,19 @@ DynaTreeNode.prototype = {
|
|
|
520
528
|
break;
|
|
521
529
|
case DTNodeStatus_Loading:
|
|
522
530
|
this.isLoading = true;
|
|
523
|
-
this.
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
531
|
+
$(this.span).addClass(this.tree.options.classNames.nodeLoading);
|
|
532
|
+
// The root is hidden, so we set a temporary status child
|
|
533
|
+
if(!this.parent){
|
|
534
|
+
this._setStatusNode({
|
|
535
|
+
title: this.tree.options.strings.loading + info,
|
|
536
|
+
tooltip: tooltip,
|
|
537
|
+
addClass: this.tree.options.classNames.nodeWait
|
|
538
|
+
});
|
|
539
|
+
}
|
|
528
540
|
break;
|
|
529
541
|
case DTNodeStatus_Error:
|
|
530
542
|
this.isLoading = false;
|
|
543
|
+
// $(this.span).addClass(this.tree.options.classNames.nodeError);
|
|
531
544
|
this._setStatusNode({
|
|
532
545
|
title: this.tree.options.strings.loadError + info,
|
|
533
546
|
tooltip: tooltip,
|
|
@@ -651,6 +664,10 @@ DynaTreeNode.prototype = {
|
|
|
651
664
|
} catch(e) { }
|
|
652
665
|
},
|
|
653
666
|
|
|
667
|
+
isFocused: function() {
|
|
668
|
+
return (this.tree.tnFocused === this);
|
|
669
|
+
},
|
|
670
|
+
|
|
654
671
|
_activate: function(flag, fireEvents) {
|
|
655
672
|
// (De)Activate - but not focus - this node.
|
|
656
673
|
this.tree.logDebug("dtnode._activate(%o, fireEvents=%o) - %o", flag, fireEvents, this);
|
|
@@ -679,7 +696,7 @@ DynaTreeNode.prototype = {
|
|
|
679
696
|
}
|
|
680
697
|
this.tree.persistence.activeKey = this.data.key;
|
|
681
698
|
$(this.span).addClass(opts.classNames.active);
|
|
682
|
-
if ( fireEvents && opts.onActivate ){
|
|
699
|
+
if ( fireEvents && opts.onActivate ){
|
|
683
700
|
opts.onActivate.call(this.tree, this);
|
|
684
701
|
}
|
|
685
702
|
} else {
|
|
@@ -710,6 +727,10 @@ DynaTreeNode.prototype = {
|
|
|
710
727
|
this._activate(true, true);
|
|
711
728
|
},
|
|
712
729
|
|
|
730
|
+
activateSilently: function() {
|
|
731
|
+
this._activate(true, false);
|
|
732
|
+
},
|
|
733
|
+
|
|
713
734
|
deactivate: function() {
|
|
714
735
|
// this.tree.logDebug("dtnode.deactivate(): %o", this);
|
|
715
736
|
this._activate(false, true);
|
|
@@ -899,7 +920,7 @@ DynaTreeNode.prototype = {
|
|
|
899
920
|
}
|
|
900
921
|
},
|
|
901
922
|
|
|
902
|
-
_expand: function(bExpand) {
|
|
923
|
+
_expand: function(bExpand, forceSync) {
|
|
903
924
|
if( this.bExpanded === bExpand ) {
|
|
904
925
|
this.tree.logDebug("dtnode._expand(%o) IGNORED - %o", bExpand, this);
|
|
905
926
|
return;
|
|
@@ -924,7 +945,9 @@ DynaTreeNode.prototype = {
|
|
|
924
945
|
}
|
|
925
946
|
}
|
|
926
947
|
// Do not apply animations in init phase, or before lazy-loading
|
|
927
|
-
var allowEffects = !(this.data.isLazy && this.childList === null)
|
|
948
|
+
var allowEffects = !(this.data.isLazy && this.childList === null)
|
|
949
|
+
&& !this.isLoading
|
|
950
|
+
&& !forceSync;
|
|
928
951
|
this.render(allowEffects);
|
|
929
952
|
|
|
930
953
|
// Auto-collapse mode: collapse all siblings
|
|
@@ -949,6 +972,7 @@ DynaTreeNode.prototype = {
|
|
|
949
972
|
},
|
|
950
973
|
|
|
951
974
|
expand: function(flag) {
|
|
975
|
+
flag = (flag !== false);
|
|
952
976
|
if( !this.childList && !this.data.isLazy && flag ){
|
|
953
977
|
return; // Prevent expanding empty nodes
|
|
954
978
|
} else if( this.parent === null && !flag ){
|
|
@@ -963,7 +987,7 @@ DynaTreeNode.prototype = {
|
|
|
963
987
|
*/
|
|
964
988
|
if( this.tree.timer ) {
|
|
965
989
|
clearTimeout(this.tree.timer);
|
|
966
|
-
|
|
990
|
+
this.tree.logDebug("clearTimeout(%o)", this.tree.timer);
|
|
967
991
|
}
|
|
968
992
|
var self = this; // required for closures
|
|
969
993
|
switch (mode) {
|
|
@@ -972,19 +996,20 @@ DynaTreeNode.prototype = {
|
|
|
972
996
|
break;
|
|
973
997
|
case "expand":
|
|
974
998
|
this.tree.timer = setTimeout(function(){
|
|
975
|
-
|
|
999
|
+
self.tree.logDebug("setTimeout: trigger expand");
|
|
976
1000
|
self.expand(true);
|
|
977
1001
|
}, ms);
|
|
978
1002
|
break;
|
|
979
1003
|
case "activate":
|
|
980
1004
|
this.tree.timer = setTimeout(function(){
|
|
1005
|
+
self.tree.logDebug("setTimeout: trigger activate");
|
|
981
1006
|
self.activate();
|
|
982
1007
|
}, ms);
|
|
983
1008
|
break;
|
|
984
1009
|
default:
|
|
985
1010
|
throw "Invalid mode " + mode;
|
|
986
1011
|
}
|
|
987
|
-
|
|
1012
|
+
this.tree.logDebug("setTimeout(%s, %s): %s", mode, ms, this.tree.timer);
|
|
988
1013
|
},
|
|
989
1014
|
|
|
990
1015
|
toggleExpand: function() {
|
|
@@ -1003,7 +1028,7 @@ DynaTreeNode.prototype = {
|
|
|
1003
1028
|
}
|
|
1004
1029
|
},
|
|
1005
1030
|
|
|
1006
|
-
|
|
1031
|
+
_onClick: function(event) {
|
|
1007
1032
|
// this.tree.logDebug("dtnode.onClick(" + event.type + "): dtnode:" + this + ", button:" + event.button + ", which: " + event.which);
|
|
1008
1033
|
var targetType = this.getEventTargetType(event);
|
|
1009
1034
|
if( targetType === "expander" ) {
|
|
@@ -1017,11 +1042,11 @@ DynaTreeNode.prototype = {
|
|
|
1017
1042
|
} else {
|
|
1018
1043
|
this._userActivate();
|
|
1019
1044
|
var aTag = this.span.getElementsByTagName("a");
|
|
1020
|
-
if(aTag[0]){
|
|
1045
|
+
if(aTag[0]){
|
|
1021
1046
|
// issue 154
|
|
1022
1047
|
// TODO: check if still required on IE 9:
|
|
1023
|
-
// Chrome and Safari don't focus the a-tag on click,
|
|
1024
|
-
// but calling focus() seem to have problems on IE:
|
|
1048
|
+
// Chrome and Safari don't focus the a-tag on click,
|
|
1049
|
+
// but calling focus() seem to have problems on IE:
|
|
1025
1050
|
// http://code.google.com/p/dynatree/issues/detail?id=154
|
|
1026
1051
|
if(!$.browser.msie){
|
|
1027
1052
|
aTag[0].focus();
|
|
@@ -1035,11 +1060,11 @@ DynaTreeNode.prototype = {
|
|
|
1035
1060
|
return false;
|
|
1036
1061
|
},
|
|
1037
1062
|
|
|
1038
|
-
|
|
1063
|
+
_onDblClick: function(event) {
|
|
1039
1064
|
// this.tree.logDebug("dtnode.onDblClick(" + event.type + "): dtnode:" + this + ", button:" + event.button + ", which: " + event.which);
|
|
1040
1065
|
},
|
|
1041
1066
|
|
|
1042
|
-
|
|
1067
|
+
_onKeydown: function(event) {
|
|
1043
1068
|
// this.tree.logDebug("dtnode.onKeydown(" + event.type + "): dtnode:" + this + ", charCode:" + event.charCode + ", keyCode: " + event.keyCode + ", which: " + event.which);
|
|
1044
1069
|
var handled = true;
|
|
1045
1070
|
// alert("keyDown" + event.which);
|
|
@@ -1124,13 +1149,13 @@ DynaTreeNode.prototype = {
|
|
|
1124
1149
|
return !handled;
|
|
1125
1150
|
},
|
|
1126
1151
|
|
|
1127
|
-
|
|
1152
|
+
_onKeypress: function(event) {
|
|
1128
1153
|
// onKeypress is only hooked to allow user callbacks.
|
|
1129
1154
|
// We don't process it, because IE and Safari don't fire keypress for cursor keys.
|
|
1130
1155
|
// this.tree.logDebug("dtnode.onKeypress(" + event.type + "): dtnode:" + this + ", charCode:" + event.charCode + ", keyCode: " + event.keyCode + ", which: " + event.which);
|
|
1131
1156
|
},
|
|
1132
1157
|
|
|
1133
|
-
|
|
1158
|
+
_onFocus: function(event) {
|
|
1134
1159
|
// Handles blur and focus events.
|
|
1135
1160
|
// this.tree.logDebug("dtnode.onFocus(%o): %o", event, this);
|
|
1136
1161
|
var opts = this.tree.options;
|
|
@@ -1152,7 +1177,7 @@ DynaTreeNode.prototype = {
|
|
|
1152
1177
|
$(this.tree.tnFocused.span).removeClass(opts.classNames.focused);
|
|
1153
1178
|
}
|
|
1154
1179
|
this.tree.tnFocused = this;
|
|
1155
|
-
if ( opts.onFocus ){
|
|
1180
|
+
if ( opts.onFocus ){
|
|
1156
1181
|
opts.onFocus.call(this.tree, this);
|
|
1157
1182
|
}
|
|
1158
1183
|
$(this.tree.tnFocused.span).addClass(opts.classNames.focused);
|
|
@@ -1242,7 +1267,7 @@ DynaTreeNode.prototype = {
|
|
|
1242
1267
|
|
|
1243
1268
|
removeChildren: function(isRecursiveCall, retainPersistence) {
|
|
1244
1269
|
// Remove all child nodes (more efficiently than recursive remove())
|
|
1245
|
-
this.tree.logDebug
|
|
1270
|
+
this.tree.logDebug("%s.removeChildren(%o)", this, isRecursiveCall);
|
|
1246
1271
|
var tree = this.tree;
|
|
1247
1272
|
var ac = this.childList;
|
|
1248
1273
|
if( ac ) {
|
|
@@ -1261,14 +1286,20 @@ DynaTreeNode.prototype = {
|
|
|
1261
1286
|
}
|
|
1262
1287
|
}
|
|
1263
1288
|
tn.removeChildren(true, retainPersistence);
|
|
1264
|
-
|
|
1289
|
+
if(this.ul){
|
|
1290
|
+
this.ul.removeChild(tn.li);
|
|
1291
|
+
}
|
|
1292
|
+
/*
|
|
1265
1293
|
try{
|
|
1266
1294
|
this.ul.removeChild(tn.li);
|
|
1267
1295
|
}catch(e){
|
|
1268
|
-
this.tree.logDebug
|
|
1296
|
+
this.tree.logDebug("%s.removeChildren: couldnt remove LI", this, e);
|
|
1269
1297
|
}
|
|
1298
|
+
*/
|
|
1270
1299
|
delete tn;
|
|
1271
1300
|
}
|
|
1301
|
+
// Set to 'null' which is interpreted as 'not yet loaded' for lazy
|
|
1302
|
+
// nodes
|
|
1272
1303
|
this.childList = null;
|
|
1273
1304
|
}
|
|
1274
1305
|
if( ! isRecursiveCall ) {
|
|
@@ -1298,7 +1329,7 @@ DynaTreeNode.prototype = {
|
|
|
1298
1329
|
// We listen to this, if a callback was passed to reloadChildren
|
|
1299
1330
|
if(callback){
|
|
1300
1331
|
var self = this;
|
|
1301
|
-
var eventType = "nodeLoaded.dynatree." + this.tree.$tree.attr("id")
|
|
1332
|
+
var eventType = "nodeLoaded.dynatree." + this.tree.$tree.attr("id")
|
|
1302
1333
|
+ "." + this.data.key;
|
|
1303
1334
|
this.tree.$tree.bind(eventType, function(e, node, isOk){
|
|
1304
1335
|
self.tree.$tree.unbind(eventType);
|
|
@@ -1310,58 +1341,67 @@ DynaTreeNode.prototype = {
|
|
|
1310
1341
|
});
|
|
1311
1342
|
}
|
|
1312
1343
|
// The expansion state is maintained
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
//
|
|
1317
|
-
// this.
|
|
1318
|
-
//
|
|
1319
|
-
this.
|
|
1320
|
-
|
|
1321
|
-
this.
|
|
1322
|
-
|
|
1323
|
-
|
|
1344
|
+
this.removeChildren();
|
|
1345
|
+
this._loadContent();
|
|
1346
|
+
// if( this.bExpanded ) {
|
|
1347
|
+
// // Remove children first, to prevent effects being applied
|
|
1348
|
+
// this.removeChildren();
|
|
1349
|
+
// // then force re-expand to trigger lazy loading
|
|
1350
|
+
//// this.expand(false);
|
|
1351
|
+
//// this.expand(true);
|
|
1352
|
+
// this._loadContent();
|
|
1353
|
+
// } else {
|
|
1354
|
+
// this.removeChildren();
|
|
1355
|
+
// this._loadContent();
|
|
1356
|
+
// }
|
|
1324
1357
|
},
|
|
1325
1358
|
|
|
1326
|
-
|
|
1327
|
-
|
|
1359
|
+
/**
|
|
1360
|
+
* Make sure the node with a given key path is available in the tree.
|
|
1361
|
+
*/
|
|
1362
|
+
_loadKeyPath: function(keyPath, callback) {
|
|
1363
|
+
var tree = this.tree;
|
|
1364
|
+
tree.logDebug("%s._loadKeyPath(%s)", this, keyPath);
|
|
1328
1365
|
if(keyPath === ""){
|
|
1329
|
-
|
|
1330
|
-
if( expand ){
|
|
1331
|
-
this.makeVisible();
|
|
1332
|
-
}
|
|
1333
|
-
return;
|
|
1366
|
+
throw "Key path must not be empty";
|
|
1334
1367
|
}
|
|
1335
|
-
var segList = keyPath.split(
|
|
1336
|
-
if(segList[0]
|
|
1368
|
+
var segList = keyPath.split(tree.options.keyPathSeparator);
|
|
1369
|
+
if(segList[0] === ""){
|
|
1337
1370
|
throw "Key path must be relative (don't start with '/')";
|
|
1338
1371
|
}
|
|
1339
1372
|
var seg = segList.shift();
|
|
1340
|
-
|
|
1373
|
+
|
|
1341
1374
|
for(var i = 0; i < this.childList.length; i++){
|
|
1342
1375
|
var child = this.childList[i];
|
|
1343
1376
|
if( child.data.key === seg ){
|
|
1344
|
-
if(
|
|
1345
|
-
|
|
1377
|
+
if(segList.length === 0) {
|
|
1378
|
+
// Found the end node
|
|
1379
|
+
callback.call(tree, child, "ok");
|
|
1380
|
+
|
|
1381
|
+
}else if(child.data.isLazy && (child.childList === null || child.childList === undefined)){
|
|
1382
|
+
tree.logDebug("%s._loadKeyPath(%s) -> reloading %s...", this, keyPath, child);
|
|
1346
1383
|
var self = this;
|
|
1347
1384
|
child.reloadChildren(function(node, isOk){
|
|
1348
1385
|
// After loading, look for direct child with that key
|
|
1349
1386
|
if(isOk){
|
|
1350
|
-
|
|
1351
|
-
|
|
1387
|
+
tree.logDebug("%s._loadKeyPath(%s) -> reloaded %s.", node, keyPath, node);
|
|
1388
|
+
callback.call(tree, child, "loaded");
|
|
1389
|
+
node._loadKeyPath(segList.join(tree.options.keyPathSeparator), callback);
|
|
1352
1390
|
}else{
|
|
1353
|
-
|
|
1391
|
+
tree.logWarning("%s._loadKeyPath(%s) -> reloadChildren() failed.", self, keyPath);
|
|
1392
|
+
callback.call(tree, child, "error");
|
|
1354
1393
|
}
|
|
1355
1394
|
});
|
|
1356
1395
|
} else {
|
|
1396
|
+
callback.call(tree, child, "loaded");
|
|
1357
1397
|
// Look for direct child with that key
|
|
1358
|
-
child.
|
|
1398
|
+
child._loadKeyPath(segList.join(tree.options.keyPathSeparator), callback);
|
|
1359
1399
|
}
|
|
1360
1400
|
return;
|
|
1361
|
-
}
|
|
1401
|
+
}
|
|
1362
1402
|
}
|
|
1363
1403
|
// Could not find key
|
|
1364
|
-
|
|
1404
|
+
tree.logWarning("Node not found: " + seg);
|
|
1365
1405
|
return;
|
|
1366
1406
|
},
|
|
1367
1407
|
|
|
@@ -1514,12 +1554,14 @@ DynaTreeNode.prototype = {
|
|
|
1514
1554
|
*
|
|
1515
1555
|
*/
|
|
1516
1556
|
// this.tree.logDebug("%s.addChild(%o, %o)", this, obj, beforeNode);
|
|
1517
|
-
if(
|
|
1557
|
+
if(typeof(obj) == "string"){
|
|
1558
|
+
throw "Invalid data type for " + obj;
|
|
1559
|
+
}else if( !obj || obj.length === 0 ){ // Passed null or undefined or empty array
|
|
1518
1560
|
return;
|
|
1519
|
-
}
|
|
1520
|
-
if( obj instanceof DynaTreeNode ){
|
|
1561
|
+
}else if( obj instanceof DynaTreeNode ){
|
|
1521
1562
|
return this._addChildNode(obj, beforeNode);
|
|
1522
1563
|
}
|
|
1564
|
+
|
|
1523
1565
|
if( !obj.length ){ // Passed a single data object
|
|
1524
1566
|
obj = [ obj ];
|
|
1525
1567
|
}
|
|
@@ -1549,43 +1591,56 @@ DynaTreeNode.prototype = {
|
|
|
1549
1591
|
appendAjax: function(ajaxOptions) {
|
|
1550
1592
|
this.removeChildren(false, true);
|
|
1551
1593
|
this.setLazyNodeStatus(DTNodeStatus_Loading);
|
|
1594
|
+
// Debug feature: force a delay, to simulate slow loading...
|
|
1595
|
+
if(ajaxOptions.debugLazyDelay){
|
|
1596
|
+
var ms = ajaxOptions.debugLazyDelay;
|
|
1597
|
+
var self = this;
|
|
1598
|
+
ajaxOptions.debugLazyDelay = 0;
|
|
1599
|
+
this.tree.logInfo("appendAjax: waiting for debugLazyDelay " + ms);
|
|
1600
|
+
setTimeout(function(){self.appendAjax(ajaxOptions);}, ms);
|
|
1601
|
+
return;
|
|
1602
|
+
}
|
|
1552
1603
|
// Ajax option inheritance: $.ajaxSetup < $.ui.dynatree.prototype.options.ajaxDefaults < tree.options.ajaxDefaults < ajaxOptions
|
|
1553
1604
|
var self = this;
|
|
1554
1605
|
var orgSuccess = ajaxOptions.success;
|
|
1555
1606
|
var orgError = ajaxOptions.error;
|
|
1556
|
-
var eventType = "nodeLoaded.dynatree." + this.tree.$tree.attr("id")
|
|
1607
|
+
var eventType = "nodeLoaded.dynatree." + this.tree.$tree.attr("id")
|
|
1557
1608
|
+ "." + this.data.key;
|
|
1558
1609
|
var options = $.extend({}, this.tree.options.ajaxDefaults, ajaxOptions, {
|
|
1559
|
-
/*
|
|
1560
|
-
complete: function(req, textStatus){
|
|
1561
|
-
alert("ajax complete");
|
|
1562
|
-
},
|
|
1563
|
-
timeout: 5000, // 5 sec
|
|
1564
|
-
*/
|
|
1565
1610
|
success: function(data, textStatus){
|
|
1566
1611
|
// <this> is the request options
|
|
1567
1612
|
// self.tree.logDebug("appendAjax().success");
|
|
1568
1613
|
var prevPhase = self.tree.phase;
|
|
1569
1614
|
self.tree.phase = "init";
|
|
1570
|
-
|
|
1571
|
-
|
|
1615
|
+
|
|
1616
|
+
if(!$.isArray(data) || data.length !== 0){
|
|
1617
|
+
self.addChild(data, null);
|
|
1618
|
+
}
|
|
1572
1619
|
self.tree.phase = "postInit";
|
|
1573
|
-
self.setLazyNodeStatus(DTNodeStatus_Ok);
|
|
1574
1620
|
if( orgSuccess ){
|
|
1575
1621
|
orgSuccess.call(options, self);
|
|
1576
1622
|
}
|
|
1577
|
-
self.tree.logInfo("trigger "+ eventType);
|
|
1623
|
+
self.tree.logInfo("trigger " + eventType);
|
|
1578
1624
|
self.tree.$tree.trigger(eventType, [self, true]);
|
|
1579
1625
|
self.tree.phase = prevPhase;
|
|
1626
|
+
// This should be the last command, so node.isLoading is true
|
|
1627
|
+
// while the callbacks run
|
|
1628
|
+
self.setLazyNodeStatus(DTNodeStatus_Ok);
|
|
1629
|
+
if($.isArray(data) && data.length === 0){
|
|
1630
|
+
// Set to [] which is interpreted as 'no children' for lazy
|
|
1631
|
+
// nodes
|
|
1632
|
+
self.childList = [];
|
|
1633
|
+
self.render();
|
|
1634
|
+
}
|
|
1580
1635
|
},
|
|
1581
1636
|
error: function(XMLHttpRequest, textStatus, errorThrown){
|
|
1582
1637
|
// <this> is the request options
|
|
1583
1638
|
self.tree.logWarning("appendAjax failed:", textStatus, ":\n", XMLHttpRequest, "\n", errorThrown);
|
|
1584
|
-
self.setLazyNodeStatus(DTNodeStatus_Error, {info: textStatus, tooltip: ""+errorThrown});
|
|
1585
1639
|
if( orgError ){
|
|
1586
1640
|
orgError.call(options, self, XMLHttpRequest, textStatus, errorThrown);
|
|
1587
1641
|
}
|
|
1588
1642
|
self.tree.$tree.trigger(eventType, [self, false]);
|
|
1643
|
+
self.setLazyNodeStatus(DTNodeStatus_Error, {info: textStatus, tooltip: ""+errorThrown});
|
|
1589
1644
|
}
|
|
1590
1645
|
});
|
|
1591
1646
|
$.ajax(options);
|
|
@@ -1736,7 +1791,7 @@ DynaTreeStatus._getTreePersistData = function(cookieId, cookieOpts) {
|
|
|
1736
1791
|
var ts = new DynaTreeStatus(cookieId, cookieOpts);
|
|
1737
1792
|
ts.read();
|
|
1738
1793
|
return ts.toDict();
|
|
1739
|
-
}
|
|
1794
|
+
};
|
|
1740
1795
|
// Make available in global scope
|
|
1741
1796
|
getDynaTreePersistData = DynaTreeStatus._getTreePersistData;
|
|
1742
1797
|
|
|
@@ -1874,13 +1929,17 @@ DynaTree.prototype = {
|
|
|
1874
1929
|
this.timer = null;
|
|
1875
1930
|
// find container element
|
|
1876
1931
|
this.divTree = this.$tree.get(0);
|
|
1877
|
-
|
|
1932
|
+
|
|
1933
|
+
// var parentPos = $(this.divTree).parent().offset();
|
|
1934
|
+
// this.parentTop = parentPos.top;
|
|
1935
|
+
// this.parentLeft = parentPos.left;
|
|
1936
|
+
|
|
1878
1937
|
_initDragAndDrop(this);
|
|
1879
1938
|
},
|
|
1880
1939
|
|
|
1881
1940
|
// member functions
|
|
1882
1941
|
|
|
1883
|
-
_load: function() {
|
|
1942
|
+
_load: function(callback) {
|
|
1884
1943
|
var $widget = this.$widget;
|
|
1885
1944
|
var opts = this.options;
|
|
1886
1945
|
this.bEnableUpdate = true;
|
|
@@ -1899,12 +1958,19 @@ DynaTree.prototype = {
|
|
|
1899
1958
|
_log("warn", "Option 'minExpandLevel' must be >= 1.");
|
|
1900
1959
|
opts.minExpandLevel = 1;
|
|
1901
1960
|
}
|
|
1961
|
+
// _log("warn", "jQuery.support.boxModel " + jQuery.support.boxModel);
|
|
1902
1962
|
|
|
1903
1963
|
// If a 'options.classNames' dictionary was passed, still use defaults
|
|
1904
1964
|
// for undefined classes:
|
|
1905
1965
|
if( opts.classNames !== $.ui.dynatree.prototype.options.classNames ) {
|
|
1906
1966
|
opts.classNames = $.extend({}, $.ui.dynatree.prototype.options.classNames, opts.classNames);
|
|
1907
1967
|
}
|
|
1968
|
+
if( opts.ajaxDefaults !== $.ui.dynatree.prototype.options.ajaxDefaults ) {
|
|
1969
|
+
opts.ajaxDefaults = $.extend({}, $.ui.dynatree.prototype.options.ajaxDefaults, opts.ajaxDefaults);
|
|
1970
|
+
}
|
|
1971
|
+
if( opts.dnd !== $.ui.dynatree.prototype.options.dnd ) {
|
|
1972
|
+
opts.dnd = $.extend({}, $.ui.dynatree.prototype.options.dnd, opts.dnd);
|
|
1973
|
+
}
|
|
1908
1974
|
// Guess skin path, if not specified
|
|
1909
1975
|
if(!opts.imagePath) {
|
|
1910
1976
|
$("script").each( function () {
|
|
@@ -1915,7 +1981,7 @@ DynaTree.prototype = {
|
|
|
1915
1981
|
}else{
|
|
1916
1982
|
opts.imagePath = "skin/";
|
|
1917
1983
|
}
|
|
1918
|
-
|
|
1984
|
+
logMsg("Guessing imagePath from '%s': '%s'", this.src, opts.imagePath);
|
|
1919
1985
|
return false; // first match
|
|
1920
1986
|
}
|
|
1921
1987
|
});
|
|
@@ -1963,6 +2029,7 @@ DynaTree.prototype = {
|
|
|
1963
2029
|
*/
|
|
1964
2030
|
// Create the root element
|
|
1965
2031
|
this.tnRoot = new DynaTreeNode(null, this, {});
|
|
2032
|
+
this.tnRoot.bExpanded = true;
|
|
1966
2033
|
this.tnRoot.render();
|
|
1967
2034
|
this.divTree.appendChild(this.tnRoot.ul);
|
|
1968
2035
|
|
|
@@ -1982,7 +2049,7 @@ DynaTree.prototype = {
|
|
|
1982
2049
|
// Init tree from AJAX request
|
|
1983
2050
|
isLazy = true;
|
|
1984
2051
|
root.data.isLazy = true;
|
|
1985
|
-
this._reloadAjax();
|
|
2052
|
+
this._reloadAjax(callback);
|
|
1986
2053
|
|
|
1987
2054
|
} else if( opts.initId ) {
|
|
1988
2055
|
// Init tree from another UL element
|
|
@@ -2023,26 +2090,26 @@ DynaTree.prototype = {
|
|
|
2023
2090
|
this.phase = "idle";
|
|
2024
2091
|
},
|
|
2025
2092
|
|
|
2026
|
-
_setNoUpdate: function(silent) {
|
|
2027
|
-
// TODO: set options to disable and re-enable updates while loading
|
|
2028
|
-
var opts = this.options;
|
|
2029
|
-
var prev = {
|
|
2030
|
-
fx: opts.fx,
|
|
2031
|
-
autoFocus: opts.autoFocus,
|
|
2032
|
-
autoCollapse: opts.autoCollapse };
|
|
2033
|
-
if(silent === true){
|
|
2034
|
-
opts.autoFocus = false;
|
|
2035
|
-
opts.fx = null;
|
|
2036
|
-
opts.autoCollapse = false;
|
|
2037
|
-
} else {
|
|
2038
|
-
opts.autoFocus = silent.autoFocus;
|
|
2039
|
-
opts.fx = silent.fx;
|
|
2040
|
-
opts.autoCollapse = silent.autoCollapse;
|
|
2041
|
-
}
|
|
2042
|
-
return prev;
|
|
2043
|
-
},
|
|
2044
|
-
|
|
2045
|
-
_reloadAjax: function() {
|
|
2093
|
+
// _setNoUpdate: function(silent) {
|
|
2094
|
+
// // TODO: set options to disable and re-enable updates while loading
|
|
2095
|
+
// var opts = this.options;
|
|
2096
|
+
// var prev = {
|
|
2097
|
+
// fx: opts.fx,
|
|
2098
|
+
// autoFocus: opts.autoFocus,
|
|
2099
|
+
// autoCollapse: opts.autoCollapse };
|
|
2100
|
+
// if(silent === true){
|
|
2101
|
+
// opts.autoFocus = false;
|
|
2102
|
+
// opts.fx = null;
|
|
2103
|
+
// opts.autoCollapse = false;
|
|
2104
|
+
// } else {
|
|
2105
|
+
// opts.autoFocus = silent.autoFocus;
|
|
2106
|
+
// opts.fx = silent.fx;
|
|
2107
|
+
// opts.autoCollapse = silent.autoCollapse;
|
|
2108
|
+
// }
|
|
2109
|
+
// return prev;
|
|
2110
|
+
// },
|
|
2111
|
+
|
|
2112
|
+
_reloadAjax: function(callback) {
|
|
2046
2113
|
// Reload
|
|
2047
2114
|
var opts = this.options;
|
|
2048
2115
|
if( ! opts.initAjax || ! opts.initAjax.url ){
|
|
@@ -2073,8 +2140,18 @@ DynaTree.prototype = {
|
|
|
2073
2140
|
this.logWarning("initAjax: error callback is ignored when onPostInit was specified.");
|
|
2074
2141
|
}
|
|
2075
2142
|
var isReloading = pers.isReloading();
|
|
2076
|
-
ajaxOpts["success"] = function(dtnode) {
|
|
2077
|
-
|
|
2143
|
+
ajaxOpts["success"] = function(dtnode) {
|
|
2144
|
+
opts.onPostInit.call(dtnode.tree, isReloading, false);
|
|
2145
|
+
if(callback){
|
|
2146
|
+
callback.call(dtnode.tree, "ok");
|
|
2147
|
+
}
|
|
2148
|
+
};
|
|
2149
|
+
ajaxOpts["error"] = function(dtnode) {
|
|
2150
|
+
opts.onPostInit.call(dtnode.tree, isReloading, true);
|
|
2151
|
+
if(callback){
|
|
2152
|
+
callback.call(dtnode.tree, "error");
|
|
2153
|
+
}
|
|
2154
|
+
};
|
|
2078
2155
|
}
|
|
2079
2156
|
this.logDebug("Dynatree._init(): send Ajax request...");
|
|
2080
2157
|
this.tnRoot.appendAjax(ajaxOpts);
|
|
@@ -2089,6 +2166,18 @@ DynaTree.prototype = {
|
|
|
2089
2166
|
return this.tnRoot.toDict(true);
|
|
2090
2167
|
},
|
|
2091
2168
|
|
|
2169
|
+
serializeArray: function(stopOnParents) {
|
|
2170
|
+
// Return a JavaScript array of objects, ready to be encoded as a JSON
|
|
2171
|
+
// string for selected nodes
|
|
2172
|
+
var nodeList = this.getSelectedNodes(stopOnParents),
|
|
2173
|
+
name = this.$tree.attr("name") || this.$tree.attr("id"),
|
|
2174
|
+
arr = [];
|
|
2175
|
+
for(var i=0, l=nodeList.length; i<l; i++){
|
|
2176
|
+
arr.push({name: name, value: nodeList[i].data.key});
|
|
2177
|
+
}
|
|
2178
|
+
return arr;
|
|
2179
|
+
},
|
|
2180
|
+
|
|
2092
2181
|
getPersistData: function() {
|
|
2093
2182
|
return this.persistence.toDict();
|
|
2094
2183
|
},
|
|
@@ -2124,12 +2213,12 @@ DynaTree.prototype = {
|
|
|
2124
2213
|
|
|
2125
2214
|
redraw: function() {
|
|
2126
2215
|
this.logDebug("dynatree.redraw()...");
|
|
2127
|
-
this.tnRoot.render();
|
|
2216
|
+
this.tnRoot.render(false);
|
|
2128
2217
|
this.logDebug("dynatree.redraw() done.");
|
|
2129
2218
|
},
|
|
2130
2219
|
|
|
2131
|
-
reload: function() {
|
|
2132
|
-
this._load();
|
|
2220
|
+
reload: function(callback) {
|
|
2221
|
+
this._load(callback);
|
|
2133
2222
|
},
|
|
2134
2223
|
|
|
2135
2224
|
getRoot: function() {
|
|
@@ -2207,10 +2296,10 @@ DynaTree.prototype = {
|
|
|
2207
2296
|
return dtnode;
|
|
2208
2297
|
},
|
|
2209
2298
|
|
|
2210
|
-
loadKeyPath: function(keyPath,
|
|
2299
|
+
loadKeyPath: function(keyPath, callback) {
|
|
2211
2300
|
var segList = keyPath.split(this.options.keyPathSeparator);
|
|
2212
2301
|
// Remove leading '/'
|
|
2213
|
-
if(segList[0]
|
|
2302
|
+
if(segList[0] === ""){
|
|
2214
2303
|
segList.shift();
|
|
2215
2304
|
}
|
|
2216
2305
|
// Remove leading system root key
|
|
@@ -2219,9 +2308,9 @@ DynaTree.prototype = {
|
|
|
2219
2308
|
segList.shift();
|
|
2220
2309
|
}
|
|
2221
2310
|
keyPath = segList.join(this.options.keyPathSeparator);
|
|
2222
|
-
return this.tnRoot.
|
|
2311
|
+
return this.tnRoot._loadKeyPath(keyPath, callback);
|
|
2223
2312
|
},
|
|
2224
|
-
|
|
2313
|
+
|
|
2225
2314
|
selectKey: function(key, select) {
|
|
2226
2315
|
var dtnode = this.getNodeByKey(key);
|
|
2227
2316
|
if( !dtnode ){
|
|
@@ -2294,7 +2383,7 @@ TODO: better?
|
|
|
2294
2383
|
var dataAttr = $.trim($li.attr("data"));
|
|
2295
2384
|
if( dataAttr ) {
|
|
2296
2385
|
if( dataAttr.charAt(0) != "{" ){
|
|
2297
|
-
dataAttr = "{" + dataAttr + "}"
|
|
2386
|
+
dataAttr = "{" + dataAttr + "}";
|
|
2298
2387
|
}
|
|
2299
2388
|
try {
|
|
2300
2389
|
$.extend(data, eval("(" + dataAttr + ")"));
|
|
@@ -2323,7 +2412,8 @@ TODO: better?
|
|
|
2323
2412
|
if( !this.$dndMarker ) {
|
|
2324
2413
|
this.$dndMarker = $("<div id='dynatree-drop-marker'></div>")
|
|
2325
2414
|
.hide()
|
|
2326
|
-
.prependTo(
|
|
2415
|
+
.prependTo($(this.divTree).parent());
|
|
2416
|
+
// .prependTo("body");
|
|
2327
2417
|
logMsg("Creating marker: %o", this.$dndMarker);
|
|
2328
2418
|
}
|
|
2329
2419
|
if(hitMode === "start"){
|
|
@@ -2424,14 +2514,14 @@ TODO: better?
|
|
|
2424
2514
|
.append($(event.target).closest('a').clone());
|
|
2425
2515
|
// Attach node reference to helper object
|
|
2426
2516
|
helper.data("dtSourceNode", node);
|
|
2427
|
-
|
|
2517
|
+
this.logDebug("helper.sourceNode=%o", helper.data("dtSourceNode"));
|
|
2428
2518
|
res = helper;
|
|
2429
2519
|
break;
|
|
2430
2520
|
case "start":
|
|
2431
2521
|
if(node.isStatusNode()) {
|
|
2432
2522
|
res = false;
|
|
2433
2523
|
} else if(dnd.onDragStart) {
|
|
2434
|
-
res = dnd.onDragStart(node)
|
|
2524
|
+
res = dnd.onDragStart(node);
|
|
2435
2525
|
}
|
|
2436
2526
|
if(res === false) {
|
|
2437
2527
|
this.logDebug("tree.onDragStart() cancelled");
|
|
@@ -2464,11 +2554,21 @@ TODO: better?
|
|
|
2464
2554
|
hitMode = enterResponse;
|
|
2465
2555
|
} else {
|
|
2466
2556
|
// Calculate hitMode from relative cursor position.
|
|
2467
|
-
var nodeOfs = nodeTag.
|
|
2468
|
-
var relPos = { x: event.clientX - nodeOfs.left,
|
|
2469
|
-
y: event.clientY - nodeOfs.top };
|
|
2557
|
+
var nodeOfs = nodeTag.offset();
|
|
2558
|
+
// var relPos = { x: event.clientX - nodeOfs.left,
|
|
2559
|
+
// y: event.clientY - nodeOfs.top };
|
|
2560
|
+
// nodeOfs.top += this.parentTop;
|
|
2561
|
+
// nodeOfs.left += this.parentLeft;
|
|
2562
|
+
var relPos = { x: event.pageX - nodeOfs.left,
|
|
2563
|
+
y: event.pageY - nodeOfs.top };
|
|
2470
2564
|
var relPos2 = { x: relPos.x / nodeTag.width(),
|
|
2471
|
-
|
|
2565
|
+
y: relPos.y / nodeTag.height() };
|
|
2566
|
+
// this.logDebug("event.page: %s/%s", event.pageX, event.pageY);
|
|
2567
|
+
// this.logDebug("event.client: %s/%s", event.clientX, event.clientY);
|
|
2568
|
+
// this.logDebug("nodeOfs: %s/%s", nodeOfs.left, nodeOfs.top);
|
|
2569
|
+
//// this.logDebug("parent: %s/%s", this.parentLeft, this.parentTop);
|
|
2570
|
+
// this.logDebug("relPos: %s/%s", relPos.x, relPos.y);
|
|
2571
|
+
// this.logDebug("relPos2: %s/%s", relPos2.x, relPos2.y);
|
|
2472
2572
|
if( enterResponse.after && relPos2.y > 0.75 ){
|
|
2473
2573
|
hitMode = "after";
|
|
2474
2574
|
} else if(!enterResponse.over && enterResponse.after && relPos2.y > 0.5 ){
|
|
@@ -2484,23 +2584,24 @@ TODO: better?
|
|
|
2484
2584
|
// TODO: these are no-ops when moving nodes, but not in copy mode
|
|
2485
2585
|
if( dnd.preventVoidMoves ){
|
|
2486
2586
|
if(node === otherNode){
|
|
2487
|
-
|
|
2587
|
+
this.logDebug(" drop over source node prevented");
|
|
2488
2588
|
hitMode = null;
|
|
2489
2589
|
}else if(hitMode === "before" && otherNode && node === otherNode.getNextSibling()){
|
|
2490
|
-
|
|
2590
|
+
this.logDebug(" drop after source node prevented");
|
|
2491
2591
|
hitMode = null;
|
|
2492
2592
|
}else if(hitMode === "after" && otherNode && node === otherNode.getPrevSibling()){
|
|
2493
|
-
|
|
2593
|
+
this.logDebug(" drop before source node prevented");
|
|
2494
2594
|
hitMode = null;
|
|
2495
2595
|
}else if(hitMode === "over" && otherNode
|
|
2496
2596
|
&& otherNode.parent === node && otherNode.isLastSibling() ){
|
|
2497
|
-
|
|
2597
|
+
this.logDebug(" drop last child over own parent prevented");
|
|
2498
2598
|
hitMode = null;
|
|
2499
2599
|
}
|
|
2500
2600
|
}
|
|
2501
|
-
|
|
2601
|
+
this.logDebug("hitMode: %s - %s - %s", hitMode, (node.parent === otherNode), node.isLastSibling());
|
|
2502
2602
|
ui.helper.data("hitMode", hitMode);
|
|
2503
2603
|
// logMsg(" clientPos: %s/%s", event.clientX, event.clientY);
|
|
2604
|
+
// logMsg(" clientPos: %s/%s", event.pageX, event.pageY);
|
|
2504
2605
|
// logMsg(" nodeOfs: %s/%s", nodeOfs.left, nodeOfs.top);
|
|
2505
2606
|
// logMsg(" relPos: %s/%s", relPos.x, relPos.y);
|
|
2506
2607
|
// logMsg(" relPos2: %s/%s: %s", relPos2.x, relPos2.y, hitMode);
|
|
@@ -2557,6 +2658,13 @@ TODO: better?
|
|
|
2557
2658
|
return res;
|
|
2558
2659
|
},
|
|
2559
2660
|
|
|
2661
|
+
cancelDrag: function() {
|
|
2662
|
+
var dd = $.ui.ddmanager.current;
|
|
2663
|
+
if(dd){
|
|
2664
|
+
dd.cancel();
|
|
2665
|
+
}
|
|
2666
|
+
},
|
|
2667
|
+
|
|
2560
2668
|
// --- end of class
|
|
2561
2669
|
lastentry: undefined
|
|
2562
2670
|
};
|
|
@@ -2603,42 +2711,40 @@ $.widget("ui.dynatree", {
|
|
|
2603
2711
|
},
|
|
2604
2712
|
|
|
2605
2713
|
bind: function() {
|
|
2606
|
-
var $this = this.element;
|
|
2607
|
-
var o = this.options;
|
|
2608
|
-
|
|
2609
2714
|
// Prevent duplicate binding
|
|
2610
2715
|
this.unbind();
|
|
2611
2716
|
|
|
2612
2717
|
var eventNames = "click.dynatree dblclick.dynatree";
|
|
2613
|
-
if(
|
|
2718
|
+
if( this.options.keyboard ){
|
|
2614
2719
|
// Note: leading ' '!
|
|
2615
2720
|
eventNames += " keypress.dynatree keydown.dynatree";
|
|
2616
2721
|
}
|
|
2617
|
-
|
|
2722
|
+
this.element.bind(eventNames, function(event){
|
|
2618
2723
|
var dtnode = getDtNodeFromElement(event.target);
|
|
2619
2724
|
if( !dtnode ){
|
|
2620
2725
|
return true; // Allow bubbling of other events
|
|
2621
2726
|
}
|
|
2622
|
-
var
|
|
2623
|
-
|
|
2727
|
+
var tree = dtnode.tree;
|
|
2728
|
+
var o = tree.options;
|
|
2729
|
+
tree.logDebug("event(%s): dtnode: %s", event.type, dtnode);
|
|
2730
|
+
var prevPhase = tree.phase;
|
|
2731
|
+
tree.phase = "userEvent";
|
|
2624
2732
|
try {
|
|
2625
|
-
dtnode.tree.logDebug("bind(%o): dtnode: %o", event, dtnode);
|
|
2626
|
-
|
|
2627
2733
|
switch(event.type) {
|
|
2628
2734
|
case "click":
|
|
2629
|
-
return ( o.onClick && o.onClick(dtnode, event)===false ) ? false : dtnode.
|
|
2735
|
+
return ( o.onClick && o.onClick.call(tree, dtnode, event)===false ) ? false : dtnode._onClick(event);
|
|
2630
2736
|
case "dblclick":
|
|
2631
|
-
return ( o.onDblClick && o.onDblClick(dtnode, event)===false ) ? false : dtnode.
|
|
2737
|
+
return ( o.onDblClick && o.onDblClick.call(tree, dtnode, event)===false ) ? false : dtnode._onDblClick(event);
|
|
2632
2738
|
case "keydown":
|
|
2633
|
-
return ( o.onKeydown && o.onKeydown(dtnode, event)===false ) ? false : dtnode.
|
|
2739
|
+
return ( o.onKeydown && o.onKeydown.call(tree, dtnode, event)===false ) ? false : dtnode._onKeydown(event);
|
|
2634
2740
|
case "keypress":
|
|
2635
|
-
return ( o.onKeypress && o.onKeypress(dtnode, event)===false ) ? false : dtnode.
|
|
2741
|
+
return ( o.onKeypress && o.onKeypress.call(tree, dtnode, event)===false ) ? false : dtnode._onKeypress(event);
|
|
2636
2742
|
}
|
|
2637
2743
|
} catch(e) {
|
|
2638
2744
|
var _ = null; // issue 117
|
|
2639
|
-
|
|
2745
|
+
tree.logWarning("bind(%o): dtnode: %o, error: %o", event, dtnode, e);
|
|
2640
2746
|
} finally {
|
|
2641
|
-
|
|
2747
|
+
tree.phase = prevPhase;
|
|
2642
2748
|
}
|
|
2643
2749
|
});
|
|
2644
2750
|
|
|
@@ -2650,7 +2756,7 @@ $.widget("ui.dynatree", {
|
|
|
2650
2756
|
// Fix event for IE:
|
|
2651
2757
|
event = arguments[0] = $.event.fix( event || window.event );
|
|
2652
2758
|
var dtnode = getDtNodeFromElement(event.target);
|
|
2653
|
-
return dtnode ? dtnode.
|
|
2759
|
+
return dtnode ? dtnode._onFocus(event) : false;
|
|
2654
2760
|
}
|
|
2655
2761
|
var div = this.tree.divTree;
|
|
2656
2762
|
if( div.addEventListener ) {
|
|
@@ -2710,15 +2816,14 @@ $.widget("ui.dynatree", {
|
|
|
2710
2816
|
|
|
2711
2817
|
|
|
2712
2818
|
// The following methods return a value (thus breaking the jQuery call chain):
|
|
2713
|
-
|
|
2714
|
-
|
|
2715
|
-
|
|
2819
|
+
if( parseFloat($.ui.version) < 1.8 ) {
|
|
2820
|
+
$.ui.dynatree.getter = "getTree getRoot getActiveNode getSelectedNodes";
|
|
2821
|
+
}
|
|
2716
2822
|
|
|
2717
2823
|
|
|
2718
2824
|
/*******************************************************************************
|
|
2719
2825
|
* Plugin default options:
|
|
2720
2826
|
*/
|
|
2721
|
-
//$.ui.dynatree.defaults = { @@ 1.8
|
|
2722
2827
|
$.ui.dynatree.prototype.options = {
|
|
2723
2828
|
title: "Dynatree", // Tree's name (only used for debug outpu)
|
|
2724
2829
|
minExpandLevel: 1, // 1: root node is not collapsible
|
|
@@ -2781,7 +2886,7 @@ $.ui.dynatree.prototype.options = {
|
|
|
2781
2886
|
},
|
|
2782
2887
|
generateIds: false, // Generate id attributes like <span id='dynatree-id-KEY'>
|
|
2783
2888
|
idPrefix: "dynatree-id-", // Used to generate node id's like <span id="dynatree-id-<key>">.
|
|
2784
|
-
keyPathSeparator: "/", // Used by node.getKeyPath() and tree.loadKeyPath().
|
|
2889
|
+
keyPathSeparator: "/", // Used by node.getKeyPath() and tree.loadKeyPath().
|
|
2785
2890
|
// cookieId: "dynatree-cookie", // Choose a more unique name, to allow multiple trees.
|
|
2786
2891
|
cookieId: "dynatree", // Choose a more unique name, to allow multiple trees.
|
|
2787
2892
|
cookie: {
|
|
@@ -2813,6 +2918,7 @@ $.ui.dynatree.prototype.options = {
|
|
|
2813
2918
|
hidden: "dynatree-hidden",
|
|
2814
2919
|
combinedExpanderPrefix: "dynatree-exp-",
|
|
2815
2920
|
combinedIconPrefix: "dynatree-ico-",
|
|
2921
|
+
nodeLoading: "dynatree-loading",
|
|
2816
2922
|
// disabled: "dynatree-disabled",
|
|
2817
2923
|
hasChildren: "dynatree-has-children",
|
|
2818
2924
|
active: "dynatree-active",
|
|
@@ -2828,6 +2934,10 @@ $.ui.dynatree.prototype.options = {
|
|
|
2828
2934
|
// ------------------------------------------------------------------------
|
|
2829
2935
|
lastentry: undefined
|
|
2830
2936
|
};
|
|
2937
|
+
//
|
|
2938
|
+
if( parseFloat($.ui.version) < 1.8 ) {
|
|
2939
|
+
$.ui.dynatree.defaults = $.ui.dynatree.prototype.options;
|
|
2940
|
+
}
|
|
2831
2941
|
|
|
2832
2942
|
/*******************************************************************************
|
|
2833
2943
|
* Reserved data attributes for a tree node.
|
|
@@ -2926,7 +3036,7 @@ var _registerDnd = function() {
|
|
|
2926
3036
|
// draggable.offset.click.left -= event.target.offsetLeft;
|
|
2927
3037
|
draggable.offset.click.top = -2;
|
|
2928
3038
|
draggable.offset.click.left = + 16;
|
|
2929
|
-
logMsg(" draggable.offset.click FIXED: %s/%s", draggable.offset.click.left, draggable.offset.click.top);
|
|
3039
|
+
// logMsg(" draggable.offset.click FIXED: %s/%s", draggable.offset.click.left, draggable.offset.click.top);
|
|
2930
3040
|
// Trigger onDragStart event
|
|
2931
3041
|
// TODO: when called as connectTo..., the return value is ignored(?)
|
|
2932
3042
|
return sourceNode.tree._onDragEvent("start", sourceNode, null, event, ui, draggable);
|
|
@@ -2937,6 +3047,7 @@ var _registerDnd = function() {
|
|
|
2937
3047
|
var sourceNode = ui.helper.data("dtSourceNode") || null;
|
|
2938
3048
|
var prevTargetNode = ui.helper.data("dtTargetNode") || null;
|
|
2939
3049
|
var targetNode = getDtNodeFromElement(event.target);
|
|
3050
|
+
// logMsg("getDtNodeFromElement(%o): %s", event.target, targetNode);
|
|
2940
3051
|
if(event.target && !targetNode){
|
|
2941
3052
|
// We got a drag event, but the targetNode could not be found
|
|
2942
3053
|
// at the event location. This may happen, if the mouse
|