Browse Source

ajax login fix #451

Bachir Soussi Chiadmi 5 years ago
parent
commit
b645a5e3ee

+ 5 - 0
composer.json

@@ -52,6 +52,7 @@
         "drupal/filter_perms": "1.x-dev",
         "drupal/honeypot": "1.29.0",
         "drupal/linkit": "^5.0",
+        "drupal/login_emailusername": "^1.1",
         "drupal/maillog": "1.x-dev",
         "drupal/matomo": "1.9.0",
         "drupal/menu_admin_per_menu": "1.0.0",
@@ -63,6 +64,7 @@
         "drupal/profile": "^1.0",
         "drupal/redirect": "^1.3",
         "drupal/redis": "^1.1",
+        "drupal/restui": "^1.17",
         "drupal/search_api": "^1.12",
         "drupal/simple_sitemap": "^3.1",
         "drupal/synonyms": "1.x-dev",
@@ -126,6 +128,9 @@
         "patches": {
             "drupal/domain_site_settings": {
               "Circular Error or Conflict with Language_Manager" : "https://www.drupal.org/files/issues/2018-10-09/2930391-21.patch"
+            },
+            "drupal/login_emailusername": {
+              "rest login email or user name https://www.drupal.org/project/login_emailusername/issues/2910511#comment-12564801" : "https://www.drupal.org/files/issues/2018-04-10/allow-rest-login-with-email-2910511-9.patch"
             }
         },
         "drupal-scaffold": {

+ 108 - 1
composer.lock

@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "afac9754e49e7dbd6c3cfd14393471ff",
+    "content-hash": "9092399791e0168d53586b646fb13c3b",
     "packages": [
         {
             "name": "alchemy/zippy",
@@ -1385,6 +1385,7 @@
             ],
             "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
             "homepage": "https://github.com/container-interop/container-interop",
+            "abandoned": "psr/container",
             "time": "2017-02-14T19:40:03+00:00"
         },
         {
@@ -4598,6 +4599,53 @@
                 "issues": "http://drupal.org/project/linkit"
             }
         },
+        {
+            "name": "drupal/login_emailusername",
+            "version": "1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://git.drupalcode.org/project/login_emailusername.git",
+                "reference": "8.x-1.1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://ftp.drupal.org/files/projects/login_emailusername-8.x-1.1.zip",
+                "reference": "8.x-1.1",
+                "shasum": "f484b76b538f4dbbae5a75b49577f4ddf576809e"
+            },
+            "require": {
+                "drupal/core": "~8.0"
+            },
+            "type": "drupal-module",
+            "extra": {
+                "branch-alias": {
+                    "dev-1.x": "1.x-dev"
+                },
+                "drupal": {
+                    "version": "8.x-1.1",
+                    "datestamp": "1483456142",
+                    "security-coverage": {
+                        "status": "covered",
+                        "message": "Covered by Drupal's security advisory policy"
+                    }
+                }
+            },
+            "notification-url": "https://packages.drupal.org/8/downloads",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "rjjakes",
+                    "homepage": "https://www.drupal.org/user/3457245"
+                }
+            ],
+            "description": "Allow users to log in with either their username OR email address using the same input box on the login form.",
+            "homepage": "https://www.drupal.org/project/login_emailusername",
+            "support": {
+                "source": "https://git.drupalcode.org/project/login_emailusername"
+            }
+        },
         {
             "name": "drupal/maillog",
             "version": "dev-1.x",
@@ -5313,6 +5361,65 @@
                 "source": "https://git.drupalcode.org/project/redis"
             }
         },
