1 <%@page import="com.liferay.portal.kernel.util.Validator"%>
\r
2 <%@page import="com.pentila.entSavoie.userProperties.service.UserMatchingLocalServiceUtil"%>
\r
3 <%@page import="com.pentila.entSavoie.userProperties.model.UserMatching"%>
\r
4 <%@page import="com.pentila.entSavoie.cantine.service.CantinePlanAlimentaireLocalServiceUtil"%>
\r
5 <%@page import="com.pentila.entSavoie.internalMessaging.InternalMessagingConstants"%>
\r
6 <%@page import="com.pentila.entSavoie.cartable.service.CasierEntryLocalServiceUtil"%>
\r
7 <%@page import="com.pentila.entSavoie.internalMessaging.service.MessageLocalServiceUtil"%>
\r
8 <%@page import="com.pentila.entSavoie.internalMessaging.model.Account"%>
\r
9 <%@page import="com.pentila.entSavoie.internalMessaging.service.AccountLocalServiceUtil"%>
\r
10 <%@page import="com.pentila.entSavoie.internalMessaging.service.InternalMessageLocalServiceUtil"%>
\r
11 <%@page import="com.pentila.entSavoie.internalMessaging.service.InternalFolderMessageLocalServiceUtil"%>
\r
12 <%@page import="com.pentila.entSavoie.internalMessaging.model.InternalFolderMessage"%>
\r
13 <%@page import="java.util.List"%>
\r
14 <%@page import="com.liferay.portal.service.RoleLocalServiceUtil"%>
\r
15 <%@page import="com.liferay.portal.model.RoleConstants"%>
\r
16 <%@page import="com.pentila.entSavoie.ENTRoleUtilFactory"%>
\r
17 <%@page import="com.liferay.portal.model.Role"%>
\r
18 <%@page import="com.liferay.portal.model.Organization"%>
\r
19 <%@page import="com.pentila.entSavoie.directory.OrganizationFinderServiceUtil"%>
\r
20 <%@page import="com.pentila.entSavoie.utils.XitiUtil"%>
\r
21 <%@page import="com.pentila.entSavoie.userProperties.service.UserPropertiesLocalServiceUtil"%>
\r
22 <%@page import="com.pentila.entSavoie.userProperties.model.UserProperties"%>
\r
23 <%@page import="com.pentila.entSavoie.utils.ENTMainUtilsLocalServiceUtil"%>
\r
24 <%@page import="com.pentila.entSavoie.utils.MenuFullScreenGenerator"%>
\r
28 * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
\r
30 * Permission is hereby granted, free of charge, to any person obtaining a copy
\r
31 * of this software and associated documentation files (the "Software"), to deal
\r
32 * in the Software without restriction, including without limitation the rights
\r
33 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
\r
34 * copies of the Software, and to permit persons to whom the Software is
\r
35 * furnished to do so, subject to the following conditions:
\r
37 * The above copyright notice and this permission notice shall be included in
\r
38 * all copies or substantial portions of the Software.
\r
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
\r
41 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
\r
42 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
\r
43 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
\r
44 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
\r
45 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
\r
50 <%@ include file="/html/common/init.jsp" %>
\r
52 // on traite les locale
\r
53 String defaultLoc = "fr";
\r
55 if(!user.getLocale().toString().isEmpty()){
\r
56 defaultLoc = user.getLocale().toString().substring(0,2);
\r
59 boolean imUseSignature = false;
\r
60 String imSignature = "";
\r
63 UserProperties up = UserPropertiesLocalServiceUtil.getUserPropertiesByUserId(user.getUserId());
\r
64 imUseSignature = up.getImUseSignature();
\r
65 imSignature = up.getImSignature().replace('"', '\'');
\r
66 } catch(Exception e){
\r
75 // To set gray theme
\r
76 //Ext.util.CSS.swapStyleSheet("theme", "/html/js/extjs/resources/css/xtheme-gray.css");
\r
78 var defaultLoc = "<%= defaultLoc %>";
\r
81 var imUseSignatureGlobal = <%=imUseSignature%>;
\r
82 var imSignatureGlobal = "<%=imSignature.replaceAll("[\r\n]+", " ")%>";
\r
84 //Parametres Xiti concernant le user
\r
85 var userXitiId = <%= user.getUserId() %>;
\r
86 var roleXitiId = <%= XitiUtil.getRole(user) %>;
\r
87 var etabXitiId = <%= XitiUtil.getEtab(user) %>;
\r
89 //Parametres Xiti generaux
\r
90 var serviceXitiId_emptyId = "<%= XitiUtil.EMPTY_ID %>";
\r
91 var libServiceXiti_pageEnt = "<%= XitiUtil.PAGE_ENT %>";
\r
92 var serviceXitiId_REL = <%= XitiUtil.ID_RESSOURCES_EN_LIGNE %>;
\r
93 var libServiceXiti_REL = "<%= XitiUtil.RESSOURCES_EN_LIGNE %>";
\r
94 var serviceXitiId_VieScolaire = <%= XitiUtil.ID_SERVICES_VIE_SCOLAIRE %>;
\r
95 var libServiceXiti_VieScolaire = "<%= XitiUtil.SERVICES_VIE_SCOLAIRE %>";
\r
96 var enableXitiTag = <%= ENTMainUtilsLocalServiceUtil.getXitiEnable(user.getCompanyId()) %>;
\r
97 var ID_PROJET = <%=ENTMainUtilsLocalServiceUtil.getXitiIdProjet(user.getCompanyId())%>;
\r
98 var ID_PLATEFORME = <%=ENTMainUtilsLocalServiceUtil.getXitiIdPlateforme(user.getCompanyId())%>;
\r
99 var ID_COLLECTIVITE = <%=ENTMainUtilsLocalServiceUtil.getXitiIdCollectivite(user.getCompanyId())%>;
\r
102 var enablePiwikTag = <%= ENTMainUtilsLocalServiceUtil.getPiwikEnable(user.getCompanyId()) %>;
\r
103 var piwikURL = "<%= ENTMainUtilsLocalServiceUtil.getPiwikUrl(user.getCompanyId()) %>";
\r
105 //parametre de tracker
\r
106 var trackerOrgId = 0;
\r
108 function getUrlParam(name, url) {
\r
110 url = location.href;
\r
112 name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
\r
113 var regexS = "[\\?&]"+name+"=([^&#]*)";
\r
114 var regex = new RegExp( regexS );
\r
115 var results = regex.exec( url );
\r
116 return results == null ? null : results[1];
\r
119 if (!user.isDefaultUser()) {
\r
120 Organization etabRatt = OrganizationFinderServiceUtil.getEtabRatachement(user);
\r
121 if (etabRatt!=null) {
\r
123 trackerOrgId = <%= etabRatt.getOrganizationId() %>;
\r
129 function fireGroupChangeWikiPageEvent(pageUrl) {
\r
130 var event = new CustomEvent("groupChangeWikiPage", { "detail": {"pageUrl": pageUrl}});
\r
131 document.dispatchEvent(event);
\r
134 //Fonction permettant de construire l'uploader xiti
\r
135 function drawJQUploadFilePanel(panel){
\r
136 var idUploadBtn = '#' + panel.jQUploadBtnId;
\r
137 jQuery( '<div id="progress-panel" class="angular-content hide" style="width:200px;">' +
\r
141 jQuery(function () {
\r
143 // Initialize the jQuery File Upload widget:
\r
144 jQuery(idUploadBtn).fileupload({
\r
145 namespace: idUploadBtn,
\r
147 dropZone: (Ext.isGecko3 || Ext.isIE)?null:jQuery(panel.filesDropZone),
\r
148 maxFileSize: 100000000,
\r
149 acceptFileTypes: panel.supportedExtensions, ///^image\/(gif|jpeg|png|jpg|tif|tiff)$/:/.+$/i,
\r
150 add: function (e, data) {
\r
151 $.each(data.files, function (index, file) {
\r
152 if (file.size > 100000000) {
\r
154 Ext.MessageBox.alert(file.name, "Le fichier dépasse la taille maximale autorisée. (100Mo)", function(btn){});
\r
157 var fileId = file.size + file.lastModified;
\r
158 $('#progress-panel').removeClass("hide");
\r
159 jQuery( '<div id="progress' + fileId + '">' +
\r
160 '<div class="progress" style="width:180px;height:20px;">' +
\r
161 '<div class="progress-bar progress-bar-success progress-bar-striped">' +
\r
165 '<a id="abort' + fileId + '">' +
\r
166 '<i class="fa fa-times"></i>'+
\r
169 .appendTo('#progress-panel');
\r
171 $("#abort" + fileId).on('click', function () {
\r
173 $("#progress" + fileId).remove();
\r
178 if (e.isDefaultPrevented()) {
\r
181 var $this = $(this),
\r
182 that = $this.data('blueimp-fileupload') ||
\r
183 $this.data('fileupload'),
\r
184 options = that.options;
\r
186 data.context = that._renderUpload(data.files)
\r
187 .data('data', data)
\r
188 .addClass('processing');
\r
189 options.filesContainer[
\r
190 options.prependFiles ? 'prepend' : 'append'
\r
192 that._forceReflow(data.context);
\r
193 that._transition(data.context);
\r
194 data.process(function () {
\r
195 return $this.fileupload('process', data);
\r
196 }).always(function () {
\r
197 data.context.each(function (index) {
\r
198 $(this).find('.size').text(
\r
199 that._formatFileSize(data.files[index].size)
\r
201 }).removeClass('processing');
\r
202 that._renderPreviews(data);
\r
203 }).done(function () {
\r
204 data.context.find('.start').prop('disabled', false);
\r
205 if ((that._trigger('added', e, data) !== false) &&
\r
206 (options.autoUpload || data.autoUpload) &&
\r
207 data.autoUpload !== false) {
\r
210 }).fail(function () {
\r
211 if (data.files.error) {
\r
212 data.context.each(function (index) {
\r
213 var error = data.files[index].error;
\r
215 $(this).find('.error').text(error);
\r
221 progress: function (e, data) {
\r
222 if (e.isDefaultPrevented()) {
\r
225 var progress = Math.floor(data.loaded / data.total * 100);
\r
227 $.each(data.files, function (index, file) {
\r
228 var fileId = file.size + file.lastModified;
\r
230 $('#progress' + fileId + ' .progress-bar').css(
\r
236 progressall: function (e, data) {
\r
237 var progress = parseInt(data.loaded / data.total * 100, 10);
\r
239 $('#progress .progress-bar').css(
\r
244 done: function (e, data) {
\r
245 if (e.isDefaultPrevented()) {
\r
249 $.each(data.files, function (index, file) {
\r
250 var fileId = file.size + file.lastModified;
\r
251 $("#progress" + fileId).remove();
\r
254 if(defaultLoc == "en"){
\r
255 Ext.slideMsg.msg("Add files", "The files has been added.");
\r
256 } else if(defaultLoc == "ro"){
\r
257 Ext.slideMsg.msg("Adăugarea de fişiere", "Fișierul a fost adăugat");
\r
259 Ext.slideMsg.msg("Ajout de fichiers", "Le(s) fichier(s) a(ont) été correctement ajouté(s)");
\r
262 stop: function (e) {
\r
263 $('#progress-panel').addClass("hide");
\r
264 if (e.isDefaultPrevented()) {
\r
267 var that = $(this).data('blueimp-fileupload') ||
\r
268 $(this).data('fileupload'),
\r
269 deferred = that._addFinishedDeferreds();
\r
270 $.when.apply($, that._getFinishedDeferreds())
\r
271 .done(function () {
\r
272 that._trigger('stopped', e);
\r
274 that._transition($(this).find('.fileupload-progress')).done(
\r
276 $(this).find('.progress')
\r
277 .attr('aria-valuenow', '0')
\r
278 .children().first().css('width', '0%');
\r
279 $(this).find('.progress-extended').html(' ');
\r
280 deferred.resolve();
\r
284 formData: panel.isCartable ? function (form) {
\r
288 value: panel.mainContainer.folderId
\r
294 jQuery(idUploadBtn).bind('fileuploaddone', function (e, data) {
\r
295 panel.mainContainer.refreshInterfaceAddFileJQuery(data.result);
\r
298 // Open download dialogs via iframes,
\r
299 // to prevent aborting current uploads:
\r
300 jQuery(idUploadBtn + ' .files a:not([target^=_blank])').on('click', function (e) {
\r
301 e.preventDefault();
\r
302 jQuery('<iframe style="display:none;"></iframe>')
\r
303 .prop('src', this.href)
\r
309 //Le render jQueryUploaderProgressWindow du est dans bottom-ext.jsp
\r
310 var jQueryUploaderProgressWindow = new EntSavoie.JQueryUploaderProgressWindow({});
\r
312 //Initialisation de la classe permettant la detection du navigateur
\r
313 EntSavoie.BrowserDetect.initialize();
\r
317 <c:if test="<%= themeDisplay.isSignedIn() %>">
\r
319 portraitId: "<%= user.getPortraitId() %>",
\r
321 getUserId: function() {
\r
322 return "<%= user.getUserId() %>";
\r
324 getLastName: function() {
\r
325 return "<%= user.getLastName() %>";
\r
327 getFirstName: function() {
\r
328 return "<%= user.getFirstName() %>";
\r
330 getScreenName: function() {
\r
331 return "<%= user.getScreenName() %>";
\r
333 isMale: function() {
\r
334 return "<%= user.isMale() %>";
\r
336 isFemale: function() {
\r
337 return "<%= user.isFemale() %>";
\r
339 getPortraitId: function() {
\r
340 return this.portraitId;
\r
342 setPortraitId: function(portraitId){
\r
343 this.portraitId = portraitId;
\r
345 isAdministrator: function(){
\r
347 Role administrator = ENTRoleUtilFactory.getInstance(user.getCompanyId()).getRole(RoleConstants.ADMINISTRATOR);
\r
349 return <%= RoleLocalServiceUtil.hasUserRole(user.getUserId(), administrator.getRoleId()) %>;
\r
351 getNewMessageCount: function() {
\r
354 List<InternalFolderMessage> folderIncommingMsg = InternalFolderMessageLocalServiceUtil.getUserFolderTypeMessages(user.getUserId(), InternalMessagingConstants.INCOMMING_FOLDER_TYPE);
\r
355 for (InternalFolderMessage folder : folderIncommingMsg){
\r
356 nbMesage += InternalMessageLocalServiceUtil.countMessageNew(folder.getFolderMessageId());
\r
359 List<Account> accs = AccountLocalServiceUtil.getAccountsByUserId(user.getUserId());
\r
360 for (Account ac : accs) {
\r
361 nbMesage += MessageLocalServiceUtil.getFolderUnreadMessagesCount(ac.getInboxFolderId());
\r
364 return "<%= nbMesage %>";
\r
366 getNewCasierEntryCount: function() {
\r
368 int nbCasier = CasierEntryLocalServiceUtil.countByC_G_isNew(user.getCompanyId(), user.getGroup().getGroupId(), true);
\r
370 return "<%= nbCasier %>";
\r
372 hasCantineConsultation: function(){
\r
374 Organization etab = OrganizationFinderServiceUtil.getEtabRatachement(user);
\r
376 if(Validator.isNotNull(etab)){
\r
377 nbPlans = CantinePlanAlimentaireLocalServiceUtil.getCantinePlanAlimentaireByEtabId_Diffuse(etab.getOrganizationId()).size();
\r
380 return <%= nbPlans>0 %>;
\r
382 hasMenuAjaxable: function(){
\r
384 boolean ajaxable = false;
\r
386 ajaxable = UserPropertiesLocalServiceUtil.getUserPropertiesByUserId(user.getUserId()).getAjaxablePortlets();
\r
387 } catch(Exception e){}
\r
389 return <%= ajaxable %>;
\r
391 canImpersonateUser: function(){
\r
393 boolean canImpersonate = false;
\r
394 List<UserMatching> lUserMatching = UserMatchingLocalServiceUtil.getUserMatchings(realUser.getUserId());
\r
395 for(UserMatching userMatching: lUserMatching){
\r
396 if(userMatching.getValid()){
\r
397 canImpersonate = true;
\r
402 return <%= canImpersonate %>;
\r
404 isImpersonate: function(){
\r
405 return <%= realUser.getUserId() != user.getUserId() %>;
\r
407 getRealUserId: function() {
\r
408 return "<%= realUser.getUserId() %>";
\r
410 getRealLastName: function() {
\r
411 return "<%= realUser.getLastName() %>";
\r
413 getRealFirstName: function() {
\r
414 return "<%= realUser.getFirstName() %>";
\r
416 getRealScreenName: function() {
\r
417 return "<%= realUser.getScreenName() %>";
\r
422 getURLPortal: function() {
\r
423 return "<%= themeDisplay.getURLPortal() %>";
\r
425 getPathThemeImages: function() {
\r
426 return "<%= themeDisplay.getPathThemeImages() %>";
\r
428 getURLControlPanel: function() {
\r
429 return "<%= themeDisplay.getURLControlPanel() %>";
\r
431 getURLSignOut: function() {
\r
432 return "<%= themeDisplay.getURLSignOut() %>";
\r
434 getMenuFullScreenAsJSON: function() {
\r
435 <%-- return Ext.decode("<%= MenuFullScreenGenerator.generate(themeDisplay, request, user) %>"); --%>
\r
437 getEntFullScreenAllowed: function() {
\r
438 return "<%= ENTMainUtilsLocalServiceUtil.getEntFullScreenAllowed() %>";
\r
440 getFullScreenMaximizeKey: function() {
\r
441 return "<%= ENTMainUtilsLocalServiceUtil.getEntFullScreenMaximizeKey() %>";
\r
445 height: <%= ENTMainUtilsLocalServiceUtil.getDefaultPortletHeight() %>
\r
451 <script src="<%= HtmlUtil.escape(PortalUtil.getStaticResourceURL(request, themeDisplay.getCDNHost() + themeDisplay.getPathContext() + "/html/js/extjs/src/locale/ext-lang-"+ defaultLoc +".js")) %>" type="text/javascript"></script>
\r
453 <script src="<%= HtmlUtil.escape(PortalUtil.getStaticResourceURL(request, themeDisplay.getCDNHost() + themeDisplay.getPathContext() + "/html/js/extjs/pentila/locale/pentila-ext-lang-"+ defaultLoc +".js")) %>" type="text/javascript"></script>
\r