muzich.js 99KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604
  1. /*
  2. * Scripts de Muzi.ch
  3. * Rédigé et propriété de Sevajol Bastien (http://www.bux.fr) sauf si mention
  4. * contraire sur la fonction.
  5. *
  6. */
  7. // Messages flashs
  8. var myMessages = ['info','warning','error','success']; // define the messages types
  9. var window_login_or_subscription_opened = false;
  10. var popin_opened = false;
  11. function hideAllMessages()
  12. {
  13. var messagesHeights = new Array(); // this array will store height for each
  14. for (i=0; i<myMessages.length; i++)
  15. {
  16. messagesHeights[i] = $('.' + myMessages[i]).outerHeight();
  17. $('.' + myMessages[i]).css('top', -messagesHeights[i]); //move element outside viewport
  18. }
  19. }
  20. function ResponseController()
  21. {
  22. var propagate = function(response, after_login_success_callback)
  23. {
  24. if (response.status === 'error')
  25. {
  26. if (response.error === 'UserEmailNotConfirmed')
  27. {
  28. open_ajax_popin(url_email_not_confirmed, function(){
  29. });
  30. }
  31. else if (response.error === 'UserNotConnected')
  32. {
  33. open_connection_or_subscription_window(false, {}, after_login_success_callback);
  34. }
  35. }
  36. else if (response.status === 'mustbeconnected')
  37. {
  38. open_connection_or_subscription_window(true, {}, after_login_success_callback);
  39. }
  40. };
  41. this.execute = function(response, success_callback, failure_callback, after_login_success_callback)
  42. {
  43. propagate(response, after_login_success_callback);
  44. if (response.status === 'success')
  45. {
  46. success_callback(response);
  47. }
  48. else
  49. {
  50. failure_callback(response);
  51. }
  52. };
  53. }
  54. window.ResponseController = new ResponseController();
  55. $(document).ready(function(){
  56. // Initially, hide them all
  57. hideAllMessages();
  58. $('.message').animate({top:"0"}, 500);
  59. // When message is clicked, hide it
  60. $('.message a.message-close').click(function(){
  61. $('.message').hide();
  62. return false;
  63. });
  64. });
  65. function findKeyWithValue(arrayt, value)
  66. {
  67. for(i in arrayt)
  68. {
  69. if (arrayt[i] == value)
  70. {
  71. return i;
  72. }
  73. }
  74. return "";
  75. }
  76. function array_key_exists (key, search) {
  77. // http://kevin.vanzonneveld.net
  78. // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  79. // + improved by: Felix Geisendoerfer (http://www.debuggable.com/felix)
  80. // * example 1: array_key_exists('kevin', {'kevin': 'van Zonneveld'});
  81. // * returns 1: true
  82. // input sanitation
  83. if (!search || (search.constructor !== Array && search.constructor !== Object)) {
  84. return false;
  85. }
  86. return key in search;
  87. }
  88. function json_to_array(json_string)
  89. {
  90. if (json_string.length)
  91. {
  92. return eval("(" + json_string + ")");
  93. }
  94. return new Array();
  95. }
  96. function strpos (haystack, needle, offset) {
  97. // Finds position of first occurrence of a string within another
  98. //
  99. // version: 1109.2015
  100. // discuss at: http://phpjs.org/functions/strpos // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  101. // + improved by: Onno Marsman
  102. // + bugfixed by: Daniel Esteban
  103. // + improved by: Brett Zamir (http://brett-zamir.me)
  104. // * example 1: strpos('Kevin van Zonneveld', 'e', 5); // * returns 1: 14
  105. var i = (haystack + '').indexOf(needle, (offset || 0));
  106. return i === -1 ? false : i;
  107. }
  108. /**
  109. * Converts the given data structure to a JSON string.
  110. * Argument: arr - The data structure that must be converted to JSON
  111. * Example: var json_string = array2json(['e', {pluribus: 'unum'}]);
  112. * var json = array2json({"success":"Sweet","failure":false,"empty_array":[],"numbers":[1,2,3],"info":{"name":"Binny","site":"http:\/\/www.openjs.com\/"}});
  113. * http://www.openjs.com/scripts/data/json_encode.php
  114. */
  115. function array2json(arr) {
  116. var parts = [];
  117. var is_list = (Object.prototype.toString.apply(arr) === '[object Array]');
  118. for(var key in arr) {
  119. var value = arr[key];
  120. if(typeof value == "object") { //Custom handling for arrays
  121. if(is_list) parts.push(array2json(value)); /* :RECURSION: */
  122. else parts[key] = array2json(value); /* :RECURSION: */
  123. } else {
  124. var str = "";
  125. if(!is_list) str = '"' + key + '":';
  126. //Custom handling for multiple data types
  127. if(typeof value == "number") str += value; //Numbers
  128. else if(value === false) str += 'false'; //The booleans
  129. else if(value === true) str += 'true';
  130. else str += '"' + value + '"'; //All other things
  131. // :TODO: Is there any more datatype we should be in the lookout for? (Functions?)
  132. parts.push(str);
  133. }
  134. }
  135. var json = parts.join(",");
  136. if(is_list) return '[' + json + ']';//Return numerical JSON
  137. return '{' + json + '}';//Return associative JSON
  138. }
  139. function isInteger(s) {
  140. return (s.toString().search(/^-?[0-9]+$/) == 0);
  141. }
  142. function inArray(array, p_val) {
  143. var l = array.length;
  144. for(var i = 0; i < l; i++) {
  145. if(array[i] == p_val) {
  146. return true;
  147. }
  148. }
  149. return false;
  150. }
  151. if(typeof(String.prototype.trim) === "undefined")
  152. {
  153. String.prototype.trim = function()
  154. {
  155. return String(this).replace(/^\s+|\s+$/g, '');
  156. };
  157. }
  158. function str_replace (search, replace, subject, count) {
  159. // Replaces all occurrences of search in haystack with replace
  160. //
  161. // version: 1109.2015
  162. // discuss at: http://phpjs.org/functions/str_replace // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  163. // + improved by: Gabriel Paderni
  164. // + improved by: Philip Peterson
  165. // + improved by: Simon Willison (http://simonwillison.net)
  166. // + revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com) // + bugfixed by: Anton Ongson
  167. // + input by: Onno Marsman
  168. // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  169. // + tweaked by: Onno Marsman
  170. // + input by: Brett Zamir (http://brett-zamir.me) // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  171. // + input by: Oleg Eremeev
  172. // + improved by: Brett Zamir (http://brett-zamir.me)
  173. // + bugfixed by: Oleg Eremeev
  174. // % note 1: The count parameter must be passed as a string in order // % note 1: to find a global variable in which the result will be given
  175. // * example 1: str_replace(' ', '.', 'Kevin van Zonneveld');
  176. // * returns 1: 'Kevin.van.Zonneveld'
  177. // * example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');
  178. // * returns 2: 'hemmo, mars' var i = 0,
  179. j = 0,
  180. temp = '',
  181. repl = '',
  182. sl = 0, fl = 0,
  183. f = [].concat(search),
  184. r = [].concat(replace),
  185. s = subject,
  186. ra = Object.prototype.toString.call(r) === '[object Array]', sa = Object.prototype.toString.call(s) === '[object Array]';
  187. s = [].concat(s);
  188. if (count) {
  189. this.window[count] = 0;
  190. }
  191. for (i = 0, sl = s.length; i < sl; i++) {
  192. if (s[i] === '') {
  193. continue;
  194. }for (j = 0, fl = f.length; j < fl; j++) {
  195. temp = s[i] + '';
  196. repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
  197. s[i] = (temp).split(f[j]).join(repl);
  198. if (count && s[i] !== temp) {this.window[count] += (temp.length - s[i].length) / f[j].length;
  199. }
  200. }
  201. }
  202. return sa ? s : s[0];
  203. }
  204. function explode (delimiter, string, limit) {
  205. // Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned.
  206. //
  207. // version: 1109.2015
  208. // discuss at: http://phpjs.org/functions/explode // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  209. // + improved by: kenneth
  210. // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  211. // + improved by: d3x
  212. // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // * example 1: explode(' ', 'Kevin van Zonneveld');
  213. // * returns 1: {0: 'Kevin', 1: 'van', 2: 'Zonneveld'}
  214. // * example 2: explode('=', 'a=bc=d', 2);
  215. // * returns 2: ['a', 'bc=d']
  216. var emptyArray = {0: ''
  217. };
  218. // third argument is not required
  219. if (arguments.length < 2 || typeof arguments[0] == 'undefined' || typeof arguments[1] == 'undefined') {return null;
  220. }
  221. if (delimiter === '' || delimiter === false || delimiter === null) {
  222. return false;}
  223. if (typeof delimiter == 'function' || typeof delimiter == 'object' || typeof string == 'function' || typeof string == 'object') {
  224. return emptyArray;
  225. }
  226. if (delimiter === true) {
  227. delimiter = '1';
  228. }
  229. if (!limit) {
  230. return string.toString().split(delimiter.toString());
  231. }
  232. // support for limit argument
  233. var splitted = string.toString().split(delimiter.toString());var partA = splitted.splice(0, limit - 1);
  234. var partB = splitted.join(delimiter.toString());
  235. partA.push(partB);
  236. return partA;
  237. }
  238. // fonction de nettoyage des tags
  239. function remove_tags(form_name)
  240. {
  241. //tagsAddeds[form_name] = new Array();
  242. //$('form[name="'+form_name+'"] ul.tagbox li.tag').remove();
  243. //$('form[name="'+form_name+'"] input.tagBox_tags_ids').val('');
  244. }
  245. function JQueryJson(url, data, callback_success)
  246. {
  247. $.ajax({
  248. type: 'POST',
  249. url: url,
  250. dataType: 'json',
  251. data: data,
  252. success: function(response)
  253. {
  254. window.ResponseController.execute(
  255. response,
  256. function(){},
  257. function(){}
  258. );
  259. callback_success(response);
  260. }
  261. });
  262. }
  263. $(document).ready(function(){
  264. // Controle du focus sur la page
  265. function onBlur() {
  266. document.body.className = 'blurred';
  267. }
  268. function onFocus(){
  269. document.body.className = 'focused';
  270. do_action_body_focused();
  271. }
  272. if (/*@cc_on!@*/false) { // check for Internet Explorer
  273. document.onfocusin = onFocus;
  274. document.onfocusout = onBlur;
  275. } else {
  276. window.onfocus = onFocus;
  277. window.onblur = onBlur;
  278. }
  279. // Bouton de personalisation du filtre
  280. // Aucun tags
  281. $('#tabs_tag_search_no_tags, a.filter_clear_url').live("click", function(){
  282. $('img.elements_more_loader').show();
  283. $('ul.elements').html('');
  284. // COde: c tout pouris ce code
  285. if ($(this).hasClass('filter_clear_url'))
  286. {
  287. $('ul#tabs_tag_search_buttons').find('li').removeClass('selected');
  288. $('li#tab_li_tag_search_no_tags').addClass('selected');
  289. $('input#element_search_form_tag_strict').attr('checked', false);
  290. }
  291. else
  292. {
  293. $(this).parents('ul#tabs_tag_search_buttons').find('li').removeClass('selected');
  294. $(this).parent('li').addClass('selected');
  295. }
  296. // if ($('div.top_tools:visible').length)
  297. // {
  298. // $('div.top_tools').slideUp();
  299. // }
  300. // On initialise la liste de tags déjà ajouté
  301. window.search_tag_prompt_connector.initializeTags([]);
  302. $('div.no_elements').hide();
  303. //tagsAddeds['search'] = new Array;
  304. var form = $('form[name="search"]');
  305. //remove_tags(form.attr('name'));
  306. form.submit();
  307. });
  308. // tags préférés
  309. $('#tabs_tag_search_with_tags').live("click", function(){
  310. $('img.elements_more_loader').show();
  311. $('ul.elements').html('');
  312. $(this).parents('ul#tabs_tag_search_buttons').find('li').removeClass('selected');
  313. $(this).parent('li').addClass('selected');
  314. // if ($('div.top_tools:visible').length == 0)
  315. // {
  316. // $('div.top_tools').slideDown();
  317. // }
  318. var form = $('form[name="search"]');
  319. $.getJSON(url_get_favorites_tags, function(response) {
  320. window.ResponseController.execute(
  321. response,
  322. function(){},
  323. function(){}
  324. );
  325. var tags = [];
  326. for (i in response.tags)
  327. {
  328. var tag = new Tag(i, response.tags[i]);
  329. tags.push(tag);
  330. }
  331. window.search_tag_prompt_connector.initializeTags(tags);
  332. form.submit();
  333. });
  334. });
  335. // Tag cliqué dans la liste d'éléments
  336. $('ul.element_tags li a.element_tag').live('click', function(){
  337. // Si il y a une liste de tags (comme sur la page favoris, profil)
  338. var id;
  339. if ($('ul#favorite_tags').length)
  340. {
  341. id = str_replace('element_tag_', '', $(this).attr('id'));
  342. var link = $('a#filtering_tag_'+id);
  343. list_tag_clicked(link, true);
  344. }
  345. if ($('form[name="search"]').length)
  346. {
  347. if ($('li#tab_li_tag_search_no_tags').hasClass('selected'))
  348. {
  349. $('ul#tabs_tag_search_buttons').find('li').removeClass('selected');
  350. $('li#tab_li_tag_search_with_tags').addClass('selected');
  351. // Ne devrais plus servir puisque on l'affiche toujours maintenant
  352. if (!$('div.top_tools:visible').length)
  353. {
  354. $('div.top_tools').slideDown();
  355. }
  356. }
  357. $('img.elements_more_loader').show();
  358. $('ul.elements').html('');
  359. var form = $('form[name="search"]');
  360. id = str_replace('element_tag_', '', $(this).attr('id'));
  361. var tag = new Tag(id, $.trim($(this).text()));
  362. window.search_tag_prompt_connector.initializeTags([tag]);
  363. form.submit();
  364. }
  365. $('html, body').animate({ scrollTop: 0 }, 'fast');
  366. return false;
  367. });
  368. function element_last_opened(li)
  369. {
  370. $('li.element').removeClass('shadows');
  371. li.addClass('shadows');
  372. }
  373. // Affichage un/des embed
  374. // 1328283150_media-playback-start.png
  375. // 1328283201_emblem-symbolic-link.png
  376. $('a.element_embed_open_link, a.element_name_embed_open_link').live("click", function(){
  377. var li = $(this).parents('li.element');
  378. element_last_opened(li);
  379. li.find('a.element_embed_close_link').show();
  380. li.find('a.element_embed_open_link_text').hide();
  381. li.find('div.element_embed').show();
  382. if ((player = window.dynamic_player.play(
  383. li.find('div.element_embed'),
  384. li.data('type'),
  385. li.data('refid'),
  386. li.data('elementid'),
  387. false
  388. )))
  389. {
  390. window.players_manager.add(player, li.attr('id'));
  391. }
  392. return false;
  393. });
  394. //$('a.element_name_embed_open_link').live("click", function(){
  395. //
  396. // var li = $(this).parents('li.element');
  397. //
  398. // element_last_opened(li);
  399. // li.find('a.element_embed_close_link').show();
  400. // li.find('a.element_embed_open_link_text').hide();
  401. // li.find('div.element_embed').show();
  402. //
  403. // return false;
  404. //});
  405. // Fermeture du embed si demandé
  406. $('a.element_embed_close_link').live("click", function(){
  407. var li = $(this).parents('li.element');
  408. li.removeClass('shadows');
  409. li.find('div.element_embed').hide();
  410. li.find('a.element_embed_open_link_text').show();
  411. $(this).hide();
  412. var player = window.players_manager.get(li.attr('id'));
  413. if (player)
  414. {
  415. player.close();
  416. }
  417. else
  418. {
  419. // On a eu un soucis a la creation du player on dirais
  420. }
  421. return false;
  422. });
  423. // Affichage du "play" ou du "open" (image png)
  424. $('li.element a.a_thumbnail, li.element img.open, li.element img.play').live({
  425. mouseenter:
  426. function()
  427. {
  428. var td = $(this).parent('td');
  429. var a = td.find('a.a_thumbnail');
  430. if (a.hasClass('embed'))
  431. {
  432. td.find('img.play').show();
  433. }
  434. else
  435. {
  436. td.find('img.open').show();
  437. }
  438. },
  439. mouseleave:
  440. function()
  441. {
  442. var td = $(this).parent('td');
  443. var a = td.find('a.a_thumbnail');
  444. if (a.hasClass('embed'))
  445. {
  446. td.find('img.play').hide();
  447. }
  448. else
  449. {
  450. td.find('img.open').hide();
  451. }
  452. }
  453. }
  454. );
  455. // Mise en favoris
  456. $('a.favorite_link').live("click", function(){
  457. var link = $(this);
  458. // Pour ne pas attendre la fin du chargement ajax:
  459. var img = link.find('img');
  460. if (!link.hasClass('loading'))
  461. {
  462. if (img.attr('src') == '/img/icon_star_2.png')
  463. {
  464. img.attr('src', '/img/icon_star_2_red.png');
  465. }
  466. else
  467. {
  468. img.attr('src', '/img/icon_star_2.png');
  469. }
  470. }
  471. link.addClass('loading');
  472. $.getJSON($(this).attr('href'), function(response) {
  473. window.ResponseController.execute(
  474. response,
  475. function(){},
  476. function(){}
  477. );
  478. var img = link.find('img');
  479. link.attr('href', response.link_new_url);
  480. img.attr('src', response.img_new_src);
  481. img.attr('title', response.img_new_title);
  482. link.removeClass('loading');
  483. });
  484. return false;
  485. });
  486. // // Affichage du bouton Modifier et Supprimer
  487. // $('ul.elements li.element').live({
  488. // mouseenter:
  489. // function()
  490. // {
  491. // $(this).find('a.element_edit_link').show();
  492. // $(this).find('a.element_remove_link').show();
  493. // },
  494. // mouseleave:
  495. // function()
  496. // {
  497. // if (!$(this).find('a.element_edit_link').hasClass('mustBeDisplayed'))
  498. // {
  499. // $(this).find('a.element_edit_link').hide();
  500. // }
  501. // if (!$(this).find('a.element_remove_link').hasClass('mustBeDisplayed'))
  502. // {
  503. // $(this).find('a.element_remove_link').hide();
  504. // }
  505. // }
  506. // }
  507. // );
  508. // Plus d'éléments
  509. var last_id = null;
  510. $('a.elements_more').click(function(){
  511. sidebar_fix_to_bottom_prepare();
  512. $('img.elements_more_loader').show();
  513. // On fait un cas isolé (pour l'instant!!)
  514. if (!$(this).hasClass('event_view'))
  515. {
  516. var link = $(this);
  517. var last_element = $('ul.elements li.element:last');
  518. var id_last = str_replace('element_', '', last_element.attr('id'));
  519. var url = link.attr('href')+'/'+id_last;
  520. // Cas exeptionel si on se trouve sur la global_search
  521. if ($('div#results_search_form').length)
  522. {
  523. url = link.attr('href')+id_last+'/'+$('div#results_search_form form input[type="text"]').val();
  524. }
  525. var old_form_action = $('form[name="search"]').attr('action');
  526. $('form[name="search"]').attr('action', url);
  527. var data = $('form[name="search"]').serialize();
  528. var type = 'POST';
  529. }
  530. else
  531. {
  532. var link = $(this);
  533. var url = $(this).attr('href');
  534. var data = {};
  535. var type = 'GET';
  536. }
  537. $('.sidebar').css('bottom', $('#footer').outerHeight());
  538. $.ajax({
  539. type: type,
  540. url: url,
  541. data: data,
  542. success: function(response) {
  543. window.ResponseController.execute(
  544. response,
  545. function(){},
  546. function(){}
  547. );
  548. if (response.count)
  549. {
  550. $('ul.elements').append(response.html);
  551. refresh_social_buttons();
  552. $('img.elements_more_loader').hide();
  553. recolorize_element_list();
  554. if (link.hasClass('event_view'))
  555. {
  556. link.attr('href', response.data.more_link_href);
  557. }
  558. sidebar_fix_to_bottom_finish();
  559. }
  560. if (response.end || response.count < 1)
  561. {
  562. $('img.elements_more_loader').hide();
  563. $('ul.elements').after('<div class="no_elements"><p class="no-elements">'+
  564. response.message+'</p></div>');
  565. link.hide();
  566. }
  567. },
  568. dataType: "json"
  569. });
  570. if (!$(this).hasClass('event_view'))
  571. {
  572. $('form[name="search"]').attr('action', old_form_action);
  573. }
  574. return false;
  575. });
  576. tag_box_input_value = $('ul.tagbox input[type="text"]').val();
  577. // Filtre et affichage éléments ajax
  578. $('form[name="search"] input[type="submit"]').click(function(){
  579. $('ul.elements').html('');
  580. $('div.no_elements').hide();
  581. $('img.elements_more_loader').show();
  582. });
  583. $('form[name="search"]').ajaxForm(function(response) {
  584. window.ResponseController.execute(
  585. response,
  586. function(){},
  587. function(){
  588. $('img.elements_more_loader').hide();
  589. }
  590. );
  591. $('ul.elements').html(response.html);
  592. refresh_social_buttons();
  593. if (response.count)
  594. {
  595. $('img.elements_more_loader').hide();
  596. $('span.elements_more').show();
  597. $('a.elements_more').show();
  598. }
  599. if (response.count < 1)
  600. {
  601. $('img.elements_more_loader').hide();
  602. $('ul.elements').after('<div class="no_elements"><p class="no-elements">'+
  603. response.message+'</p></div>');
  604. $('a.elements_more').hide()
  605. ;
  606. }
  607. $('ul.tagbox input[type="text"]').val($('ul.tagbox input[type="text"]').val());
  608. });
  609. // Suppression d'un element
  610. $('a.element_remove_link').jConfirmAction({
  611. question : string_element_delete_confirm_sentence,
  612. yesAnswer : string_element_delete_confirm_yes,
  613. cancelAnswer : string_element_delete_confirm_no,
  614. onYes: function(link){
  615. var li = link.parents('li.element');
  616. li.find('img.element_loader').show();
  617. $.getJSON(link.attr('href'), function(response){
  618. window.ResponseController.execute(
  619. response,
  620. function(){},
  621. function(){}
  622. );
  623. if (response.status == 'success')
  624. {
  625. li.remove();
  626. }
  627. else
  628. {
  629. li.find('img.element_loader').hide();
  630. }
  631. });
  632. return false;
  633. },
  634. onOpen: function(link){
  635. var li = link.parents('li.element');
  636. li.find('a.element_edit_link').addClass('mustBeDisplayed');
  637. li.find('a.element_remove_link').addClass('mustBeDisplayed');
  638. },
  639. onClose: function(link){
  640. var li = link.parents('li.element');
  641. li.find('a.element_edit_link').removeClass('mustBeDisplayed');
  642. li.find('a.element_remove_link').removeClass('mustBeDisplayed');
  643. li.find('a.element_edit_link').hide();
  644. li.find('a.element_remove_link').hide();
  645. }
  646. });
  647. // Retrait d'un element d'un groupe
  648. $('a.element_remove_from_group_link').jConfirmAction({
  649. question : string_removefromgroup_sentence,
  650. yesAnswer : string_removefromgroup_confirm_yes,
  651. cancelAnswer : string_removefromgroup_confirm_no,
  652. onYes: function(link){
  653. var li = link.parents('li.element');
  654. li.find('img.element_loader').show();
  655. $.getJSON(link.attr('href'), function(response){
  656. window.ResponseController.execute(
  657. response,
  658. function(){},
  659. function(){}
  660. );
  661. if (response.status == 'success')
  662. {
  663. li.remove();
  664. }
  665. else
  666. {
  667. li.find('img.element_loader').hide();
  668. }
  669. });
  670. return false;
  671. }
  672. });
  673. var elements_edited = new Array();
  674. // Ouverture du formulaire de modification
  675. $('a.element_edit_link').live('click', function(){
  676. var link = $(this);
  677. var li = link.parents('li.element');
  678. li.addClass('selected');
  679. // On garde en mémoire l'élément édité en cas d'annulation
  680. elements_edited[li.attr('id')] = li.html();
  681. var div_loader = li.find('div.loader');
  682. li.html(div_loader);
  683. li.find('img.element_loader').show();
  684. $.getJSON($(this).attr('href'), function(response) {
  685. window.ResponseController.execute(
  686. response,
  687. function(){},
  688. function(){}
  689. );
  690. // On prépare le tagBox
  691. li.html(response.html);
  692. // Pour le click sur l'input de saisie de tag
  693. //li.find('ul.tagbox li.input input[type="text"]').formDefaults();
  694. var options = new Array();
  695. options.form_name = response.form_name;
  696. options.tag_init = response.tags;
  697. ajax_query_timestamp = null;
  698. //$("#tags_prompt_list_"+response.form_name).tagBox(options);
  699. // On rend ce formulaire ajaxFormable
  700. $('form[name="'+response.form_name+'"] input[type="submit"]').live('click', function(){
  701. var li = $(this).parents('li.element');
  702. li.prepend(div_loader);
  703. li.find('img.element_loader').show();
  704. });
  705. $('form[name="'+response.form_name+'"]').ajaxForm(function(response){
  706. window.ResponseController.execute(
  707. response,
  708. function(){},
  709. function(){}
  710. );
  711. var li = $('li#'+response.dom_id);
  712. if (response.status == 'success')
  713. {
  714. li.html(response.html);
  715. li.removeClass('selected');
  716. delete(elements_edited[li.attr('id')]);
  717. }
  718. else if (response.status == 'error')
  719. {
  720. li.find('img.element_loader').hide();
  721. li.find('ul.error_list').remove();
  722. var ul_errors = $('<ul>').addClass('error_list');
  723. for (i in response.errors)
  724. {
  725. ul_errors.append($('<li>').append(response.errors[i]));
  726. }
  727. li.prepend(ul_errors);
  728. }
  729. });
  730. });
  731. return false;
  732. });
  733. // Annulation d'un formulaire de modification d'élément
  734. $('form.edit_element input.cancel_edit').live('click', function(){
  735. var li = $(this).parents('li.element');
  736. li.removeClass('selected');
  737. li.html(elements_edited[li.attr('id')]);
  738. delete(elements_edited[li.attr('id')]);
  739. });
  740. ////////////////// TAG PROMPT ///////////////
  741. //
  742. //var ajax_query_timestamp = null;
  743. //
  744. //// Les deux clicks ci-dessous permettent de faire disparaitre
  745. //// la div de tags lorsque l'on clique ailleurs
  746. //$('html').click(function() {
  747. // if ($("div.search_tag_list").is(':visible'))
  748. // {
  749. // $("div.search_tag_list").hide();
  750. // }
  751. //});
  752. //
  753. //$("div.search_tag_list, div.search_tag_list a.more").live('click', function(event){
  754. // event.stopPropagation();
  755. // $("div.search_tag_list").show();
  756. //});
  757. //
  758. //function autocomplete_tag(input, form_name)
  759. //{
  760. // // Il doit y avoir au moin un caractère
  761. // if (input.val().length > 0)
  762. // {
  763. //
  764. // // on met en variable l'input
  765. // var inputTag = input;
  766. //
  767. // // On récupére la div de tags
  768. // var divtags = $("#search_tag_"+form_name);
  769. //
  770. // // Si la fenêtre de tags est caché
  771. // if (!divtags.is(':visible'))
  772. // {
  773. // // On la replace
  774. // var position = input.position();
  775. // divtags.css('left', Math.round(position.left) + 5);
  776. // divtags.css('top', Math.round(position.top) + 28);
  777. // // Et on l'affiche
  778. // divtags.show();
  779. // }
  780. // // On affiche le loader
  781. // $('#tag_loader_'+form_name).show();
  782. // // On cache la liste de tags
  783. // var search_tag_list = divtags.find('ul.search_tag_list');
  784. // // On supprime les anciens li
  785. // search_tag_list.find('li').remove();
  786. // search_tag_list.hide();
  787. // // Et on affiche une info
  788. // var span_info = divtags.find('span.info');
  789. // span_info.show();
  790. // // TODO: multilingue !
  791. // span_info.text(str_replace('%string_search%', input.val(), string_search_tag_title));
  792. //
  793. // // C'est en fonction du nb de resultats qu'il sera affiché
  794. // divtags.find('a.more').hide();
  795. //
  796. // // On récupère le timestamp pour reconnaitre la dernière requête effectué
  797. // ajax_query_timestamp = new Date().getTime();
  798. //
  799. // // Récupération des tags correspondants
  800. // $.ajax({
  801. // type: 'POST',
  802. // url: url_search_tag+'/'+ajax_query_timestamp,
  803. // dataType: 'json',
  804. // data: {'string_search':input.val()},
  805. // success: function(data) {
  806. // if (data.status == 'mustbeconnected')
  807. // {
  808. // $(location).attr('href', url_home);
  809. // }
  810. //
  811. // // Ce contrôle permet de ne pas continuer si une requete
  812. // // ajax a été faite depuis.
  813. // if (data.timestamp == ajax_query_timestamp)
  814. // {
  815. // var status = data.status;
  816. // var tags = data.data;
  817. //
  818. // // Si on spécifie une erreur
  819. // if (status == 'error')
  820. // {
  821. // // On l'affiche a l'utilisateur
  822. // span_info.text(data.error);
  823. // }
  824. // // Si c'est un succés
  825. // else if (status == 'success')
  826. // {
  827. // if (tags.length > 0)
  828. // {
  829. // var more = false;
  830. // // Pour chaque tags retournés
  831. // for (i in tags)
  832. // {
  833. // var tag_name = tags[i]['name'];
  834. // var tag_id = tags[i]['id'];
  835. // var t_string = tag_name
  836. // // On construit un li
  837. //
  838. // var r_string = $.trim(input.val());
  839. // var re = new RegExp(r_string, "i");
  840. // t_string = t_string.replace(re,"<strong>" + r_string + "</strong>");
  841. //
  842. //
  843. // var li_tag =
  844. // $('<li>').append(
  845. // $('<a>').attr('id','searched_tag_'+tag_id)
  846. // .attr('href', '#')
  847. // // qui réagit quand on clique dessus
  848. // .click(function(e){
  849. //
  850. // var id = str_replace('searched_tag_', '', $(this).attr('id'));
  851. // var name = $('span#tag_prompt_tag_'+id+'_name').html();
  852. //
  853. // $('input#tags_selected_tag_'+form_name).val(id);
  854. // inputTag.val(name);
  855. // // Et on execute l'évènement selectTag de l'input
  856. // inputTag.trigger("selectTag");
  857. // // On cache la liste puisque le choix vient d'être fait
  858. // divtags.hide();
  859. // // On vide le champs de saisie du tag
  860. // $('input.form-default-value-processed').val('');
  861. // return false;
  862. // })
  863. // .append(t_string)
  864. // ).append($('<span style="display: none;" id="tag_prompt_tag_'+tag_id+'_name">'+tag_name+'</span>'));
  865. //
  866. // // Si on depasse les 30 tags
  867. // if (i > 30)
  868. // {
  869. // more = true;
  870. // // On le cache
  871. // li_tag.hide();
  872. // }
  873. //
  874. // // On ajout ce li a la liste
  875. // search_tag_list.append(li_tag);
  876. // }
  877. //
  878. // if (more)
  879. // {
  880. // divtags.find('a.more').show();
  881. // }
  882. //
  883. // span_info.show();
  884. // span_info.text(data.message);
  885. // // Et on affiche la liste
  886. // search_tag_list.show();
  887. // }
  888. // else
  889. // {
  890. // span_info.show();
  891. // span_info.text(data.message);
  892. // search_tag_list.show();
  893. //
  894. // // Dans ce cas ou aucun tag n'a été trouvé, la proposition
  895. // // d'ajout s'affichecf en dessous
  896. //
  897. // //span_info.text("Aucun tag de trouvé pour \""+inputTag.val()+"\"");
  898. // }
  899. //
  900. // // Si le tag ne semble pas connu en base
  901. // if (!data.same_found)
  902. // {
  903. // li_tag =
  904. // $('<li>').addClass('new').append(
  905. // $('<a>').attr('href','#new#'+$.trim(input.val()))
  906. // // qui réagit quand on clique dessus
  907. // .click({
  908. // inputTag: inputTag,
  909. // form_name: form_name,
  910. // divtags: divtags
  911. // }, event_click_new_tag_proposition)
  912. // .append($.trim(input.val()))
  913. // );
  914. // search_tag_list.append(li_tag);
  915. // }
  916. //
  917. // }
  918. //
  919. // // On cache le loader
  920. // $('#tag_loader_'+form_name).hide();
  921. // }
  922. // }
  923. // });
  924. //
  925. //
  926. // //$.getJSON(url_search_tag+'/'+input.val()+'/'+ajax_query_timestamp, );
  927. //
  928. // }
  929. //}
  930. //
  931. //function event_click_new_tag_proposition(event)
  932. //{
  933. // form_add_open_dialog_for_new_tag($(event.target), event.data.inputTag, event.data.form_name, event.data.divtags);
  934. //}
  935. //
  936. //function form_add_open_dialog_for_new_tag(link_add_tag, inputTag, form_name, divtags)
  937. //{
  938. //
  939. //
  940. // // Effet fade-in du fond opaque
  941. // $('body').append($('<div>').attr('id', 'fade'));
  942. // //Apparition du fond - .css({'filter' : 'alpha(opacity=80)'}) pour corriger les bogues de IE
  943. // $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn();
  944. //
  945. // // En premier lieux on fait apparaître la fenêtre de confirmation
  946. // var popup = $('<div>')
  947. // .attr('id', 'add_tag')
  948. // .addClass('popin_block')
  949. // .css('width', '400px')
  950. // //.append($('<h2>').append(string_tag_add_title))
  951. // .append($('<form>')
  952. // .attr('action', url_add_tag)
  953. // .attr('method', 'post')
  954. // .attr('name', 'add_tag')
  955. // .ajaxForm(function(response) {
  956. // /*
  957. // *
  958. // */
  959. //
  960. // if (response.status == 'mustbeconnected')
  961. // {
  962. // $(location).attr('href', url_home);
  963. // }
  964. //
  965. // if (response.status == 'success')
  966. // {
  967. // var tag_id = response.tag_id;
  968. // var tag_name = response.tag_name;
  969. //
  970. // $('input#tags_selected_tag_'+form_name).val(tag_id);
  971. // inputTag.val(tag_name);
  972. // // Et on execute l'évènement selectTag de l'input
  973. // inputTag.trigger("selectTag");
  974. // // On cache la liste puisque le choix vient d'être fait
  975. // divtags.hide();
  976. //
  977. // link_add_tag.parents('div.search_tag_list').find('img.tag_loader').hide();
  978. //
  979. // $('#fade').fadeOut(400, function(){$('#fade').remove();});
  980. // $('#add_tag').remove();
  981. // }
  982. //
  983. // if (response.status == 'error')
  984. // {
  985. // $('form[name="add_tag"]').find('ul.error_list').remove();
  986. // var ul_errors = $('<ul>').addClass('error_list');
  987. //
  988. // for (i in response.errors)
  989. // {
  990. // ul_errors.append($('<li>').append(response.errors[i]));
  991. // }
  992. //
  993. // $('form[name="add_tag"]').prepend(ul_errors);
  994. // }
  995. //
  996. // return false;
  997. // })
  998. //
  999. // .append($('<div>').addClass('tag')
  1000. // .append($('<ul>')
  1001. // .append($('<li>').addClass('button')
  1002. // .append(link_add_tag.text()))))
  1003. // .append($('<p>').append(string_tag_add_text))
  1004. // .append($('<p>').append(string_tag_add_argument))
  1005. // .append($('<textarea>').attr('name', 'argument'))
  1006. // .append($('<div>').addClass('inputs')
  1007. // .append($('<input>')
  1008. // .attr('type', 'button')
  1009. // .attr('value', string_tag_add_inputs_cancel)
  1010. // .addClass('button')
  1011. // .click(function(){
  1012. // $('#fade').fadeOut(1000, function(){$('#fade').remove();});
  1013. // $('#add_tag').remove();
  1014. //
  1015. // return false;
  1016. // })
  1017. // )
  1018. // .append($('<input>')
  1019. // .attr('type', 'submit')
  1020. // .attr('value', string_tag_add_inputs_submit)
  1021. // .addClass('button')
  1022. // .click(function(){
  1023. //
  1024. // link_add_tag.parents('div.search_tag_list').find('img.tag_loader').show();
  1025. //
  1026. // })
  1027. // )
  1028. // .append($('<input>').attr('type', 'hidden').attr('name', 'tag_name').val(link_add_tag.text()))
  1029. // ))
  1030. // ;
  1031. //
  1032. // // Il faut ajouter le popup au dom avant de le positionner en css
  1033. // // Sinon la valeur height n'est pas encore calculable
  1034. // $('body').prepend(popup);
  1035. //
  1036. // //Récupération du margin, qui permettra de centrer la fenêtre - on ajuste de 80px en conformité avec le CSS
  1037. // var popMargTop = (popup.height() + 50) / 2;
  1038. // var popMargLeft = (popup.width() + 50) / 2;
  1039. //
  1040. // //On affecte le margin
  1041. // $(popup).css({
  1042. // 'margin-top' : -popMargTop,
  1043. // 'margin-left' : -popMargLeft
  1044. // });
  1045. //
  1046. // return false;
  1047. //}
  1048. //
  1049. //var last_keypress = 0;
  1050. //
  1051. //function check_timelaps_and_search(input, form_name, time_id, timed, info)
  1052. //{
  1053. // if (!timed)
  1054. // {
  1055. // // C'est une nouvelle touche (pas redirigé) on lui donne un id
  1056. // // et on met a jour l'id de la dernière pressé
  1057. // last_keypress = new Date().getTime();
  1058. // var this_time_id = last_keypress;
  1059. // }
  1060. // else
  1061. // {
  1062. // // Si elle a été redirigé, on met son id dans cette variable
  1063. // var this_time_id = time_id;
  1064. // }
  1065. //
  1066. // // C'est une touche redirigé dans le temps qui a été suivit d'une autre touche
  1067. // if (time_id != last_keypress && timed)
  1068. // {
  1069. // // elle disparait
  1070. // }
  1071. // else
  1072. // {
  1073. // //
  1074. // if ((new Date().getTime() - last_keypress) < 600 || timed == false)
  1075. // {
  1076. // // Si elle vient d'être tapé (timed == false) elle doit attendre (au cas ou une autre touche soit tapé)
  1077. // // Si c'est une redirigé qui n'a pas été remplacé par une nouvelle lettre
  1078. // // elle doit attendre au cas ou soit pressé.
  1079. // setTimeout(function(){check_timelaps_and_search(input, form_name, this_time_id, true, info)}, 700);
  1080. // }
  1081. // else
  1082. // {
  1083. // // il n'y a plus a attendre, on envoie la demande de tag.
  1084. // autocomplete_tag(input, form_name);
  1085. // }
  1086. // }
  1087. //}
  1088. //
  1089. //// Autocompletion de tags
  1090. //$("div.tags_prompt ul.tagbox li.input input").live('keypress', function(e){
  1091. //
  1092. // var form_name = $(this).parents('form').attr('name');
  1093. // var code = (e.keyCode ? e.keyCode : e.which);
  1094. //
  1095. // if ((e.which !== 0 && e.charCode !== 0) || (code == 8 || code == 46))
  1096. // {
  1097. // check_timelaps_and_search($(this), form_name, new Date().getTime(), false, $(this).val());
  1098. // }
  1099. //
  1100. //});
  1101. //
  1102. //// Un click sur ce lien affiche tout les tags cachés de la liste
  1103. //$('div.search_tag_list a.more').live('click', function(){
  1104. // jQuery.each( $(this).parent('div').find('ul.search_tag_list li') , function(){
  1105. // $(this).show();
  1106. // });
  1107. // $(this).hide();
  1108. // return false;
  1109. //});
  1110. //
  1111. //$('ul.tagbox li.input input[type="text"]').formDefaults();
  1112. //
  1113. ////////////////// FIN TAG PROMPT ///////////////
  1114. // Suppression d'un element
  1115. $('a.group_remove_link').jConfirmAction({
  1116. question : "Supprimer ce groupe ?",
  1117. yesAnswer : "Oui",
  1118. cancelAnswer : "Non",
  1119. onYes: function(link){
  1120. window.location = link.attr('href');
  1121. return false;
  1122. },
  1123. onOpen: function(){},
  1124. onClose: function(){}
  1125. });
  1126. // Selection Réseau global / Mon réseau
  1127. $('ul#tabs_tag_search_buttons a.all_network, ul#tabs_tag_search_buttons a.my_network').live('click', function(){
  1128. if ($('form[name="search"]').length)
  1129. {
  1130. $(this).parent('li').parent('ul').find('li').removeClass('selected')
  1131. if ($(this).hasClass('all_network'))
  1132. {
  1133. $(this).parent('li').addClass('selected');
  1134. $('#element_search_form_network').val('network_public');
  1135. }
  1136. else
  1137. {
  1138. $(this).parent('li').addClass('selected');
  1139. $('#element_search_form_network').val('network_personal');
  1140. }
  1141. $('form[name="search"] input[type="submit"]').trigger('click');
  1142. return false;
  1143. }
  1144. return true;
  1145. });
  1146. function element_add_proceed_json_response(response)
  1147. {
  1148. if (response.status == 'success')
  1149. {
  1150. $('form[name="add"]').find('ul.error_list').remove();
  1151. $('ul.elements').prepend(response.html);
  1152. refresh_social_buttons();
  1153. $('form[name="add"] input[type="text"]').val('');
  1154. if ($('form[name="search"]').length)
  1155. {
  1156. $('div.top_tools').slideDown();
  1157. }
  1158. remove_tags('add');
  1159. recolorize_element_list();
  1160. $('div#element_add_box').slideUp();
  1161. if (response.groups.length)
  1162. {
  1163. // Des groupes sont proposés pour diffuser cet élément
  1164. $('div#added_element_to_group').slideDown();
  1165. for (i in response.groups)
  1166. {
  1167. var group = response.groups[i];
  1168. $('ul#groups_to_add_element').html('');
  1169. $('ul#groups_to_add_element')
  1170. .append($('<li>')
  1171. .append($('<a>')
  1172. .addClass('added_element_add_to_group')
  1173. .attr('href', group.url)
  1174. .append(group.name)
  1175. )
  1176. )
  1177. ;
  1178. }
  1179. }
  1180. else
  1181. {
  1182. $('a#element_add_link').show();
  1183. $('a#element_add_close_link').hide();
  1184. }
  1185. form_add_hide_errors();
  1186. // Dans le cas d'un ajout depuis l'extérieur (iframe)
  1187. if ($('form[name="add"] input[name="shared_from"]').val() === "1")
  1188. {
  1189. var elements = $('<ul class="elements"></ul>')
  1190. elements.prepend(response.html);
  1191. $('div#share_from_content').append(elements);
  1192. $('div#share_from_message').text(response.message);
  1193. $('form[name="add"]').append($('<input type="hidden" name="shared_from_finished" id="shared_from_finished" value="1" />'));
  1194. refresh_social_buttons();
  1195. }
  1196. return true;
  1197. }
  1198. else if (response.status == 'error')
  1199. {
  1200. form_add_display_errors(response.errors);
  1201. $('#form_add_loader').hide();
  1202. return false;
  1203. }
  1204. return false;
  1205. }
  1206. function form_add_hide_errors()
  1207. {
  1208. $('form[name="add"]').find('ul.error_list').remove();
  1209. }
  1210. // Affichage des erreurs lors de laprocédure d'ajout d'un élément
  1211. function form_add_display_errors(errors)
  1212. {
  1213. $('form[name="add"]').find('ul.error_list').remove();
  1214. var ul_errors = $('<ul>').addClass('error_list');
  1215. for (i in errors)
  1216. {
  1217. ul_errors.append($('<li>').append(errors[i]));
  1218. }
  1219. $('form[name="add"]').prepend(ul_errors);
  1220. }
  1221. // Ajout d'un element #ajouter (première partie)
  1222. // // Click sur "ajouter" (l'url)
  1223. // $('a#form_add_check_url').click(function(){
  1224. //
  1225. // // On fait tourner notre gif loader
  1226. // $('img#form_add_loader').show();
  1227. //
  1228. // $.ajax({
  1229. // type: 'POST',
  1230. // url: url_datas_api,
  1231. // data: {'url':$('input#element_add_url').val()},
  1232. // success: function(response){
  1233. //
  1234. // if (response.status == 'mustbeconnected')
  1235. // {
  1236. // $(location).attr('href', url_home);
  1237. // }
  1238. //
  1239. // if (response.status == 'success')
  1240. // {
  1241. // // On cache notre gif loader.
  1242. // $('img#form_add_loader').hide();
  1243. //
  1244. // // On commence par renseigner les champs si on a du concret
  1245. // // name
  1246. // if (response.name)
  1247. // {
  1248. // $('input#element_add_name').val(response.name);
  1249. // }
  1250. //
  1251. // // thumb
  1252. // $('div#form_add_thumb img').attr('src', '/bundles/muzichcore/img/nothumb.png');
  1253. // if (response.thumb)
  1254. // {
  1255. // $('div#form_add_thumb img').attr('src', response.thumb);
  1256. // }
  1257. //
  1258. // // Proposition de tags
  1259. // if (response.tags)
  1260. // {
  1261. // $('ul#form_add_prop_tags li').remove();
  1262. // $('ul#form_add_prop_tags').show();
  1263. // $('ul#form_add_prop_tags_text').show();
  1264. //
  1265. // for (tags_index = 0; tags_index < response.tags.length; tags_index++)
  1266. // {
  1267. // var tag = response.tags[tags_index];
  1268. // var tag_id = '';
  1269. // var tag_name = tag.original_name;
  1270. // // Si il y a des équivalent en base.
  1271. // if (tag.like_found)
  1272. // {
  1273. // tag_id = tag.like.id;
  1274. // tag_name = tag.like.name;
  1275. // }
  1276. //
  1277. // // On aura plus qu'a vérifie le href pour savoir si c'est une demande d'ajout de tags =)
  1278. // $('ul#form_add_prop_tags').append(
  1279. // '<li>'+
  1280. // '<a href="#'+tag_id+'" class="form_add_prop_tag">'+
  1281. // tag_name+
  1282. // '</a>'+
  1283. // '</li>'
  1284. // );
  1285. // }
  1286. // }
  1287. //
  1288. // // On a plus qu'a afficher les champs
  1289. // $('div#form_add_second_part').slideDown();
  1290. // $('div#form_add_first_part').slideUp();
  1291. // form_add_hide_errors();
  1292. // }
  1293. // else if (response.status == 'error')
  1294. // {
  1295. // form_add_display_errors(response.errors);
  1296. // $('#form_add_loader').hide();
  1297. // return false;
  1298. // }
  1299. // },
  1300. // dataType: 'json'
  1301. // });
  1302. //
  1303. // });
  1304. function element_add_proceed_data_apis(response)
  1305. {
  1306. window.ResponseController.execute(
  1307. response,
  1308. function(){},
  1309. function(){}
  1310. );
  1311. if (response.status == 'success')
  1312. {
  1313. // On cache notre gif loader.
  1314. $('img#form_add_loader').hide();
  1315. // On commence par renseigner les champs si on a du concret
  1316. // name
  1317. if (response.name)
  1318. {
  1319. $('input#element_add_name').val(response.name);
  1320. }
  1321. // thumb
  1322. $('div#form_add_thumb img').attr('src', '/bundles/muzichcore/img/nothumb.png');
  1323. if (response.thumb)
  1324. {
  1325. $('div#form_add_thumb img').attr('src', response.thumb);
  1326. }
  1327. // Proposition de tags
  1328. if (response.tags)
  1329. {
  1330. $('ul#form_add_prop_tags li').remove();
  1331. $('ul#form_add_prop_tags_api').show();
  1332. $('p#form_add_prop_tags_text').hide();
  1333. if (response.tags.length)
  1334. {
  1335. $('p#form_add_prop_tags_text').show();
  1336. }
  1337. $('ul#form_add_prop_tags_api li').remove();
  1338. for (tags_index = 0; tags_index < response.tags.length; tags_index++)
  1339. {
  1340. var tag = response.tags[tags_index];
  1341. var tag_id = '';
  1342. var tag_name = tag.original_name;
  1343. // Si il y a des équivalent en base.
  1344. if (tag.like_found)
  1345. {
  1346. tag_id = tag.like.id;
  1347. tag_name = tag.like.name;
  1348. }
  1349. // On aura plus qu'a vérifie le href pour savoir si c'est une demande d'ajout de tags =)
  1350. $('ul#form_add_prop_tags_api').append(
  1351. '<li>'+
  1352. '<a href="#'+tag_id+'" class="form_add_prop_tag">'+
  1353. tag_name+
  1354. '</a>'+
  1355. '</li>'
  1356. );
  1357. }
  1358. }
  1359. return true;
  1360. }
  1361. else if (response.status == 'error')
  1362. {
  1363. return false;
  1364. }
  1365. return true;
  1366. }
  1367. /*
  1368. * Formulaire d'ajout: click sur proposition de tags du a une api
  1369. */
  1370. $('a.form_add_prop_tag').live('click', function(){
  1371. var form_name = "add";
  1372. var tag_id = str_replace('#', '', $(this).attr('href'));
  1373. // Si on connait le tag id (pas un nouveau tag donc)
  1374. if (tag_id)
  1375. {
  1376. var tag = new Tag(tag_id, $(this).text());
  1377. window.add_tag_prompt_connector.addTagToTagPrompt(tag);
  1378. }
  1379. else
  1380. {
  1381. window.add_tag_prompt_connector.openTagSubmission($(this).text());
  1382. }
  1383. // On nettoie le champs de saisie des tags
  1384. $('input.form-default-value-processed').val('');
  1385. });
  1386. // #ajouter ajouter un élément (envoi du formulaire)
  1387. $('form[name="add"] input[type="submit"]').live('click', function(){
  1388. $('form[name="add"]').find('img.tag_loader').show();
  1389. });
  1390. $('form[name="add"]').ajaxForm(function(response) {
  1391. var callback_login = function(){
  1392. $('#form_add_loader').show();
  1393. JQueryJson(url_csrf, {}, function(response){
  1394. if (response.status == 'success')
  1395. {
  1396. $('form[name="add"] input[name="element_add[_token]"]').val(response.data);
  1397. $('form[name="add"]').submit();
  1398. $('#form_add_loader').hide();
  1399. }
  1400. });
  1401. };
  1402. $('form[name="add"] img.tag_loader').hide();
  1403. window.ResponseController.execute(
  1404. response,
  1405. function(){},
  1406. function(){},
  1407. callback_login
  1408. );
  1409. // Si on en est a la première étape la réponse sera des données récupérés auprès
  1410. // des apis
  1411. if ($('input#form_add_step').val() == '1')
  1412. {
  1413. if (element_add_proceed_data_apis(response))
  1414. {
  1415. // On a plus qu'a afficher les champs
  1416. $('div#form_add_second_part').slideDown();
  1417. $('div#form_add_first_part').slideUp();
  1418. form_add_hide_errors();
  1419. $('#form_add_loader').hide();
  1420. $('input#form_add_step').val('2');
  1421. // On doit avoir le slug du groupe si on ajoute a un groupe
  1422. if (!$('input#add_element_group_page').length)
  1423. {
  1424. $('form[name="add"]').attr('action', url_element_add);
  1425. }
  1426. else
  1427. {
  1428. $('form[name="add"]').attr('action', url_element_add+'/'+$('input#add_element_group_page').val());
  1429. }
  1430. $('span#add_url_title_url').html($('input#element_add_url').val());
  1431. // Mise a zero des tags
  1432. window.add_tag_prompt_connector.initializeTags([]);
  1433. $('input#element_add_need_tags').attr('checked', false);
  1434. }
  1435. else
  1436. {
  1437. form_add_display_errors(response.errors);
  1438. $('#form_add_loader').hide();
  1439. }
  1440. }
  1441. else if ($('input#form_add_step').val() == '2')
  1442. {
  1443. if (element_add_proceed_json_response(response))
  1444. {
  1445. form_add_reinit();
  1446. }
  1447. }
  1448. return false;
  1449. });
  1450. function form_add_reinit()
  1451. {
  1452. $('div#element_add_box').slideUp();
  1453. $('div#form_add_first_part').show();
  1454. $('div#form_add_second_part').hide();
  1455. $('ul#form_add_prop_tags_api').hide();
  1456. $('ul#form_add_prop_tags_text').hide();
  1457. $('input#element_add_url').val('');
  1458. $('input#element_add_name').val('');
  1459. $('input#form_add_step').val(1);
  1460. $('form[name="add"]').attr('action', url_datas_api);
  1461. }
  1462. /////////////////////
  1463. var tags_ids_for_filter = new Array();
  1464. // Filtre par tags (show, favorite)
  1465. function refresh_elements_with_tags_selected(link)
  1466. {
  1467. // Puis on fait notre rekékéte ajax.
  1468. $('ul.elements').html('');
  1469. $('div.no_elements').hide();
  1470. $('img.elements_more_loader').show();
  1471. $.getJSON($('input#get_elements_url').val()+'/'+array2json(tags_ids_for_filter), function(response){
  1472. window.ResponseController.execute(
  1473. response,
  1474. function(){},
  1475. function(){}
  1476. );
  1477. $('ul.elements').html(response.html);
  1478. refresh_social_buttons();
  1479. if (response.count)
  1480. {
  1481. $('img.elements_more_loader').hide();
  1482. $('span.elements_more').show();
  1483. $('a.elements_more').show();
  1484. }
  1485. });
  1486. return false;
  1487. }
  1488. function list_tag_clicked(link, erease)
  1489. {
  1490. if (erease)
  1491. {
  1492. $('ul#favorite_tags a.tag').removeClass('active');
  1493. }
  1494. // Ensuite on l'active ou le désactive
  1495. if (link.hasClass('active'))
  1496. {
  1497. link.removeClass('active');
  1498. }
  1499. else
  1500. {
  1501. link.addClass('active');
  1502. }
  1503. // On construit notre liste de tags
  1504. tags_ids_for_filter = new Array();
  1505. $('ul#favorite_tags a.tag.active').each(function(index){
  1506. var id = str_replace('filtering_tag_', '', $(this).attr('id'));
  1507. tags_ids_for_filter[id] = id;
  1508. });
  1509. // On adapte le lien afficher plus de résultats
  1510. var a_more = $('a.elements_more');
  1511. a_more.attr('href', $('input#more_elements_url').val()+'/'+array2json(tags_ids_for_filter));
  1512. // On adapte aussi le lien de l'autoplay
  1513. //$('a.autoplay_link').attr('href', $('input#autoplay_url').val()+'/'+array2json(tags_ids_for_filter));
  1514. //$('a.autoplay_link').each(function(){
  1515. // console.debug($(this));
  1516. // console.log(
  1517. // str_replace('__ELEMENT_ID__', $(this).data('element_id'), $('input#autoplay_url').val()+'/'+array2json(tags_ids_for_filter))
  1518. // );
  1519. // $(this).attr('href', str_replace('__ELEMENT_ID__', $(this).data('element_id'), $('input#autoplay_url').val()+'/'+array2json(tags_ids_for_filter)));
  1520. //});
  1521. return check_timelaps_and_find_with_tags(link, new Date().getTime(), false);
  1522. }
  1523. $('ul#favorite_tags a.tag').click(function(){
  1524. list_tag_clicked($(this));
  1525. return false;
  1526. });
  1527. last_keypress = 0;
  1528. function check_timelaps_and_find_with_tags(link, time_id, timed)
  1529. {
  1530. if (!timed)
  1531. {
  1532. // C'est une nouvelle touche (pas redirigé) on lui donne un id
  1533. // et on met a jour l'id de la dernière pressé
  1534. last_keypress = new Date().getTime();
  1535. var this_time_id = last_keypress;
  1536. }
  1537. else
  1538. {
  1539. // Si elle a été redirigé, on met son id dans cette variable
  1540. var this_time_id = time_id;
  1541. }
  1542. // C'est une touche redirigé dans le temps qui a été suivit d'une autre touche
  1543. if (time_id != last_keypress && timed)
  1544. {
  1545. // elle disparait
  1546. }
  1547. else
  1548. {
  1549. //
  1550. if ((new Date().getTime() - last_keypress) < 800 || timed == false)
  1551. {
  1552. // Si elle vient d'être tapé (timed == false) elle doit attendre (au cas ou une autre touche soit tapé)
  1553. // Si c'est une redirigé qui n'a pas été remplacé par une nouvelle lettre
  1554. // elle doit attendre au cas ou soit pressé.
  1555. setTimeout(function(){check_timelaps_and_find_with_tags(link, this_time_id, true)}, 900);
  1556. }
  1557. else
  1558. {
  1559. // il n'y a plus a attendre, on envoie la demande de tag.
  1560. return refresh_elements_with_tags_selected(link);
  1561. }
  1562. }
  1563. return null;
  1564. }
  1565. ////////////////////////////////////////
  1566. /// Gestion de nouveaux éléments
  1567. var do_check_new_elements = false;
  1568. function check_new_elements()
  1569. {
  1570. if ($('ul.elements li').length && $('ul.elements').data('context') === 'home')
  1571. {
  1572. // Si l'utilisateur a quitté la page on reporte le check
  1573. if ($('body.blurred').length)
  1574. {
  1575. // on passe la variable a vrai de façon a ce que lorsque la page
  1576. // et ré affiché on lance le check
  1577. do_check_new_elements = true;
  1578. }
  1579. else
  1580. {
  1581. var url = url_element_new_count
  1582. +'/'
  1583. +str_replace('element_', '', $('ul.elements li:first').attr('id'))
  1584. ;
  1585. $.ajax({
  1586. type: 'POST',
  1587. url: url,
  1588. data: $('form[name="search"]').serialize(),
  1589. success: function(response){
  1590. window.ResponseController.execute(
  1591. response,
  1592. function(){},
  1593. function(){}
  1594. );
  1595. if (response.status == 'success' && response.count)
  1596. {
  1597. $('div.display_more_elements').show();
  1598. $('div.display_more_elements span').html(response.message);
  1599. }
  1600. setTimeout(check_new_elements, 150000);
  1601. },
  1602. dataType: "json"
  1603. });
  1604. // $.getJSON(url, function(response){
  1605. //
  1606. // if (response.status == 'mustbeconnected')
  1607. // {
  1608. // $(location).attr('href', url_home);
  1609. // }
  1610. //
  1611. // if (response.status == 'success' && response.count)
  1612. // {
  1613. // $('div.display_more_elements').show();
  1614. // $('div.display_more_elements span').html(response.message);
  1615. // }
  1616. //
  1617. // setTimeout(check_new_elements, 150000);
  1618. // });
  1619. do_check_new_elements = false;
  1620. }
  1621. }
  1622. }
  1623. if ($('div.display_more_elements').length)
  1624. {
  1625. setTimeout(check_new_elements, 150000);
  1626. }
  1627. $('a.show_new_elements').live('click', function(){
  1628. var url = url_element_new_get
  1629. +'/'
  1630. +str_replace('element_', '', $('ul.elements li:first').attr('id'))
  1631. ;
  1632. $('img.elements_new_loader').show();
  1633. $.ajax({
  1634. type: 'POST',
  1635. url: url,
  1636. data: $('form[name="search"]').serialize(),
  1637. success: function(response){
  1638. window.ResponseController.execute(
  1639. response,
  1640. function(){},
  1641. function(){}
  1642. );
  1643. if (response.status == 'success')
  1644. {
  1645. if (response.count)
  1646. {
  1647. $('div.display_more_elements').show();
  1648. $('div.display_more_elements span').html(response.message);
  1649. }
  1650. else
  1651. {
  1652. $('div.display_more_elements').hide();
  1653. }
  1654. $('ul.elements').prepend(response.html);
  1655. refresh_social_buttons();
  1656. recolorize_element_list();
  1657. }
  1658. $('img.elements_new_loader').hide();
  1659. },
  1660. dataType: "json"
  1661. });
  1662. // $.getJSON(url, function(response){
  1663. //
  1664. // if (response.status == 'mustbeconnected')
  1665. // {
  1666. // $(location).attr('href', url_home);
  1667. // }
  1668. //
  1669. // if (response.status == 'success')
  1670. // {
  1671. // if (response.count)
  1672. // {
  1673. // $('div.display_more_elements').show();
  1674. // $('div.display_more_elements span').html(response.message);
  1675. // }
  1676. // else
  1677. // {
  1678. // $('div.display_more_elements').hide();
  1679. // }
  1680. //
  1681. // $('ul.elements').prepend(response.html);
  1682. // recolorize_element_list();
  1683. // }
  1684. //
  1685. // $('img.elements_new_loader').hide();
  1686. // });
  1687. });
  1688. function recolorize_element_list()
  1689. {
  1690. $('ul.elements li.element').each(function(index){
  1691. if ((index & 1) == 1)
  1692. {
  1693. $(this).removeClass('even');
  1694. $(this).removeClass('odd');
  1695. $(this).addClass('odd');
  1696. }
  1697. else
  1698. {
  1699. $(this).removeClass('odd');
  1700. $(this).removeClass('even');
  1701. $(this).addClass('even');
  1702. }
  1703. });
  1704. }
  1705. /*
  1706. * Action a effectuer lorsque l'utilisateur met le focus sur la page
  1707. */
  1708. function do_action_body_focused()
  1709. {
  1710. if (do_check_new_elements)
  1711. {
  1712. check_new_elements();
  1713. }
  1714. }
  1715. /*
  1716. * Commentaires d'élément
  1717. */
  1718. // Afficher les commentaires
  1719. $('td.element_content a.display_comments').live('click', function(){
  1720. display_comments($(this).parents('li.element'));
  1721. });
  1722. $('td.element_content a.hide_comments').live('click', function(){
  1723. hide_comments($(this).parents('li.element'));
  1724. });
  1725. function display_comments(li_element)
  1726. {
  1727. li_element.find('div.comments').slideDown();
  1728. li_element.find('a.display_comments').hide();
  1729. li_element.find('a.hide_comments').show();
  1730. }
  1731. function hide_comments(li_element)
  1732. {
  1733. li_element.find('div.comments').slideUp();
  1734. li_element.find('a.display_comments').show();
  1735. li_element.find('a.hide_comments').hide();
  1736. }
  1737. // Ajouter un commentaire
  1738. $('li.element a.add_comment').live('click', function(){
  1739. display_add_comment($(this).parents('li.element'));
  1740. });
  1741. $('form.add_comment input[type="submit"]').live('click', function(){
  1742. $(this).parents('div.comments').find('img.comments_loader').show();
  1743. });
  1744. function display_add_comment(li_element)
  1745. {
  1746. display_comments(li_element);
  1747. li_element.find('a.add_comment').hide();
  1748. li_element.find('form.add_comment').show();
  1749. li_element.find('form.add_comment').ajaxForm(function(response) {
  1750. window.ResponseController.execute(
  1751. response,
  1752. function(){},
  1753. function(){},
  1754. function(){
  1755. JQueryJson(url_csrf, {}, function(response){
  1756. if (response.status === 'success')
  1757. {
  1758. li_element.find('form.add_comment').attr('action', str_replace('unknown', response.data, li_element.find('form.add_comment').attr('action')));
  1759. li_element.find('form.add_comment').submit();
  1760. }
  1761. });
  1762. scrollTo(li_element);
  1763. }
  1764. );
  1765. li_element.find('img.comments_loader').hide();
  1766. if (response.status == 'success')
  1767. {
  1768. li_element.find('form.add_comment').find('ul.error_list').remove();
  1769. li_element.find('div.comments ul.comments').append(response.html);
  1770. hide_add_comment(li_element);
  1771. }
  1772. else if (response.status == 'error')
  1773. {
  1774. li_element.find('form.add_comment').find('ul.error_list').remove();
  1775. var ul_errors = $('<ul>').addClass('error_list');
  1776. for (i in response.errors)
  1777. {
  1778. ul_errors.append($('<li>').append(response.errors[i]));
  1779. }
  1780. li_element.find('form.add_comment').prepend(ul_errors);
  1781. }
  1782. return false;
  1783. });
  1784. }
  1785. $('form.add_comment input.cancel').live('click', function(){
  1786. var li_element = $(this).parents('li.element');
  1787. hide_add_comment(li_element);
  1788. });
  1789. function hide_add_comment(li_element)
  1790. {
  1791. li_element.find('a.add_comment').show();
  1792. li_element.find('form.add_comment').hide();
  1793. li_element.find('form.add_comment textarea').val('');
  1794. }
  1795. // Modifier et supprimer
  1796. // Affichage du bouton Modifier et Supprimer
  1797. $('ul.comments li.comment').live({
  1798. mouseenter:
  1799. function()
  1800. {
  1801. $(this).find('a.comment_edit_link').show();
  1802. $(this).find('a.comment_remove_link').show();
  1803. },
  1804. mouseleave:
  1805. function()
  1806. {
  1807. if (!$(this).find('a.comment_edit_link').hasClass('mustBeDisplayed'))
  1808. {
  1809. $(this).find('a.comment_edit_link').hide();
  1810. }
  1811. if (!$(this).find('a.comment_remove_link').hasClass('mustBeDisplayed'))
  1812. {
  1813. $(this).find('a.comment_remove_link').hide();
  1814. }
  1815. }
  1816. }
  1817. );
  1818. // Supprimer
  1819. $('a.comment_remove_link').jConfirmAction({
  1820. question : string_comment_delete_confirm_sentence,
  1821. yesAnswer : string_comment_delete_confirm_yes,
  1822. cancelAnswer : string_comment_delete_confirm_no,
  1823. onYes: function(link){
  1824. var li = link.parents('li.comment');
  1825. li.find('img.comment_loader').show();
  1826. $.getJSON(link.attr('href'), function(response){
  1827. li.find('img.comment_loader').hide();
  1828. window.ResponseController.execute(
  1829. response,
  1830. function(){},
  1831. function(){}
  1832. );
  1833. if (response.status == 'success')
  1834. {
  1835. li.remove();
  1836. }
  1837. });
  1838. return false;
  1839. },
  1840. onOpen: function(link){
  1841. var li = link.parents('li.comment');
  1842. li.find('a.comment_edit_link').addClass('mustBeDisplayed');
  1843. li.find('a.comment_remove_link').addClass('mustBeDisplayed');
  1844. },
  1845. onClose: function(link){
  1846. var li = link.parents('li.comment');
  1847. li.find('a.comment_edit_link').removeClass('mustBeDisplayed');
  1848. li.find('a.comment_remove_link').removeClass('mustBeDisplayed');
  1849. li.find('a.comment_edit_link').hide();
  1850. li.find('a.comment_remove_link').hide();
  1851. }
  1852. });
  1853. var comments_edited = new Array();
  1854. // Modification
  1855. // Ouverture du formulaire de modification
  1856. $('a.comment_edit_link').live('click', function(){
  1857. var link = $(this);
  1858. var li = link.parents('li.comment');
  1859. // On garde en mémoire l'élément édité en cas d'annulation
  1860. comments_edited[li.attr('id')] = li.html();
  1861. var loader = li.find('img.comment_loader');
  1862. li.html(loader);
  1863. li.find('img.comment_loader').show();
  1864. $.getJSON($(this).attr('href'), function(response) {
  1865. window.ResponseController.execute(
  1866. response,
  1867. function(){},
  1868. function(){}
  1869. );
  1870. li.html(response.html);
  1871. // On rend ce formulaire ajaxFormable
  1872. $('li#'+li.attr('id')+' form.edit_comment input[type="submit"]').live('click', function(){
  1873. var li_current = $(this).parents('li.comment');
  1874. li_current.prepend(loader);
  1875. li_current.find('img.comment_loader').show();
  1876. });
  1877. li.find('form.edit_comment').ajaxForm(function(response){
  1878. li = $('li#'+response.dom_id);
  1879. li.find('img.comment_loader').hide();
  1880. window.ResponseController.execute(
  1881. response,
  1882. function(){},
  1883. function(){}
  1884. );
  1885. if (response.status == 'success')
  1886. {
  1887. li.html(response.html);
  1888. delete(comments_edited[li.attr('id')]);
  1889. }
  1890. else if (response.status == 'error')
  1891. {
  1892. li.find('ul.error_list').remove();
  1893. var ul_errors = $('<ul>').addClass('error_list');
  1894. for (i in response.errors)
  1895. {
  1896. ul_errors.append($('<li>').append(response.errors[i]));
  1897. }
  1898. li.prepend(ul_errors);
  1899. }
  1900. });
  1901. });
  1902. return false;
  1903. });
  1904. // Annulation d'un formulaire de modification d'un comment
  1905. $('form.edit_comment input.cancel').live('click', function(){
  1906. var li = $(this).parents('li.comment');
  1907. li.html(comments_edited[li.attr('id')]);
  1908. delete(comments_edited[li.attr('id')]);
  1909. });
  1910. /*
  1911. * Ajout d'un tag en favoris a partir d'un élément
  1912. */
  1913. $('li.element_tag').live({
  1914. mouseenter:
  1915. function()
  1916. {
  1917. $(this).find('a.tag_to_favorites').show();
  1918. $(this).find('a.element_tag').addClass('element_tag_large_for_fav');
  1919. },
  1920. mouseleave:
  1921. function()
  1922. {
  1923. if (!$(this).find('a.tag_to_favorites').hasClass('mustBeDisplayed'))
  1924. {
  1925. $(this).find('a.tag_to_favorites').hide();
  1926. $(this).find('a.element_tag').removeClass('element_tag_large_for_fav');
  1927. }
  1928. }
  1929. }
  1930. );
  1931. $('a.tag_to_favorites').jConfirmAction({
  1932. question : string_tag_addtofav_confirm_sentence,
  1933. yesAnswer : string_tag_addtofav_confirm_yes,
  1934. cancelAnswer : string_tag_addtofav_confirm_no,
  1935. onYes: function(link){
  1936. $.getJSON(link.attr('href'), function(response){
  1937. window.ResponseController.execute(
  1938. response,
  1939. function(){},
  1940. function(){}
  1941. );
  1942. });
  1943. $('div.question').fadeOut();
  1944. $('a.tag_to_favorites').removeClass('mustBeDisplayed');
  1945. return false;
  1946. },
  1947. onOpen: function(link){
  1948. var li = link.parents('li.element_tag');
  1949. li.find('a.tag_to_favorites').addClass('mustBeDisplayed');
  1950. },
  1951. onClose: function(link){
  1952. $('a.tag_to_favorites').removeClass('mustBeDisplayed');
  1953. }
  1954. });
  1955. /*
  1956. * Ajout dans un groupe de l'élément envoyé
  1957. */
  1958. $('a.added_element_add_to_group').live('click', function(){
  1959. var loader = $('div#added_element_to_group').find('img.loader');
  1960. loader.show();
  1961. $.getJSON($(this).attr('href'), function(response) {
  1962. loader.hide();
  1963. window.ResponseController.execute(
  1964. response,
  1965. function(){},
  1966. function(){}
  1967. );
  1968. if (response.status == 'success')
  1969. {
  1970. $('li#'+response.dom_id).html(response.html);
  1971. }
  1972. $('div#added_element_to_group').slideUp();
  1973. $('a#element_add_link').show();
  1974. $('a#element_add_close_link').hide();
  1975. });
  1976. return false;
  1977. });
  1978. $('div#added_element_to_group a.cancel').live('click', function(){
  1979. $('div#added_element_to_group').slideUp();
  1980. $('a#element_add_link').show();
  1981. $('a#element_add_close_link').show();
  1982. return false;
  1983. });
  1984. /*
  1985. * Report / signalement d'un élément
  1986. */
  1987. $('a.element_report').jConfirmAction({
  1988. question : string_elementreport_confirm_sentence,
  1989. yesAnswer : string_elementreport_confirm_yes,
  1990. cancelAnswer : string_elementreport_confirm_no,
  1991. onYes: function(link){
  1992. $.getJSON(link.attr('href'), function(response){
  1993. window.ResponseController.execute(
  1994. response,
  1995. function(){},
  1996. function(){}
  1997. );
  1998. });
  1999. $('div.question').fadeOut();
  2000. return false;
  2001. },
  2002. onOpen: function(link){
  2003. },
  2004. onClose: function(link){
  2005. }
  2006. });
  2007. /*
  2008. * Vote sur element
  2009. */
  2010. $('li.element a.vote').live('click', function(){
  2011. var img = $(this).find('img');
  2012. var link = $(this);
  2013. var old_img_url = img.attr('src');
  2014. img.attr('src', url_img_ajax_loader);
  2015. $.getJSON(link.attr('href'), function(response){
  2016. window.ResponseController.execute(
  2017. response,
  2018. function(){},
  2019. function(){}
  2020. );
  2021. if (response.status === 'success')
  2022. {
  2023. link.attr('href', response.data.a.href);
  2024. img.attr('src', response.data.img.src);
  2025. link.parents('ul.element_thumb_actions').find('li.score').text(response.data.element.points);
  2026. }
  2027. if (response.status === 'error')
  2028. {
  2029. img.attr('src', old_img_url);
  2030. }
  2031. });
  2032. return false;
  2033. });
  2034. // Enlever les ids du ElementSearch
  2035. $('div.more_filters a.new_comments, div.more_filters a.new_favorites, div.more_filters a.new_tags').live('click', function(){
  2036. $('img.elements_more_loader').show();
  2037. $('ul.elements').html('');
  2038. var link = $(this);
  2039. $.getJSON(link.attr('href'), function(response){
  2040. window.ResponseController.execute(
  2041. response,
  2042. function(){},
  2043. function(){}
  2044. );
  2045. if (response.status == 'success')
  2046. {
  2047. $('form[name="search"]').submit();
  2048. $('div.more_filters a.new_comments').hide();
  2049. $('div.more_filters a.new_favorites').hide();
  2050. $('div.more_filters a.new_tags').hide();
  2051. }
  2052. });
  2053. return false;
  2054. });
  2055. /*
  2056. *
  2057. * Proposition de tags sur un élément
  2058. *
  2059. */
  2060. // Ouverture du formulaire de proposition de tags
  2061. $('a.element_propose_tags').live('click', function(){
  2062. var link = $(this);
  2063. var li = link.parents('li.element');
  2064. li.find('img.element_loader').show();
  2065. $.getJSON($(this).attr('href'), function(response) {
  2066. li.find('img.element_loader').hide();
  2067. window.ResponseController.execute(
  2068. response,
  2069. function(){},
  2070. function(){}
  2071. );
  2072. if (response.status === 'success')
  2073. {
  2074. // On prépare le tagBox
  2075. var table = li.find('table:first');
  2076. li.find('div.tag_proposition').remove();
  2077. table.after(response.html);
  2078. // Pour le click sur l'input de saisie de tag
  2079. //li.find('ul.tagbox li.input input[type="text"]').formDefaults();
  2080. var options = new Array();
  2081. options.form_name = response.form_name;
  2082. options.tag_init = response.tags;
  2083. ajax_query_timestamp = null;
  2084. //$("#tags_prompt_list_"+response.form_name).tagBox(options);
  2085. // On rend ce formulaire ajaxFormable
  2086. $('form[name="'+response.form_name+'"] input[type="submit"]').live('click', function(){
  2087. li = $(this).parents('li.element');
  2088. li.find('img.element_loader').show();
  2089. });
  2090. $('form[name="'+response.form_name+'"]').ajaxForm(function(response){
  2091. window.ResponseController.execute(
  2092. response,
  2093. function(){},
  2094. function(){}
  2095. );
  2096. if (response.status == 'success')
  2097. {
  2098. li = $('li#'+response.dom_id);
  2099. li.find('img.element_loader').hide();
  2100. li.find('form')
  2101. li.find('div.tag_proposition').remove();
  2102. }
  2103. else if (response.status == 'error')
  2104. {
  2105. li.find('img.element_loader').hide();
  2106. li.find('ul.error_list').remove();
  2107. var ul_errors = $('<ul>').addClass('error_list');
  2108. for (i in response.errors)
  2109. {
  2110. ul_errors.append($('<li>').append(response.errors[i]));
  2111. }
  2112. li.find('div.tag_proposition div.tags_prompt').prepend(ul_errors);
  2113. }
  2114. });
  2115. }
  2116. // if (response.status === 'mustbeconnected')
  2117. // {
  2118. // $(location).attr('href', url_home);
  2119. // }
  2120. });
  2121. return false;
  2122. });
  2123. // Annulation d'un formulaire de modification d'élément
  2124. $('div.tag_proposition input.cancel').live('click', function(){
  2125. $(this).parents('div.tag_proposition').slideUp();
  2126. });
  2127. // Ouvrir les propositions de tags de l'élément
  2128. $('a.element_view_propositions_link').live('click', function(){
  2129. var link = $(this);
  2130. li = link.parents('li.element');
  2131. li.find('img.element_loader').show();
  2132. $.getJSON($(this).attr('href'), function(response) {
  2133. window.ResponseController.execute(
  2134. response,
  2135. function(){},
  2136. function(){}
  2137. );
  2138. li.find('img.element_loader').hide();
  2139. if (response.status == 'success')
  2140. {
  2141. var table = li.find('table:first');
  2142. li.find('div.tags_proposition_view').remove();
  2143. table.after(response.html);
  2144. }
  2145. });
  2146. return false;
  2147. });
  2148. $('a.accept_tag_propotision').live('click', function(){
  2149. var link = $(this);
  2150. var li = link.parents('li.element');
  2151. li.find('img.element_loader').show();
  2152. $.getJSON($(this).attr('href'), function(response) {
  2153. window.ResponseController.execute(
  2154. response,
  2155. function(){},
  2156. function(){}
  2157. );
  2158. li.find('img.element_loader').hide();
  2159. if (response.status == 'success')
  2160. {
  2161. li.html(response.html);
  2162. }
  2163. });
  2164. return false;
  2165. });
  2166. //
  2167. $('a.refuse_tag_propositions').live('click', function(){
  2168. var link = $(this);
  2169. var li = link.parents('li.element');
  2170. li.find('img.element_loader').show();
  2171. $.getJSON($(this).attr('href'), function(response) {
  2172. window.ResponseController.execute(
  2173. response,
  2174. function(){},
  2175. function(){}
  2176. );
  2177. li.find('img.element_loader').hide();
  2178. if (response.status == 'success')
  2179. {
  2180. li.find('div.tags_proposition_view').remove();
  2181. }
  2182. });
  2183. return false;
  2184. });
  2185. /*
  2186. * Proposition de tag sur un élément FIN
  2187. */
  2188. /*
  2189. * Report / signalement d'un commentaire
  2190. */
  2191. $('a.comment_report').jConfirmAction({
  2192. question : string_commentreport_confirm_sentence,
  2193. yesAnswer : string_commentreport_confirm_yes,
  2194. cancelAnswer : string_commentreport_confirm_no,
  2195. onYes: function(link){
  2196. $.getJSON(link.attr('href'), function(response){
  2197. window.ResponseController.execute(
  2198. response,
  2199. function(){},
  2200. function(){}
  2201. );
  2202. });
  2203. $('div.question').fadeOut();
  2204. return false;
  2205. },
  2206. onOpen: function(link){
  2207. },
  2208. onClose: function(link){
  2209. }
  2210. });
  2211. /*
  2212. * reshare repartage
  2213. */
  2214. $('a.element_reshare').jConfirmAction({
  2215. question : string_elementreshare_confirm_sentence,
  2216. yesAnswer : string_elementreshare_confirm_yes,
  2217. cancelAnswer : string_elementreshare_confirm_no,
  2218. onYes: function(link){
  2219. $('div.question').fadeOut();
  2220. $.getJSON(link.attr('href'), function(response){
  2221. window.ResponseController.execute(
  2222. response,
  2223. function(){},
  2224. function(){}
  2225. );
  2226. // On affiche l'élément que si on voit que le formulaire est sur la page
  2227. // Sinon c'est qu'on est sur une page ou on a pas normalement la possibilité
  2228. // d'ajouetr un élément.
  2229. if ($('form[name="add"]').length)
  2230. {
  2231. element_add_proceed_json_response(response);
  2232. }
  2233. return false;
  2234. });
  2235. return false;
  2236. },
  2237. onOpen: function(link){
  2238. },
  2239. onClose: function(link){
  2240. }
  2241. });
  2242. /*
  2243. * Cloud tags
  2244. */
  2245. $('a#display_all_cloud_tag').click(function(){
  2246. $('ul#favorite_tags li').show();
  2247. $(this).hide();
  2248. });
  2249. $('a.display_all_cloud_tag').click(function(){
  2250. $(this).parents('ul.tags_cloud').find('li').show();
  2251. $(this).parent().remove();
  2252. return false;
  2253. });
  2254. $('input#cloud_tags_filter').keyup(function(){
  2255. var search_string = $(this).val();
  2256. $('ul#favorite_tags li a').removeClass('highlight');
  2257. if (search_string.length > 1)
  2258. {
  2259. $('ul#favorite_tags li a').each(function(){
  2260. if ($(this).text().toUpperCase().search(search_string.toUpperCase()) != -1)
  2261. {
  2262. $(this).addClass('highlight')
  2263. }
  2264. });
  2265. }
  2266. });
  2267. /* Click sur le bouton de recherche des champs de recherches */
  2268. $('div.seachboxcontainer a.global_search_link').click(function(){
  2269. $(this).parents('div.seachboxcontainer').find('form').submit();
  2270. });
  2271. /* Ouverture des menus deroulants */
  2272. $('ul.secondarymenu a.top_menu_link').click(function(){
  2273. //sidebar_fix_to_bottom_prepare();
  2274. var sidebar_height = $('.sidebar').height();
  2275. if ($(this).parents('li.top_menu_element').hasClass('close'))
  2276. {
  2277. $(this).parents('li.top_menu_element').find('ul.submenu').hide();
  2278. $(this).parents('li.top_menu_element').removeClass('close');
  2279. $(this).parents('li.top_menu_element').addClass('open');
  2280. $(this).parents('li.top_menu_element').find('ul.submenu').show();
  2281. var top = parseInt($('.sidebar').css('top'), 10);
  2282. var diff = $('.sidebar').height() - sidebar_height;
  2283. var top_recalculated = top - diff;
  2284. //sidebar_fix_to_bottom_finish();
  2285. if ($('.sidebar').css('position') == 'absolute' || parseInt($('.sidebar').css('top'), 10) < (25+diff))
  2286. {
  2287. $(".sidebar").animate({
  2288. top: top_recalculated
  2289. }, 500);
  2290. }
  2291. }
  2292. else
  2293. {
  2294. $(this).parents('li.top_menu_element').removeClass('open');
  2295. $(this).parents('li.top_menu_element').addClass('close');
  2296. var top = parseInt($('.sidebar').css('top'), 10);
  2297. var diff = $('.sidebar').height() - sidebar_height;
  2298. //sidebar_fix_to_bottom_finish();
  2299. if ($('.sidebar').css('position') == 'absolute' || parseInt($('.sidebar').css('top'), 10) < (25-diff))
  2300. {
  2301. var top_recalculated = top - diff;
  2302. $(".sidebar").animate({
  2303. top: top_recalculated
  2304. }, 500);
  2305. }
  2306. }
  2307. return false;
  2308. });
  2309. $('div#secondarymenu ul.submenu').each(function(){
  2310. if ($(this).find('li').length > 7)
  2311. {
  2312. // TODO: Hardcode bouh !
  2313. $(this).css('overflow', 'auto');
  2314. $(this).css('height', '283px');
  2315. }
  2316. });
  2317. /* Sou-menus page mon compte (myaccount) */
  2318. $('div#myaccount h2').click(function(){
  2319. $('div#myaccount div.myaccount_part:visible').slideUp();
  2320. $('div#'+$(this).data('open')).slideDown();
  2321. });
  2322. /* Languages placement */
  2323. var selected_language = $('div#languages a.selected');
  2324. $('div#languages').prepend(selected_language);
  2325. /* Compatibilité placeholder (IE again ...) */
  2326. if ($.browser.msie)
  2327. {
  2328. if ($.browser.version < 10)
  2329. {
  2330. $('[placeholder]').each(function(){
  2331. $(this).addClass('placeholder');
  2332. $(this).val($(this).attr('placeholder'));
  2333. });
  2334. $('[placeholder]').focus(function() {
  2335. var input = $(this);
  2336. if (input.val() == input.attr('placeholder')) {
  2337. input.val('');
  2338. input.removeClass('placeholder');
  2339. }
  2340. }).blur(function() {
  2341. var input = $(this);
  2342. if (input.val() == '' || input.val() == input.attr('placeholder')) {
  2343. input.addClass('placeholder');
  2344. input.val(input.attr('placeholder'));
  2345. }
  2346. }).blur().parents('form').submit(function() {
  2347. $(this).find('[placeholder]').each(function() {
  2348. var input = $(this);
  2349. if (input.val() == input.attr('placeholder')) {
  2350. input.val('');
  2351. }
  2352. })
  2353. });
  2354. }
  2355. }
  2356. });
  2357. /*
  2358. * Ouverture d'une boite avec effet fade et centré
  2359. * code origine: form_add_open_dialog_for_new_tag
  2360. */
  2361. function open_popin_dialog(object_id)
  2362. {
  2363. // Effet fade-in du fond opaque
  2364. $('body').append($('<div>').attr('id', 'fade'));
  2365. //Apparition du fond - .css({'filter' : 'alpha(opacity=80)'}) pour corriger les bogues de IE
  2366. $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn();
  2367. $('#'+object_id).css({
  2368. position: 'absolute',
  2369. left: ($(window).width()
  2370. - $('#'+object_id).width())/2,
  2371. // top: ($(window).height()
  2372. // - $('#'+object_id).height())/2
  2373. top: '10%'
  2374. });
  2375. $('#'+object_id).show();
  2376. return 'fade';
  2377. }
  2378. /*
  2379. * Isolated js files
  2380. */
  2381. $(document).ready(function(){
  2382. // Ouverture de la zone "ajouter un group""
  2383. $('#group_add_link').click(function(){
  2384. $('#group_add_box').slideDown("slow");
  2385. $('#group_add_link').hide();
  2386. $('#group_add_close_link').show();
  2387. return false;
  2388. });
  2389. // Fermeture de la zone "ajouter un group""
  2390. $('#group_add_close_link').click(function(){
  2391. $('#group_add_box').slideUp("slow");
  2392. $('#group_add_link').show();
  2393. $(this).hide();
  2394. return false;
  2395. });
  2396. });
  2397. $(document).ready(function(){
  2398. // Ouverture de la zone "ajouter un element""
  2399. $('#element_add_link').click(function(){
  2400. if ($(this).hasClass('mustbeconnected'))
  2401. {
  2402. return false;
  2403. }
  2404. $('#element_add_box').slideDown("slow");
  2405. $('#element_add_link').hide();
  2406. $('#element_add_close_link').show();
  2407. $('div.top_tools').slideUp();
  2408. // Au cas ou firefox garde la valeur step 2:
  2409. $('input#form_add_step').val('1');
  2410. $('form[name="add"]').attr('action', url_datas_api);
  2411. return false;
  2412. });
  2413. // Fermeture de la zone "ajouter un element""
  2414. $('#element_add_close_link').click(function(){
  2415. $('#element_add_box').slideUp("slow");
  2416. $('#element_add_link').show();
  2417. $('#element_add_close_link').hide();
  2418. $('div.top_tools').slideDown();
  2419. //form_add_reinit();
  2420. // copie du contenu de la fonction ci dessus, arrive pas a l'appeler ... huh
  2421. $('div#element_add_box').slideUp();
  2422. $('div#form_add_first_part').show();
  2423. $('div#form_add_second_part').hide();
  2424. $('ul#form_add_prop_tags').hide();
  2425. $('ul#form_add_prop_tags_text').hide();
  2426. $('input#element_add_url').val('');
  2427. $('input#element_add_name').val('');
  2428. $('form[name="add"]').attr('action', url_datas_api);
  2429. return false;
  2430. });
  2431. // Bouton suivre
  2432. $('div.show_options a.following').live({
  2433. mouseenter:
  2434. function()
  2435. {
  2436. $(this).html(string_follow_stop);
  2437. },
  2438. mouseleave:
  2439. function()
  2440. {
  2441. $(this).html(string_follow_following);
  2442. }
  2443. }
  2444. );
  2445. $('div.show_options a.follow_link').live('click', function(){
  2446. link = $(this);
  2447. $.getJSON(link.attr('href'), function(response) {
  2448. window.ResponseController.execute(
  2449. response,
  2450. function(){},
  2451. function(){}
  2452. );
  2453. if (response.status == 'success')
  2454. {
  2455. if (response.following)
  2456. {
  2457. link.html(string_follow_following);
  2458. link.removeClass('notfollowing');
  2459. link.addClass('following');
  2460. }
  2461. else
  2462. {
  2463. link.html(string_follow_follow);
  2464. link.addClass('notfollowing');
  2465. link.removeClass('following');
  2466. }
  2467. }
  2468. });
  2469. return false;
  2470. });
  2471. });
  2472. $(document).ready(function(){
  2473. $('#registration_link').live('click', function(){
  2474. $('#registration_box').slideDown("slow");
  2475. $('#login_box').slideUp("slow");
  2476. $(this).hide();
  2477. $('#login_link').show();
  2478. return false;
  2479. });
  2480. $('#login_link').live('click', function(){
  2481. $('#login_box').slideDown("slow");
  2482. $('#registration_box').slideUp("slow");
  2483. $('#registration_link').show();
  2484. $(this).hide();
  2485. return false;
  2486. });
  2487. });
  2488. $(document).ready(function(){
  2489. $('ul#moderate_tags li.tag a.accept, ul#moderate_tags li.tag a.refuse').click(function(){
  2490. var link = $(this);
  2491. $.getJSON($(this).attr('href'), function(response) {
  2492. window.ResponseController.execute(
  2493. response,
  2494. function(){},
  2495. function(){}
  2496. );
  2497. if (response.status == 'success')
  2498. {
  2499. link.parent('li').remove();
  2500. }
  2501. if (response.status == 'error')
  2502. {
  2503. alert(response.message);
  2504. }
  2505. });
  2506. return false;
  2507. });
  2508. $('ul#moderate_tags li.tag a.replace').click(function(){
  2509. var link = $(this);
  2510. var newtag = link.parent('li').find('input.tagBox_tags_ids').val();
  2511. $.getJSON($(this).attr('href')+'/'+newtag, function(response) {
  2512. window.ResponseController.execute(
  2513. response,
  2514. function(){},
  2515. function(){}
  2516. );
  2517. if (response.status == 'error')
  2518. {
  2519. alert(response.message);
  2520. }
  2521. if (response.status == 'success')
  2522. {
  2523. link.parent('li').remove();
  2524. }
  2525. });
  2526. return false;
  2527. });
  2528. $('ul#moderate_elements li.element div.controls a.delete').live('click', function(){
  2529. var li = $(this).parent('div.controls').parent('li.element');
  2530. $.getJSON($(this).attr('href'), function(response) {
  2531. if (response.status == 'success')
  2532. {
  2533. li.slideUp(500, function(){li.remove();});
  2534. }
  2535. else
  2536. {
  2537. alert(response.status);
  2538. }
  2539. });
  2540. return false;
  2541. });
  2542. $('ul#moderate_elements li.element div.controls a.clean').live('click', function(){
  2543. var li = $(this).parent('div.controls').parent('li.element');
  2544. $.getJSON($(this).attr('href'), function(response) {
  2545. if (response.status == 'success')
  2546. {
  2547. li.slideUp(500, function(){li.remove();});
  2548. }
  2549. else
  2550. {
  2551. alert(response.status);
  2552. }
  2553. });
  2554. return false;
  2555. });
  2556. $('ul#moderate_comments li.comment a.accept, ul#moderate_comments li.comment a.refuse').click(function(){
  2557. var link = $(this);
  2558. $.getJSON($(this).attr('href'), function(response) {
  2559. window.ResponseController.execute(
  2560. response,
  2561. function(){},
  2562. function(){}
  2563. );
  2564. if (response.status == 'success')
  2565. {
  2566. link.parent('li').remove();
  2567. }
  2568. if (response.status == 'error')
  2569. {
  2570. alert(response.message);
  2571. }
  2572. });
  2573. return false;
  2574. });
  2575. });
  2576. /* */
  2577. $(document).ready(function(){
  2578. $('form#address_update input[type="submit"]').click(function(){
  2579. $('form#address_update img.loader').show();
  2580. });
  2581. $('form#address_update').ajaxForm(function(response){
  2582. $('form#address_update img.loader').hide();
  2583. form = $('form#address_update');
  2584. form.find('ul.error_list').remove();
  2585. if (response.status == 'error')
  2586. {
  2587. ul_errors = $('<ul>').addClass('error_list');
  2588. for (i in response.errors)
  2589. {
  2590. ul_errors.append($('<li>').append(response.errors[i]));
  2591. }
  2592. form.prepend(ul_errors);
  2593. }
  2594. });
  2595. /* HELPBOX */
  2596. $('.helpbox').live('click', function(){
  2597. open_ajax_popin($(this).attr('href'));
  2598. return false;
  2599. });
  2600. $('a#helpbox_close').live('click', function(){
  2601. close_popin();
  2602. });
  2603. // Hide add_tag
  2604. $('div#add_tag div.inputs input[type="submit"]').live('click', function(){
  2605. $('#fade').fadeOut(1000, function(){$('#fade').remove();});
  2606. $('div#add_tag').fadeOut();
  2607. });
  2608. /*
  2609. * MUSTBECONNECTED links
  2610. */
  2611. $('a.mustbeconnected').live('click', function(){
  2612. open_connection_or_subscription_window();
  2613. });
  2614. $('a.mustbeconnected').off('click').on('click',function(){
  2615. open_connection_or_subscription_window();
  2616. });
  2617. $('a.open_login').click(function(){
  2618. open_connection_or_subscription_window(true);
  2619. });
  2620. /*
  2621. * Confirm email ajax
  2622. */
  2623. $('div#email_not_confirmed_box input').live('click', function(){
  2624. $('div#email_not_confirmed_box img.loader').show();
  2625. $.getJSON(url_send_email_confirmation, function(response) {
  2626. $('div#email_not_confirmed_box img.loader').hide();
  2627. $('div#email_not_confirmed_box div.center').html(
  2628. '<span class="message_'+response.status+'">'+response.message+'</span>'
  2629. );
  2630. });
  2631. });
  2632. /*
  2633. * Buttons for open email confirmation request
  2634. */
  2635. $('a#group_add_link_disabled.mustconfirmemail').click(function(){
  2636. open_ajax_popin(url_email_not_confirmed, function(){});
  2637. });
  2638. /*
  2639. * Tag prompte tools
  2640. */
  2641. $('a.tags_prompt_remove_all').click(function(){
  2642. window.search_tag_prompt_connector.initializeTags([]);
  2643. $('form[name="search"] input[type="submit"]').trigger('click');
  2644. });
  2645. $('a.tags_prompt_favorites').click(function(){
  2646. $('img#tag_prompt_loader_search').show();
  2647. $.getJSON($(this).attr('href'), function(response) {
  2648. $('img#tag_prompt_loader_search').hide();
  2649. window.ResponseController.execute(
  2650. response,
  2651. function(){},
  2652. function(){}
  2653. );
  2654. var tags = [];
  2655. for (i in response.tags)
  2656. {
  2657. var tag = new Tag(i, response.tags[i]);
  2658. tags.push(tag);
  2659. }
  2660. window.search_tag_prompt_connector.initializeTags(tags);
  2661. if (!tags.length)
  2662. {
  2663. open_ajax_popin(url_helpbox_tags_favorites, function(){
  2664. $('div#helpbox form[name="favorites_tags_helpbox"] input[type="submit"]').click(function(){
  2665. $('div#helpbox img.loader').show();
  2666. });
  2667. $('div#helpbox form[name="favorites_tags_helpbox"]').ajaxForm(function(response) {
  2668. $('div#helpbox img.loader').hide();
  2669. window.ResponseController.execute(
  2670. response,
  2671. function(){},
  2672. function(){}
  2673. );
  2674. if (response.status === 'error')
  2675. {
  2676. $('div#helpbox').html(response.data);
  2677. }
  2678. if (response.status === 'success')
  2679. {
  2680. close_popin();
  2681. $('a.tags_prompt_favorites').trigger('click');
  2682. }
  2683. });
  2684. });
  2685. }
  2686. $('form[name="search"] input[type="submit"]').trigger('click');
  2687. });
  2688. return false;
  2689. });
  2690. /*
  2691. * tour launch manually
  2692. */
  2693. $('a#launch_tour').click(function(){
  2694. window.start_visit_tour();
  2695. });
  2696. /**
  2697. *PLAYLISTS
  2698. */
  2699. var playlist_line_height = 0;
  2700. $('ul.playlist_elements li a.open_element').live('click', function(){
  2701. var line = $(this).parents('li.playlist_element');
  2702. if (!line.hasClass('open'))
  2703. {
  2704. playlist_line_height = line.height();
  2705. line.css('height', 'auto');
  2706. line.find('div.content_opened').html('<img class="loader" src="/bundles/muzichcore/img/ajax-loader.gif" alt="loading..." />');
  2707. line.addClass('open');
  2708. $.getJSON($(this).attr('href'), function(response) {
  2709. window.ResponseController.execute(
  2710. response,
  2711. function(){},
  2712. function(){}
  2713. );
  2714. line.find('img.loader').hide();
  2715. if (response.status === 'success')
  2716. {
  2717. line.find('div.content_opened').html('<ul class="elements">' + response.data + '</ul>');
  2718. refresh_social_buttons();
  2719. }
  2720. else
  2721. if (response.status === 'error')
  2722. {
  2723. line.find('div.content_opened').html(response.message);
  2724. }
  2725. });
  2726. }
  2727. else
  2728. {
  2729. line.find('div.content_opened').html('');
  2730. line.removeClass('open');
  2731. line.css('height', playlist_line_height);
  2732. }
  2733. return false;
  2734. });
  2735. $('ul.playlist_elements.owned').sortable({
  2736. update: function( event, ui ) {
  2737. var form = ui.item.parents('form')
  2738. $.ajax({
  2739. type: 'POST',
  2740. url: form.attr('action'),
  2741. data: form.serialize(),
  2742. success: function(response) {
  2743. window.ResponseController.execute(
  2744. response,
  2745. function(){},
  2746. function(){}
  2747. );
  2748. },
  2749. dataType: "json"
  2750. });
  2751. }
  2752. });
  2753. $('div.playlists_prompt form').live('submit', function(){
  2754. $(this).parents('div.playlists_prompt').find('img.loader').show();
  2755. });
  2756. $('a.add_to_playlist').live('click', function(event){
  2757. $('div.playlists_prompt').remove();
  2758. var prompt = $('<div class="playlists_prompt nicebox"><img class="loader" src="/bundles/muzichcore/img/ajax-loader.gif" alt="loading..." /></div>');
  2759. $('body').append(prompt);
  2760. prompt.position({
  2761. my: "left+15 bottom+0",
  2762. of: event,
  2763. collision: "fit"
  2764. });
  2765. $.getJSON($(this).attr('href'), function(response) {
  2766. window.ResponseController.execute(
  2767. response,
  2768. function(){},
  2769. function(){}
  2770. );
  2771. prompt.find('img.loader').hide();
  2772. if (response.status == 'success')
  2773. {
  2774. prompt.append(response.data);
  2775. prompt.find('div.create_playlist form').ajaxForm(function(response){
  2776. $('div.playlists_prompt').find('img.loader').hide();
  2777. window.ResponseController.execute(
  2778. response,
  2779. function(){},
  2780. function(){}
  2781. );
  2782. if (response.status == 'success')
  2783. {
  2784. $('div.playlists_prompt').remove();
  2785. }
  2786. if (response.status == 'error')
  2787. {
  2788. prompt.find('div.create_playlist form').html(response.data);
  2789. }
  2790. });
  2791. }
  2792. });
  2793. return false;
  2794. });
  2795. $('a.add_element_to_playlist').live('click', function(){
  2796. $.getJSON($(this).attr('href'), function(response) {
  2797. window.ResponseController.execute(
  2798. response,
  2799. function(){},
  2800. function(){}
  2801. );
  2802. });
  2803. $(this).parents('div.playlists_prompt').remove();
  2804. return false;
  2805. });
  2806. $('a.playlist_pick').live('click', function(){
  2807. $.getJSON($(this).attr('href'), function(response) {
  2808. window.ResponseController.execute(
  2809. response,
  2810. function(){},
  2811. function(){}
  2812. );
  2813. });
  2814. return false;
  2815. });
  2816. $('ul.playlist_elements a.remove_element').jConfirmAction({
  2817. question : string_element_removefromplaylist_confirm_sentence,
  2818. yesAnswer : string_element_delete_confirm_yes,
  2819. cancelAnswer : string_element_delete_confirm_no,
  2820. onYes: function(link){
  2821. $.getJSON(link.attr('href'), function(response) {
  2822. window.ResponseController.execute(
  2823. response,
  2824. function(response){
  2825. if (response.data.element_remove_links.length)
  2826. {
  2827. for (index in response.data.element_remove_links)
  2828. {
  2829. $($('ul.playlist_elements li.playlist_element').get(index)).find('a.remove_element').attr('href', response.data.element_remove_links[index]);
  2830. }
  2831. }
  2832. },
  2833. function(){}
  2834. );
  2835. });
  2836. link.parents('li.playlist_element').remove();
  2837. return false;
  2838. },
  2839. onOpen: function(link){},
  2840. onClose: function(link){}
  2841. });
  2842. $('ul.playlists a.playlist_delete').jConfirmAction({
  2843. question : string_element_deleteplaylist_confirm_sentence,
  2844. yesAnswer : string_element_delete_confirm_yes,
  2845. cancelAnswer : string_element_delete_confirm_no,
  2846. onYes: function(link){
  2847. $(location).attr('href', link.attr('href'));
  2848. },
  2849. onOpen: function(link){},
  2850. onClose: function(link){}
  2851. });
  2852. $('div.playlists_prompt a.close_playlists_prompt').live('click', function(){
  2853. $('div.playlists_prompt').remove();
  2854. return false;
  2855. });
  2856. /*
  2857. * STICK SIDEBAR
  2858. */
  2859. window.sidebar_topsticked = false;
  2860. window.sidebar_sticked = false;
  2861. if ($('#sidebar .sidebar').height() < $('#content .content').height() &&
  2862. $('#sidebar .sidebar').height() > $(window).height())
  2863. {
  2864. $('#content').stickySidebar();
  2865. window.sidebar_sticked = true;
  2866. }
  2867. else
  2868. {
  2869. $('#sidebar .sidebar').css('padding-bottom', '155px');
  2870. $("#sidebar .sidebar").sticky({topSpacing:25});
  2871. window.sidebar_topsticked = true;
  2872. }
  2873. /*
  2874. * Playlist private links lien privés
  2875. *
  2876. */
  2877. $('a.open_playlist_private_links').click(function(){
  2878. $('div.private_links').slideDown();
  2879. });
  2880. $('div.private_links input.cancel').click(function(){
  2881. $('div.private_links').slideUp();
  2882. });
  2883. /*
  2884. * SOCIAL BUTTONS
  2885. *
  2886. */
  2887. refresh_social_buttons();
  2888. });
  2889. var facebook_like_rendereds = new Array();
  2890. var facebook_like_rendereds_autoplay = new Array();
  2891. function refresh_social_buttons(autoplay)
  2892. {
  2893. // On n'utilise plus ca
  2894. // proceed_facebook_like_buttons(autoplay);
  2895. // gapi.plusone.go();
  2896. // twttr.widgets.load();
  2897. }
  2898. function proceed_facebook_like_buttons(autoplay)
  2899. {
  2900. $('ul.elements li.element, ul#autoplay_element li.element').each(function(){
  2901. if ( ($.inArray($(this).get(0), facebook_like_rendereds) === -1 && !autoplay) || ($.inArray($(this).get(0), facebook_like_rendereds_autoplay) === -1 && autoplay))
  2902. {
  2903. FB.XFBML.parse($(this).get(0));
  2904. }
  2905. if (!autoplay)
  2906. facebook_like_rendereds.push($(this).get(0));
  2907. if (autoplay)
  2908. facebook_like_rendereds_autoplay.push($(this).get(0));
  2909. });
  2910. }
  2911. function open_ajax_popin(url, callback, data)
  2912. {
  2913. if (!popin_opened)
  2914. {
  2915. popin_opened = true;
  2916. $('body').append(
  2917. '<div id="helpbox" class="popin_block"><img src="/bundles/muzichcore/img/ajax-loader.gif" alt="loading..." /></div>'
  2918. );
  2919. open_popin_dialog('helpbox');
  2920. JQueryJson(url, data, function(response){
  2921. if (response.status == 'success')
  2922. {
  2923. $('div#helpbox').html(
  2924. '<a href="javascript:void(0);" id="helpbox_close" >'+
  2925. '<img src="/bundles/muzichcore/img/1317386146_cancel.png" alt="close" />'+
  2926. '</a>'+
  2927. response.data
  2928. );
  2929. if (callback)
  2930. {
  2931. callback();
  2932. }
  2933. }
  2934. });
  2935. $('html, body').animate({ scrollTop: 0 }, 'fast');
  2936. }
  2937. }
  2938. function open_connection_or_subscription_window(open_login_part, data, login_success_callback)
  2939. {
  2940. if (window_login_or_subscription_opened == false)
  2941. {
  2942. window_login_or_subscription_opened = true;
  2943. open_ajax_popin(url_subscription_or_login, function(){
  2944. if (open_login_part)
  2945. {
  2946. $('div#helpbox div#login_box').show();
  2947. $('a#registration_link').show();
  2948. $('input#username').focus();
  2949. }
  2950. else
  2951. {
  2952. $('div#helpbox div#registration_box').show();
  2953. $('a#login_link').show();
  2954. }
  2955. $('a#helpbox_close').click(function(){
  2956. window_login_or_subscription_opened = false;
  2957. });
  2958. $('div.login form').submit(function(){
  2959. $(this).find('img.loader').show();
  2960. });
  2961. $('div.login form').ajaxForm(function(response) {
  2962. $('div.login form').find('img.loader').hide();
  2963. if (response.status == 'success')
  2964. {
  2965. if (login_success_callback)
  2966. {
  2967. $('a#helpbox_close').click();
  2968. login_success_callback();
  2969. reload_top_and_side();
  2970. }
  2971. else
  2972. {
  2973. $(location).attr('href', response.data.redirect_url);
  2974. }
  2975. }
  2976. else if (response.status == 'error')
  2977. {
  2978. $('div.login form').find('ul.error_list').remove();
  2979. $('div.login form').prepend('<ul class="error_list"><li>'+response.data.error+'</li></ul>');
  2980. $('div.login form input#password').val('');
  2981. }
  2982. });
  2983. $('div.register form.fos_user_registration_register').submit(function(){
  2984. $(this).find('img.loader').show();
  2985. });
  2986. $('div.register form.fos_user_registration_register').ajaxForm(function(response) {
  2987. $('div.register form.fos_user_registration_register').find('img.loader').hide();
  2988. if (response.status == 'success')
  2989. {
  2990. if (login_success_callback)
  2991. {
  2992. $('a#helpbox_close').click();
  2993. login_success_callback();
  2994. reload_top_and_side();
  2995. }
  2996. else
  2997. {
  2998. $(location).attr('href', url_home);
  2999. }
  3000. }
  3001. else if (response.status == 'error')
  3002. {
  3003. $('div.register form').html(response.data.html);
  3004. }
  3005. });
  3006. $('div#facebook_login').prependTo('div#helpbox');
  3007. $('div#facebook_login').show();
  3008. }, data);
  3009. }
  3010. $('div.playlists_prompt').remove();
  3011. }
  3012. function close_popin()
  3013. {
  3014. $('div#facebook_login').hide();
  3015. $('div#facebook_login').appendTo('body');
  3016. // Fond gris
  3017. $('#fade').fadeOut(1000, function(){$('#fade').remove();});
  3018. // On cache le lecteur
  3019. $('#helpbox').remove();
  3020. popin_opened = false;
  3021. }
  3022. function sidebar_fix_to_bottom_prepare()
  3023. {
  3024. if (window.sidebar_sticked)
  3025. {
  3026. $('.sidebar').css('top', '');
  3027. $('.sidebar').css('position', '');
  3028. $('.sidebar').addClass('bottom-fixed');
  3029. }
  3030. }
  3031. function sidebar_fix_to_bottom_finish()
  3032. {
  3033. if (window.sidebar_sticked)
  3034. {
  3035. $(".sidebar").animate({
  3036. bottom: '0'
  3037. }, 500 , "swing", function(){
  3038. $('.sidebar').css('bottom', '')
  3039. });
  3040. }
  3041. }
  3042. function reload_top_and_side()
  3043. {
  3044. JQueryJson(url_reload_top_and_side, {}, function(response){
  3045. if (response.status == 'success')
  3046. {
  3047. if ($('div#header'))
  3048. {
  3049. $('div#header').html(response.data.top);
  3050. }
  3051. if ($('aside#sidebar div.sidebar'))
  3052. {
  3053. $('aside#sidebar div.sidebar').html(response.data.right);
  3054. }
  3055. }
  3056. });
  3057. }
  3058. function scrollTo(element)
  3059. {
  3060. $('html, body').animate({ scrollTop: element.offset().top }, 'fast');
  3061. }