+        {
+            "name": "drupal/restui",
+            "version": "1.17.0",
+            "source": {
+                "type": "git",
+                "url": "https://git.drupalcode.org/project/restui.git",
+                "reference": "8.x-1.17"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://ftp.drupal.org/files/projects/restui-8.x-1.17.zip",
+                "reference": "8.x-1.17",
+                "shasum": "2fff1b74759d5e490884d002330ad04d1bf241ba"
+            },
+            "require": {
+                "drupal/core": "^8.2.0"
+            },
+            "type": "drupal-module",
+            "extra": {
+                "branch-alias": {
+                    "dev-1.x": "1.x-dev"
+                },
+                "drupal": {
+                    "version": "8.x-1.17",
+                    "datestamp": "1557845581",
+                    "security-coverage": {
+                        "status": "covered",
+                        "message": "Covered by Drupal's security advisory policy"
+                    }
+                }
+            },
+            "notification-url": "https://packages.drupal.org/8/downloads",
+            "license": [
+                "GPL-2.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "-enzo-",
+                    "homepage": "https://www.drupal.org/user/294937"
+                },
+                {
+                    "name": "clemens.tolboom",
+                    "homepage": "https://www.drupal.org/user/125814"
+                },
+                {
+                    "name": "juampynr",
+                    "homepage": "https://www.drupal.org/user/682736"
+                },
+                {
+                    "name": "klausi",
+                    "homepage": "https://www.drupal.org/user/262198"
+                }
+            ],
+            "description": "Provides a user interface to manage REST resources.",
+            "homepage": "https://www.drupal.org/project/restui",
+            "support": {
+                "source": "https://git.drupalcode.org/project/restui"
+            }
+        },
         {
             "name": "drupal/search_api",
             "version": "1.15.0",

+ 1 - 1
config/sync/autologout.settings.yml

@@ -1,4 +1,4 @@
-timeout: 1800
+timeout: 7200
 max_timeout: 172800
 padding: 20
 role_logout: false

+ 4 - 0
config/sync/core.extension.yml

@@ -67,6 +67,7 @@ module:
   link: 0
   linkit: 0
   locale: 0
+  login_emailusername: 0
   maillog: 0
   menu_ui: 0
   metatag: 0
@@ -84,8 +85,11 @@ module:
   redirect: 0
   redis: 0
   responsive_image: 0
+  rest: 0
+  restui: 0
   search_api: 0
   search_api_db: 0
+  serialization: 0
   simple_sitemap: 0
   synonyms: 0
   system: 0

+ 1 - 1
config/sync/email_registration.settings.yml

@@ -1,4 +1,4 @@
-login_with_username: false
+login_with_username: true
 _core:
   default_config_hash: 6cFmNHjhs_glkuywBEhzcUQ8aiHXcFe6hZfW7PLN-qg
 langcode: fr

+ 1 - 1
config/sync/language/en/addtoany.settings.yml

@@ -1 +1 @@
-additional_html: "<a class=\"a2a_button_facebook\"></a>\r\n<a class=\"a2a_button_twitter\"></a>\r\n<a class=\"a2a_button_reddit\"></a>\r\n<a class=\"a2a_button_email\"></a>"
+additional_html: "<a class=\"a2a_button_facebook\"></a>\n<a class=\"a2a_button_twitter\"></a>\n<a class=\"a2a_button_google_plus\"></a>\n"

+ 18 - 0
config/sync/rest.resource.entity.user.yml

@@ -0,0 +1,18 @@
+uuid: 76f64e4d-009d-4e41-958b-8fd3f5aa0a68
+langcode: fr
+status: true
+dependencies:
+  module:
+    - serialization
+    - user
+id: entity.user
+plugin_id: 'entity:user'
+granularity: resource
+configuration:
+  methods:
+    - GET
+    - POST
+  formats:
+    - json
+  authentication:
+    - cookie

+ 17 - 0
config/sync/rest.resource.user_registration.yml

@@ -0,0 +1,17 @@
+uuid: af90996e-898d-4bb5-a7ae-ca4a9e26714f
+langcode: fr
+status: true
+dependencies:
+  module:
+    - serialization
+    - user
+id: user_registration
+plugin_id: user_registration
+granularity: resource
+configuration:
+  methods:
+    - POST
+  formats:
+    - json
+  authentication:
+    - cookie

+ 4 - 0
config/sync/rest.settings.yml

@@ -0,0 +1,4 @@
+bc_entity_resource_permissions: false
+_core:
+  default_config_hash: Jg3_yqsTIZ51KOKp3OV2KDVVrlx3N3OCEfniEse09KE
+langcode: fr

+ 5 - 0
config/sync/serialization.settings.yml

@@ -0,0 +1,5 @@
+bc_primitives_as_strings: false
+bc_timestamp_normalizer_unix: false
+_core:
+  default_config_hash: 6A1rmsmNf4SJrwCEt_aZyO_kPYuFnIOPC2n5lJiIftA
+langcode: fr

+ 1 - 1
config/sync/user.mail.yml

@@ -18,7 +18,7 @@ register_pending_approval_admin:
   subject: 'Détails du compte [user:display-name] sur [site:name] (en attente de validation d''un administrateur)'
 status_activated:
   body: "[user:display-name],\r\n\r\nVotre compte sur [site:name] a été activé.\r\n\r\nVous pouvez maintenant vous connecter en cliquant sur le lien ci-dessous ou en le copiant dans votre navigateur : \r\n\r\n[user:one-time-login-url]\r\n\r\nCe lien ne peut être utilisé qu'une seule fois et vous redirigera vers une page où vous pourrez choisir votre mot de passe.\r\n\r\nAprès avoir choisi votre mot de passe, vous pourrez vous connecter sur [site:login-url] en utilisant :\r\n\r\nnom d'utilisateur : [user:account-name]\r\nmot de passe : Votre mot de passe\r\n\r\n--  L'équipe de [site:name]"
-  subject: 'Détails du compte [user:display-name] sur [site:name] (validé)'
+  subject: 'Détails du compte pour [user:display-name] sur [site:name]'
 status_blocked:
   body: "[user:display-name],\r\n\r\nVotre compte sur [site:name] a été bloqué.\r\n\r\n-- L'équipe [site:name]"
   subject: 'Détails du compte [user:display-name] sur [site:name] (bloqué)'

+ 1 - 0
config/sync/user.role.anonymous.yml

@@ -15,6 +15,7 @@ permissions:
   - 'access synonyms entity autocomplete'
   - 'create corpus_documents workflow_transition'
   - 'create generique workflow_transition'
+  - 'restful post user_registration'
   - 'use text format wysiwyg'
   - 'view published fil entities'
   - 'view search api pages'

+ 1 - 0
config/sync/user.role.authenticated.yml

@@ -23,6 +23,7 @@ permissions:
   - 'edit own composition entities'
   - 'edit own fil entities'
   - 'opt-in or out of matomo tracking'
+  - 'restful post user_registration'
   - 'use chutier'
   - 'use text format wysiwyg'
   - 'view own unpublished chutier entities'

+ 1 - 1
config/sync/views.view.profiles.yml

@@ -1,5 +1,5 @@
 uuid: ecb1909a-9cc2-4579-bfd3-7e0c8b38ea40
-langcode: en
+langcode: fr
 status: true
 dependencies:
   module:

+ 4 - 0
web/modules/custom/edlp_ajax/src/Controller/EdlpAjaxController.php

@@ -319,6 +319,10 @@ class EdlpAjaxController extends ControllerBase {
         'tags' => [
           'edlp-ajax-blocks-cache',
           // $this->entity_type.':'.$this->id // not necessary as we add $renderable as CacheableMetadata to the response
+        ],
+        'contexts' => [
+          'languages:language_content',
+          'user'
         ]
       ]
     ];

+ 8 - 6
web/themes/custom/edlptheme/assets/dist/scripts/main.min.js

@@ -1,12 +1,14 @@
 
-(function($,Drupal,drupalSettings){EdlpTheme=function(){var _ajax_settings=drupalSettings.edlp_ajax;var _$body=$('body');var _corpus_ready=false;var _$corpus_canvas;var _$row=$('main[role="main"]>.layout-content>.row');var _$ajaxLinks;var _audioPlayer;var _randomPlayer;var _compoPlayer;var _ajax_timing={start:0,end:0};var _corpus_promise;var _is_mobile=edlp_mobile.device_is_mobile;function init(){void 0;if(_is_mobile){initMobile();}
+(function($,Drupal,drupalSettings){EdlpTheme=function(){var _origin=window.location.origin;var _base_url=drupalSettings.path.baseUrl;var _ajax_settings=drupalSettings.edlp_ajax;var _$body=$('body');var _corpus_ready=false;var _$corpus_canvas;var _$row=$('main[role="main"]>.layout-content>.row');var _$ajaxLinks;var _audioPlayer;var _randomPlayer;var _compoPlayer;var _ajax_timing={start:0,end:0};var _corpus_promise;var _is_mobile=edlp_mobile.device_is_mobile;var _is_loggedin=drupalSettings.user.uid===0?false:true;var _$log_form;var _user_tokens;function init(){void 0;if(!_is_loggedin){initLogForm();}
+if(_is_mobile){initMobile();}
 initEvents();_audioPlayer=new AudioPlayer();_compoPlayer=new CompoPlayer();initAjaxLinks();initHistory();if(!_is_mobile){checkLayout();initAudioLinksHover();}
 if(_is_mobile){if(drupalSettings.path.isFront){initHomeMobile();}
-_$body.attr('booted','booted');}};function initMobile(){$('h2, a','#block-mainnavigation').add('h2, a','#block-mainnavigation-2').on('click',onclickHomeMobileMenu);}
+_$body.attr('booted','booted');}};function initLogForm(){void 0;_$log_form=$('#user-login-form:not(ajax-enebled)').on('submit',onSubmitLogForm).addClass('ajax-enabled');};function onSubmitLogForm(e){e.preventDefault();var args={name:$('input#edit-name[type="text"]',this).val(),pass:$('input#edit-pass[type="password"]',this).val()};logIn(args).then(getStudioLinkBlock);return false;};function logIn(args){void 0;_$log_form.addClass('ajax-loading');_$body.addClass('ajax-loading');return $.ajax({type:'POST',headers:{'Content-Type':'application/json'},xhrFields:{withCredentials:true},url:_origin+_base_url+"user/login?_format=json",data:JSON.stringify(args),success:function(response){_user_tokens=response;},error:function(xhr,ajaxOptions,thrownError){void 0;void 0;}});};function getStudioLinkBlock(){var path=_origin+_base_url+'edlp/ajax/blocks/json/';$.getJSON(path+"studiolinkblock",{}).done(onStudioLinkBlockLoaded).fail(function(jqxhr,textStatus,error){void 0;});};function onStudioLinkBlockLoaded(data){void 0;$('#block-studiouserlogin').replaceWith(data.blocks.studiolinkblock.rendered);initAjaxLinks();_$log_form.removeClass('ajax-loading');_$body.removeClass('ajax-loading');}
+function initMobile(){$('h2, a','#block-mainnavigation').add('h2, a','#block-mainnavigation-2').on('click',onclickHomeMobileMenu);}
 function onclickHomeMobileMenu(e){$('#block-mainnavigation-2').toggleClass('opened');};function initHomeMobile(){};function initEvents(){var $corpus_df=$.Deferred();_corpus_promise=$corpus_df.promise();_$body.on('corpus-map-ready',function(e){onCorpusMapReady(e);$corpus_df.resolve();}).on('on-studio-chutier-updated',initAjaxLinks).on('studio-initialized',function(e){_compoPlayer.newCompo();}).on('studio-not-active',function(e){_compoPlayer.deactivate();}).on('on-studio-compo-updated',function(e){initAjaxLinks();_compoPlayer.refresh();}).on('on-studio-compo-opened',function(e){initAjaxLinks();_compoPlayer.newCompo();}).on('search-results-loaded',function(e){initAjaxLinks();initAudioLinksHover();checkVisibleCorpusMapSpace();}).on('open_entree',function(e){void 0;closeAllModals();checkLayout();_$body.removeClass();if(typeof e.url!='undefined'){var state=getSysPathState(e.sys_path);history.pushState(state,null,e.url);if(typeof _paq!=='undefined'){_paq.push(['setCustomUrl',e.url]);_paq.push(['setDocumentTitle',e.title]);_paq.push(['trackPageView']);}}}).on('close_entree',function(e){backToFrontPage();checkLayout();});window.addEventListener('resize',checkLayout,false);}
 function checkLayout(){var $audioplayer=$("#audio-player");if($audioplayer.length){var navpos=$('#block-mainnavigation').position();if(typeof navpos!='undefined'){$audioplayer.css({'width':navpos.left+'px'});}}
 checkGridBlockHeight();checkGridBlockVisible();};function initScrollbars(){};function getSysPathState(sys_path,view_mode){var state={'sys_path':sys_path,'ajax_path':sys_path};var node_match=state.ajax_path.match(/^\/?(node\/(\d+))$/i);void 0;var term_match=state.ajax_path.match(/^\/?(taxonomy\/term\/(\d+))$/i);void 0;if(node_match){state.ajax_path=_ajax_settings.entityjson_path+'/'+node_match[1];state.node_nid=node_match[2];if(view_mode){state.ajax_path+='/'+view_mode;state.view_mode=view_mode;}}else if(term_match){state.ajax_path=_ajax_settings.entityjson_path+'/'+term_match[1];state.ajax_path=state.ajax_path.replace(/taxonomy\/term/,'taxonomy_term');state.entree_tid=term_match[2];if(view_mode){state.ajax_path+='/'+view_mode;state.view_mode=view_mode;}else{state.ajax_path=null;}}else{state.ajax_path+='/ajax'}
-return state;};function ajaxLoadContent(state){void 0;_$body.addClass('ajax-loading');_ajax_timing.start=performance.now();var path=window.location.origin+Drupal.url(state.ajax_path);$.getJSON(path,{}).done(function(data){onAjaxLoaded(data,state);}).fail(function(jqxhr,textStatus,error){onAjaxLoadError(jqxhr,textStatus,error,state.sys_path);});};function onAjaxLoadError(jqxhr,textStatus,error,sys_path){void 0;$('.ajax-loading').removeClass('ajax-loading');_$body.removeClass('ajax-loading');};function onAjaxLoaded(data,state){void 0;var $rendered=$(data.rendered);$rendered.attr({'sys_path':state.sys_path,'view_mode':state.view_mode});if(data.entity_type=="node"&&data.bundle=="evenement"){if(_$row.find('.col.event').length){_$row.find('.col.event').replaceWith($rendered);}else if(_$row.find('.col.aside').length){_$row.find('.col.aside').replaceWith($rendered);}else{_$row.append($rendered);}}else{_$row.removeAttr('style').html($rendered);}
+return state;};function ajaxLoadContent(state){void 0;_$body.addClass('ajax-loading');_ajax_timing.start=performance.now();var path=_origin+Drupal.url(state.ajax_path);$.getJSON(path,{}).done(function(data){onAjaxLoaded(data,state);}).fail(function(jqxhr,textStatus,error){onAjaxLoadError(jqxhr,textStatus,error,state.sys_path);});};function onAjaxLoadError(jqxhr,textStatus,error,sys_path){void 0;$('.ajax-loading').removeClass('ajax-loading');_$body.removeClass('ajax-loading');};function onAjaxLoaded(data,state){void 0;var $rendered=$(data.rendered);$rendered.attr({'sys_path':state.sys_path,'view_mode':state.view_mode});if(data.entity_type=="node"&&data.bundle=="evenement"){if(_$row.find('.col.event').length){_$row.find('.col.event').replaceWith($rendered);}else if(_$row.find('.col.aside').length){_$row.find('.col.aside').replaceWith($rendered);}else{_$row.append($rendered);}}else{_$row.removeAttr('style').html($rendered);}
 if((data.entity_type=="node"&&data.bundle=="static")||state.sys_path=="docsindex"){$('.ajax-link.is-active.articles-link').removeClass('is-active');}
 var body_classes=['path-'+state.sys_path.replace(/\//g,'-'),'entity-type-'+data.entity_type,'bundle-'+data.bundle,'view-mode-'+data.view_mode];_$body.removeClass().addClass(body_classes.join(' '));if(state.node_nid)
 _$body.addClass('path-edlp-node');$('.ajax-loading').removeClass('ajax-loading');$('.ajax-link.is-active:not(.articles-link)').removeClass('is-active');$('.is-active-trail').removeClass('is-active-trail');if(typeof state.selector!='undefined'){void 0;$('a[selector="'+state.selector+'"]').addClass('is-active');initAudioLinksHover();}else{if(typeof state.view_mode!='undefined'){$('a[viewmode="'+state.view_mode+'"][data-drupal-link-system-path="'+state.sys_path+'"]').addClass('is-active');}else{_corpus_promise.done(function(){$('a[data-drupal-link-system-path="'+state.sys_path+'"]').addClass('is-active');});}
@@ -48,11 +50,11 @@ this.emmit('audio-open-document',{caller:caller});if(typeof _paq!=='undefined'){
 this.launch();},launch(){this.clearTimeOutToHide();this.clearIntervalAutoCartelSwitch();this.setSRC(this.historic[this.currentHistoricIndex].audio_url);if(!_is_mobile){this.loadNode(this.historic[this.currentHistoricIndex].nid);}
 try{_$corpus_canvas.trigger({'type':'audio-node-opened','nid':this.historic[this.currentHistoricIndex].nid});}catch(e){void 0;var that=this;_corpus_promise.done(function(){_$corpus_canvas.trigger({'type':'audio-node-opened','nid':that.historic[that.currentHistoricIndex].nid});});}
 this.showHidePreviousBtn();this.showHideNextBtn();this.show();},openSound(url,title){this.hide();this.clearTimeOutToHide();this.$cartel.html("");this.setSRC(url);this.show();if(typeof _paq!=='undefined'){_paq.push(['trackEvent','Audio','play',url]);}},setSRC(url){void 0;this.audio.src=url;this.play();},onLoadedmetadata(){var rem=parseInt(this.audio.duration,10),mins=Math.floor(rem/60,10),secs=rem-mins*60;this.$duration.html('<span>'+(mins<10?'0':'')+mins+':'+(secs<10?'0':'')+secs+'</span>');this.updateLoadingBar();},updateLoadingBar(){void 0;if(this.audio.buffered.length>0){this.$loader.css({'width':parseInt((100*this.audio.buffered.end(0)/this.audio.duration),10)+'%'});if(this.audio.buffered.end(0)<this.audio.duration){window.requestAnimationFrame(this.updateLoadingBar.bind(this));}else{void 0;}}else{window.requestAnimationFrame(this.updateLoadingBar.bind(this));}},onError(){void 0;},play(){this.clearTimeOutToHide();var promise=this.audio.play();if(promise!==undefined){promise.catch(function(error){void 0;}).then(function(){void 0;});}},playPrevious(){if(this.currentHistoricIndex>0){this.currentHistoricIndex-=1;this.launch();}},playNext(){if(this.currentHistoricIndex<this.historic.length-1){this.currentHistoricIndex+=1;this.launch();}else{this.emmit('audio-play-next');}},togglePlayPause(e){if(this.audio.paused){this.play();}else{this.stop();}},stop(){this.audio.pause();if(!(_$body.is('.path-node-'+this.historic[this.currentHistoricIndex].nid)&&(_$body.is('.view-mode-article')||_$body.is('.view-mode-transcript')))){this.timeOutToHide();}},seek(e){var seek=e.originalEvent.layerX/this.timeline_w*this.audio.duration
-void 0;this.audio.currentTime=seek;},onPlaying(){this.$btns.addClass('is-playing');this.emmit('audio-play');},onPause(){this.$btns.removeClass('is-playing');this.emmit('audio-pause');},onTimeupdate(){this.$cursor.css({'left':(this.audio.currentTime/this.audio.duration*this.timeline_w)+"px"});var rem=parseInt(this.audio.currentTime,10),mins=Math.floor(rem/60,10),secs=rem-mins*60;this.$currentTime.html('<span>'+(mins<10?'0':'')+mins+':'+(secs<10?'0':'')+secs+'</span>');},onEnded(){void 0;this.stop();this.emmit('audio-ended');},loadNode(nid){this.$cartel.addClass('loading');var vm='player_cartel';var ajax_path=_ajax_settings.entityjson_path+'/node/'+nid+'/'+vm;var path=window.location.origin+Drupal.url(ajax_path);$.getJSON(path,{}).done(this.onNodeLoaded.bind(this)).fail(this.onNodeLoadFail.bind(this));},onNodeLoaded(data){void 0;this.$cartel.html(data.rendered).removeClass('loading');_$body.trigger({'type':'new-audio-cartel-loaded'});initAjaxLinks();this.scndCartel_visible=0;this.$cartel.removeClass('second-visible');if(this.$cartel.find('.second-cartel .col-left').children().length>1||this.$cartel.find('.second-cartel').children('.col-right').length){this.cartelSwitchInterval=setInterval(this.switchCartel.bind(this),this.cartelSwitchIntervalMS);}
+void 0;this.audio.currentTime=seek;},onPlaying(){this.$btns.addClass('is-playing');this.emmit('audio-play');},onPause(){this.$btns.removeClass('is-playing');this.emmit('audio-pause');},onTimeupdate(){this.$cursor.css({'left':(this.audio.currentTime/this.audio.duration*this.timeline_w)+"px"});var rem=parseInt(this.audio.currentTime,10),mins=Math.floor(rem/60,10),secs=rem-mins*60;this.$currentTime.html('<span>'+(mins<10?'0':'')+mins+':'+(secs<10?'0':'')+secs+'</span>');},onEnded(){void 0;this.stop();this.emmit('audio-ended');},loadNode(nid){this.$cartel.addClass('loading');var vm='player_cartel';var ajax_path=_ajax_settings.entityjson_path+'/node/'+nid+'/'+vm;var path=_origin+Drupal.url(ajax_path);$.getJSON(path,{}).done(this.onNodeLoaded.bind(this)).fail(this.onNodeLoadFail.bind(this));},onNodeLoaded(data){void 0;this.$cartel.html(data.rendered).removeClass('loading');_$body.trigger({'type':'new-audio-cartel-loaded'});initAjaxLinks();this.scndCartel_visible=0;this.$cartel.removeClass('second-visible');if(this.$cartel.find('.second-cartel .col-left').children().length>1||this.$cartel.find('.second-cartel').children('.col-right').length){this.cartelSwitchInterval=setInterval(this.switchCartel.bind(this),this.cartelSwitchIntervalMS);}
 Drupal.attachBehaviors(this.$cartel);this.setAutoOpenArticle();if(this.auto_open_article){this.$cartel.find('a.link-article').trigger('click');this.auto_open_article=false;}},onNodeLoadFail(jqxhr,textStatus,error){void 0;this.$cartel.removeClass('loading').html('');},setAutoOpenArticle(art){this.auto_open_article=$('a.articles-link').is('.is-active');return this;},show(){this.$container_parent.addClass('audio-player-visible');this.$container.addClass('visible');},showHidePreviousBtn(){if(this.historic.length>1&&this.currentHistoricIndex>0){this.$previous.addClass('is-active');}else{this.$previous.removeClass('is-active');}},showHideNextBtn(){if(this.currentHistoricIndex<this.historic.length-1||this.shuffle_is_active){this.$next.addClass('is-active');}else{this.$next.removeClass('is-active');}},timeOutToHide(){this.clearTimeOutToHide();this.hideTimer=setTimeout(this.hide.bind(this),this.hideTimeMS);},clearTimeOutToHide(){if(this.hideTimer){clearTimeout(this.hideTimer);this.hideTimer=false;}},switchCartel(){if(this.scndCartel_visible){this.$cartel.removeClass('second-visible');this.scndCartel_visible=0;this.clearIntervalAutoCartelSwitch();}else{this.$cartel.addClass('second-visible');this.scndCartel_visible=1;}},clearIntervalAutoCartelSwitch(){if(this.cartelSwitchInterval){clearInterval(this.cartelSwitchInterval);this.cartelSwitchInterval=false;}},hide(){this.$container_parent.removeClass('audio-player-visible');this.$container.removeClass('visible');try{_$corpus_canvas.trigger('audio-node-closed');}catch(e){void 0;}},deActivateRandom(){this.shuffle_is_active=false;this.showHideNextBtn();},on(event_name,handler){if(typeof this.event_handlers[event_name]=='undefined'){void 0;}
 this.event_handlers[event_name].push(handler);return this;},emmit(event_name,args){void 0;var handler;var args=args||{};for(var i=this.event_handlers[event_name].length-1;i>=0;i--){handler=this.event_handlers[event_name][i];(function(handler,args){setTimeout(function(){handler(args);},0);}(handler,args));}
 return this;},}
-function RandomPlayer(playlist){this.active=false;this.playlist=playlist;this.path=drupalSettings.path.baseUrl+drupalSettings.path.pathPrefix+'#random'
+function RandomPlayer(playlist){this.active=false;this.playlist=playlist;this.path=_base_url+drupalSettings.path.pathPrefix+'#random'
 this.$btn=$('<a>').html('Shuffle').attr('href',this.path).attr('alt',drupalSettings.edlp_corpus.random_link_title).addClass('random-player-btn');this.init();};RandomPlayer.prototype={init(){$('<div>').addClass('block random-player').append(this.$btn).prependTo('.region-footer-right');this.$btn.on('click',this.toggleActive.bind(this));_audioPlayer.on('audio-play-next',this.onAudioPlayNext.bind(this)).on('audio-ended',this.onAudioPlayerEnded.bind(this)).on('stop-shuffle',this.stop.bind(this));_$corpus_canvas.on('update-random-playlist',this.updatePlaylist.bind(this));if(window.location.hash=='#random'){this.start();}},updatePlaylist(e){this.playlist=e.playlist;this.shuffle();},shuffle(){var tempPLaylist=[];for(var i=this.playlist.length-1;i>=0;i--){tempPLaylist.push(this.playlist[i]);}
 this.shuffledPlaylist=[];while(tempPLaylist.length>0){var r=Math.floor(Math.random()*tempPLaylist.length);this.shuffledPlaylist.push(tempPLaylist.splice(r,1)[0]);}},toggleActive(e){e.preventDefault();if(this.active){this.stop();}else{this.start();}
 return false;},start(){this.active=_audioPlayer.shuffle_is_active=true;this.$btn.addClass('is-active');this.shuffle();this.next();if(typeof _paq!=='undefined'){_paq.push(['trackEvent','RandomPlayer','start']);}},stop(){this.active=false;this.$btn.removeClass('is-active');history.replaceState(history.state,null,window.location.pathname);_audioPlayer.deActivateRandom();if(typeof _paq!=='undefined'){_paq.push(['trackEvent','RandomPlayer','stop']);}},next(){void 0;if(this.active&&this.shuffledPlaylist.length>0)
@@ -69,7 +71,7 @@ if(false){var $grid=$('.grid',_$row).masonry({itemSelector:'.col',columnWidth:'.
 $this.height(Math.min($this.attr('init-height'),_$row.height()));});};function checkGridBlockVisible(){var $r_h=_$row.height();var $this,pos;$('.grid .col',_$row).each(function(i,e){$this=$(this);pos=$this.position();if(pos.top+$this.height()<=$r_h){$this.removeClass('offfield');}else{$this.addClass('offfield');}});}
 function initCollectionNav(){void 0;$('.field--name-field-notice, .index','.taxonomy-term.vocabulary-entrees.home_mobile').addClass('closed');$('.field--name-field-notice>.field__label','.taxonomy-term.vocabulary-entrees.home_mobile').on('click',onClickCollectionNotice);$('.index>.field__label','.taxonomy-term.vocabulary-entrees.home_mobile').on('click',onClickCollectionIndex);};function onClickCollectionNotice(e){toggleEntreeOpening($(this).parent(),'notice');};function onClickCollectionIndex(e){toggleEntreeOpening($(this).parent(),'index');};function toggleEntreeOpening($e,part){$e.toggleClass('closed').parents('.taxonomy-term.vocabulary-entrees.home_mobile').toggleClass(part+'-opened');}
 function initSearch(){$('#edit-entries--wrapper legend','#edlp-search-form').on('click',function(){$(this).parent().toggleClass('opened');});};function initEnregistrementTranscript(){void 0;var $node=_$row.find('article.node--type-enregistrement.node--view-mode-transcript');var $nav=$('<nav>').prependTo($node);$node.find('.field--name-field-transcript-vo').addClass('visible').find('.field__label').clone().appendTo($nav).addClass('is-active').attr('field_target','.field--name-field-transcript-vo');$node.find('.field--name-field-transcript-trad').find('.field__label').clone().appendTo($nav).attr('field_target','.field--name-field-transcript-trad');$nav.find('.field__label').on('click',function(){var $this=$(this).addClass('is-active');$this.siblings('.is-active').removeClass('is-active');$this.parents('article.node').find('.field.visible').removeClass('visible');$this.parents('article.node').find($this.attr('field_target')).addClass('visible');});};function backToFrontPage(pop_state){void 0;closeAllModals();$('body').removeClass().addClass('path-frontpage');$('a[data-drupal-link-system-path="<front>"]').addClass('is-active');if(_corpus_ready){_$corpus_canvas.trigger({'type':'close-all-entree'});_$corpus_canvas.trigger({'type':'scramble-collection'});}
-if(typeof pop_state=="undefined"||!pop_state){void 0;history.pushState({home:true},null,drupalSettings.path.baseUrl+drupalSettings.path.currentLanguage);}}
+if(typeof pop_state=="undefined"||!pop_state){void 0;history.pushState({home:true},null,_base_url+drupalSettings.path.currentLanguage);}}
 function closeAllModals(){_$row.html('');_$ajaxLinks.removeClass('is-active');_$body.trigger({'type':'all-modal-closed'});};function checkRowEmpty(){void 0;if(!$('.col',_$row).length){if(!_$body.is('.entity-type-taxonomy_term.bundle-entrees')){if(!_$body.is('.entity-type-node.bundle-page')){if(_$body.is('.bundle-enregistrement.view-mode-article')&&$('a.articles-link').is('.is-active')){void 0;$('a.articles-link').removeClass('is-active').trigger('click');}else{backToFrontPage();}}else{if(_corpus_ready){_$corpus_canvas.trigger({'type':'scramble-collection'});}
 $('a[data-drupal-link-system-path="productions"]','#block-mainnavigation').removeClass('is-active').trigger('click');}}else{$('.entree-content a.is-active').removeClass('is-active');}}};init();}
 $(document).ready(function($){if(drupalSettings.path.isFront){var edlptheme=new EdlpTheme();}else{$('body').attr('booted','booted');}});})(jQuery,Drupal,drupalSettings);

File diff suppressed because it is too large
+ 0 - 0
web/themes/custom/edlptheme/assets/dist/styles/app.min.css


+ 80 - 15
web/themes/custom/edlptheme/assets/scripts/main.js

@@ -1,6 +1,8 @@
 (function($, Drupal, drupalSettings) {
 
   EdlpTheme = function(){
+    var _origin = window.location.origin;
+    var _base_url = drupalSettings.path.baseUrl;
     var _ajax_settings = drupalSettings.edlp_ajax;
     var _$body = $('body');
     // var _is_front = drupalSettings.path.isFront;
@@ -17,6 +19,9 @@
     };
     var _corpus_promise;
     var _is_mobile =  edlp_mobile.device_is_mobile;
+    var _is_loggedin = drupalSettings.user.uid === 0 ? false : true;
+    var _$log_form;
+    var _user_tokens;
 
     //  ___      _ _
     // |_ _|_ _ (_) |_
@@ -25,9 +30,9 @@
     function init(){
       console.log("EdlpTheme init()");
 
-
-      // if(!drupalSettings.path.isFront)
-      //   return;
+      if (!_is_loggedin) {
+        initLogForm();
+      }
 
       if(_is_mobile){
         initMobile();
@@ -40,11 +45,8 @@
       initAjaxLinks();
       initHistory();
 
-
       if(!_is_mobile){
-
         checkLayout();
-
         initAudioLinksHover();
       }
 
@@ -55,13 +57,76 @@
         _$body.attr('booted', 'booted');
       }
 
+    };
 
-      // if(!drupalSettings.path.isFront)
-      //   return;
-      //
-      // initEvents();
+
+    //  _                ___
+    // | |   ___  __ _  | __|__ _ _ _ __
+    // | |__/ _ \/ _` | | _/ _ \ '_| '  \
+    // |____\___/\__, | |_|\___/_| |_|_|_|
+    //           |___/
+    function initLogForm(){
+      console.log('initLogForm');
+      _$log_form = $('#user-login-form:not(ajax-enebled)')
+        .on('submit', onSubmitLogForm)
+        .addClass('ajax-enabled');
+    };
+
+    function onSubmitLogForm(e){
+      e.preventDefault();
+      // console.log('onSubmitLogForm', e);
+      var args = {
+        name : $('input#edit-name[type="text"]', this).val(),
+        pass : $('input#edit-pass[type="password"]', this).val()
+      };
+      // console.log(args);
+      logIn(args).then(getStudioLinkBlock);
+      return false;
     };
 
+    function logIn(args){
+      console.log('logIn', args);
+      _$log_form.addClass('ajax-loading');
+      _$body.addClass('ajax-loading');
+
+      return $.ajax({
+        type: 'POST',
+        headers: {'Content-Type': 'application/json'},
+        xhrFields: {
+          withCredentials: true
+        },
+        // accessToken : 'tokenvaluehere',
+        url: _origin+_base_url+"user/login?_format=json",
+        data: JSON.stringify(args),
+        // name: args.mail,
+        // pass: args.pass,
+        success: function(response){
+          // console.log('sucess', response);
+          _user_tokens = response;
+        },
+        error: function (xhr, ajaxOptions, thrownError){
+          console.log(xhr.status);
+          console.log(thrownError);
+        }
+      });
+    };
+
+    function getStudioLinkBlock(){
+      var path = _origin+_base_url+'edlp/ajax/blocks/json/';
+      $.getJSON(path+"studiolinkblock", {})
+        .done(onStudioLinkBlockLoaded)
+        .fail(function(jqxhr, textStatus, error){
+          console.warn('Studio ink block load failed', jqxhr.responseText);
+        });
+    };
+
+    function onStudioLinkBlockLoaded(data){
+      console.log('onStudioLinkBlockLoaded', data);
+      $('#block-studiouserlogin').replaceWith(data.blocks.studiolinkblock.rendered);
+      initAjaxLinks();
+      _$log_form.removeClass('ajax-loading');
+      _$body.removeClass('ajax-loading');
+    }
 
     //  __  __     _    _ _
     // |  \/  |___| |__(_) |___
@@ -271,7 +336,7 @@
       console.log('ajaxLoadContent : state', state);
       _$body.addClass('ajax-loading');
       _ajax_timing.start = performance.now();
-      var path = window.location.origin + Drupal.url(state.ajax_path);
+      var path = _origin + Drupal.url(state.ajax_path);
       $.getJSON(path, {})
         .done(function(data){
           onAjaxLoaded(data, state);
@@ -552,7 +617,7 @@
     //      |__/
     // NOT USED (YET)
     // function refreshAllBlocks(){
-    //   var path = window.location.origin + Drupal.url(_ajax_settings.blocksjson_path);
+    //   var path = _origin + Drupal.url(_ajax_settings.blocksjson_path);
     //   $.getJSON(path, {})
     //     .done(function(data){
     //       onAjaxBlockLoaded(data);
@@ -1228,7 +1293,7 @@
         this.$cartel.addClass('loading');
         var vm = 'player_cartel';
         var ajax_path = _ajax_settings.entityjson_path+'/node/'+nid+'/'+vm;
-        var path = window.location.origin + Drupal.url(ajax_path);
+        var path = _origin + Drupal.url(ajax_path);
         $.getJSON(path, {})
           .done(this.onNodeLoaded.bind(this))
           .fail(this.onNodeLoadFail.bind(this));
@@ -1366,7 +1431,7 @@
     function RandomPlayer(playlist){
       this.active = false;
       this.playlist = playlist;
-      this.path =  drupalSettings.path.baseUrl+drupalSettings.path.pathPrefix+'#random'
+      this.path =  _base_url+drupalSettings.path.pathPrefix+'#random'
       this.$btn = $('<a>')
         .html('Shuffle')
         .attr('href',this.path)
@@ -1942,7 +2007,7 @@
 
       if(typeof pop_state == "undefined" || !pop_state){
         console.log('backToFrontPage push state');
-        history.pushState({home:true}, null, drupalSettings.path.baseUrl+drupalSettings.path.currentLanguage);
+        history.pushState({home:true}, null, _base_url+drupalSettings.path.currentLanguage);
       }
     }
 

+ 11 - 4
web/themes/custom/edlptheme/assets/styles/app.scss

@@ -2405,15 +2405,22 @@ footer{
     }
     &:hover{
       .block-content{
-        height:200px;
+        height:300px;
         opacity: 1;
         pointer-events:auto;
         transition-delay: 0s;
       }
     }
-    &#block-studiouserlogin:hover{
-      .block-content{
-        height:300px;
+    // &#block-studiouserlogin:hover{
+    //   .block-content{
+    //     height:300px;
+    //   }
+    // }
+    #user-login-form{
+      transition: opacity 1s ease-out;
+      opacity:1;
+      &.ajax-loading{
+        opacity: 0.2;
       }
     }
   }

Some files were not shown because too many files changed in this diff