ninegate
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
Details
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
Details
This commit is contained in:
parent
46c3f9ca12
commit
800945e44b
4
.env
4
.env
|
@ -7,7 +7,7 @@ APP_SESSIONTIME=1440
|
||||||
MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
|
MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
DATABASE_URL="postgresql://symfony:ChangeMe@127.0.0.1:5432/app?serverVersion=13&charset=utf8"
|
DATABASE_URL="postgresql://symfony:ChangeMe@127.0.0.1:5432/ninegate?serverVersion=13&charset=utf8"
|
||||||
|
|
||||||
# Redis Session
|
# Redis Session
|
||||||
REDIS_HOST=127.0.0.1
|
REDIS_HOST=127.0.0.1
|
||||||
|
@ -169,7 +169,7 @@ HYDRA_CONSENTCHALLENGE="http://127.0.0.1:4445/oauth2/auth/requests/consent?conse
|
||||||
HYDRA_CONSENTCHALLENGEACCEPT="http://127.0.0.1:4445/oauth2/auth/requests/consent/accept?consent_challenge="
|
HYDRA_CONSENTCHALLENGEACCEPT="http://127.0.0.1:4445/oauth2/auth/requests/consent/accept?consent_challenge="
|
||||||
|
|
||||||
# Lock
|
# Lock
|
||||||
LOCK_DSN="postgresql://symfony:ChangeMe@127.0.0.1:5432/app?serverVersion=13&charset=utf8"
|
LOCK_DSN="postgresql://symfony:ChangeMe@127.0.0.1:5432/ninegate?serverVersion=13&charset=utf8"
|
||||||
|
|
||||||
# Sentry
|
# Sentry
|
||||||
SENTRY_DSN=
|
SENTRY_DSN=
|
||||||
|
|
|
@ -41,6 +41,10 @@ require('spectrum-colorpicker2/dist/spectrum.min.css');
|
||||||
require('crop-select-js/crop-select-js.min.css');
|
require('crop-select-js/crop-select-js.min.css');
|
||||||
window.CropSelectJs = require('crop-select-js/crop-select-js.min.js');
|
window.CropSelectJs = require('crop-select-js/crop-select-js.min.js');
|
||||||
|
|
||||||
|
// iframe-resizer
|
||||||
|
require('iframe-resizer/js/iframeResizer.min.js');
|
||||||
|
require('iframe-resizer/js/iframeResizer.contentWindow.min.js');
|
||||||
|
|
||||||
// Start the Stimulus application
|
// Start the Stimulus application
|
||||||
import './bootstrap';
|
import './bootstrap';
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,16 @@ $(document).ready(function() {
|
||||||
// Color
|
// Color
|
||||||
$(".pick-a-color").spectrum(
|
$(".pick-a-color").spectrum(
|
||||||
{
|
{
|
||||||
type: "text",
|
preferredFormat: "hex",
|
||||||
showAlpha: false
|
type: "string",
|
||||||
|
showPalette: true,
|
||||||
|
allowEmpty: true,
|
||||||
|
showAlpha: false,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
$(".pick-a-color").attr("autocomplete","off");
|
$(".pick-a-color").attr("autocomplete","off");
|
||||||
|
|
||||||
// method confirm
|
// Method confirm
|
||||||
var doit = true;
|
var doit = true;
|
||||||
$("a[data-method]").on('click',function(){
|
$("a[data-method]").on('click',function(){
|
||||||
if($(this).data('confirm')){
|
if($(this).data('confirm')){
|
||||||
|
@ -57,33 +60,45 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Resize
|
// select2-icon
|
||||||
resize();
|
function iformat(icon) {
|
||||||
|
return $('<span><i class="' + icon.id + '"></i> ' + icon.text + '</span>');
|
||||||
|
}
|
||||||
|
$('.select2-icon').select2({
|
||||||
|
width: "100%",
|
||||||
|
placeholder: 'choisir un icône',
|
||||||
|
allowClear: true,
|
||||||
|
templateSelection: iformat,
|
||||||
|
templateResult: iformat,
|
||||||
|
formatResult: iformat,
|
||||||
|
allowHtml: true,
|
||||||
|
escapeMarkup: function(m) {
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// Menu
|
||||||
|
$(".dropdown-toggle").click(function(){
|
||||||
|
$(this).parent().find(".dropdown-menu").toggle();
|
||||||
|
})
|
||||||
|
$(".nav-toogle").click(function(){
|
||||||
|
$("#selmenu").modal("toggle");
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Forcer le resize des objects
|
||||||
|
Resize();
|
||||||
|
|
||||||
// Focus
|
// Focus
|
||||||
$("#page").focus();
|
$("#page").focus();
|
||||||
});
|
});
|
||||||
|
|
||||||
$( window ).resize(function() {
|
$( window ).resize(function() {
|
||||||
resize();
|
Resize();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function resize() {
|
|
||||||
if($("#header").is(":visible")){
|
|
||||||
$(".navbar-logo").hide();
|
|
||||||
$("#menulink").hide();
|
|
||||||
$("#header").hide();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$(".navbar-logo").show();
|
|
||||||
$("#menulink").show();
|
|
||||||
$("#header").show();
|
|
||||||
}
|
|
||||||
|
|
||||||
$("main").css("height",$(window).height()-$(".header").height());
|
|
||||||
$("#page").css("height",$(window).height()-$(".header").height());
|
|
||||||
$("#sidebar").css("min-height",$("body").height()-$(".header").height());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -114,52 +114,111 @@ border-width: 1px;
|
||||||
padding: 0 0 0 0.5rem !important;
|
padding: 0 0 0 0.5rem !important;
|
||||||
}
|
}
|
||||||
.navbar-logo img{
|
.navbar-logo img{
|
||||||
height:20px;
|
height:30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar i {
|
#menulink {
|
||||||
font-size: 20px;
|
zoom:150%;
|
||||||
min-width: 30px;
|
|
||||||
height:20px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* MENU */
|
/* MENU */
|
||||||
#menu {
|
#menu {
|
||||||
height:50px;
|
min-height:44px;
|
||||||
padding: 0px 0px 0px 10px !important;
|
padding: 0px 0px 0px 10px !important;
|
||||||
|
justify-content: space-around;
|
||||||
}
|
}
|
||||||
|
|
||||||
#menu .navbar-logo {
|
#menu .navbar-logo {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#menuapp {
|
||||||
|
background-color: var(--colorbgbodydark);
|
||||||
|
}
|
||||||
|
|
||||||
|
#menuuser {
|
||||||
|
min-width: 100px;
|
||||||
|
display:flex;
|
||||||
|
justify-content: end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-item {
|
||||||
|
padding:10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.nav-item.active {
|
||||||
|
background-color: var(--colorbgbodydark-darker);
|
||||||
|
}
|
||||||
|
|
||||||
|
.menupage a {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menupage a i{
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropdown-menu {
|
||||||
|
background-color: var(--colorbgbodydark);
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropdown-item:hover, .dropdown-item:focus {
|
||||||
|
background-color: var(--colorbgbodydark-darker);
|
||||||
|
color: var(--colorftbodydark);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@media (max-width: 991px) {
|
@media (max-width: 991px) {
|
||||||
#menu {
|
#menu {
|
||||||
display:flex !important;
|
display:flex !important;
|
||||||
height: auto;
|
|
||||||
padding: 0px !important;
|
padding: 0px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#menuapp {
|
||||||
|
position: absolute;
|
||||||
|
top:50px;
|
||||||
|
left:0px;
|
||||||
|
width:100%;
|
||||||
|
overflow-y: auto;
|
||||||
|
height:500px;
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menuapp .nav {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menuapp .navbar-nav {
|
||||||
|
flex-direction: column;
|
||||||
|
padding:15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu .nav-toogle {
|
||||||
|
display:block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pagesportal {
|
||||||
|
display:block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pagesuser {
|
||||||
|
display:block !important;
|
||||||
|
}
|
||||||
|
|
||||||
.navbar-logo {
|
.navbar-logo {
|
||||||
padding: 10px 5px 10px 10px !important;
|
padding: 10px 5px 10px 10px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-logo img {
|
|
||||||
height:40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar i {
|
|
||||||
font-size: 20px;
|
|
||||||
min-width: 30px;
|
|
||||||
height:20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#switchHeader {
|
#switchHeader {
|
||||||
display:none;
|
display:none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* SIDEBAR */
|
/* SIDEBAR */
|
||||||
#sidebar {
|
#sidebar {
|
||||||
|
@ -230,6 +289,10 @@ border-width: 1px;
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-body .form-group:first-child {
|
||||||
|
margin-top: 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ITEM */
|
/* ITEM */
|
||||||
.itemframe {
|
.itemframe {
|
||||||
|
@ -239,6 +302,7 @@ border-width: 1px;
|
||||||
.items-list {
|
.items-list {
|
||||||
display:flex;
|
display:flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
margin-bottom: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
|
@ -247,7 +311,7 @@ border-width: 1px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin-right:5px;
|
margin-right:5px;
|
||||||
margin-top:5px;
|
margin-bottom:5px;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
color: var(--colorftbodydark) !important;
|
color: var(--colorftbodydark) !important;
|
||||||
}
|
}
|
||||||
|
@ -287,7 +351,7 @@ border-width: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-subtitle {
|
.item-subtitle {
|
||||||
font-size: 12px;
|
font-size: 10px;
|
||||||
margin:0px;
|
margin:0px;
|
||||||
color: var(--colorftbodydark);
|
color: var(--colorftbodydark);
|
||||||
}
|
}
|
||||||
|
@ -295,9 +359,16 @@ border-width: 1px;
|
||||||
.item-description {
|
.item-description {
|
||||||
color: var(--colorftbodydark);
|
color: var(--colorftbodydark);
|
||||||
text-align: left;
|
text-align: left;
|
||||||
padding: 0px 10px;
|
padding: 0px 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.item-description img {
|
||||||
|
max-width: 100% !important;
|
||||||
|
height: auto !important;
|
||||||
|
}
|
||||||
|
.item-description p:last-child {
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
.item-verysmall {
|
.item-verysmall {
|
||||||
width: 80px;
|
width: 80px;
|
||||||
|
@ -433,3 +504,67 @@ border-width: 1px;
|
||||||
.item-list .item-action {
|
.item-list .item-action {
|
||||||
width:auto;
|
width:auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.item-list .item-description {
|
||||||
|
padding:10px 0px 5px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* WIDGET */
|
||||||
|
.widget{
|
||||||
|
margin-bottom:30px;
|
||||||
|
}
|
||||||
|
.widget-bordered {
|
||||||
|
border:1px solid;
|
||||||
|
}
|
||||||
|
.widget-menu {
|
||||||
|
float: right;
|
||||||
|
color: #fff;
|
||||||
|
margin: 10px 5px 0px 0px;
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
.widget-menu i {
|
||||||
|
cursor:pointer;
|
||||||
|
}
|
||||||
|
.widget-header {
|
||||||
|
padding:10px 10px 5px 10px;
|
||||||
|
font-family: var(--fonttitle);
|
||||||
|
font-size: 25px;
|
||||||
|
}
|
||||||
|
.widget-logo {
|
||||||
|
height:40px;
|
||||||
|
margin-right:5px;
|
||||||
|
margin-top:-5px;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
}
|
||||||
|
.widget-title {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.widget-body {
|
||||||
|
padding: 5px 0px 0px 0px;
|
||||||
|
}
|
||||||
|
.widget-bordered .widget-body {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-body .items-list {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
.widget-body .item-list:first-child {
|
||||||
|
margin-top: 0px;
|
||||||
|
}
|
||||||
|
.widget-body .items-list:last-child {
|
||||||
|
margin-bottom: -5px;
|
||||||
|
}
|
||||||
|
.widget-body .item-description {
|
||||||
|
padding:10px 0px 0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cat-list {
|
||||||
|
color: var(--colorfttitledark);
|
||||||
|
background-color: var(--colorbgbodydark);
|
||||||
|
padding: 5px 10px;
|
||||||
|
display: inline-block;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -913,11 +913,6 @@ app_admin_alert_order:
|
||||||
controller: App\Controller\AlertController::order
|
controller: App\Controller\AlertController::order
|
||||||
defaults: { access: admin }
|
defaults: { access: admin }
|
||||||
|
|
||||||
app_admin_ajax_alert_seleclist:
|
|
||||||
path: /admin/alert/ajax/selectlist
|
|
||||||
controller: App\Controller\AlertController::seleclist
|
|
||||||
defaults: { access: admin }
|
|
||||||
|
|
||||||
#-- Access all
|
#-- Access all
|
||||||
app_all_alert_read:
|
app_all_alert_read:
|
||||||
path: /all/alert/read
|
path: /all/alert/read
|
||||||
|
@ -970,11 +965,6 @@ app_admin_item_order:
|
||||||
controller: App\Controller\ItemController::order
|
controller: App\Controller\ItemController::order
|
||||||
defaults: { access: admin }
|
defaults: { access: admin }
|
||||||
|
|
||||||
app_admin_item_selectlist:
|
|
||||||
path: /admin/item/selectlist
|
|
||||||
controller: App\Controller\ItemController::seleclist
|
|
||||||
defaults: { access: admin }
|
|
||||||
|
|
||||||
|
|
||||||
#== ITEM CATEGORY ========================================================================================================================================
|
#== ITEM CATEGORY ========================================================================================================================================
|
||||||
|
|
||||||
|
@ -1004,17 +994,22 @@ app_admin_itemcategory_order:
|
||||||
#-- Access config
|
#-- Access config
|
||||||
app_admin_bookmark_submit:
|
app_admin_bookmark_submit:
|
||||||
path: /admin/bookmark/submit/{idpage}/{idwidget}/{touser}
|
path: /admin/bookmark/submit/{idpage}/{idwidget}/{touser}
|
||||||
controller: App\Controller\BookmarkController::order
|
controller: App\Controller\BookmarkController::submit
|
||||||
defaults: { access: admin }
|
defaults: { access: admin }
|
||||||
|
|
||||||
app_admin_bookmark_update:
|
app_admin_bookmark_update:
|
||||||
path: /admin/bookmark/update/{idpage}/{id}
|
path: /admin/bookmark/update/{id}/{idpage}/{idwidget}/{touser}
|
||||||
controller: App\Controller\BookmarkController::update
|
controller: App\Controller\BookmarkController::update
|
||||||
defaults: { access: admin }
|
defaults: { access: admin }
|
||||||
|
|
||||||
app_admin_bookmark_delete:
|
app_admin_bookmark_delete:
|
||||||
path: /admin/bookmark/delete/{idpage}/{id}
|
path: /admin/bookmark/delete/{id}/{idpage}/{idwidget}/{touser}
|
||||||
controller: App\Controller\BookmarkController::delete
|
controller: App\Controller\BookmarkController::delete
|
||||||
|
defaults: { access: admin }
|
||||||
|
|
||||||
|
app_admin_bookmark_heart:
|
||||||
|
path: /admin/bookmark/heart
|
||||||
|
controller: App\Controller\BookmarkController::heart
|
||||||
defaults: { access: admin }
|
defaults: { access: admin }
|
||||||
|
|
||||||
#-- Access all
|
#-- Access all
|
||||||
|
@ -1024,12 +1019,12 @@ app_all_bookmark_submit:
|
||||||
defaults: { access: all }
|
defaults: { access: all }
|
||||||
|
|
||||||
app_all_bookmark_update:
|
app_all_bookmark_update:
|
||||||
path: /all/bookmark/update/{idpage}/{id}
|
path: /all/bookmark/update/{id}/{idpage}/{idwidget}/{touser}
|
||||||
controller: App\Controller\BookmarkController::update
|
controller: App\Controller\BookmarkController::update
|
||||||
defaults: { access: all }
|
defaults: { access: all }
|
||||||
|
|
||||||
app_all_bookmark_delete:
|
app_all_bookmark_delete:
|
||||||
path: /all/bookmark/delete/{idpage}/{id}
|
path: /all/bookmark/delete/{id}/{idpage}/{idwidget}/{touser}
|
||||||
controller: App\Controller\BookmarkController::delete
|
controller: App\Controller\BookmarkController::delete
|
||||||
defaults: { access: all }
|
defaults: { access: all }
|
||||||
|
|
||||||
|
@ -1233,148 +1228,149 @@ app_all_message_see:
|
||||||
#== PAGE TEMPLATE ========================================================================================================================================
|
#== PAGE TEMPLATE ========================================================================================================================================
|
||||||
|
|
||||||
#-- Access admin
|
#-- Access admin
|
||||||
app_admin_pagetemplate:
|
app_admin_page_template:
|
||||||
path: /admin/template
|
path: /admin/template
|
||||||
controller: App\Controller\PagetemplateController::list
|
controller: App\Controller\PagetemplateController::list
|
||||||
defaults: { access: admin }
|
defaults: { access: admin, usage: template }
|
||||||
|
|
||||||
app_admin_pagetemplate_tablelist:
|
app_admin_page_template_tablelist:
|
||||||
path: /admin/template/tablelist
|
path: /admin/template/tablelist
|
||||||
controller: App\Controller\PagetemplateController::tablelist
|
controller: App\Controller\PagetemplateController::tablelist
|
||||||
defaults: { access: admin }
|
defaults: { access: admin, usage: template }
|
||||||
|
|
||||||
app_admin_pagetemplate_submit:
|
app_admin_template_submit:
|
||||||
path: /admin/template/submit
|
path: /admin/template/submit
|
||||||
controller: App\Controller\PagetemplateController::submit
|
controller: App\Controller\PagetemplateController::submit
|
||||||
defaults: { access: admin }
|
defaults: { access: admin, usage: template }
|
||||||
|
|
||||||
app_admin_pagetemplate_update:
|
app_admin_page_template_update:
|
||||||
path: /admin/template/update/{id}
|
path: /admin/template/update/{id}
|
||||||
controller: App\Controller\PagetemplateController::update
|
controller: App\Controller\PagetemplateController::update
|
||||||
defaults: { access: admin }
|
defaults: { access: admin, usage: template }
|
||||||
|
|
||||||
app_admin_pagetemplate_delete:
|
app_admin_page_template_delete:
|
||||||
path: /admin/template/delete/{id}
|
path: /admin/template/delete/{id}
|
||||||
controller: App\Controller\PagetemplateController::delete
|
controller: App\Controller\PagetemplateController::delete
|
||||||
defaults: { access: admin }
|
defaults: { access: admin, usage: template }
|
||||||
|
|
||||||
app_admin_pagetemplate_view:
|
app_admin_page_template_view:
|
||||||
path: /admin/template/view/{id}
|
path: /admin/template/view/{id}
|
||||||
controller: App\Controller\PagetemplateController::view
|
controller: App\Controller\PagetemplateController::view
|
||||||
defaults: { access: admin }
|
defaults: { access: admin, usage: template }
|
||||||
|
|
||||||
#-- Access all
|
#-- Access all
|
||||||
app_all_pagetemplate_selectlist:
|
app_all_page_template_selectlist:
|
||||||
path: /all/template/selectlist
|
path: /all/template/selectlist
|
||||||
controller: App\Controller\PagetemplateController::selectlist
|
controller: App\Controller\PagetemplateController::selectlist
|
||||||
defaults: { access: admin }
|
defaults: { access: admin, usage: template }
|
||||||
|
|
||||||
|
|
||||||
#== PAGE =================================================================================================================================================
|
#== PAGE =================================================================================================================================================
|
||||||
|
|
||||||
#-- Access admin
|
#-- Access admin
|
||||||
app_admin_page:
|
app_admin_page_portal:
|
||||||
path: /admin/page/
|
path: /admin/page/
|
||||||
controller: App\Controller\PageController::list
|
controller: App\Controller\PageController::list
|
||||||
defaults: { access: admin }
|
defaults: { access: admin, usage: portal }
|
||||||
|
|
||||||
app_admin_page_ajax_list:
|
app_admin_page_portal_tablelist:
|
||||||
path: /admin/page/ajax/list
|
path: /admin/page/tablelist
|
||||||
controller: App\Controller\PageController::tablelist
|
controller: App\Controller\PageController::tablelist
|
||||||
defaults: { access: admin }
|
defaults: { access: admin, usage: portal }
|
||||||
|
|
||||||
app_admin_ajax_page_seleclist:
|
app_admin_page_portal_submit:
|
||||||
path: /admin/page//ajax/selectlist
|
|
||||||
controller: App\Controller\PageController::selectlist
|
|
||||||
defaults: { access: admin }
|
|
||||||
|
|
||||||
app_admin_page_submit:
|
|
||||||
path: /admin/page/submit
|
path: /admin/page/submit
|
||||||
controller: App\Controller\PageController::submit
|
controller: App\Controller\PageController::submit
|
||||||
defaults: { access: admin }
|
defaults: { access: admin, usage: portal }
|
||||||
|
|
||||||
app_admin_page_update:
|
app_admin_page_portal_update:
|
||||||
path: /admin/page/update/{id}
|
path: /admin/page/update/{id}
|
||||||
controller: App\Controller\PageController::update
|
controller: App\Controller\PageController::update
|
||||||
defaults: { access: admin }
|
defaults: { access: admin, usage: portal }
|
||||||
|
|
||||||
app_admin_page_delete:
|
app_admin_page_portal_delete:
|
||||||
path: /admin/page/delete/{id}
|
path: /admin/page/delete/{id}
|
||||||
controller: App\Controller\PageController::delete
|
controller: App\Controller\PageController::delete
|
||||||
defaults: { access: admin }
|
defaults: { access: admin, usage: portal }
|
||||||
|
|
||||||
app_admin_page_view:
|
app_admin_page_portal_view:
|
||||||
path: /admin/page/view/{id}
|
path: /admin/page/view/{id}
|
||||||
controller: App\Controller\PageController::view
|
controller: App\Controller\PageController::view
|
||||||
defaults: { access: admin }
|
defaults: { access: admin, usage: portal }
|
||||||
|
|
||||||
app_admin_page_order:
|
app_admin_page_portal_order:
|
||||||
path: /admin/page/order
|
path: /admin/page/order
|
||||||
controller: App\Controller\PageController::order
|
controller: App\Controller\PageController::order
|
||||||
defaults: { access: admin }
|
defaults: { access: admin, usage: portal }
|
||||||
|
|
||||||
app_admin_page_upload:
|
#-- Access all
|
||||||
path: /admin/page/upload
|
# usage=user
|
||||||
controller: App\Controller\PageController::upload
|
app_all_page_user_submit:
|
||||||
defaults: { access: admin }
|
path: /all/page/user/submit
|
||||||
|
|
||||||
app_admin_page_upload_direct:
|
|
||||||
path: /admin/page//upload&responseType=json
|
|
||||||
controller: App\Controller\PageController::upload
|
|
||||||
defaults: { access: admin }
|
|
||||||
|
|
||||||
#-- Access all
|
|
||||||
app_all_page_submit:
|
|
||||||
path: /all/page/submit
|
|
||||||
controller: App\Controller\PageController::submit
|
controller: App\Controller\PageController::submit
|
||||||
defaults: { access: all }
|
defaults: { access: all, usage: user }
|
||||||
|
|
||||||
app_all_page_update:
|
app_all_page_user_update:
|
||||||
path: /all/page/update/{id}
|
path: /all/page/user/update/{id}
|
||||||
controller: App\Controller\PageController::update
|
controller: App\Controller\PageController::update
|
||||||
defaults: { access: all }
|
defaults: { access: all, usage: user }
|
||||||
|
|
||||||
app_all_page_delete:
|
app_all_page_user_delete:
|
||||||
path: /all/page/delete/{id}
|
path: /all/page/user/delete/{id}
|
||||||
controller: App\Controller\PageController::delete
|
controller: App\Controller\PageController::delete
|
||||||
defaults: { access: all }
|
defaults: { access: all, usage: user }
|
||||||
|
|
||||||
app_all_page_share:
|
app_all_page_user_order:
|
||||||
path: /all/page/share/{id}
|
path: /all/page/user/order
|
||||||
controller: App\Controller\PageController::share
|
|
||||||
defaults: { access: all }
|
|
||||||
|
|
||||||
app_all_page_view:
|
|
||||||
path: /page/view/{id}
|
|
||||||
controller: App\Controller\PageController::view
|
|
||||||
defaults: { access: all }
|
|
||||||
|
|
||||||
app_all_page_order:
|
|
||||||
path: /all/page/order
|
|
||||||
controller: App\Controller\PageController::order
|
controller: App\Controller\PageController::order
|
||||||
defaults: { access: all }
|
defaults: { access: all, usage: user }
|
||||||
|
|
||||||
app_all_page_upload:
|
# usage=group
|
||||||
path: /all/page/upload
|
app_all_page_group_submit:
|
||||||
controller: App\Controller\PageController::selectlist
|
path: /all/page/group/submit
|
||||||
defaults: { access: all }
|
controller: App\Controller\PageController::submit
|
||||||
|
defaults: { access: all, usage: group }
|
||||||
|
|
||||||
app_all_page_upload_direct:
|
app_all_page_group_update:
|
||||||
path: /all/page/upload&responseType=json
|
path: /all/page/group/update/{id}
|
||||||
controller: App\Controller\PageController::upload
|
controller: App\Controller\PageController::update
|
||||||
defaults: { access: all }
|
defaults: { access: all, usage: group }
|
||||||
|
|
||||||
# Page spécifique
|
app_all_page_group_delete:
|
||||||
|
path: /all/page/group/delete/{id}
|
||||||
|
controller: App\Controller\PageController::delete
|
||||||
|
defaults: { access: all, usage: group }
|
||||||
|
|
||||||
|
app_all_page_group_order:
|
||||||
|
path: /all/page/group/order
|
||||||
|
controller: App\Controller\PageController::order
|
||||||
|
defaults: { access: all, usage: group }
|
||||||
|
|
||||||
|
#-- Access visitor
|
||||||
|
# usage=portal
|
||||||
|
app_all_page_portal_view:
|
||||||
|
path: /page/portal/view/{id}
|
||||||
|
controller: App\Controller\PageController::view
|
||||||
|
defaults: { access: all, usage: portal }
|
||||||
|
|
||||||
|
# usage=user
|
||||||
|
app_all_page_user_view:
|
||||||
|
path: /page/user/view/{id}
|
||||||
|
controller: App\Controller\PageController::view
|
||||||
|
defaults: { access: all, usage: user }
|
||||||
|
|
||||||
|
# usage=group
|
||||||
|
app_all_page_group_view:
|
||||||
|
path: /page/group/view/{id}
|
||||||
|
controller: App\Controller\PageController::view
|
||||||
|
defaults: { access: all, usage: group }
|
||||||
|
|
||||||
|
#-- Page spécifique
|
||||||
app_all_page_application:
|
app_all_page_application:
|
||||||
path: /page/application
|
path: /page/application
|
||||||
controller: App\Controller\PageController::application
|
controller: App\Controller\PageController::application
|
||||||
defaults: { access: all }
|
defaults: { access: all }
|
||||||
|
|
||||||
app_all_page_ajax_msgcounter:
|
|
||||||
path: /page/msgcounter
|
|
||||||
controller: App\Controller\PageController::msgcounter
|
|
||||||
defaults: { access: all }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#== PAGE WIDGET ==========================================================================================================================================
|
#== PAGE WIDGET ==========================================================================================================================================
|
||||||
|
@ -1397,22 +1393,12 @@ app_admin_pagewidget_delete:
|
||||||
|
|
||||||
app_admin_pagewidget_order:
|
app_admin_pagewidget_order:
|
||||||
path: /admin/pagewidget/order
|
path: /admin/pagewidget/order
|
||||||
controller: App\Controller\PageController::order
|
controller: App\Controller\PagewidgetController::order
|
||||||
defaults: { access: admin }
|
|
||||||
|
|
||||||
app_admin_pagewidget_upload:
|
|
||||||
path: /admin/pagewidget/upload
|
|
||||||
controller: App\Controller\PagewidgetController::upload
|
|
||||||
defaults: { access: admin }
|
|
||||||
|
|
||||||
app_admin_pagewidget_upload_direct:
|
|
||||||
path: /admin/pagewidget/upload&responseType=json
|
|
||||||
controller: App\Controller\PagewidgetController::upload
|
|
||||||
defaults: { access: admin }
|
defaults: { access: admin }
|
||||||
|
|
||||||
app_admin_pagewidget_view_url:
|
app_admin_pagewidget_view_url:
|
||||||
path: /admin/pagewidget/view/url/{id}
|
path: /admin/pagewidget/view/url/{id}
|
||||||
controller: App\Controller\PageController::viewurl
|
controller: App\Controller\PagewidgetController::viewurl
|
||||||
defaults: { access: admin }
|
defaults: { access: admin }
|
||||||
|
|
||||||
app_admin_pagewidget_view_urlfixe:
|
app_admin_pagewidget_view_urlfixe:
|
||||||
|
@ -1512,35 +1498,25 @@ app_admin_pagewidget_view_groupmessage:
|
||||||
|
|
||||||
#-- Access all
|
#-- Access all
|
||||||
app_all_pagewidget_widget_sumbit:
|
app_all_pagewidget_widget_sumbit:
|
||||||
path: /user/pagewidget/submit/{idpage}/{idwidgettype}
|
path: /all/pagewidget/submit/{idpage}/{idwidgettype}
|
||||||
controller: App\Controller\PagewidgetController::submit
|
controller: App\Controller\PagewidgetController::submit
|
||||||
defaults: { access: all }
|
defaults: { access: all }
|
||||||
|
|
||||||
app_all_pagewidget_widget_update:
|
app_all_pagewidget_widget_update:
|
||||||
path: /user/pagewidget/update/{idpage}/{idwidget}
|
path: /all/pagewidget/update/{idpage}/{idwidget}
|
||||||
controller: App\Controller\PagewidgetController::update
|
controller: App\Controller\PagewidgetController::update
|
||||||
defaults: { access: all }
|
defaults: { access: all }
|
||||||
|
|
||||||
app_all_pagewidget_delete:
|
app_all_pagewidget_delete:
|
||||||
path: /user/pagewidget/delete/{idwidget}
|
path: /all/pagewidget/delete/{idwidget}
|
||||||
controller: App\Controller\PagewidgetController::delete
|
controller: App\Controller\PagewidgetController::delete
|
||||||
defaults: { access: all }
|
defaults: { access: all }
|
||||||
|
|
||||||
app_all_pagewidget_order:
|
app_all_pagewidget_order:
|
||||||
path: /user/pagewidget/order
|
path: /all/pagewidget/order
|
||||||
controller: App\Controller\PagewidgetController::order
|
controller: App\Controller\PagewidgetController::order
|
||||||
defaults: { access: all }
|
defaults: { access: all }
|
||||||
|
|
||||||
app_all_pagewidget_upload:
|
|
||||||
path: /user/pagewidget/upload
|
|
||||||
controller: App\Controller\PagewidgetController::upload
|
|
||||||
defaults: { access: all }
|
|
||||||
|
|
||||||
app_all_pagewidget_upload_direct:
|
|
||||||
path: /user/pagewidget/upload&responseType=json
|
|
||||||
controller: App\Controller\PagewidgetController::upload
|
|
||||||
defaults: { access: all }
|
|
||||||
|
|
||||||
app_all_pagewidget_view_url:
|
app_all_pagewidget_view_url:
|
||||||
path: /pagewidget/view/url/{id}
|
path: /pagewidget/view/url/{id}
|
||||||
controller: App\Controller\PagewidgetController::viewurl
|
controller: App\Controller\PagewidgetController::viewurl
|
||||||
|
|
|
@ -31,7 +31,7 @@ services:
|
||||||
container_name: nineskeletor-postgresql
|
container_name: nineskeletor-postgresql
|
||||||
hostname: nineskeletor-postgresql
|
hostname: nineskeletor-postgresql
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_MULTIPLE_DATABASES: app,hydra
|
POSTGRES_MULTIPLE_DATABASES: ninegate,hydra
|
||||||
POSTGRES_PASSWORD: ChangeMe
|
POSTGRES_PASSWORD: ChangeMe
|
||||||
POSTGRES_USER: symfony
|
POSTGRES_USER: symfony
|
||||||
ports:
|
ports:
|
||||||
|
|
|
@ -1,156 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace DoctrineMigrations;
|
|
||||||
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Auto-generated Migration: Please modify to your needs!
|
|
||||||
*/
|
|
||||||
final class Version20221002124137 extends AbstractMigration
|
|
||||||
{
|
|
||||||
public function getDescription(): string
|
|
||||||
{
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function up(Schema $schema): void
|
|
||||||
{
|
|
||||||
// this up() migration is auto-generated, please modify it to your needs
|
|
||||||
$this->addSql('CREATE SEQUENCE audit_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE cron_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE groupe_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE niveau01_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE niveau02_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE niveau03_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE niveau04_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE registration_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE useraccount_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE usergroupe_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE usermodo_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE whitelist_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE TABLE audit (id INT NOT NULL, entityname VARCHAR(250) NOT NULL, entityid VARCHAR(250) NOT NULL, datesubmit TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, username VARCHAR(250) NOT NULL, description TEXT DEFAULT NULL, detail TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE INDEX search_idx ON audit (entityname, entityid, datesubmit)');
|
|
||||||
$this->addSql('COMMENT ON COLUMN audit.detail IS \'(DC2Type:array)\'');
|
|
||||||
$this->addSql('CREATE TABLE config (id VARCHAR(255) NOT NULL, title VARCHAR(250) NOT NULL, value TEXT DEFAULT NULL, defaultvalue TEXT NOT NULL, roworder VARCHAR(255) NOT NULL, visible BOOLEAN NOT NULL, changeable BOOLEAN NOT NULL, required BOOLEAN NOT NULL, type VARCHAR(255) NOT NULL, grouped VARCHAR(255) NOT NULL, category VARCHAR(255) NOT NULL, help TEXT NOT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE TABLE cron (id INT NOT NULL, command VARCHAR(255) NOT NULL, description TEXT DEFAULT NULL, statut INT DEFAULT NULL, submitdate TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, startexecdate TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, endexecdate TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, nextexecdate TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, repeatinterval INT DEFAULT NULL, jsonargument TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE TABLE groupe (id INT NOT NULL, owner_id INT DEFAULT NULL, label VARCHAR(250) NOT NULL, description TEXT DEFAULT NULL, email VARCHAR(250) DEFAULT NULL, isopen BOOLEAN DEFAULT false NOT NULL, isworkgroup BOOLEAN DEFAULT false NOT NULL, apikey VARCHAR(255) NOT NULL, ldapfilter TEXT DEFAULT NULL, attributes TEXT DEFAULT NULL, idexternal TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE UNIQUE INDEX UNIQ_4B98C21EA750E8 ON groupe (label)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_4B98C217E3C61F9 ON groupe (owner_id)');
|
|
||||||
$this->addSql('CREATE TABLE niveau01 (id INT NOT NULL, label VARCHAR(250) NOT NULL, code TEXT DEFAULT NULL, postaladress TEXT DEFAULT NULL, telephonenumber VARCHAR(60) DEFAULT NULL, email VARCHAR(60) DEFAULT NULL, apikey VARCHAR(255) NOT NULL, ldapfilter TEXT DEFAULT NULL, attributes TEXT DEFAULT NULL, idexternal TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE UNIQUE INDEX UNIQ_6DFC7E23EA750E8 ON niveau01 (label)');
|
|
||||||
$this->addSql('CREATE TABLE niveau02 (id INT NOT NULL, niveau01_id INT NOT NULL, label VARCHAR(250) NOT NULL, code TEXT DEFAULT NULL, postaladress TEXT DEFAULT NULL, telephonenumber VARCHAR(60) DEFAULT NULL, email VARCHAR(60) DEFAULT NULL, apikey VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE UNIQUE INDEX UNIQ_F4F52F99EA750E8 ON niveau02 (label)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_F4F52F9959FDD7AB ON niveau02 (niveau01_id)');
|
|
||||||
$this->addSql('CREATE TABLE niveau03 (id INT NOT NULL, niveau02_id INT NOT NULL, label VARCHAR(250) NOT NULL, code TEXT DEFAULT NULL, postaladress TEXT DEFAULT NULL, telephonenumber VARCHAR(60) DEFAULT NULL, email VARCHAR(60) DEFAULT NULL, apikey VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE UNIQUE INDEX UNIQ_83F21F0FEA750E8 ON niveau03 (label)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_83F21F0F4B487845 ON niveau03 (niveau02_id)');
|
|
||||||
$this->addSql('CREATE TABLE niveau04 (id INT NOT NULL, niveau03_id INT NOT NULL, label VARCHAR(250) NOT NULL, code TEXT DEFAULT NULL, postaladress TEXT DEFAULT NULL, telephonenumber VARCHAR(60) DEFAULT NULL, email VARCHAR(60) DEFAULT NULL, apikey VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE UNIQUE INDEX UNIQ_1D968AACEA750E8 ON niveau04 (label)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_1D968AACF3F41F20 ON niveau04 (niveau03_id)');
|
|
||||||
$this->addSql('CREATE TABLE registration (id INT NOT NULL, niveau01_id INT NOT NULL, niveau02_id INT DEFAULT NULL, niveau03_id INT DEFAULT NULL, niveau04_id INT DEFAULT NULL, username VARCHAR(128) NOT NULL, firstname VARCHAR(250) DEFAULT NULL, lastname VARCHAR(250) DEFAULT NULL, password VARCHAR(250) NOT NULL, salt VARCHAR(250) NOT NULL, email VARCHAR(128) NOT NULL, isvisible BOOLEAN NOT NULL, postaladress VARCHAR(250) DEFAULT NULL, telephonenumber VARCHAR(60) DEFAULT NULL, job VARCHAR(250) DEFAULT NULL, position VARCHAR(250) DEFAULT NULL, motivation TEXT DEFAULT NULL, note TEXT DEFAULT NULL, keyexpire TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, keyvalue VARCHAR(60) DEFAULT NULL, statut INT NOT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE UNIQUE INDEX UNIQ_62A8A7A7F85E0677 ON registration (username)');
|
|
||||||
$this->addSql('CREATE UNIQUE INDEX UNIQ_62A8A7A7E7927C74 ON registration (email)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_62A8A7A759FDD7AB ON registration (niveau01_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_62A8A7A74B487845 ON registration (niveau02_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_62A8A7A7F3F41F20 ON registration (niveau03_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_62A8A7A76E232799 ON registration (niveau04_id)');
|
|
||||||
$this->addSql('CREATE TABLE useraccount (id INT NOT NULL, niveau01_id INT NOT NULL, niveau02_id INT DEFAULT NULL, niveau03_id INT DEFAULT NULL, niveau04_id INT DEFAULT NULL, username VARCHAR(128) NOT NULL, apikey VARCHAR(255) NOT NULL, firstname VARCHAR(250) DEFAULT NULL, lastname VARCHAR(250) DEFAULT NULL, roles TEXT NOT NULL, password VARCHAR(250) NOT NULL, salt VARCHAR(250) NOT NULL, isactive BOOLEAN NOT NULL, email VARCHAR(128) NOT NULL, avatar VARCHAR(250) DEFAULT \'0\', isvisible BOOLEAN NOT NULL, postaladress TEXT DEFAULT NULL, telephonenumber VARCHAR(60) DEFAULT NULL, job VARCHAR(250) DEFAULT NULL, position VARCHAR(250) DEFAULT NULL, motivation TEXT DEFAULT NULL, note TEXT DEFAULT NULL, preference TEXT DEFAULT NULL, keyexpire TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, keyvalue VARCHAR(60) DEFAULT NULL, visitedate TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, visitecpt INT DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE UNIQUE INDEX UNIQ_E157AA1AF85E0677 ON useraccount (username)');
|
|
||||||
$this->addSql('CREATE UNIQUE INDEX UNIQ_E157AA1AE7927C74 ON useraccount (email)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_E157AA1A59FDD7AB ON useraccount (niveau01_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_E157AA1A4B487845 ON useraccount (niveau02_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_E157AA1AF3F41F20 ON useraccount (niveau03_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_E157AA1A6E232799 ON useraccount (niveau04_id)');
|
|
||||||
$this->addSql('COMMENT ON COLUMN useraccount.roles IS \'(DC2Type:array)\'');
|
|
||||||
$this->addSql('COMMENT ON COLUMN useraccount.preference IS \'(DC2Type:array)\'');
|
|
||||||
$this->addSql('CREATE TABLE usergroupe (id INT NOT NULL, user_id INT DEFAULT NULL, group_id INT DEFAULT NULL, rolegroup INT NOT NULL, apikey VARCHAR(60) NOT NULL, visitedate TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, visitecpt INT DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_6C439BE5A76ED395 ON usergroupe (user_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_6C439BE5FE54D947 ON usergroupe (group_id)');
|
|
||||||
$this->addSql('CREATE UNIQUE INDEX UNIQ_6C439BE5A76ED395FE54D947 ON usergroupe (user_id, group_id)');
|
|
||||||
$this->addSql('CREATE TABLE usermodo (id INT NOT NULL, user_id INT NOT NULL, niveau01_id INT NOT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_D162D6C4A76ED395 ON usermodo (user_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_D162D6C459FDD7AB ON usermodo (niveau01_id)');
|
|
||||||
$this->addSql('CREATE TABLE whitelist (id INT NOT NULL, label VARCHAR(250) NOT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE UNIQUE INDEX UNIQ_CB069864EA750E8 ON whitelist (label)');
|
|
||||||
$this->addSql('CREATE TABLE messenger_messages (id BIGSERIAL NOT NULL, body TEXT NOT NULL, headers TEXT NOT NULL, queue_name VARCHAR(190) NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, available_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, delivered_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_75EA56E0FB7336F0 ON messenger_messages (queue_name)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_75EA56E0E3BD61CE ON messenger_messages (available_at)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_75EA56E016BA31DB ON messenger_messages (delivered_at)');
|
|
||||||
$this->addSql('CREATE OR REPLACE FUNCTION notify_messenger_messages() RETURNS TRIGGER AS $$
|
|
||||||
BEGIN
|
|
||||||
PERFORM pg_notify(\'messenger_messages\', NEW.queue_name::text);
|
|
||||||
RETURN NEW;
|
|
||||||
END;
|
|
||||||
$$ LANGUAGE plpgsql;');
|
|
||||||
$this->addSql('DROP TRIGGER IF EXISTS notify_trigger ON messenger_messages;');
|
|
||||||
$this->addSql('CREATE TRIGGER notify_trigger AFTER INSERT OR UPDATE ON messenger_messages FOR EACH ROW EXECUTE PROCEDURE notify_messenger_messages();');
|
|
||||||
$this->addSql('ALTER TABLE groupe ADD CONSTRAINT FK_4B98C217E3C61F9 FOREIGN KEY (owner_id) REFERENCES useraccount (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE niveau02 ADD CONSTRAINT FK_F4F52F9959FDD7AB FOREIGN KEY (niveau01_id) REFERENCES niveau01 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE niveau03 ADD CONSTRAINT FK_83F21F0F4B487845 FOREIGN KEY (niveau02_id) REFERENCES niveau02 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE niveau04 ADD CONSTRAINT FK_1D968AACF3F41F20 FOREIGN KEY (niveau03_id) REFERENCES niveau03 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE registration ADD CONSTRAINT FK_62A8A7A759FDD7AB FOREIGN KEY (niveau01_id) REFERENCES niveau01 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE registration ADD CONSTRAINT FK_62A8A7A74B487845 FOREIGN KEY (niveau02_id) REFERENCES niveau02 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE registration ADD CONSTRAINT FK_62A8A7A7F3F41F20 FOREIGN KEY (niveau03_id) REFERENCES niveau03 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE registration ADD CONSTRAINT FK_62A8A7A76E232799 FOREIGN KEY (niveau04_id) REFERENCES niveau04 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE useraccount ADD CONSTRAINT FK_E157AA1A59FDD7AB FOREIGN KEY (niveau01_id) REFERENCES niveau01 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE useraccount ADD CONSTRAINT FK_E157AA1A4B487845 FOREIGN KEY (niveau02_id) REFERENCES niveau02 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE useraccount ADD CONSTRAINT FK_E157AA1AF3F41F20 FOREIGN KEY (niveau03_id) REFERENCES niveau03 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE useraccount ADD CONSTRAINT FK_E157AA1A6E232799 FOREIGN KEY (niveau04_id) REFERENCES niveau04 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE usergroupe ADD CONSTRAINT FK_6C439BE5A76ED395 FOREIGN KEY (user_id) REFERENCES useraccount (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE usergroupe ADD CONSTRAINT FK_6C439BE5FE54D947 FOREIGN KEY (group_id) REFERENCES groupe (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE usermodo ADD CONSTRAINT FK_D162D6C4A76ED395 FOREIGN KEY (user_id) REFERENCES useraccount (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE usermodo ADD CONSTRAINT FK_D162D6C459FDD7AB FOREIGN KEY (niveau01_id) REFERENCES niveau01 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down(Schema $schema): void
|
|
||||||
{
|
|
||||||
// this down() migration is auto-generated, please modify it to your needs
|
|
||||||
$this->addSql('CREATE SCHEMA public');
|
|
||||||
$this->addSql('DROP SEQUENCE audit_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE cron_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE groupe_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE niveau01_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE niveau02_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE niveau03_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE niveau04_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE registration_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE useraccount_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE usergroupe_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE usermodo_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE whitelist_id_seq CASCADE');
|
|
||||||
$this->addSql('ALTER TABLE groupe DROP CONSTRAINT FK_4B98C217E3C61F9');
|
|
||||||
$this->addSql('ALTER TABLE niveau02 DROP CONSTRAINT FK_F4F52F9959FDD7AB');
|
|
||||||
$this->addSql('ALTER TABLE niveau03 DROP CONSTRAINT FK_83F21F0F4B487845');
|
|
||||||
$this->addSql('ALTER TABLE niveau04 DROP CONSTRAINT FK_1D968AACF3F41F20');
|
|
||||||
$this->addSql('ALTER TABLE registration DROP CONSTRAINT FK_62A8A7A759FDD7AB');
|
|
||||||
$this->addSql('ALTER TABLE registration DROP CONSTRAINT FK_62A8A7A74B487845');
|
|
||||||
$this->addSql('ALTER TABLE registration DROP CONSTRAINT FK_62A8A7A7F3F41F20');
|
|
||||||
$this->addSql('ALTER TABLE registration DROP CONSTRAINT FK_62A8A7A76E232799');
|
|
||||||
$this->addSql('ALTER TABLE useraccount DROP CONSTRAINT FK_E157AA1A59FDD7AB');
|
|
||||||
$this->addSql('ALTER TABLE useraccount DROP CONSTRAINT FK_E157AA1A4B487845');
|
|
||||||
$this->addSql('ALTER TABLE useraccount DROP CONSTRAINT FK_E157AA1AF3F41F20');
|
|
||||||
$this->addSql('ALTER TABLE useraccount DROP CONSTRAINT FK_E157AA1A6E232799');
|
|
||||||
$this->addSql('ALTER TABLE usergroupe DROP CONSTRAINT FK_6C439BE5A76ED395');
|
|
||||||
$this->addSql('ALTER TABLE usergroupe DROP CONSTRAINT FK_6C439BE5FE54D947');
|
|
||||||
$this->addSql('ALTER TABLE usermodo DROP CONSTRAINT FK_D162D6C4A76ED395');
|
|
||||||
$this->addSql('ALTER TABLE usermodo DROP CONSTRAINT FK_D162D6C459FDD7AB');
|
|
||||||
$this->addSql('DROP TABLE audit');
|
|
||||||
$this->addSql('DROP TABLE config');
|
|
||||||
$this->addSql('DROP TABLE cron');
|
|
||||||
$this->addSql('DROP TABLE groupe');
|
|
||||||
$this->addSql('DROP TABLE niveau01');
|
|
||||||
$this->addSql('DROP TABLE niveau02');
|
|
||||||
$this->addSql('DROP TABLE niveau03');
|
|
||||||
$this->addSql('DROP TABLE niveau04');
|
|
||||||
$this->addSql('DROP TABLE registration');
|
|
||||||
$this->addSql('DROP TABLE useraccount');
|
|
||||||
$this->addSql('DROP TABLE usergroupe');
|
|
||||||
$this->addSql('DROP TABLE usermodo');
|
|
||||||
$this->addSql('DROP TABLE whitelist');
|
|
||||||
$this->addSql('DROP TABLE messenger_messages');
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,193 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace DoctrineMigrations;
|
|
||||||
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Auto-generated Migration: Please modify to your needs!
|
|
||||||
*/
|
|
||||||
final class Version20230105192629 extends AbstractMigration
|
|
||||||
{
|
|
||||||
public function getDescription(): string
|
|
||||||
{
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function up(Schema $schema): void
|
|
||||||
{
|
|
||||||
// this up() migration is auto-generated, please modify it to your needs
|
|
||||||
$this->addSql('CREATE SEQUENCE alert_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE alertcategory_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE bookmark_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE icon_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE item_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE itemcategory_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE page_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE pagecategory_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE pagewidget_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE slide_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE widget_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE TABLE alert (id INT NOT NULL, category INT NOT NULL, title VARCHAR(100) NOT NULL, content TEXT DEFAULT NULL, rowOrder INT DEFAULT NULL, publishedat DATE NOT NULL, unpublishedat DATE DEFAULT NULL, fghideable BOOLEAN NOT NULL, roles TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_17FD46C164C19C1 ON alert (category)');
|
|
||||||
$this->addSql('COMMENT ON COLUMN alert.roles IS \'(DC2Type:array)\'');
|
|
||||||
$this->addSql('CREATE TABLE alertgroupe (alert INT NOT NULL, groupe INT NOT NULL, PRIMARY KEY(alert, groupe))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_64DB975617FD46C1 ON alertgroupe (alert)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_64DB97564B98C21 ON alertgroupe (groupe)');
|
|
||||||
$this->addSql('CREATE TABLE alertniveau01 (alert INT NOT NULL, niveau01 INT NOT NULL, PRIMARY KEY(alert, niveau01))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_87E7389C17FD46C1 ON alertniveau01 (alert)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_87E7389C6DFC7E23 ON alertniveau01 (niveau01)');
|
|
||||||
$this->addSql('CREATE TABLE alertuserread (alert INT NOT NULL, "user" INT NOT NULL, PRIMARY KEY(alert, "user"))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_D4317FA917FD46C1 ON alertuserread (alert)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_D4317FA98D93D649 ON alertuserread ("user")');
|
|
||||||
$this->addSql('CREATE TABLE alertitem (alert INT NOT NULL, item INT NOT NULL, PRIMARY KEY(alert, item))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_873C473817FD46C1 ON alertitem (alert)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_873C47381F1B251E ON alertitem (item)');
|
|
||||||
$this->addSql('CREATE TABLE alertcategory (id INT NOT NULL, icon_id INT DEFAULT NULL, label VARCHAR(100) NOT NULL, color VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_EC575F7E54B9D732 ON alertcategory (icon_id)');
|
|
||||||
$this->addSql('CREATE TABLE bookmark (id INT NOT NULL, icon_id INT DEFAULT NULL, user_id INT DEFAULT NULL, pagewidget_id INT DEFAULT NULL, item_id INT DEFAULT NULL, title VARCHAR(100) NOT NULL, subtitle VARCHAR(250) DEFAULT NULL, url VARCHAR(500) NOT NULL, target VARCHAR(32) NOT NULL, rowOrder INT DEFAULT NULL, color VARCHAR(24) DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_DA62921D54B9D732 ON bookmark (icon_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_DA62921DA76ED395 ON bookmark (user_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_DA62921D55B7C7A2 ON bookmark (pagewidget_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_DA62921D126F525E ON bookmark (item_id)');
|
|
||||||
$this->addSql('CREATE TABLE icon (id INT NOT NULL, user_id INT DEFAULT NULL, label VARCHAR(250) NOT NULL, tags VARCHAR(250) DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE UNIQUE INDEX UNIQ_659429DBEA750E8 ON icon (label)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_659429DBA76ED395 ON icon (user_id)');
|
|
||||||
$this->addSql('CREATE TABLE item (id INT NOT NULL, icon_id INT DEFAULT NULL, category INT NOT NULL, title VARCHAR(100) NOT NULL, subtitle VARCHAR(250) DEFAULT NULL, slug VARCHAR(128) DEFAULT NULL, url VARCHAR(500) NOT NULL, target VARCHAR(32) NOT NULL, content TEXT DEFAULT NULL, rowOrder INT DEFAULT NULL, essential BOOLEAN DEFAULT false, protected BOOLEAN DEFAULT false, color VARCHAR(24) DEFAULT NULL, badgeurl VARCHAR(250) DEFAULT NULL, roles TEXT DEFAULT NULL, ssoitem VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE UNIQUE INDEX UNIQ_1F1B251E989D9B62 ON item (slug)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_1F1B251E54B9D732 ON item (icon_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_1F1B251E64C19C1 ON item (category)');
|
|
||||||
$this->addSql('COMMENT ON COLUMN item.roles IS \'(DC2Type:array)\'');
|
|
||||||
$this->addSql('CREATE TABLE itemgroupe (item INT NOT NULL, groupe INT NOT NULL, PRIMARY KEY(item, groupe))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_A4267B6D1F1B251E ON itemgroupe (item)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_A4267B6D4B98C21 ON itemgroupe (groupe)');
|
|
||||||
$this->addSql('CREATE TABLE itemniveau01 (item INT NOT NULL, niveau01 INT NOT NULL, PRIMARY KEY(item, niveau01))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_12E9B90A1F1B251E ON itemniveau01 (item)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_12E9B90A6DFC7E23 ON itemniveau01 (niveau01)');
|
|
||||||
$this->addSql('CREATE TABLE itemcategory (id INT NOT NULL, icon_id INT DEFAULT NULL, label VARCHAR(100) NOT NULL, color VARCHAR(24) DEFAULT NULL, rowOrder INT DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_7959DEE854B9D732 ON itemcategory (icon_id)');
|
|
||||||
$this->addSql('CREATE TABLE page (id INT NOT NULL, pagecategory_id INT DEFAULT NULL, user_id INT DEFAULT NULL, page_id INT DEFAULT NULL, name VARCHAR(100) NOT NULL, roworder INT NOT NULL, maxwidth INT NOT NULL, fonticon VARCHAR(255) DEFAULT NULL, url TEXT DEFAULT NULL, toreload BOOLEAN DEFAULT NULL, html TEXT DEFAULT NULL, template TEXT DEFAULT NULL, parentfor VARCHAR(255) DEFAULT NULL, roles TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_140AB6207AED5C04 ON page (pagecategory_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_140AB620A76ED395 ON page (user_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_140AB620C4663E4 ON page (page_id)');
|
|
||||||
$this->addSql('COMMENT ON COLUMN page.template IS \'(DC2Type:array)\'');
|
|
||||||
$this->addSql('COMMENT ON COLUMN page.roles IS \'(DC2Type:array)\'');
|
|
||||||
$this->addSql('CREATE TABLE pagegroupe (page INT NOT NULL, groupe INT NOT NULL, PRIMARY KEY(page, groupe))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_E8009F6B140AB620 ON pagegroupe (page)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_E8009F6B4B98C21 ON pagegroupe (groupe)');
|
|
||||||
$this->addSql('CREATE TABLE pagecategory (id INT NOT NULL, name VARCHAR(100) NOT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE TABLE pagewidget (id INT NOT NULL, page_id INT DEFAULT NULL, widget_id INT DEFAULT NULL, icon_id INT DEFAULT NULL, name VARCHAR(100) NOT NULL, loc VARCHAR(255) NOT NULL, roworder INT NOT NULL, height INT NOT NULL, autoajust BOOLEAN DEFAULT false NOT NULL, border BOOLEAN DEFAULT true NOT NULL, opened BOOLEAN DEFAULT true NOT NULL, colorheaderback VARCHAR(255) DEFAULT NULL, colorheaderfont VARCHAR(255) DEFAULT NULL, colorbodyback VARCHAR(255) DEFAULT NULL, colorbodyfont VARCHAR(255) DEFAULT NULL, parameter TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_69400D9AC4663E4 ON pagewidget (page_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_69400D9AFBE885E2 ON pagewidget (widget_id)');
|
|
||||||
$this->addSql('CREATE INDEX IDX_69400D9A54B9D732 ON pagewidget (icon_id)');
|
|
||||||
$this->addSql('COMMENT ON COLUMN pagewidget.parameter IS \'(DC2Type:array)\'');
|
|
||||||
$this->addSql('CREATE TABLE slide (id INT NOT NULL, pagewidget_id INT DEFAULT NULL, title VARCHAR(100) DEFAULT NULL, subtitle VARCHAR(250) DEFAULT NULL, url VARCHAR(500) DEFAULT NULL, target VARCHAR(32) NOT NULL, roworder INT DEFAULT NULL, image VARCHAR(100) DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_72EFEE6255B7C7A2 ON slide (pagewidget_id)');
|
|
||||||
$this->addSql('CREATE TABLE widget (id INT NOT NULL, icon_id INT DEFAULT NULL, roworder INT NOT NULL, name VARCHAR(100) NOT NULL, description TEXT DEFAULT NULL, routeview VARCHAR(255) NOT NULL, height INT NOT NULL, autoajust BOOLEAN DEFAULT false NOT NULL, border BOOLEAN DEFAULT true NOT NULL, opened BOOLEAN DEFAULT true NOT NULL, colorheaderback VARCHAR(255) DEFAULT NULL, colorheaderfont VARCHAR(255) DEFAULT NULL, colorbodyback VARCHAR(255) DEFAULT NULL, colorbodyfont VARCHAR(255) DEFAULT NULL, access TEXT DEFAULT NULL, parameter TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE INDEX IDX_85F91ED054B9D732 ON widget (icon_id)');
|
|
||||||
$this->addSql('COMMENT ON COLUMN widget.access IS \'(DC2Type:array)\'');
|
|
||||||
$this->addSql('COMMENT ON COLUMN widget.parameter IS \'(DC2Type:array)\'');
|
|
||||||
$this->addSql('ALTER TABLE alert ADD CONSTRAINT FK_17FD46C164C19C1 FOREIGN KEY (category) REFERENCES alertcategory (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE alertgroupe ADD CONSTRAINT FK_64DB975617FD46C1 FOREIGN KEY (alert) REFERENCES alert (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE alertgroupe ADD CONSTRAINT FK_64DB97564B98C21 FOREIGN KEY (groupe) REFERENCES groupe (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE alertniveau01 ADD CONSTRAINT FK_87E7389C17FD46C1 FOREIGN KEY (alert) REFERENCES alert (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE alertniveau01 ADD CONSTRAINT FK_87E7389C6DFC7E23 FOREIGN KEY (niveau01) REFERENCES niveau01 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE alertuserread ADD CONSTRAINT FK_D4317FA917FD46C1 FOREIGN KEY (alert) REFERENCES alert (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE alertuserread ADD CONSTRAINT FK_D4317FA98D93D649 FOREIGN KEY ("user") REFERENCES useraccount (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE alertitem ADD CONSTRAINT FK_873C473817FD46C1 FOREIGN KEY (alert) REFERENCES alert (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE alertitem ADD CONSTRAINT FK_873C47381F1B251E FOREIGN KEY (item) REFERENCES item (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE alertcategory ADD CONSTRAINT FK_EC575F7E54B9D732 FOREIGN KEY (icon_id) REFERENCES icon (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE bookmark ADD CONSTRAINT FK_DA62921D54B9D732 FOREIGN KEY (icon_id) REFERENCES icon (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE bookmark ADD CONSTRAINT FK_DA62921DA76ED395 FOREIGN KEY (user_id) REFERENCES useraccount (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE bookmark ADD CONSTRAINT FK_DA62921D55B7C7A2 FOREIGN KEY (pagewidget_id) REFERENCES pagewidget (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE bookmark ADD CONSTRAINT FK_DA62921D126F525E FOREIGN KEY (item_id) REFERENCES item (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE icon ADD CONSTRAINT FK_659429DBA76ED395 FOREIGN KEY (user_id) REFERENCES useraccount (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE item ADD CONSTRAINT FK_1F1B251E54B9D732 FOREIGN KEY (icon_id) REFERENCES icon (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE item ADD CONSTRAINT FK_1F1B251E64C19C1 FOREIGN KEY (category) REFERENCES itemcategory (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE itemgroupe ADD CONSTRAINT FK_A4267B6D1F1B251E FOREIGN KEY (item) REFERENCES item (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE itemgroupe ADD CONSTRAINT FK_A4267B6D4B98C21 FOREIGN KEY (groupe) REFERENCES groupe (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE itemniveau01 ADD CONSTRAINT FK_12E9B90A1F1B251E FOREIGN KEY (item) REFERENCES item (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE itemniveau01 ADD CONSTRAINT FK_12E9B90A6DFC7E23 FOREIGN KEY (niveau01) REFERENCES niveau01 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE itemcategory ADD CONSTRAINT FK_7959DEE854B9D732 FOREIGN KEY (icon_id) REFERENCES icon (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE page ADD CONSTRAINT FK_140AB6207AED5C04 FOREIGN KEY (pagecategory_id) REFERENCES pagecategory (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE page ADD CONSTRAINT FK_140AB620A76ED395 FOREIGN KEY (user_id) REFERENCES useraccount (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE page ADD CONSTRAINT FK_140AB620C4663E4 FOREIGN KEY (page_id) REFERENCES page (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE pagegroupe ADD CONSTRAINT FK_E8009F6B140AB620 FOREIGN KEY (page) REFERENCES page (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE pagegroupe ADD CONSTRAINT FK_E8009F6B4B98C21 FOREIGN KEY (groupe) REFERENCES groupe (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE pagewidget ADD CONSTRAINT FK_69400D9AC4663E4 FOREIGN KEY (page_id) REFERENCES page (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE pagewidget ADD CONSTRAINT FK_69400D9AFBE885E2 FOREIGN KEY (widget_id) REFERENCES widget (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE pagewidget ADD CONSTRAINT FK_69400D9A54B9D732 FOREIGN KEY (icon_id) REFERENCES icon (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE slide ADD CONSTRAINT FK_72EFEE6255B7C7A2 FOREIGN KEY (pagewidget_id) REFERENCES pagewidget (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE widget ADD CONSTRAINT FK_85F91ED054B9D732 FOREIGN KEY (icon_id) REFERENCES icon (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down(Schema $schema): void
|
|
||||||
{
|
|
||||||
// this down() migration is auto-generated, please modify it to your needs
|
|
||||||
$this->addSql('CREATE SCHEMA public');
|
|
||||||
$this->addSql('DROP SEQUENCE alert_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE alertcategory_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE bookmark_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE icon_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE item_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE itemcategory_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE page_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE pagecategory_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE pagewidget_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE slide_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE widget_id_seq CASCADE');
|
|
||||||
$this->addSql('ALTER TABLE alert DROP CONSTRAINT FK_17FD46C164C19C1');
|
|
||||||
$this->addSql('ALTER TABLE alertgroupe DROP CONSTRAINT FK_64DB975617FD46C1');
|
|
||||||
$this->addSql('ALTER TABLE alertgroupe DROP CONSTRAINT FK_64DB97564B98C21');
|
|
||||||
$this->addSql('ALTER TABLE alertniveau01 DROP CONSTRAINT FK_87E7389C17FD46C1');
|
|
||||||
$this->addSql('ALTER TABLE alertniveau01 DROP CONSTRAINT FK_87E7389C6DFC7E23');
|
|
||||||
$this->addSql('ALTER TABLE alertuserread DROP CONSTRAINT FK_D4317FA917FD46C1');
|
|
||||||
$this->addSql('ALTER TABLE alertuserread DROP CONSTRAINT FK_D4317FA98D93D649');
|
|
||||||
$this->addSql('ALTER TABLE alertitem DROP CONSTRAINT FK_873C473817FD46C1');
|
|
||||||
$this->addSql('ALTER TABLE alertitem DROP CONSTRAINT FK_873C47381F1B251E');
|
|
||||||
$this->addSql('ALTER TABLE alertcategory DROP CONSTRAINT FK_EC575F7E54B9D732');
|
|
||||||
$this->addSql('ALTER TABLE bookmark DROP CONSTRAINT FK_DA62921D54B9D732');
|
|
||||||
$this->addSql('ALTER TABLE bookmark DROP CONSTRAINT FK_DA62921DA76ED395');
|
|
||||||
$this->addSql('ALTER TABLE bookmark DROP CONSTRAINT FK_DA62921D55B7C7A2');
|
|
||||||
$this->addSql('ALTER TABLE bookmark DROP CONSTRAINT FK_DA62921D126F525E');
|
|
||||||
$this->addSql('ALTER TABLE icon DROP CONSTRAINT FK_659429DBA76ED395');
|
|
||||||
$this->addSql('ALTER TABLE item DROP CONSTRAINT FK_1F1B251E54B9D732');
|
|
||||||
$this->addSql('ALTER TABLE item DROP CONSTRAINT FK_1F1B251E64C19C1');
|
|
||||||
$this->addSql('ALTER TABLE itemgroupe DROP CONSTRAINT FK_A4267B6D1F1B251E');
|
|
||||||
$this->addSql('ALTER TABLE itemgroupe DROP CONSTRAINT FK_A4267B6D4B98C21');
|
|
||||||
$this->addSql('ALTER TABLE itemniveau01 DROP CONSTRAINT FK_12E9B90A1F1B251E');
|
|
||||||
$this->addSql('ALTER TABLE itemniveau01 DROP CONSTRAINT FK_12E9B90A6DFC7E23');
|
|
||||||
$this->addSql('ALTER TABLE itemcategory DROP CONSTRAINT FK_7959DEE854B9D732');
|
|
||||||
$this->addSql('ALTER TABLE page DROP CONSTRAINT FK_140AB6207AED5C04');
|
|
||||||
$this->addSql('ALTER TABLE page DROP CONSTRAINT FK_140AB620A76ED395');
|
|
||||||
$this->addSql('ALTER TABLE page DROP CONSTRAINT FK_140AB620C4663E4');
|
|
||||||
$this->addSql('ALTER TABLE pagegroupe DROP CONSTRAINT FK_E8009F6B140AB620');
|
|
||||||
$this->addSql('ALTER TABLE pagegroupe DROP CONSTRAINT FK_E8009F6B4B98C21');
|
|
||||||
$this->addSql('ALTER TABLE pagewidget DROP CONSTRAINT FK_69400D9AC4663E4');
|
|
||||||
$this->addSql('ALTER TABLE pagewidget DROP CONSTRAINT FK_69400D9AFBE885E2');
|
|
||||||
$this->addSql('ALTER TABLE pagewidget DROP CONSTRAINT FK_69400D9A54B9D732');
|
|
||||||
$this->addSql('ALTER TABLE slide DROP CONSTRAINT FK_72EFEE6255B7C7A2');
|
|
||||||
$this->addSql('ALTER TABLE widget DROP CONSTRAINT FK_85F91ED054B9D732');
|
|
||||||
$this->addSql('DROP TABLE alert');
|
|
||||||
$this->addSql('DROP TABLE alertgroupe');
|
|
||||||
$this->addSql('DROP TABLE alertniveau01');
|
|
||||||
$this->addSql('DROP TABLE alertuserread');
|
|
||||||
$this->addSql('DROP TABLE alertitem');
|
|
||||||
$this->addSql('DROP TABLE alertcategory');
|
|
||||||
$this->addSql('DROP TABLE bookmark');
|
|
||||||
$this->addSql('DROP TABLE icon');
|
|
||||||
$this->addSql('DROP TABLE item');
|
|
||||||
$this->addSql('DROP TABLE itemgroupe');
|
|
||||||
$this->addSql('DROP TABLE itemniveau01');
|
|
||||||
$this->addSql('DROP TABLE itemcategory');
|
|
||||||
$this->addSql('DROP TABLE page');
|
|
||||||
$this->addSql('DROP TABLE pagegroupe');
|
|
||||||
$this->addSql('DROP TABLE pagecategory');
|
|
||||||
$this->addSql('DROP TABLE pagewidget');
|
|
||||||
$this->addSql('DROP TABLE slide');
|
|
||||||
$this->addSql('DROP TABLE widget');
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,64 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace DoctrineMigrations;
|
|
||||||
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Auto-generated Migration: Please modify to your needs!
|
|
||||||
*/
|
|
||||||
final class Version20230111095833 extends AbstractMigration
|
|
||||||
{
|
|
||||||
public function getDescription(): string
|
|
||||||
{
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function up(Schema $schema): void
|
|
||||||
{
|
|
||||||
// this up() migration is auto-generated, please modify it to your needs
|
|
||||||
$this->addSql('ALTER TABLE alertniveau01 DROP CONSTRAINT fk_87e7389c17fd46c1');
|
|
||||||
$this->addSql('ALTER TABLE alertniveau01 DROP CONSTRAINT fk_87e7389c6dfc7e23');
|
|
||||||
$this->addSql('ALTER TABLE itemniveau01 DROP CONSTRAINT fk_12e9b90a1f1b251e');
|
|
||||||
$this->addSql('ALTER TABLE itemniveau01 DROP CONSTRAINT fk_12e9b90a6dfc7e23');
|
|
||||||
$this->addSql('ALTER TABLE alertitem DROP CONSTRAINT fk_873c473817fd46c1');
|
|
||||||
$this->addSql('ALTER TABLE alertitem DROP CONSTRAINT fk_873c47381f1b251e');
|
|
||||||
$this->addSql('DROP TABLE alertniveau01');
|
|
||||||
$this->addSql('DROP TABLE itemniveau01');
|
|
||||||
$this->addSql('DROP TABLE alertitem');
|
|
||||||
$this->addSql('ALTER TABLE groupe ADD pagetemplate_id INT DEFAULT NULL');
|
|
||||||
$this->addSql('ALTER TABLE groupe ADD CONSTRAINT FK_4B98C216D71CE5E FOREIGN KEY (pagetemplate_id) REFERENCES page (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('CREATE INDEX IDX_4B98C216D71CE5E ON groupe (pagetemplate_id)');
|
|
||||||
$this->addSql('ALTER TABLE item DROP badgeurl');
|
|
||||||
$this->addSql('ALTER TABLE item DROP ssoitem');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down(Schema $schema): void
|
|
||||||
{
|
|
||||||
// this down() migration is auto-generated, please modify it to your needs
|
|
||||||
$this->addSql('CREATE SCHEMA public');
|
|
||||||
$this->addSql('CREATE TABLE alertniveau01 (alert INT NOT NULL, niveau01 INT NOT NULL, PRIMARY KEY(alert, niveau01))');
|
|
||||||
$this->addSql('CREATE INDEX idx_87e7389c6dfc7e23 ON alertniveau01 (niveau01)');
|
|
||||||
$this->addSql('CREATE INDEX idx_87e7389c17fd46c1 ON alertniveau01 (alert)');
|
|
||||||
$this->addSql('CREATE TABLE itemniveau01 (item INT NOT NULL, niveau01 INT NOT NULL, PRIMARY KEY(item, niveau01))');
|
|
||||||
$this->addSql('CREATE INDEX idx_12e9b90a6dfc7e23 ON itemniveau01 (niveau01)');
|
|
||||||
$this->addSql('CREATE INDEX idx_12e9b90a1f1b251e ON itemniveau01 (item)');
|
|
||||||
$this->addSql('CREATE TABLE alertitem (alert INT NOT NULL, item INT NOT NULL, PRIMARY KEY(alert, item))');
|
|
||||||
$this->addSql('CREATE INDEX idx_873c47381f1b251e ON alertitem (item)');
|
|
||||||
$this->addSql('CREATE INDEX idx_873c473817fd46c1 ON alertitem (alert)');
|
|
||||||
$this->addSql('ALTER TABLE alertniveau01 ADD CONSTRAINT fk_87e7389c17fd46c1 FOREIGN KEY (alert) REFERENCES alert (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE alertniveau01 ADD CONSTRAINT fk_87e7389c6dfc7e23 FOREIGN KEY (niveau01) REFERENCES niveau01 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE itemniveau01 ADD CONSTRAINT fk_12e9b90a1f1b251e FOREIGN KEY (item) REFERENCES item (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE itemniveau01 ADD CONSTRAINT fk_12e9b90a6dfc7e23 FOREIGN KEY (niveau01) REFERENCES niveau01 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE alertitem ADD CONSTRAINT fk_873c473817fd46c1 FOREIGN KEY (alert) REFERENCES alert (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE alertitem ADD CONSTRAINT fk_873c47381f1b251e FOREIGN KEY (item) REFERENCES item (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('ALTER TABLE groupe DROP CONSTRAINT FK_4B98C216D71CE5E');
|
|
||||||
$this->addSql('DROP INDEX IDX_4B98C216D71CE5E');
|
|
||||||
$this->addSql('ALTER TABLE groupe DROP pagetemplate_id');
|
|
||||||
$this->addSql('ALTER TABLE item ADD badgeurl VARCHAR(250) DEFAULT NULL');
|
|
||||||
$this->addSql('ALTER TABLE item ADD ssoitem VARCHAR(255) DEFAULT NULL');
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace DoctrineMigrations;
|
|
||||||
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Auto-generated Migration: Please modify to your needs!
|
|
||||||
*/
|
|
||||||
final class Version20230112085854 extends AbstractMigration
|
|
||||||
{
|
|
||||||
public function getDescription(): string
|
|
||||||
{
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function up(Schema $schema): void
|
|
||||||
{
|
|
||||||
// this up() migration is auto-generated, please modify it to your needs
|
|
||||||
$this->addSql('ALTER TABLE pagewidget ADD viewheader BOOLEAN DEFAULT true NOT NULL');
|
|
||||||
$this->addSql('ALTER TABLE widget ADD viewheader BOOLEAN DEFAULT true NOT NULL');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down(Schema $schema): void
|
|
||||||
{
|
|
||||||
// this down() migration is auto-generated, please modify it to your needs
|
|
||||||
$this->addSql('CREATE SCHEMA public');
|
|
||||||
$this->addSql('ALTER TABLE widget DROP viewheader');
|
|
||||||
$this->addSql('ALTER TABLE pagewidget DROP viewheader');
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,298 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-generated Migration: Please modify to your needs!
|
||||||
|
*/
|
||||||
|
final class Version20230123084600 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
// this up() migration is auto-generated, please modify it to your needs
|
||||||
|
$this->addSql('CREATE SEQUENCE alert_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE alertcategory_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE audit_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE bookmark_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE cron_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE groupe_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE icon_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE item_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE itemcategory_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE niveau01_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE niveau02_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE niveau03_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE niveau04_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE page_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE pagecategory_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE pagewidget_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE registration_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE slide_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE useraccount_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE usergroupe_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE usermodo_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE whitelist_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE SEQUENCE widget_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
|
$this->addSql('CREATE TABLE alert (id INT NOT NULL, category INT NOT NULL, title VARCHAR(100) NOT NULL, content TEXT DEFAULT NULL, rowOrder INT DEFAULT NULL, publishedat DATE NOT NULL, unpublishedat DATE DEFAULT NULL, fghideable BOOLEAN NOT NULL, roles TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_17FD46C164C19C1 ON alert (category)');
|
||||||
|
$this->addSql('COMMENT ON COLUMN alert.roles IS \'(DC2Type:array)\'');
|
||||||
|
$this->addSql('CREATE TABLE alertgroupe (alert INT NOT NULL, groupe INT NOT NULL, PRIMARY KEY(alert, groupe))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_64DB975617FD46C1 ON alertgroupe (alert)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_64DB97564B98C21 ON alertgroupe (groupe)');
|
||||||
|
$this->addSql('CREATE TABLE alertuserread (alert INT NOT NULL, useraccount INT NOT NULL, PRIMARY KEY(alert, useraccount))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_D4317FA917FD46C1 ON alertuserread (alert)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_D4317FA9E157AA1A ON alertuserread (useraccount)');
|
||||||
|
$this->addSql('CREATE TABLE alertcategory (id INT NOT NULL, icon_id INT DEFAULT NULL, label VARCHAR(100) NOT NULL, color VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_EC575F7E54B9D732 ON alertcategory (icon_id)');
|
||||||
|
$this->addSql('CREATE TABLE audit (id INT NOT NULL, entityname VARCHAR(250) NOT NULL, entityid VARCHAR(250) NOT NULL, datesubmit TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, username VARCHAR(250) NOT NULL, description TEXT DEFAULT NULL, detail TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE INDEX search_idx ON audit (entityname, entityid, datesubmit)');
|
||||||
|
$this->addSql('COMMENT ON COLUMN audit.detail IS \'(DC2Type:array)\'');
|
||||||
|
$this->addSql('CREATE TABLE bookmark (id INT NOT NULL, icon_id INT DEFAULT NULL, user_id INT DEFAULT NULL, pagewidget_id INT DEFAULT NULL, item_id INT DEFAULT NULL, title VARCHAR(100) NOT NULL, subtitle VARCHAR(250) DEFAULT NULL, url VARCHAR(500) NOT NULL, target VARCHAR(32) NOT NULL, rowOrder INT DEFAULT NULL, color VARCHAR(24) DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_DA62921D54B9D732 ON bookmark (icon_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_DA62921DA76ED395 ON bookmark (user_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_DA62921D55B7C7A2 ON bookmark (pagewidget_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_DA62921D126F525E ON bookmark (item_id)');
|
||||||
|
$this->addSql('CREATE TABLE config (id VARCHAR(255) NOT NULL, title VARCHAR(250) NOT NULL, value TEXT DEFAULT NULL, defaultvalue TEXT NOT NULL, roworder VARCHAR(255) NOT NULL, visible BOOLEAN NOT NULL, changeable BOOLEAN NOT NULL, required BOOLEAN NOT NULL, type VARCHAR(255) NOT NULL, grouped VARCHAR(255) NOT NULL, category VARCHAR(255) NOT NULL, help TEXT NOT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE TABLE cron (id INT NOT NULL, command VARCHAR(255) NOT NULL, description TEXT DEFAULT NULL, statut INT DEFAULT NULL, submitdate TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, startexecdate TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, endexecdate TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, nextexecdate TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, repeatinterval INT DEFAULT NULL, jsonargument TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE TABLE groupe (id INT NOT NULL, owner_id INT DEFAULT NULL, pagetemplate_id INT DEFAULT NULL, label VARCHAR(250) NOT NULL, description TEXT DEFAULT NULL, email VARCHAR(250) DEFAULT NULL, isopen BOOLEAN DEFAULT false NOT NULL, isworkgroup BOOLEAN DEFAULT false NOT NULL, apikey VARCHAR(255) NOT NULL, ldapfilter TEXT DEFAULT NULL, attributes TEXT DEFAULT NULL, idexternal TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_4B98C21EA750E8 ON groupe (label)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_4B98C217E3C61F9 ON groupe (owner_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_4B98C216D71CE5E ON groupe (pagetemplate_id)');
|
||||||
|
$this->addSql('CREATE TABLE icon (id INT NOT NULL, user_id INT DEFAULT NULL, label VARCHAR(250) NOT NULL, tags VARCHAR(250) DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_659429DBEA750E8 ON icon (label)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_659429DBA76ED395 ON icon (user_id)');
|
||||||
|
$this->addSql('CREATE TABLE item (id INT NOT NULL, icon_id INT DEFAULT NULL, category INT NOT NULL, title VARCHAR(100) NOT NULL, subtitle VARCHAR(250) DEFAULT NULL, slug VARCHAR(128) DEFAULT NULL, url VARCHAR(500) NOT NULL, target VARCHAR(32) NOT NULL, content TEXT DEFAULT NULL, rowOrder INT DEFAULT NULL, essential BOOLEAN DEFAULT false, protected BOOLEAN DEFAULT false, color VARCHAR(24) DEFAULT NULL, roles TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_1F1B251E989D9B62 ON item (slug)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_1F1B251E54B9D732 ON item (icon_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_1F1B251E64C19C1 ON item (category)');
|
||||||
|
$this->addSql('COMMENT ON COLUMN item.roles IS \'(DC2Type:array)\'');
|
||||||
|
$this->addSql('CREATE TABLE itemgroupe (item INT NOT NULL, groupe INT NOT NULL, PRIMARY KEY(item, groupe))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_A4267B6D1F1B251E ON itemgroupe (item)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_A4267B6D4B98C21 ON itemgroupe (groupe)');
|
||||||
|
$this->addSql('CREATE TABLE itemcategory (id INT NOT NULL, icon_id INT DEFAULT NULL, label VARCHAR(100) NOT NULL, color VARCHAR(24) DEFAULT NULL, rowOrder INT DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_7959DEE854B9D732 ON itemcategory (icon_id)');
|
||||||
|
$this->addSql('CREATE TABLE niveau01 (id INT NOT NULL, label VARCHAR(250) NOT NULL, code TEXT DEFAULT NULL, postaladress TEXT DEFAULT NULL, telephonenumber VARCHAR(60) DEFAULT NULL, email VARCHAR(60) DEFAULT NULL, apikey VARCHAR(255) NOT NULL, ldapfilter TEXT DEFAULT NULL, attributes TEXT DEFAULT NULL, idexternal TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_6DFC7E23EA750E8 ON niveau01 (label)');
|
||||||
|
$this->addSql('CREATE TABLE niveau02 (id INT NOT NULL, niveau01_id INT NOT NULL, label VARCHAR(250) NOT NULL, code TEXT DEFAULT NULL, postaladress TEXT DEFAULT NULL, telephonenumber VARCHAR(60) DEFAULT NULL, email VARCHAR(60) DEFAULT NULL, apikey VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_F4F52F99EA750E8 ON niveau02 (label)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_F4F52F9959FDD7AB ON niveau02 (niveau01_id)');
|
||||||
|
$this->addSql('CREATE TABLE niveau03 (id INT NOT NULL, niveau02_id INT NOT NULL, label VARCHAR(250) NOT NULL, code TEXT DEFAULT NULL, postaladress TEXT DEFAULT NULL, telephonenumber VARCHAR(60) DEFAULT NULL, email VARCHAR(60) DEFAULT NULL, apikey VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_83F21F0FEA750E8 ON niveau03 (label)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_83F21F0F4B487845 ON niveau03 (niveau02_id)');
|
||||||
|
$this->addSql('CREATE TABLE niveau04 (id INT NOT NULL, niveau03_id INT NOT NULL, label VARCHAR(250) NOT NULL, code TEXT DEFAULT NULL, postaladress TEXT DEFAULT NULL, telephonenumber VARCHAR(60) DEFAULT NULL, email VARCHAR(60) DEFAULT NULL, apikey VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_1D968AACEA750E8 ON niveau04 (label)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_1D968AACF3F41F20 ON niveau04 (niveau03_id)');
|
||||||
|
$this->addSql('CREATE TABLE page (id INT NOT NULL, pagecategory_id INT DEFAULT NULL, user_id INT DEFAULT NULL, page_id INT DEFAULT NULL, name VARCHAR(100) NOT NULL, roworder INT NOT NULL, maxwidth INT NOT NULL, fonticon VARCHAR(255) DEFAULT NULL, url TEXT DEFAULT NULL, toreload BOOLEAN DEFAULT NULL, html TEXT DEFAULT NULL, template TEXT DEFAULT NULL, parentfor VARCHAR(255) DEFAULT NULL, roles TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_140AB6207AED5C04 ON page (pagecategory_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_140AB620A76ED395 ON page (user_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_140AB620C4663E4 ON page (page_id)');
|
||||||
|
$this->addSql('COMMENT ON COLUMN page.template IS \'(DC2Type:array)\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN page.roles IS \'(DC2Type:array)\'');
|
||||||
|
$this->addSql('CREATE TABLE pagegroupe (page INT NOT NULL, groupe INT NOT NULL, PRIMARY KEY(page, groupe))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_E8009F6B140AB620 ON pagegroupe (page)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_E8009F6B4B98C21 ON pagegroupe (groupe)');
|
||||||
|
$this->addSql('CREATE TABLE pagecategory (id INT NOT NULL, name VARCHAR(100) NOT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE TABLE pagewidget (id INT NOT NULL, page_id INT DEFAULT NULL, widget_id INT DEFAULT NULL, icon_id INT DEFAULT NULL, name VARCHAR(100) NOT NULL, loc VARCHAR(255) NOT NULL, roworder INT NOT NULL, height INT NOT NULL, autoajust BOOLEAN DEFAULT false NOT NULL, border BOOLEAN DEFAULT true NOT NULL, opened BOOLEAN DEFAULT true NOT NULL, viewheader BOOLEAN DEFAULT true NOT NULL, colorheaderback VARCHAR(255) DEFAULT NULL, colorheaderfont VARCHAR(255) DEFAULT NULL, colorbodyback VARCHAR(255) DEFAULT NULL, colorbodyfont VARCHAR(255) DEFAULT NULL, parameter TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_69400D9AC4663E4 ON pagewidget (page_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_69400D9AFBE885E2 ON pagewidget (widget_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_69400D9A54B9D732 ON pagewidget (icon_id)');
|
||||||
|
$this->addSql('COMMENT ON COLUMN pagewidget.parameter IS \'(DC2Type:array)\'');
|
||||||
|
$this->addSql('CREATE TABLE registration (id INT NOT NULL, niveau01_id INT NOT NULL, niveau02_id INT DEFAULT NULL, niveau03_id INT DEFAULT NULL, niveau04_id INT DEFAULT NULL, username VARCHAR(128) NOT NULL, firstname VARCHAR(250) DEFAULT NULL, lastname VARCHAR(250) DEFAULT NULL, password VARCHAR(250) NOT NULL, salt VARCHAR(250) NOT NULL, email VARCHAR(128) NOT NULL, isvisible BOOLEAN NOT NULL, postaladress VARCHAR(250) DEFAULT NULL, telephonenumber VARCHAR(60) DEFAULT NULL, job VARCHAR(250) DEFAULT NULL, position VARCHAR(250) DEFAULT NULL, motivation TEXT DEFAULT NULL, note TEXT DEFAULT NULL, keyexpire TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, keyvalue VARCHAR(60) DEFAULT NULL, statut INT NOT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_62A8A7A7F85E0677 ON registration (username)');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_62A8A7A7E7927C74 ON registration (email)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_62A8A7A759FDD7AB ON registration (niveau01_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_62A8A7A74B487845 ON registration (niveau02_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_62A8A7A7F3F41F20 ON registration (niveau03_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_62A8A7A76E232799 ON registration (niveau04_id)');
|
||||||
|
$this->addSql('CREATE TABLE slide (id INT NOT NULL, pagewidget_id INT DEFAULT NULL, title VARCHAR(100) DEFAULT NULL, subtitle VARCHAR(250) DEFAULT NULL, url VARCHAR(500) DEFAULT NULL, target VARCHAR(32) NOT NULL, roworder INT DEFAULT NULL, image VARCHAR(100) DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_72EFEE6255B7C7A2 ON slide (pagewidget_id)');
|
||||||
|
$this->addSql('CREATE TABLE useraccount (id INT NOT NULL, niveau01_id INT NOT NULL, niveau02_id INT DEFAULT NULL, niveau03_id INT DEFAULT NULL, niveau04_id INT DEFAULT NULL, username VARCHAR(128) NOT NULL, apikey VARCHAR(255) NOT NULL, firstname VARCHAR(250) DEFAULT NULL, lastname VARCHAR(250) DEFAULT NULL, roles TEXT NOT NULL, password VARCHAR(250) NOT NULL, salt VARCHAR(250) NOT NULL, isactive BOOLEAN NOT NULL, email VARCHAR(128) NOT NULL, avatar VARCHAR(250) DEFAULT \'0\', isvisible BOOLEAN NOT NULL, postaladress TEXT DEFAULT NULL, telephonenumber VARCHAR(60) DEFAULT NULL, job VARCHAR(250) DEFAULT NULL, position VARCHAR(250) DEFAULT NULL, motivation TEXT DEFAULT NULL, note TEXT DEFAULT NULL, preference TEXT DEFAULT NULL, keyexpire TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, keyvalue VARCHAR(60) DEFAULT NULL, visitedate TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, visitecpt INT DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_E157AA1AF85E0677 ON useraccount (username)');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_E157AA1AE7927C74 ON useraccount (email)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_E157AA1A59FDD7AB ON useraccount (niveau01_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_E157AA1A4B487845 ON useraccount (niveau02_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_E157AA1AF3F41F20 ON useraccount (niveau03_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_E157AA1A6E232799 ON useraccount (niveau04_id)');
|
||||||
|
$this->addSql('COMMENT ON COLUMN useraccount.roles IS \'(DC2Type:array)\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN useraccount.preference IS \'(DC2Type:array)\'');
|
||||||
|
$this->addSql('CREATE TABLE usergroupe (id INT NOT NULL, user_id INT DEFAULT NULL, group_id INT DEFAULT NULL, rolegroup INT NOT NULL, apikey VARCHAR(60) NOT NULL, visitedate TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, visitecpt INT DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_6C439BE5A76ED395 ON usergroupe (user_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_6C439BE5FE54D947 ON usergroupe (group_id)');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_6C439BE5A76ED395FE54D947 ON usergroupe (user_id, group_id)');
|
||||||
|
$this->addSql('CREATE TABLE usermodo (id INT NOT NULL, user_id INT NOT NULL, niveau01_id INT NOT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_D162D6C4A76ED395 ON usermodo (user_id)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_D162D6C459FDD7AB ON usermodo (niveau01_id)');
|
||||||
|
$this->addSql('CREATE TABLE whitelist (id INT NOT NULL, label VARCHAR(250) NOT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_CB069864EA750E8 ON whitelist (label)');
|
||||||
|
$this->addSql('CREATE TABLE widget (id INT NOT NULL, icon_id INT DEFAULT NULL, roworder INT NOT NULL, name VARCHAR(100) NOT NULL, description TEXT DEFAULT NULL, routeview VARCHAR(255) NOT NULL, height INT NOT NULL, autoajust BOOLEAN DEFAULT false NOT NULL, border BOOLEAN DEFAULT true NOT NULL, opened BOOLEAN DEFAULT true NOT NULL, viewheader BOOLEAN DEFAULT true NOT NULL, colorheaderback VARCHAR(255) DEFAULT NULL, colorheaderfont VARCHAR(255) DEFAULT NULL, colorbodyback VARCHAR(255) DEFAULT NULL, colorbodyfont VARCHAR(255) DEFAULT NULL, access TEXT DEFAULT NULL, parameter TEXT DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_85F91ED054B9D732 ON widget (icon_id)');
|
||||||
|
$this->addSql('COMMENT ON COLUMN widget.access IS \'(DC2Type:array)\'');
|
||||||
|
$this->addSql('COMMENT ON COLUMN widget.parameter IS \'(DC2Type:array)\'');
|
||||||
|
$this->addSql('CREATE TABLE messenger_messages (id BIGSERIAL NOT NULL, body TEXT NOT NULL, headers TEXT NOT NULL, queue_name VARCHAR(190) NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, available_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, delivered_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('CREATE INDEX IDX_75EA56E0FB7336F0 ON messenger_messages (queue_name)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_75EA56E0E3BD61CE ON messenger_messages (available_at)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_75EA56E016BA31DB ON messenger_messages (delivered_at)');
|
||||||
|
$this->addSql('CREATE OR REPLACE FUNCTION notify_messenger_messages() RETURNS TRIGGER AS $$
|
||||||
|
BEGIN
|
||||||
|
PERFORM pg_notify(\'messenger_messages\', NEW.queue_name::text);
|
||||||
|
RETURN NEW;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;');
|
||||||
|
$this->addSql('DROP TRIGGER IF EXISTS notify_trigger ON messenger_messages;');
|
||||||
|
$this->addSql('CREATE TRIGGER notify_trigger AFTER INSERT OR UPDATE ON messenger_messages FOR EACH ROW EXECUTE PROCEDURE notify_messenger_messages();');
|
||||||
|
$this->addSql('ALTER TABLE alert ADD CONSTRAINT FK_17FD46C164C19C1 FOREIGN KEY (category) REFERENCES alertcategory (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE alertgroupe ADD CONSTRAINT FK_64DB975617FD46C1 FOREIGN KEY (alert) REFERENCES alert (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE alertgroupe ADD CONSTRAINT FK_64DB97564B98C21 FOREIGN KEY (groupe) REFERENCES groupe (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE alertuserread ADD CONSTRAINT FK_D4317FA917FD46C1 FOREIGN KEY (alert) REFERENCES alert (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE alertuserread ADD CONSTRAINT FK_D4317FA9E157AA1A FOREIGN KEY (useraccount) REFERENCES useraccount (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE alertcategory ADD CONSTRAINT FK_EC575F7E54B9D732 FOREIGN KEY (icon_id) REFERENCES icon (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE bookmark ADD CONSTRAINT FK_DA62921D54B9D732 FOREIGN KEY (icon_id) REFERENCES icon (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE bookmark ADD CONSTRAINT FK_DA62921DA76ED395 FOREIGN KEY (user_id) REFERENCES useraccount (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE bookmark ADD CONSTRAINT FK_DA62921D55B7C7A2 FOREIGN KEY (pagewidget_id) REFERENCES pagewidget (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE bookmark ADD CONSTRAINT FK_DA62921D126F525E FOREIGN KEY (item_id) REFERENCES item (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE groupe ADD CONSTRAINT FK_4B98C217E3C61F9 FOREIGN KEY (owner_id) REFERENCES useraccount (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE groupe ADD CONSTRAINT FK_4B98C216D71CE5E FOREIGN KEY (pagetemplate_id) REFERENCES page (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE icon ADD CONSTRAINT FK_659429DBA76ED395 FOREIGN KEY (user_id) REFERENCES useraccount (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE item ADD CONSTRAINT FK_1F1B251E54B9D732 FOREIGN KEY (icon_id) REFERENCES icon (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE item ADD CONSTRAINT FK_1F1B251E64C19C1 FOREIGN KEY (category) REFERENCES itemcategory (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE itemgroupe ADD CONSTRAINT FK_A4267B6D1F1B251E FOREIGN KEY (item) REFERENCES item (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE itemgroupe ADD CONSTRAINT FK_A4267B6D4B98C21 FOREIGN KEY (groupe) REFERENCES groupe (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE itemcategory ADD CONSTRAINT FK_7959DEE854B9D732 FOREIGN KEY (icon_id) REFERENCES icon (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE niveau02 ADD CONSTRAINT FK_F4F52F9959FDD7AB FOREIGN KEY (niveau01_id) REFERENCES niveau01 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE niveau03 ADD CONSTRAINT FK_83F21F0F4B487845 FOREIGN KEY (niveau02_id) REFERENCES niveau02 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE niveau04 ADD CONSTRAINT FK_1D968AACF3F41F20 FOREIGN KEY (niveau03_id) REFERENCES niveau03 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE page ADD CONSTRAINT FK_140AB6207AED5C04 FOREIGN KEY (pagecategory_id) REFERENCES pagecategory (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE page ADD CONSTRAINT FK_140AB620A76ED395 FOREIGN KEY (user_id) REFERENCES useraccount (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE page ADD CONSTRAINT FK_140AB620C4663E4 FOREIGN KEY (page_id) REFERENCES page (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE pagegroupe ADD CONSTRAINT FK_E8009F6B140AB620 FOREIGN KEY (page) REFERENCES page (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE pagegroupe ADD CONSTRAINT FK_E8009F6B4B98C21 FOREIGN KEY (groupe) REFERENCES groupe (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE pagewidget ADD CONSTRAINT FK_69400D9AC4663E4 FOREIGN KEY (page_id) REFERENCES page (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE pagewidget ADD CONSTRAINT FK_69400D9AFBE885E2 FOREIGN KEY (widget_id) REFERENCES widget (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE pagewidget ADD CONSTRAINT FK_69400D9A54B9D732 FOREIGN KEY (icon_id) REFERENCES icon (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE registration ADD CONSTRAINT FK_62A8A7A759FDD7AB FOREIGN KEY (niveau01_id) REFERENCES niveau01 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE registration ADD CONSTRAINT FK_62A8A7A74B487845 FOREIGN KEY (niveau02_id) REFERENCES niveau02 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE registration ADD CONSTRAINT FK_62A8A7A7F3F41F20 FOREIGN KEY (niveau03_id) REFERENCES niveau03 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE registration ADD CONSTRAINT FK_62A8A7A76E232799 FOREIGN KEY (niveau04_id) REFERENCES niveau04 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE slide ADD CONSTRAINT FK_72EFEE6255B7C7A2 FOREIGN KEY (pagewidget_id) REFERENCES pagewidget (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE useraccount ADD CONSTRAINT FK_E157AA1A59FDD7AB FOREIGN KEY (niveau01_id) REFERENCES niveau01 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE useraccount ADD CONSTRAINT FK_E157AA1A4B487845 FOREIGN KEY (niveau02_id) REFERENCES niveau02 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE useraccount ADD CONSTRAINT FK_E157AA1AF3F41F20 FOREIGN KEY (niveau03_id) REFERENCES niveau03 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE useraccount ADD CONSTRAINT FK_E157AA1A6E232799 FOREIGN KEY (niveau04_id) REFERENCES niveau04 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE usergroupe ADD CONSTRAINT FK_6C439BE5A76ED395 FOREIGN KEY (user_id) REFERENCES useraccount (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE usergroupe ADD CONSTRAINT FK_6C439BE5FE54D947 FOREIGN KEY (group_id) REFERENCES groupe (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE usermodo ADD CONSTRAINT FK_D162D6C4A76ED395 FOREIGN KEY (user_id) REFERENCES useraccount (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE usermodo ADD CONSTRAINT FK_D162D6C459FDD7AB FOREIGN KEY (niveau01_id) REFERENCES niveau01 (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
$this->addSql('ALTER TABLE widget ADD CONSTRAINT FK_85F91ED054B9D732 FOREIGN KEY (icon_id) REFERENCES icon (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
// this down() migration is auto-generated, please modify it to your needs
|
||||||
|
$this->addSql('CREATE SCHEMA public');
|
||||||
|
$this->addSql('DROP SEQUENCE alert_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE alertcategory_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE audit_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE bookmark_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE cron_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE groupe_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE icon_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE item_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE itemcategory_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE niveau01_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE niveau02_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE niveau03_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE niveau04_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE page_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE pagecategory_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE pagewidget_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE registration_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE slide_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE useraccount_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE usergroupe_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE usermodo_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE whitelist_id_seq CASCADE');
|
||||||
|
$this->addSql('DROP SEQUENCE widget_id_seq CASCADE');
|
||||||
|
$this->addSql('ALTER TABLE alert DROP CONSTRAINT FK_17FD46C164C19C1');
|
||||||
|
$this->addSql('ALTER TABLE alertgroupe DROP CONSTRAINT FK_64DB975617FD46C1');
|
||||||
|
$this->addSql('ALTER TABLE alertgroupe DROP CONSTRAINT FK_64DB97564B98C21');
|
||||||
|
$this->addSql('ALTER TABLE alertuserread DROP CONSTRAINT FK_D4317FA917FD46C1');
|
||||||
|
$this->addSql('ALTER TABLE alertuserread DROP CONSTRAINT FK_D4317FA9E157AA1A');
|
||||||
|
$this->addSql('ALTER TABLE alertcategory DROP CONSTRAINT FK_EC575F7E54B9D732');
|
||||||
|
$this->addSql('ALTER TABLE bookmark DROP CONSTRAINT FK_DA62921D54B9D732');
|
||||||
|
$this->addSql('ALTER TABLE bookmark DROP CONSTRAINT FK_DA62921DA76ED395');
|
||||||
|
$this->addSql('ALTER TABLE bookmark DROP CONSTRAINT FK_DA62921D55B7C7A2');
|
||||||
|
$this->addSql('ALTER TABLE bookmark DROP CONSTRAINT FK_DA62921D126F525E');
|
||||||
|
$this->addSql('ALTER TABLE groupe DROP CONSTRAINT FK_4B98C217E3C61F9');
|
||||||
|
$this->addSql('ALTER TABLE groupe DROP CONSTRAINT FK_4B98C216D71CE5E');
|
||||||
|
$this->addSql('ALTER TABLE icon DROP CONSTRAINT FK_659429DBA76ED395');
|
||||||
|
$this->addSql('ALTER TABLE item DROP CONSTRAINT FK_1F1B251E54B9D732');
|
||||||
|
$this->addSql('ALTER TABLE item DROP CONSTRAINT FK_1F1B251E64C19C1');
|
||||||
|
$this->addSql('ALTER TABLE itemgroupe DROP CONSTRAINT FK_A4267B6D1F1B251E');
|
||||||
|
$this->addSql('ALTER TABLE itemgroupe DROP CONSTRAINT FK_A4267B6D4B98C21');
|
||||||
|
$this->addSql('ALTER TABLE itemcategory DROP CONSTRAINT FK_7959DEE854B9D732');
|
||||||
|
$this->addSql('ALTER TABLE niveau02 DROP CONSTRAINT FK_F4F52F9959FDD7AB');
|
||||||
|
$this->addSql('ALTER TABLE niveau03 DROP CONSTRAINT FK_83F21F0F4B487845');
|
||||||
|
$this->addSql('ALTER TABLE niveau04 DROP CONSTRAINT FK_1D968AACF3F41F20');
|
||||||
|
$this->addSql('ALTER TABLE page DROP CONSTRAINT FK_140AB6207AED5C04');
|
||||||
|
$this->addSql('ALTER TABLE page DROP CONSTRAINT FK_140AB620A76ED395');
|
||||||
|
$this->addSql('ALTER TABLE page DROP CONSTRAINT FK_140AB620C4663E4');
|
||||||
|
$this->addSql('ALTER TABLE pagegroupe DROP CONSTRAINT FK_E8009F6B140AB620');
|
||||||
|
$this->addSql('ALTER TABLE pagegroupe DROP CONSTRAINT FK_E8009F6B4B98C21');
|
||||||
|
$this->addSql('ALTER TABLE pagewidget DROP CONSTRAINT FK_69400D9AC4663E4');
|
||||||
|
$this->addSql('ALTER TABLE pagewidget DROP CONSTRAINT FK_69400D9AFBE885E2');
|
||||||
|
$this->addSql('ALTER TABLE pagewidget DROP CONSTRAINT FK_69400D9A54B9D732');
|
||||||
|
$this->addSql('ALTER TABLE registration DROP CONSTRAINT FK_62A8A7A759FDD7AB');
|
||||||
|
$this->addSql('ALTER TABLE registration DROP CONSTRAINT FK_62A8A7A74B487845');
|
||||||
|
$this->addSql('ALTER TABLE registration DROP CONSTRAINT FK_62A8A7A7F3F41F20');
|
||||||
|
$this->addSql('ALTER TABLE registration DROP CONSTRAINT FK_62A8A7A76E232799');
|
||||||
|
$this->addSql('ALTER TABLE slide DROP CONSTRAINT FK_72EFEE6255B7C7A2');
|
||||||
|
$this->addSql('ALTER TABLE useraccount DROP CONSTRAINT FK_E157AA1A59FDD7AB');
|
||||||
|
$this->addSql('ALTER TABLE useraccount DROP CONSTRAINT FK_E157AA1A4B487845');
|
||||||
|
$this->addSql('ALTER TABLE useraccount DROP CONSTRAINT FK_E157AA1AF3F41F20');
|
||||||
|
$this->addSql('ALTER TABLE useraccount DROP CONSTRAINT FK_E157AA1A6E232799');
|
||||||
|
$this->addSql('ALTER TABLE usergroupe DROP CONSTRAINT FK_6C439BE5A76ED395');
|
||||||
|
$this->addSql('ALTER TABLE usergroupe DROP CONSTRAINT FK_6C439BE5FE54D947');
|
||||||
|
$this->addSql('ALTER TABLE usermodo DROP CONSTRAINT FK_D162D6C4A76ED395');
|
||||||
|
$this->addSql('ALTER TABLE usermodo DROP CONSTRAINT FK_D162D6C459FDD7AB');
|
||||||
|
$this->addSql('ALTER TABLE widget DROP CONSTRAINT FK_85F91ED054B9D732');
|
||||||
|
$this->addSql('DROP TABLE alert');
|
||||||
|
$this->addSql('DROP TABLE alertgroupe');
|
||||||
|
$this->addSql('DROP TABLE alertuserread');
|
||||||
|
$this->addSql('DROP TABLE alertcategory');
|
||||||
|
$this->addSql('DROP TABLE audit');
|
||||||
|
$this->addSql('DROP TABLE bookmark');
|
||||||
|
$this->addSql('DROP TABLE config');
|
||||||
|
$this->addSql('DROP TABLE cron');
|
||||||
|
$this->addSql('DROP TABLE groupe');
|
||||||
|
$this->addSql('DROP TABLE icon');
|
||||||
|
$this->addSql('DROP TABLE item');
|
||||||
|
$this->addSql('DROP TABLE itemgroupe');
|
||||||
|
$this->addSql('DROP TABLE itemcategory');
|
||||||
|
$this->addSql('DROP TABLE niveau01');
|
||||||
|
$this->addSql('DROP TABLE niveau02');
|
||||||
|
$this->addSql('DROP TABLE niveau03');
|
||||||
|
$this->addSql('DROP TABLE niveau04');
|
||||||
|
$this->addSql('DROP TABLE page');
|
||||||
|
$this->addSql('DROP TABLE pagegroupe');
|
||||||
|
$this->addSql('DROP TABLE pagecategory');
|
||||||
|
$this->addSql('DROP TABLE pagewidget');
|
||||||
|
$this->addSql('DROP TABLE registration');
|
||||||
|
$this->addSql('DROP TABLE slide');
|
||||||
|
$this->addSql('DROP TABLE useraccount');
|
||||||
|
$this->addSql('DROP TABLE usergroupe');
|
||||||
|
$this->addSql('DROP TABLE usermodo');
|
||||||
|
$this->addSql('DROP TABLE whitelist');
|
||||||
|
$this->addSql('DROP TABLE widget');
|
||||||
|
$this->addSql('DROP TABLE messenger_messages');
|
||||||
|
}
|
||||||
|
}
|
|
@ -27,6 +27,7 @@
|
||||||
"datatables.net-bs4": "^1.12.1",
|
"datatables.net-bs4": "^1.12.1",
|
||||||
"dropzone": "^6.0.0-beta.2",
|
"dropzone": "^6.0.0-beta.2",
|
||||||
"file-loader": "^6.2.0",
|
"file-loader": "^6.2.0",
|
||||||
|
"iframe-resizer": "^4.3.2",
|
||||||
"jquery": "^3.6.0",
|
"jquery": "^3.6.0",
|
||||||
"jquery-ui": "^1.13.1",
|
"jquery-ui": "^1.13.1",
|
||||||
"jqueryui": "^1.11.1",
|
"jqueryui": "^1.11.1",
|
||||||
|
|
|
@ -7,7 +7,9 @@ use App\Entity\Cron;
|
||||||
use App\Entity\Group;
|
use App\Entity\Group;
|
||||||
use App\Entity\Icon;
|
use App\Entity\Icon;
|
||||||
use App\Entity\Niveau01;
|
use App\Entity\Niveau01;
|
||||||
|
use App\Entity\Page;
|
||||||
use App\Entity\Pagecategory;
|
use App\Entity\Pagecategory;
|
||||||
|
use App\Entity\Pagewidget;
|
||||||
use App\Entity\User;
|
use App\Entity\User;
|
||||||
use App\Entity\Widget;
|
use App\Entity\Widget;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
@ -68,10 +70,18 @@ class InitCommand extends Command
|
||||||
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
|
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
|
||||||
$metadata->setIdGenerator(new AssignedGenerator());
|
$metadata->setIdGenerator(new AssignedGenerator());
|
||||||
|
|
||||||
|
$metadata = $this->em->getClassMetaData('App\Entity\Page');
|
||||||
|
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
|
||||||
|
$metadata->setIdGenerator(new AssignedGenerator());
|
||||||
|
|
||||||
$metadata = $this->em->getClassMetaData('App\Entity\Pagecategory');
|
$metadata = $this->em->getClassMetaData('App\Entity\Pagecategory');
|
||||||
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
|
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
|
||||||
$metadata->setIdGenerator(new AssignedGenerator());
|
$metadata->setIdGenerator(new AssignedGenerator());
|
||||||
|
|
||||||
|
$metadata = $this->em->getClassMetaData('App\Entity\Pagewidget');
|
||||||
|
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
|
||||||
|
$metadata->setIdGenerator(new AssignedGenerator());
|
||||||
|
|
||||||
$metadata = $this->em->getClassMetaData('App\Entity\Widget');
|
$metadata = $this->em->getClassMetaData('App\Entity\Widget');
|
||||||
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
|
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
|
||||||
$metadata->setIdGenerator(new AssignedGenerator());
|
$metadata->setIdGenerator(new AssignedGenerator());
|
||||||
|
@ -573,6 +583,72 @@ class InitCommand extends Command
|
||||||
$entityWidget->setParameter($parameter);
|
$entityWidget->setParameter($parameter);
|
||||||
$this->em->persist($entityWidget);
|
$this->em->persist($entityWidget);
|
||||||
|
|
||||||
|
// Widget Bureau Essentiel
|
||||||
|
$entityWidget = $this->em->getRepository('App\Entity\Widget')->find(-1850);
|
||||||
|
if (!$entityWidget) {
|
||||||
|
$entityWidget = new Widget();
|
||||||
|
}
|
||||||
|
$entityicon = $this->em->getRepository('App\Entity\Icon')->findoneby(['label' => 'icon/icon_computer.png']);
|
||||||
|
$entityWidget->setId(-1850);
|
||||||
|
$entityWidget->setRoworder(0);
|
||||||
|
$entityWidget->setIcon($entityicon);
|
||||||
|
$entityWidget->setName('Bureau Essentiel');
|
||||||
|
$entityWidget->setDescription('Affiche les items de bureau essentiel');
|
||||||
|
$entityWidget->setRouteview('app_admin_pagewidget_view_itemessential');
|
||||||
|
$entityWidget->setHeight('630');
|
||||||
|
$entityWidget->setAutoajust(true);
|
||||||
|
$entityWidget->setBorder(false);
|
||||||
|
$entityWidget->setOpened(true);
|
||||||
|
$entityWidget->setViewheader(true);
|
||||||
|
$entityWidget->setAccess(['admin', 'all', 'group']);
|
||||||
|
$parameter = ['fields' => [['id' => 'modedesktop', 'loc' => 'col1', 'type' => 'desktopmode', 'label' => 'Mode Affichage', 'value' => '2', 'mandatory' => 'true']]];
|
||||||
|
$entityWidget->setParameter($parameter);
|
||||||
|
$this->em->persist($entityWidget);
|
||||||
|
|
||||||
|
// Widget Liens
|
||||||
|
$entityWidget = $this->em->getRepository('App\Entity\Widget')->find(-1960);
|
||||||
|
if (!$entityWidget) {
|
||||||
|
$entityWidget = new Widget();
|
||||||
|
}
|
||||||
|
$entityicon = $this->em->getRepository('App\Entity\Icon')->findoneby(['label' => 'icon/icon_star.png']);
|
||||||
|
$entityWidget->setId(-1960);
|
||||||
|
$entityWidget->setRoworder(0);
|
||||||
|
$entityWidget->setIcon($entityicon);
|
||||||
|
$entityWidget->setName('Liens');
|
||||||
|
$entityWidget->setDescription('Bibliothèque de Liens');
|
||||||
|
$entityWidget->setRouteview('app_admin_pagewidget_view_bookmark');
|
||||||
|
$entityWidget->setHeight('630');
|
||||||
|
$entityWidget->setAutoajust(true);
|
||||||
|
$entityWidget->setBorder(false);
|
||||||
|
$entityWidget->setOpened(true);
|
||||||
|
$entityWidget->setViewheader(true);
|
||||||
|
$entityWidget->setAccess(['admin', 'all', 'group']);
|
||||||
|
$parameter = ['fields' => [['id' => 'modedesktop', 'loc' => 'col1', 'type' => 'desktopmode', 'label' => 'Mode Affichage', 'value' => '2', 'mandatory' => 'true']]];
|
||||||
|
$entityWidget->setParameter($parameter);
|
||||||
|
$this->em->persist($entityWidget);
|
||||||
|
|
||||||
|
// Widget Lien
|
||||||
|
$entityWidget = $this->em->getRepository('App\Entity\Widget')->find(-1950);
|
||||||
|
if (!$entityWidget) {
|
||||||
|
$entityWidget = new Widget();
|
||||||
|
}
|
||||||
|
$entityicon = $this->em->getRepository('App\Entity\Icon')->findoneby(['label' => 'icon/icon_bolt.png']);
|
||||||
|
$entityWidget->setId(-1950);
|
||||||
|
$entityWidget->setRoworder(0);
|
||||||
|
$entityWidget->setIcon($entityicon);
|
||||||
|
$entityWidget->setName('Lien');
|
||||||
|
$entityWidget->setDescription("Création d'un Lien unique");
|
||||||
|
$entityWidget->setRouteview('app_admin_pagewidget_view_link');
|
||||||
|
$entityWidget->setHeight('200');
|
||||||
|
$entityWidget->setAutoajust(true);
|
||||||
|
$entityWidget->setBorder(true);
|
||||||
|
$entityWidget->setOpened(true);
|
||||||
|
$entityWidget->setViewheader(false);
|
||||||
|
$entityWidget->setAccess(['admin', 'all', 'group']);
|
||||||
|
$parameter = ['fields' => [['id' => 'url', 'loc' => 'col1', 'type' => 'string', 'label' => 'URL', 'value' => '', 'mandatory' => 'true'], ['id' => 'target', 'loc' => 'col1', 'type' => 'target', 'label' => 'Ouvrir le lien dans', 'value' => '0', 'mandatory' => 'true']]];
|
||||||
|
$entityWidget->setParameter($parameter);
|
||||||
|
$this->em->persist($entityWidget);
|
||||||
|
|
||||||
// Widget Annonce
|
// Widget Annonce
|
||||||
$entityWidget = $this->em->getRepository('App\Entity\Widget')->find(-1980);
|
$entityWidget = $this->em->getRepository('App\Entity\Widget')->find(-1980);
|
||||||
if (!$entityWidget) {
|
if (!$entityWidget) {
|
||||||
|
@ -589,14 +665,134 @@ class InitCommand extends Command
|
||||||
$entityWidget->setAutoajust(true);
|
$entityWidget->setAutoajust(true);
|
||||||
$entityWidget->setBorder(false);
|
$entityWidget->setBorder(false);
|
||||||
$entityWidget->setOpened(true);
|
$entityWidget->setOpened(true);
|
||||||
$entityWidget->setViewheader(true);
|
$entityWidget->setViewheader(false);
|
||||||
$entityWidget->setAccess(['admin', 'all', 'group']);
|
$entityWidget->setAccess(['admin', 'all', 'group']);
|
||||||
$parameter = ['fields' => [['id' => 'alertcategory', 'loc' => 'col1', 'type' => 'alertcategory', 'label' => 'Catégorie Affichée', 'value' => '', 'mandatory' => 'false']]];
|
$parameter = ['fields' => [['id' => 'alertcategory', 'loc' => 'col1', 'type' => 'alertcategory', 'label' => 'Catégorie Affichée', 'value' => '', 'mandatory' => 'false']]];
|
||||||
$entityWidget->setParameter($parameter);
|
$entityWidget->setParameter($parameter);
|
||||||
$this->em->persist($entityWidget);
|
$this->em->persist($entityWidget);
|
||||||
|
|
||||||
|
// Widget Informations
|
||||||
|
$entityWidget = $this->em->getRepository('App\Entity\Widget')->find(-1860);
|
||||||
|
if (!$entityWidget) {
|
||||||
|
$entityWidget = new Widget();
|
||||||
|
}
|
||||||
|
$entityicon = $this->em->getRepository('App\Entity\Icon')->findoneby(['label' => 'icon/icon_info.png']);
|
||||||
|
$entityWidget->setId(-1860);
|
||||||
|
$entityWidget->setRoworder(0);
|
||||||
|
$entityWidget->setIcon($entityicon);
|
||||||
|
$entityWidget->setName('Informations');
|
||||||
|
$entityWidget->setDescription('Afficher les informations associées à la page');
|
||||||
|
$entityWidget->setRouteview('app_admin_pagewidget_view_info');
|
||||||
|
$entityWidget->setHeight('630');
|
||||||
|
$entityWidget->setAutoajust(true);
|
||||||
|
$entityWidget->setBorder(true);
|
||||||
|
$entityWidget->setOpened(false);
|
||||||
|
$entityWidget->setViewheader(true);
|
||||||
|
$entityWidget->setViewheader(true);
|
||||||
|
$entityWidget->setColorheaderback('#5b5b5b');
|
||||||
|
$entityWidget->setColorheaderfont('#ffffff');
|
||||||
|
$entityWidget->setColorbodyback('#5b5b5b');
|
||||||
|
$entityWidget->setColorbodyfont('#ffffff');
|
||||||
|
$entityWidget->setAccess(['admin', 'all', 'group']);
|
||||||
|
$parameter = ['fields' => []];
|
||||||
|
$entityWidget->setParameter($parameter);
|
||||||
|
$this->em->persist($entityWidget);
|
||||||
|
|
||||||
$this->em->flush();
|
$this->em->flush();
|
||||||
|
|
||||||
|
// == PAGETEMPALTE =======================================================================================================================================
|
||||||
|
// Template app
|
||||||
|
$entityPage = $this->em->getRepository('App\Entity\Page')->find(-100);
|
||||||
|
if (!$entityPage) {
|
||||||
|
$entityPagecategory = $this->em->getRepository('App\Entity\Pagecategory')->find(2);
|
||||||
|
$entityGroup = $this->em->getRepository("App\Entity\Group")->find(-1);
|
||||||
|
|
||||||
|
$entityPage = new Page();
|
||||||
|
$entityPage->setId(-100);
|
||||||
|
$entityPage->setRowOrder(0);
|
||||||
|
$entityPage->setName('Applications');
|
||||||
|
$entityPage->setParentfor('app');
|
||||||
|
$entityPage->setMaxwidth(1000);
|
||||||
|
$entityPage->setPagecategory($entityPagecategory);
|
||||||
|
$entityPage->addGroup($entityGroup);
|
||||||
|
$entityPage->setTemplate('{"rows":[{"id":0,"cols":[{"id":0,"size": 12,"rows":[]}]}]}');
|
||||||
|
|
||||||
|
$this->em->persist($entityPage);
|
||||||
|
$this->em->flush();
|
||||||
|
|
||||||
|
$entityPagewidget = $this->em->getRepository('App\Entity\Pagewidget')->find(-110);
|
||||||
|
if (!$entityPagewidget) {
|
||||||
|
$entityWidget = $this->em->getRepository('App\Entity\Widget')->find(-1990);
|
||||||
|
|
||||||
|
$entityPagewidget = new Pagewidget();
|
||||||
|
$entityPagewidget->setId(-110);
|
||||||
|
$entityPagewidget->setLoc('R1C1');
|
||||||
|
$entityPagewidget->setRoworder(0);
|
||||||
|
$entityPagewidget->setName('Applications');
|
||||||
|
$entityPagewidget->setHeight($entityWidget->getHeight());
|
||||||
|
$entityPagewidget->setAutoajust($entityWidget->isAutoajust());
|
||||||
|
$entityPagewidget->setBorder($entityWidget->isBorder());
|
||||||
|
$entityPagewidget->setOpened($entityWidget->isOpened());
|
||||||
|
$entityPagewidget->setViewheader($entityWidget->isViewheader());
|
||||||
|
$entityPagewidget->setIcon($entityWidget->getIcon());
|
||||||
|
$entityPagewidget->setPage($entityPage);
|
||||||
|
$entityPagewidget->setWidget($entityWidget);
|
||||||
|
|
||||||
|
$param['fields'] = ['fields' => [['id' => 'modedesktop', 'value' => 2], ['id' => 'withbookmark', 'value' => 0], ['id' => 'itemcategory', 'value' => null], ['id' => 'menu', 'value' => 1], ['id' => 'search', 'value' => 1], ['id' => 'menuall', 'value' => 1]]];
|
||||||
|
$entityPagewidget->setParameter($param['fields']);
|
||||||
|
|
||||||
|
$this->em->persist($entityPagewidget);
|
||||||
|
$this->em->flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Template Group
|
||||||
|
$entityPage = $this->em->getRepository('App\Entity\Page')->find(-110);
|
||||||
|
if (!$entityPage) {
|
||||||
|
$entityPagecategory = $this->em->getRepository('App\Entity\Pagecategory')->find(2);
|
||||||
|
$entityPage = new Page();
|
||||||
|
$entityPage->setId(-110);
|
||||||
|
$entityPage->setRowOrder(0);
|
||||||
|
$entityPage->setName('Groupe Template');
|
||||||
|
$entityPage->setParentfor('group');
|
||||||
|
$entityPage->setMaxwidth(0);
|
||||||
|
$entityPage->setPagecategory($entityPagecategory);
|
||||||
|
$entityPage->setTemplate('{"rows":[{"id":0,"cols":[{"id":0,"size": 3,"rows":[]},{"id":1,"size": 6,"rows":[{"id":0,"cols":[{"id":0,"size": 6},{"id":1,"size": 6}]}]},{"id":2,"size": 3,"rows":[]}]}]}');
|
||||||
|
|
||||||
|
$this->em->persist($entityPage);
|
||||||
|
$this->em->flush();
|
||||||
|
|
||||||
|
// Widget Nos Liens
|
||||||
|
$fields = ['fields' => [['id' => 'modedesktop', 'value' => 2]]];
|
||||||
|
$this->addWidget(-120, $entityPage, -1960, 'R1C2R1C1', 0, 'Nos Liens', true, $fields);
|
||||||
|
|
||||||
|
// Widget Nos Fichiers
|
||||||
|
/*
|
||||||
|
$fields=["fields"=>[]];
|
||||||
|
$this->addWidget(-130,$entityPage,-1920,"R1C2R1C2",0,"Nos Fichiers",true,$fields);
|
||||||
|
|
||||||
|
// Widget Info Page
|
||||||
|
$fields=["fields"=>[]];
|
||||||
|
$this->addWidget(-140,$entityPage,-1860,"R1C1",0,"Information Page",true,$fields);
|
||||||
|
|
||||||
|
// Widget Tâche
|
||||||
|
$fields=["fields"=>[]];
|
||||||
|
$this->addWidget(-145,$entityPage,-1800,"R1C1",1,"Taches du groupe",true,$fields);
|
||||||
|
|
||||||
|
// Widget Notre Blog
|
||||||
|
$fields=["fields"=>[["id"=>"nbarticle","value"=>5]]];
|
||||||
|
$this->addWidget(-150,$entityPage,-1890,"R1C2",0,"Notre Blog",false,$fields);
|
||||||
|
|
||||||
|
// Widget Notre Calendrier
|
||||||
|
$fields=["fields"=>[["id"=>"nbday","value"=>30]]];
|
||||||
|
$this->addWidget(-160,$entityPage,-1900,"R1C2R1C1",1,"Notre Calendrier",true,$fields);
|
||||||
|
|
||||||
|
// Chat
|
||||||
|
$fields=["fields"=>[]];
|
||||||
|
$this->addWidget(-170,$entityPage,-1840,"R1C3",0,"Chat",false,$fields);
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
$output->writeln('');
|
$output->writeln('');
|
||||||
|
|
||||||
return Command::SUCCESS;
|
return Command::SUCCESS;
|
||||||
|
|
|
@ -35,27 +35,6 @@ class AlertController extends AbstractController
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function selectlist($access, Request $request, ManagerRegistry $em): Response
|
|
||||||
{
|
|
||||||
$output = [];
|
|
||||||
$page_limit = $request->query->get('page_limit');
|
|
||||||
$q = $request->query->get('q');
|
|
||||||
|
|
||||||
$qb = $em->getManager()->createQueryBuilder();
|
|
||||||
$qb->select('table')->from($this->entity, 'table')
|
|
||||||
->where('table.title LIKE :value')
|
|
||||||
->setParameter('value', '%'.$q.'%')
|
|
||||||
->orderBy('table.title');
|
|
||||||
|
|
||||||
$datas = $qb->setFirstResult(0)->setMaxResults($page_limit)->getQuery()->getResult();
|
|
||||||
foreach ($datas as $data) {
|
|
||||||
array_push($output, ['id' => $data->getId(), 'text' => $data->getLabel()]);
|
|
||||||
}
|
|
||||||
$ret_string['results'] = $output;
|
|
||||||
|
|
||||||
return new JsonResponse($ret_string);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function submit($access, Request $request, ManagerRegistry $em): Response
|
public function submit($access, Request $request, ManagerRegistry $em): Response
|
||||||
{
|
{
|
||||||
// Initialisation de l'enregistrement
|
// Initialisation de l'enregistrement
|
||||||
|
|
|
@ -14,39 +14,42 @@ class BookmarkController extends AbstractController
|
||||||
{
|
{
|
||||||
private $data = 'bookmark';
|
private $data = 'bookmark';
|
||||||
private $entity = "App\Entity\Bookmark";
|
private $entity = "App\Entity\Bookmark";
|
||||||
private $twig = 'bookmark/';
|
private $twig = 'Bookmark/';
|
||||||
private $route = 'app_admin_bookmark';
|
private $route = 'app_admin_bookmark';
|
||||||
|
|
||||||
public function submitAction(Request $request, $idpage, $idwidget, $touser, $access = 'config')
|
public function submit($access, $idpage, $idwidget, $touser, Request $request, ManagerRegistry $em): Response
|
||||||
{
|
{
|
||||||
$usage = $request->query->get('usage');
|
$usage = $request->query->get('usage');
|
||||||
$group = $request->query->get('group');
|
|
||||||
|
|
||||||
// Initialisation de l'enregistrement
|
// Initialisation de l'enregistrement
|
||||||
$em = $this->getDoctrine()->getManager();
|
|
||||||
$data = new Bookmark();
|
$data = new Bookmark();
|
||||||
|
|
||||||
// On s'assure que le widget existe
|
// On s'assure que le widget existe
|
||||||
$pagewidget = null;
|
$pagewidget = null;
|
||||||
if ('false' == $touser) {
|
if ('false' == $touser) {
|
||||||
$pagewidget = $em->getRepository('CadolesPortalBundle:Pagewidget')->find($idwidget);
|
$pagewidget = $em->getRepository('App\Entity\Pagewidget')->find($idwidget);
|
||||||
if (!$pagewidget) {
|
if (!$pagewidget) {
|
||||||
throw $this->createNotFoundException('Unable to find entity.');
|
throw $this->createNotFoundException('Unable to find entity.');
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Vérifier que cet enregistrement est modifiable
|
// Vérifier que cet enregistrement est modifiable
|
||||||
if ('user' == $access) {
|
if ('all' == $access) {
|
||||||
if ('user' == $usage) {
|
if ('user' == $usage) {
|
||||||
$user = $pagewidget->getPage()->getUser();
|
$user = $pagewidget->getPage()->getUser();
|
||||||
if ($user != $this->getUser()) {
|
if ($user != $this->getUser()) {
|
||||||
throw $this->createNotFoundException('Permission denied');
|
throw $this->createNotFoundException('Permission denied');
|
||||||
}
|
}
|
||||||
} elseif ('group' == $usage) {
|
} elseif ('group' == $usage) {
|
||||||
$groupentity = $this->getDoctrine()->getRepository('CadolesCoreBundle:Group')->find($group);
|
$canadd = false;
|
||||||
$usergroup = $this->getDoctrine()->getRepository('CadolesCoreBundle:UserGroup')->findoneby(['user' => $this->getUser(), 'group' => $groupentity]);
|
foreach ($pagewidget->getPage()->getGroups() as $group) {
|
||||||
if (!$usergroup or $usergroup->getRolegroup() < 50) {
|
$usergroup = $em->getRepository('App\Entity\UserGroup')->findoneby(['user' => $this->getUser(), 'group' => $group]);
|
||||||
throw $this->createNotFoundException('Permission denied');
|
if (!$usergroup or $usergroup->getRolegroup() >= 50) {
|
||||||
|
$canadd = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$canadd) {
|
||||||
|
throw $this->createNotFoundException('Permission denied');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,9 +60,6 @@ class BookmarkController extends AbstractController
|
||||||
// Récupération des data du formulaire
|
// Récupération des data du formulaire
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
// Sur erreur
|
|
||||||
$this->getErrorForm(null, $form, $request, $data, 'submit');
|
|
||||||
|
|
||||||
// Sur validation
|
// Sur validation
|
||||||
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
||||||
$data = $form->getData();
|
$data = $form->getData();
|
||||||
|
@ -73,83 +73,76 @@ class BookmarkController extends AbstractController
|
||||||
|
|
||||||
// Icon
|
// Icon
|
||||||
$idicon = $form->get('idicon')->getData();
|
$idicon = $form->get('idicon')->getData();
|
||||||
$icon = $this->getDoctrine()->getRepository('CadolesPortalBundle:Icon')->findoneby(['id' => $idicon]);
|
$icon = $em->getRepository('App\Entity\Icon')->findoneby(['id' => $idicon]);
|
||||||
$data->setIcon($icon);
|
$data->setIcon($icon);
|
||||||
|
|
||||||
// Sauvegarde
|
// Sauvegarde
|
||||||
$em->persist($data);
|
$em->getManager()->persist($data);
|
||||||
$em->flush();
|
$em->getManager()->flush();
|
||||||
|
|
||||||
if ($pagewidget) {
|
|
||||||
foreach ($pagewidget->getPage()->getGroups() as $groupchat) {
|
|
||||||
if ($groupchat->getFgcanshare()) {
|
|
||||||
$message = "Création favoris<br><a href='".$data->getUrl()."' target='_blank'>".$data->getTitle().'</a>';
|
|
||||||
$usergroup = $em->getRepository('CadolesCoreBundle:Usergroup')->findOneBy(['group' => $groupchat, 'user' => $this->getUser()]);
|
|
||||||
if ($usergroup) {
|
|
||||||
$key = $usergroup->getKeyvalue();
|
|
||||||
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key, $this->getUser()->getId(), $groupchat->getId(), $message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Retour à la page
|
// Retour à la page
|
||||||
return $this->redirect($this->generateUrl('cadoles_portal_'.$access.'_page_view', ['id' => $idpage, 'usage' => $usage, 'group' => $group]));
|
return $this->redirect($this->generateUrl('app_'.$access.'_page_'.$usage.'_view', ['id' => $idpage]));
|
||||||
}
|
}
|
||||||
|
|
||||||
$icons = $this->getDoctrine()->getRepository('CadolesPortalBundle:Icon')->findBy(['user' => null]);
|
$icons = $em->getRepository('App\Entity\Icon')->findBy(['user' => null]);
|
||||||
$iconsuser = null;
|
$iconsuser = null;
|
||||||
if ('user' == $access) {
|
if ('all' == $access) {
|
||||||
$iconsuser = $this->getDoctrine()->getRepository('CadolesPortalBundle:Icon')->findBy(['user' => $this->getUser()]);
|
$iconsuser = $em->getRepository('App\Entity\Icon')->findBy(['user' => $this->getUser()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->render($this->labelentity.':edit.html.twig', [
|
return $this->render($this->twig.'edit.html.twig', [
|
||||||
'useheader' => ('config' == $access),
|
'useheader' => ('admin' == $access),
|
||||||
'usemenu' => false,
|
'usemenu' => false,
|
||||||
'usesidebar' => ('config' == $access),
|
'usesidebar' => ('admin' == $access),
|
||||||
'entity' => $data,
|
'entity' => $data,
|
||||||
'icons' => $icons,
|
'icons' => $icons,
|
||||||
'iconsuser' => $iconsuser,
|
'iconsuser' => $iconsuser,
|
||||||
'mode' => 'submit',
|
'mode' => 'submit',
|
||||||
'access' => $access,
|
'access' => $access,
|
||||||
'idpage' => $idpage,
|
'idpage' => $idpage,
|
||||||
|
'idwidget' => $idwidget,
|
||||||
|
'touser' => $touser,
|
||||||
'form' => $form->createView(),
|
'form' => $form->createView(),
|
||||||
'usage' => $usage,
|
'usage' => $usage,
|
||||||
'group' => $group,
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateAction(Request $request, $idpage, $id, $access = 'config')
|
public function update($id, $access, $idpage, $idwidget, $touser, Request $request, ManagerRegistry $em): Response
|
||||||
{
|
{
|
||||||
$usage = $request->query->get('usage');
|
$usage = $request->query->get('usage');
|
||||||
$group = $request->query->get('group');
|
|
||||||
|
|
||||||
// Récupération de l'enregistrement courant
|
// Récupération de l'enregistrement courant
|
||||||
$em = $this->getDoctrine()->getManager();
|
$data = $em->getRepository($this->entity)->find($id);
|
||||||
$data = $this->getData($id);
|
|
||||||
if (!$data) {
|
if (!$data) {
|
||||||
throw $this->createNotFoundException('Unable to find entity.');
|
throw $this->createNotFoundException('Unable to find entity.');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vérifier que cet enregistrement est modifiable
|
// On s'assure que le widget existe
|
||||||
$user = $data->getUser();
|
$pagewidget = null;
|
||||||
if ($user) {
|
if ('false' == $touser) {
|
||||||
if ('user' == $usage) {
|
$pagewidget = $em->getRepository('App\Entity\Pagewidget')->find($idwidget);
|
||||||
if ($user != $this->getUser()) {
|
if (!$pagewidget) {
|
||||||
throw $this->createNotFoundException('Permission denied');
|
throw $this->createNotFoundException('Unable to find entity.');
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} elseif ('user' == $access) {
|
|
||||||
if ('user' == $usage) {
|
// Vérifier que cet enregistrement est modifiable
|
||||||
$user = $data->getPagewidget()->getPage()->getUser();
|
if ('all' == $access) {
|
||||||
if ($user != $this->getUser()) {
|
if ('user' == $usage) {
|
||||||
throw $this->createNotFoundException('Permission denied');
|
$user = $pagewidget->getPage()->getUser();
|
||||||
}
|
if ($user != $this->getUser()) {
|
||||||
} else {
|
throw $this->createNotFoundException('Permission denied');
|
||||||
$groupentity = $this->getDoctrine()->getRepository('CadolesCoreBundle:Group')->find($group);
|
}
|
||||||
$usergroup = $this->getDoctrine()->getRepository('CadolesCoreBundle:UserGroup')->findoneby(['user' => $this->getUser(), 'group' => $groupentity]);
|
} elseif ('group' == $usage) {
|
||||||
if (!$usergroup or $usergroup->getRolegroup() < 50) {
|
$canadd = false;
|
||||||
throw $this->createNotFoundException('Permission denied');
|
foreach ($pagewidget->getPage()->getGroups() as $group) {
|
||||||
|
$usergroup = $em->getRepository('App\Entity\UserGroup')->findoneby(['user' => $this->getUser(), 'group' => $group]);
|
||||||
|
if (!$usergroup or $usergroup->getRolegroup() >= 50) {
|
||||||
|
$canadd = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$canadd) {
|
||||||
|
throw $this->createNotFoundException('Permission denied');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -163,103 +156,92 @@ class BookmarkController extends AbstractController
|
||||||
// Récupération des data du formulaire
|
// Récupération des data du formulaire
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
// Sur erreur
|
|
||||||
$this->getErrorForm($id, $form, $request, $data, 'update');
|
|
||||||
|
|
||||||
// Sur validation
|
// Sur validation
|
||||||
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
||||||
$data = $form->getData();
|
$data = $form->getData();
|
||||||
|
|
||||||
// Icon
|
// Icon
|
||||||
$idicon = $form->get('idicon')->getData();
|
$idicon = $form->get('idicon')->getData();
|
||||||
$icon = $this->getDoctrine()->getRepository('CadolesPortalBundle:Icon')->findoneby(['id' => $idicon]);
|
$icon = $em->getRepository('App\Entity\Icon')->findoneby(['id' => $idicon]);
|
||||||
$data->setIcon($icon);
|
$data->setIcon($icon);
|
||||||
|
|
||||||
// Sauvegarde
|
// Sauvegarde
|
||||||
$em->persist($data);
|
$em->getManager()->flush();
|
||||||
$em->flush();
|
|
||||||
|
|
||||||
$pagewidget = $data->getPagewidget();
|
|
||||||
if ($pagewidget) {
|
|
||||||
foreach ($pagewidget->getPage()->getGroups() as $groupchat) {
|
|
||||||
if ($groupchat->getFgcanshare()) {
|
|
||||||
$message = "Modification favoris<br><a href='".$data->getUrl()."' target='_blank'>".$data->getTitle().'</a>';
|
|
||||||
$usergroup = $em->getRepository('CadolesCoreBundle:Usergroup')->findOneBy(['group' => $groupchat, 'user' => $this->getUser()]);
|
|
||||||
if ($usergroup) {
|
|
||||||
$key = $usergroup->getKeyvalue();
|
|
||||||
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key, $this->getUser()->getId(), $groupchat->getId(), $message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Retour à la page
|
// Retour à la page
|
||||||
return $this->redirect($this->generateUrl('cadoles_portal_'.$access.'_page_view', ['id' => $idpage, 'usage' => $usage, 'group' => $group]));
|
return $this->redirect($this->generateUrl('app_'.$access.'_page_'.$usage.'_view', ['id' => $idpage]));
|
||||||
}
|
}
|
||||||
|
|
||||||
$icons = $this->getDoctrine()->getRepository('CadolesPortalBundle:Icon')->findBy(['user' => null]);
|
$icons = $em->getRepository('App\Entity\Icon')->findBy(['user' => null]);
|
||||||
$iconsuser = null;
|
$iconsuser = null;
|
||||||
if ('user' == $access) {
|
if ('all' == $access) {
|
||||||
$iconsuser = $this->getDoctrine()->getRepository('CadolesPortalBundle:Icon')->findBy(['user' => $this->getUser()]);
|
$iconsuser = $em->getRepository('App\Entity\Icon')->findBy(['user' => $this->getUser()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Affichage du formulaire
|
// Affichage du formulaire
|
||||||
return $this->render($this->labelentity.':edit.html.twig', [
|
return $this->render($this->twig.'edit.html.twig', [
|
||||||
'useheader' => ('config' == $access),
|
'useheader' => ('admin' == $access),
|
||||||
'usemenu' => false,
|
'usemenu' => false,
|
||||||
'usesidebar' => ('config' == $access),
|
'usesidebar' => ('admin' == $access),
|
||||||
'entity' => $data,
|
'entity' => $data,
|
||||||
'icons' => $icons,
|
'icons' => $icons,
|
||||||
'iconsuser' => $iconsuser,
|
'iconsuser' => $iconsuser,
|
||||||
'mode' => 'update',
|
'mode' => 'update',
|
||||||
'access' => $access,
|
'access' => $access,
|
||||||
'idpage' => $idpage,
|
'idpage' => $idpage,
|
||||||
|
'idwidget' => $idwidget,
|
||||||
|
'touser' => $touser,
|
||||||
'form' => $form->createView(),
|
'form' => $form->createView(),
|
||||||
'usage' => $usage,
|
'usage' => $usage,
|
||||||
'group' => $group,
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function deleteAction(Request $request, $idpage, $id, $access = 'config')
|
public function delete($id, $access, $idpage, $idwidget, $touser, Request $request, ManagerRegistry $em): Response
|
||||||
{
|
{
|
||||||
$usage = $request->query->get('usage');
|
$usage = $request->query->get('usage');
|
||||||
$group = $request->query->get('group');
|
|
||||||
|
|
||||||
// Récupération de l'enregistrement courant
|
// Récupération de l'enregistrement courant
|
||||||
$em = $this->getDoctrine()->getManager();
|
$data = $em->getRepository($this->entity)->find($id);
|
||||||
$data = $this->getData($id);
|
|
||||||
if (!$data) {
|
if (!$data) {
|
||||||
throw $this->createNotFoundException('Unable to find entity.');
|
throw $this->createNotFoundException('Unable to find entity.');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vérifier que cet enregistrement est supprimable
|
// On s'assure que le widget existe
|
||||||
$user = $data->getUser();
|
$pagewidget = null;
|
||||||
if ($user) {
|
if ('false' == $touser) {
|
||||||
if ($user != $this->getUser()) {
|
$pagewidget = $em->getRepository('App\Entity\Pagewidget')->find($idwidget);
|
||||||
throw $this->createNotFoundException('Permission denied');
|
if (!$pagewidget) {
|
||||||
|
throw $this->createNotFoundException('Unable to find entity.');
|
||||||
}
|
}
|
||||||
} elseif ('user' == $access) {
|
|
||||||
if ('user' == $usage) {
|
// Vérifier que cet enregistrement est modifiable
|
||||||
$user = $data->getPagewidget()->getPage()->getUser();
|
if ('all' == $access) {
|
||||||
if ($user != $this->getUser()) {
|
if ('user' == $usage) {
|
||||||
throw $this->createNotFoundException('Permission denied');
|
$user = $pagewidget->getPage()->getUser();
|
||||||
}
|
if ($user != $this->getUser()) {
|
||||||
} else {
|
throw $this->createNotFoundException('Permission denied');
|
||||||
$groupentity = $this->getDoctrine()->getRepository('CadolesCoreBundle:Group')->find($group);
|
}
|
||||||
$usergroup = $this->getDoctrine()->getRepository('CadolesCoreBundle:UserGroup')->findoneby(['user' => $this->getUser(), 'group' => $groupentity]);
|
} elseif ('group' == $usage) {
|
||||||
if (!$usergroup or $usergroup->getRolegroup() < 50) {
|
$canadd = false;
|
||||||
throw $this->createNotFoundException('Permission denied');
|
foreach ($pagewidget->getPage()->getGroups() as $group) {
|
||||||
|
$usergroup = $em->getRepository('App\Entity\UserGroup')->findoneby(['user' => $this->getUser(), 'group' => $group]);
|
||||||
|
if (!$usergroup or $usergroup->getRolegroup() >= 50) {
|
||||||
|
$canadd = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$canadd) {
|
||||||
|
throw $this->createNotFoundException('Permission denied');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Supprimer la donnée
|
// Supprimer la donnée
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em->getManager()->remove($data);
|
||||||
$em->remove($data);
|
$em->getManager()->flush();
|
||||||
$em->flush();
|
|
||||||
|
|
||||||
// Retour à la page
|
// Retour à la page
|
||||||
return $this->redirect($this->generateUrl('cadoles_portal_'.$access.'_page_view', ['id' => $idpage, 'usage' => $usage, 'group' => $group]));
|
return $this->redirect($this->generateUrl('app_'.$access.'_page_'.$usage.'_view', ['id' => $idpage]));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function heart(Request $request, ManagerRegistry $em): Response
|
public function heart(Request $request, ManagerRegistry $em): Response
|
||||||
|
@ -295,47 +277,4 @@ class BookmarkController extends AbstractController
|
||||||
|
|
||||||
return new JsonResponse($output);
|
return new JsonResponse($output);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getDatas()
|
|
||||||
{
|
|
||||||
$em = $this->getDoctrine()->getManager();
|
|
||||||
$datas = $em->getRepository($this->labelentity)->findAll();
|
|
||||||
|
|
||||||
return $datas;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getData($id)
|
|
||||||
{
|
|
||||||
$em = $this->getDoctrine()->getManager();
|
|
||||||
$data = $em->getRepository($this->labelentity)->find($id);
|
|
||||||
|
|
||||||
if (!$data) {
|
|
||||||
throw $this->createNotFoundException('Unable to find '.$this->labeldata);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $data;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getErrorForm($id, $form, $request, $data, $mode)
|
|
||||||
{
|
|
||||||
if ($form->get('submit')->isClicked() && 'delete' == $mode) {
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($form->get('submit')->isClicked() && 'submit' == $mode) {
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($form->get('submit')->isClicked() && !$form->isValid()) {
|
|
||||||
$this->get('session')->getFlashBag()->clear();
|
|
||||||
$validator = $this->get('validator');
|
|
||||||
$errors = $validator->validate($data);
|
|
||||||
foreach ($errors as $error) {
|
|
||||||
$request->getSession()->getFlashBag()->add('error', $error->getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
$errors = $form->getErrors();
|
|
||||||
foreach ($errors as $error) {
|
|
||||||
$request->getSession()->getFlashBag()->add('error', $error->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ use App\Form\GroupType as Form;
|
||||||
use Doctrine\Persistence\ManagerRegistry;
|
use Doctrine\Persistence\ManagerRegistry;
|
||||||
use Ramsey\Uuid\Uuid;
|
use Ramsey\Uuid\Uuid;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
|
use Symfony\Component\Form\FormError;
|
||||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
@ -237,10 +238,17 @@ class GroupController extends AbstractController
|
||||||
// Récupération des data du formulaire
|
// Récupération des data du formulaire
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
// Sur validation
|
// Controle
|
||||||
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
||||||
$data = $form->getData();
|
$data = $form->getData();
|
||||||
|
if ($data->isIsworkgroup() && is_null($data->getPagetemplate())) {
|
||||||
|
$form->addError(new FormError('Un groupe de travail doit avoir un modèle de page'));
|
||||||
|
$request->getSession()->getFlashBag()->add('error', 'Un groupe de travail doit avoir un modèle de page');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sur validation
|
||||||
|
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
||||||
// Les groupes opé ne sont pas ouvert
|
// Les groupes opé ne sont pas ouvert
|
||||||
if (!$data->isIsworkgroup()) {
|
if (!$data->isIsworkgroup()) {
|
||||||
$data->setIsopen(false);
|
$data->setIsopen(false);
|
||||||
|
@ -250,6 +258,9 @@ class GroupController extends AbstractController
|
||||||
$em->getManager()->persist($data);
|
$em->getManager()->persist($data);
|
||||||
$em->getManager()->flush();
|
$em->getManager()->flush();
|
||||||
|
|
||||||
|
// S'assurer que le groupe de travail a les elements portail associé
|
||||||
|
$this->ctrlWorkgroup($em, $data, $access);
|
||||||
|
|
||||||
// Retour à la liste
|
// Retour à la liste
|
||||||
return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route));
|
return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route));
|
||||||
}
|
}
|
||||||
|
@ -288,6 +299,15 @@ class GroupController extends AbstractController
|
||||||
// Récupération des data du formulaire
|
// Récupération des data du formulaire
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
|
// Controle
|
||||||
|
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
||||||
|
$data = $form->getData();
|
||||||
|
if ($data->isIsworkgroup() && is_null($data->getPagetemplate())) {
|
||||||
|
$form->addError(new FormError('Un groupe de travail doit avoir un modèle de page'));
|
||||||
|
$request->getSession()->getFlashBag()->add('error', 'Un groupe de travail doit avoir un modèle de page');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Sur validation
|
// Sur validation
|
||||||
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
||||||
$data = $form->getData();
|
$data = $form->getData();
|
||||||
|
@ -299,6 +319,9 @@ class GroupController extends AbstractController
|
||||||
|
|
||||||
$em->getManager()->flush();
|
$em->getManager()->flush();
|
||||||
|
|
||||||
|
// S'assurer que le groupe de travail a les elements portail associé
|
||||||
|
$this->ctrlWorkgroup($em, $data, $access);
|
||||||
|
|
||||||
// Retour à la liste
|
// Retour à la liste
|
||||||
return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route));
|
return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route));
|
||||||
}
|
}
|
||||||
|
@ -342,6 +365,9 @@ class GroupController extends AbstractController
|
||||||
|
|
||||||
public function users($id, $access, Request $request, ManagerRegistry $em)
|
public function users($id, $access, Request $request, ManagerRegistry $em)
|
||||||
{
|
{
|
||||||
|
$idpage = $request->query->get('idpage');
|
||||||
|
$usage = $request->query->get('usage');
|
||||||
|
|
||||||
// Récupération de l'enregistrement courant
|
// Récupération de l'enregistrement courant
|
||||||
$data = $em->getRepository($this->entity)->find($id);
|
$data = $em->getRepository($this->entity)->find($id);
|
||||||
if (!$data) {
|
if (!$data) {
|
||||||
|
@ -358,6 +384,8 @@ class GroupController extends AbstractController
|
||||||
'usesidebar' => ('all' != $access),
|
'usesidebar' => ('all' != $access),
|
||||||
'access' => $access,
|
'access' => $access,
|
||||||
$this->data => $data,
|
$this->data => $data,
|
||||||
|
'idpage' => $idpage,
|
||||||
|
'usage' => $usage,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -953,4 +981,34 @@ class GroupController extends AbstractController
|
||||||
|
|
||||||
return $toreturn;
|
return $toreturn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function ctrlWorkgroup($em, $group, $access)
|
||||||
|
{
|
||||||
|
if ($group->isIsworkgroup()) {
|
||||||
|
// On regarde s'il a au moins une page
|
||||||
|
if ($group->getPages()->isEmpty()) {
|
||||||
|
$page = $em->getRepository("App\Entity\Page")->clonePage(null, $group->getPagetemplate());
|
||||||
|
$group->addPage($page);
|
||||||
|
$page->setName($group->getLabel());
|
||||||
|
if ('all' == $access) {
|
||||||
|
$page->setUser($this->getUser());
|
||||||
|
}
|
||||||
|
|
||||||
|
$em->getManager()->persist($page);
|
||||||
|
$em->getManager()->persist($group);
|
||||||
|
$em->getManager()->flush();
|
||||||
|
}
|
||||||
|
$pages = $group->getPages();
|
||||||
|
if ($pages[0]->getName() != $group->getLabel()) {
|
||||||
|
$pages[0]->setName($group->getLabel());
|
||||||
|
$em->getManager()->persist($pages[0]);
|
||||||
|
$em->getManager()->flush();
|
||||||
|
}
|
||||||
|
foreach ($pages as $page) {
|
||||||
|
$page->setUser($group->getOwner());
|
||||||
|
$em->getManager()->persist($page);
|
||||||
|
$em->getManager()->flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,17 +15,29 @@ class HomeController extends AbstractController
|
||||||
return $this->redirectToRoute('app_login');
|
return $this->redirectToRoute('app_login');
|
||||||
}
|
}
|
||||||
|
|
||||||
$em->getRepository("App\Entity\Item")->getUserItems($this->getUser(), $bookmarks, $items, $itemscategorys);
|
// Récupération de la page encours
|
||||||
|
$id = $request->query->get('id');
|
||||||
|
|
||||||
return $this->render('Home/page.html.twig', [
|
// Calcul des pages de l'utilisateur
|
||||||
'useheader' => true,
|
$em->getRepository("App\Entity\Page")->getPagesUser($this->getUser(), $id, $pagecurrent, $pagesportal, $pagesuser, $groups);
|
||||||
'usemenu' => false,
|
dump($groups);
|
||||||
'usesidebar' => false,
|
|
||||||
'maxsize' => 1000,
|
// si aucune page = page par défaut
|
||||||
'bookmarks' => $bookmarks,
|
if ($pagecurrent) {
|
||||||
'items' => $items,
|
return $this->render('Page/pages.html.twig', [
|
||||||
'itemcategorys' => $itemscategorys,
|
'useheader' => true,
|
||||||
]);
|
'usemenu' => true,
|
||||||
|
'usesidebar' => false,
|
||||||
|
'entity' => $pagecurrent,
|
||||||
|
'access' => 'all',
|
||||||
|
'pagesportal' => $pagesportal,
|
||||||
|
'pagesuser' => $pagesuser,
|
||||||
|
'groups' => $groups,
|
||||||
|
'canadd' => true,
|
||||||
|
'widgetsuser' => $em->getRepository("App\Entity\Widget")->getWidgetAccess('all'),
|
||||||
|
'widgetsgroup' => $em->getRepository("App\Entity\Widget")->getWidgetAccess('group'),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
if (!$this->getUser()) {
|
if (!$this->getUser()) {
|
||||||
return $this->render('Home/home.html.twig', [
|
return $this->render('Home/home.html.twig', [
|
||||||
|
@ -58,21 +70,19 @@ class HomeController extends AbstractController
|
||||||
|
|
||||||
public function homeuser($access): Response
|
public function homeuser($access): Response
|
||||||
{
|
{
|
||||||
return $this->render('Home/home.html.twig', [
|
return $this->render('Page/default.html.twig', [
|
||||||
'useheader' => true,
|
'useheader' => true,
|
||||||
'usemenu' => false,
|
'usemenu' => false,
|
||||||
'usesidebar' => false,
|
'usesidebar' => false,
|
||||||
'maxsize' => 1000,
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function homemaster($access): Response
|
public function homemaster($access): Response
|
||||||
{
|
{
|
||||||
return $this->render('Home/home.html.twig', [
|
return $this->render('Page/default.html.twig', [
|
||||||
'useheader' => true,
|
'useheader' => true,
|
||||||
'usemenu' => false,
|
'usemenu' => false,
|
||||||
'usesidebar' => false,
|
'usesidebar' => false,
|
||||||
'maxsize' => 1000,
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,27 +32,6 @@ class ItemController extends AbstractController
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function selectlist($access, Request $request, ManagerRegistry $em): Response
|
|
||||||
{
|
|
||||||
$output = [];
|
|
||||||
$page_limit = $request->query->get('page_limit');
|
|
||||||
$q = $request->query->get('q');
|
|
||||||
|
|
||||||
$qb = $em->getManager()->createQueryBuilder();
|
|
||||||
$qb->select('table')->from($this->entity, 'table')
|
|
||||||
->where('table.title LIKE :value')
|
|
||||||
->setParameter('value', '%'.$q.'%')
|
|
||||||
->orderBy('table.title');
|
|
||||||
|
|
||||||
$datas = $qb->setFirstResult(0)->setMaxResults($page_limit)->getQuery()->getResult();
|
|
||||||
foreach ($datas as $data) {
|
|
||||||
array_push($output, ['id' => $data->getId(), 'text' => $data->getLabel()]);
|
|
||||||
}
|
|
||||||
$ret_string['results'] = $output;
|
|
||||||
|
|
||||||
return new JsonResponse($ret_string);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function submit($access, Request $request, ManagerRegistry $em): Response
|
public function submit($access, Request $request, ManagerRegistry $em): Response
|
||||||
{
|
{
|
||||||
// Initialisation de l'enregistrement
|
// Initialisation de l'enregistrement
|
||||||
|
|
|
@ -0,0 +1,548 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Controller;
|
||||||
|
|
||||||
|
use App\Entity\Page;
|
||||||
|
use App\Form\PageSubmitType;
|
||||||
|
use App\Form\PageUpdateEditorType;
|
||||||
|
use App\Form\PageUpdateToolType;
|
||||||
|
use App\Form\PageUpdateURLType;
|
||||||
|
use App\Form\PageUpdateWidgetType;
|
||||||
|
use Doctrine\Persistence\ManagerRegistry;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
|
use Symfony\Component\Form\FormError;
|
||||||
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
|
||||||
|
class PageController extends AbstractController
|
||||||
|
{
|
||||||
|
private $data = 'page';
|
||||||
|
private $entity = "App\Entity\Page";
|
||||||
|
private $twig = 'Page/';
|
||||||
|
private $route = 'app_admin_page_usage';
|
||||||
|
|
||||||
|
public function list($access, $usage)
|
||||||
|
{
|
||||||
|
return $this->render($this->twig.'list.html.twig', [
|
||||||
|
'useheader' => true,
|
||||||
|
'usemenu' => false,
|
||||||
|
'usesidebar' => true,
|
||||||
|
'access' => $access,
|
||||||
|
'usage' => $usage,
|
||||||
|
'istemplate' => false,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function tablelist($access, $usage, Request $request, ManagerRegistry $em): Response
|
||||||
|
{
|
||||||
|
$query = $request->query->all();
|
||||||
|
$start = $query['start'];
|
||||||
|
$length = $query['length'];
|
||||||
|
$search = $query['search'];
|
||||||
|
$draw = $query['draw'];
|
||||||
|
$ordercolumn = $query['order'][0]['column'];
|
||||||
|
$orderdir = $query['order'][0]['dir'];
|
||||||
|
$alluser = $query['alluser'];
|
||||||
|
|
||||||
|
// On sauvegarde en session le flag alluser
|
||||||
|
$request->getSession()->set('alluserpage', $alluser);
|
||||||
|
|
||||||
|
// Query de base
|
||||||
|
$qbase = $em->getManager()->createQueryBuilder()->from($this->entity, 'table');
|
||||||
|
$qsearch = $em->getManager()->createQueryBuilder()->from($this->entity, 'table');
|
||||||
|
|
||||||
|
if ('false' == $alluser) {
|
||||||
|
$qbase->where('table.user is null');
|
||||||
|
$qbase->andWhere('table.parentfor is null');
|
||||||
|
$qsearch->where('table.user is null');
|
||||||
|
$qsearch->andWhere('table.parentfor is null');
|
||||||
|
} else {
|
||||||
|
$qbase->from('App:User', 'user')
|
||||||
|
->where('table.user=user');
|
||||||
|
|
||||||
|
$qsearch->from('App:User', 'user')
|
||||||
|
->where('table.user=user');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('false' == $alluser) {
|
||||||
|
$qsearch->andwhere('table.id LIKE :value OR table.name LIKE :value');
|
||||||
|
} else {
|
||||||
|
$qsearch->andWhere('table.id LIKE :value OR table.name LIKE :value OR user.username LIKE :value');
|
||||||
|
}
|
||||||
|
|
||||||
|
$qsearch->setParameter('value', '%'.$search['value'].'%');
|
||||||
|
|
||||||
|
// Nombre total d'enregistrement
|
||||||
|
$total = $qbase->select('COUNT(table)')->getQuery()->getSingleScalarResult();
|
||||||
|
|
||||||
|
// Nombre d'enregistrement filtré
|
||||||
|
if ('' == $search['value']) {
|
||||||
|
$totalf = $total;
|
||||||
|
} else {
|
||||||
|
$totalf = $qsearch->select('COUNT(table)')->getQuery()->getSingleScalarResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parcours des Enregistrement
|
||||||
|
if ('' == $search['value']) {
|
||||||
|
$qb = $qbase->select('table');
|
||||||
|
} else {
|
||||||
|
$qb = $qsearch->select('table');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Order
|
||||||
|
if ($ordercolumn) {
|
||||||
|
switch ($ordercolumn) {
|
||||||
|
case 1:
|
||||||
|
$qb->orderBy('table.roworder', $orderdir);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$qb->orderBy('table.name', $orderdir);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
if ('true' == $alluser) {
|
||||||
|
$qb->orderBy('user.username', $orderdir);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Execution de la requete d'affichage
|
||||||
|
$datas = $qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult();
|
||||||
|
|
||||||
|
// Construction du tableau de retour
|
||||||
|
$output = [
|
||||||
|
'draw' => $draw,
|
||||||
|
'recordsFiltered' => $totalf,
|
||||||
|
'recordsTotal' => $total,
|
||||||
|
'data' => [],
|
||||||
|
];
|
||||||
|
foreach ($datas as $data) {
|
||||||
|
$route = str_replace('_admin_', '_'.$access.'_', $this->route);
|
||||||
|
$route = str_replace('_usage', '_'.$usage, $route);
|
||||||
|
|
||||||
|
$action = '';
|
||||||
|
// $action.="<a href='".$this->generateUrl($route.'_update', array('id'=>$data->getId()))."'><i class='fa fa-file fa-fw'></i></a>";
|
||||||
|
$action .= "<a href='".$this->generateUrl($route.'_update', ['id' => $data->getId()])."'><i class='fa fa-cog fa-fw fa-2x'></i></a>";
|
||||||
|
$action .= "<a href='".$this->generateUrl($route.'_view', ['id' => $data->getId()])."'><i class='fa fa-eye fa-fw fa-2x'></i></a>";
|
||||||
|
$action .= "<a href='".$this->generateUrl($route.'_delete', ['id' => $data->getId()])."' data-method='delete'><i class='fa fa-trash fa-fw fa-2x'></i></a>";
|
||||||
|
|
||||||
|
$user = '';
|
||||||
|
if ($data->getUser()) {
|
||||||
|
$user .= "<img src='".$this->generateUrl('app_minio_image', ['file' => 'avatar/'.$data->getUser()->getAvatar()])."' class='avatar' style='margin:0px 5px 0px 0px;display:inline-block;'>";
|
||||||
|
$user .= $data->getUser()->getUsername();
|
||||||
|
}
|
||||||
|
|
||||||
|
$icon = '';
|
||||||
|
if ($data->getFonticon()) {
|
||||||
|
$icon .= "<i class='".$data->getFonticon()." fa-fw'></i> ";
|
||||||
|
}
|
||||||
|
|
||||||
|
array_push($output['data'], [
|
||||||
|
$action,
|
||||||
|
$data->getRoworder(),
|
||||||
|
$icon.$data->getName(),
|
||||||
|
$data->getPagecategory()->getName(),
|
||||||
|
$user,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retour
|
||||||
|
return new Response(json_encode($output), 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function entityForm(Page $entity, $access, $em)
|
||||||
|
{
|
||||||
|
$route = str_replace('_admin_', '_'.$access.'_', $this->route);
|
||||||
|
|
||||||
|
if ($em->getManager()->contains($entity)) {
|
||||||
|
// Type Tools
|
||||||
|
if ($entity->getPagecategory()->getId() < 0) {
|
||||||
|
return $this->createForm(PageUpdateToolType::class, $entity, [
|
||||||
|
'mode' => 'update',
|
||||||
|
'access' => $access,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Type URL
|
||||||
|
if (1 == $entity->getPagecategory()->getId()) {
|
||||||
|
return $this->createForm(PageUpdateURLType::class, $entity, [
|
||||||
|
'mode' => 'update',
|
||||||
|
'access' => $access,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Type Widget
|
||||||
|
elseif (2 == $entity->getPagecategory()->getId()) {
|
||||||
|
return $this->createForm(PageUpdateWidgetType::class, $entity, [
|
||||||
|
'mode' => 'update',
|
||||||
|
'access' => $access,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Type Editeur
|
||||||
|
elseif (3 == $entity->getPagecategory()->getId()) {
|
||||||
|
return $this->createForm(PageUpdateEditorType::class, $entity, [
|
||||||
|
'mode' => 'update',
|
||||||
|
'access' => $access,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return $this->createForm(PageSubmitType::class, $entity, [
|
||||||
|
'mode' => 'update',
|
||||||
|
'access' => $access,
|
||||||
|
'user' => $this->getUser(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function submit($access, $usage, Request $request, ManagerRegistry $em): Response
|
||||||
|
{
|
||||||
|
$entity = new Page();
|
||||||
|
$entity->setMaxwidth(0);
|
||||||
|
$entity->setRoworder(0);
|
||||||
|
|
||||||
|
$form = $this->entityForm($entity, $access, $em);
|
||||||
|
$form->handleRequest($request);
|
||||||
|
|
||||||
|
// Une page d'usage groupe doit avoir au moins un group de selectionné
|
||||||
|
$datausage = $form->get('usage')->getData();
|
||||||
|
if ('group' == $datausage && $entity->getGroups()->isEmpty()) {
|
||||||
|
$form->addError(new FormError('Vous devez selectionner au minimum un groupe'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sur validation
|
||||||
|
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
||||||
|
if ('all' == $access) {
|
||||||
|
$entity->setUser($this->getUser());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si template on duplique le template
|
||||||
|
if ($entity->getPage()) {
|
||||||
|
$page = $em->getRepository("App\Entity\Page")->clonePage($this->getUser(), $entity->getPage());
|
||||||
|
$page->setName($entity->getName());
|
||||||
|
$page->setRoworder($entity->getRoworder());
|
||||||
|
$page->setMaxwidth($entity->getMaxwidth());
|
||||||
|
foreach ($entity->getGroups() as $group) {
|
||||||
|
$page->addGroup($group);
|
||||||
|
}
|
||||||
|
$em->getManager()->persist($page);
|
||||||
|
$em->getManager()->flush();
|
||||||
|
$route = str_replace('_admin_', '_'.$access.'_', $this->route);
|
||||||
|
$route = str_replace('_usage', '_'.$usage, $route);
|
||||||
|
|
||||||
|
return $this->redirect($this->generateUrl($route.'_update', ['id' => $page->getId()]));
|
||||||
|
} else {
|
||||||
|
$em->getManager()->persist($entity);
|
||||||
|
$em->getManager()->flush();
|
||||||
|
$route = str_replace('_admin_', '_'.$access.'_', $this->route);
|
||||||
|
$route = str_replace('_usage', '_'.$usage, $route);
|
||||||
|
|
||||||
|
return $this->redirect($this->generateUrl($route.'_update', ['id' => $entity->getId()]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->render($this->twig.'submit.html.twig', [
|
||||||
|
'useheader' => true,
|
||||||
|
'usemenu' => false,
|
||||||
|
'usesidebar' => ('admin' == $access),
|
||||||
|
'maxwidth' => ('user' == $access),
|
||||||
|
$this->data => $entity,
|
||||||
|
'mode' => 'submit',
|
||||||
|
'usage' => $usage,
|
||||||
|
'access' => $access,
|
||||||
|
'form' => $form->createView(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update($id, $access, $usage, Request $request, ManagerRegistry $em): Response
|
||||||
|
{
|
||||||
|
$entity = $em->getRepository($this->entity)->find($id);
|
||||||
|
|
||||||
|
if (!$entity) {
|
||||||
|
throw $this->createNotFoundException('Unable to find entity.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// On s'assure que l'utilisateur à la permission de modifier
|
||||||
|
if ('all' == $access) {
|
||||||
|
$em->getRepository($this->entity)->getPermission($this->getUser(), $entity, $cansee, $canupdate, $canadd);
|
||||||
|
if (!$canupdate) {
|
||||||
|
throw $this->createNotFoundException('Permission denied');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Création du formulaire
|
||||||
|
$form = $this->entityForm($entity, $access, $em);
|
||||||
|
$form->handleRequest($request);
|
||||||
|
|
||||||
|
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
||||||
|
$em->getManager()->flush();
|
||||||
|
|
||||||
|
if ('admin' == $access) {
|
||||||
|
$route = str_replace('_admin_', '_'.$access.'_', $this->route);
|
||||||
|
$route = str_replace('_usage', '_'.$usage, $route);
|
||||||
|
|
||||||
|
return $this->redirect($this->generateUrl($route.'_view', ['id' => $id]));
|
||||||
|
} else {
|
||||||
|
return $this->redirect($this->generateUrl('app_home', ['id' => $id]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Type URL
|
||||||
|
if (1 == $entity->getPagecategory()->getId()) {
|
||||||
|
return $this->render($this->twig.'updateurl.html.twig', [
|
||||||
|
'useheader' => true,
|
||||||
|
'usemenu' => false,
|
||||||
|
'usesidebar' => ('admin' == $access),
|
||||||
|
'maxwidth' => ('all' == $access),
|
||||||
|
$this->data => $entity,
|
||||||
|
'access' => $access,
|
||||||
|
'usage' => $usage,
|
||||||
|
'mode' => 'update',
|
||||||
|
'form' => $form->createView(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
// Type Widget
|
||||||
|
elseif (2 == $entity->getPagecategory()->getId()) {
|
||||||
|
return $this->render($this->twig.'updatewidget.html.twig', [
|
||||||
|
'useheader' => true,
|
||||||
|
'usemenu' => false,
|
||||||
|
'usesidebar' => ('admin' == $access),
|
||||||
|
'maxwidth' => ('all' == $access),
|
||||||
|
$this->data => $entity,
|
||||||
|
'access' => $access,
|
||||||
|
'mode' => 'update',
|
||||||
|
'usage' => $usage,
|
||||||
|
'form' => $form->createView(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
// Type Editeur
|
||||||
|
elseif (3 == $entity->getPagecategory()->getId()) {
|
||||||
|
return $this->render($this->twig.'updateeditor.html.twig', [
|
||||||
|
'useheader' => true,
|
||||||
|
'usemenu' => false,
|
||||||
|
'usesidebar' => ('admin' == $access),
|
||||||
|
'maxwidth' => ('all' == $access),
|
||||||
|
$this->data => $entity,
|
||||||
|
'access' => $access,
|
||||||
|
'usage' => $usage,
|
||||||
|
'mode' => 'update',
|
||||||
|
'form' => $form->createView(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function delete($id, $access, $usage, Request $request, ManagerRegistry $em): Response
|
||||||
|
{
|
||||||
|
$data = $em->getRepository($this->entity)->find($id);
|
||||||
|
if (!$data) {
|
||||||
|
throw $this->createNotFoundException('Unable to find entity.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// On s'assure que l'utilisateur à la permission de supprimer
|
||||||
|
if ('all' == $access) {
|
||||||
|
$em->getRepository($this->entity)->getPermission($this->getUser(), $data, $cansee, $canupdate, $canadd);
|
||||||
|
if (!$canupdate) {
|
||||||
|
throw $this->createNotFoundException('Permission denied');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tentative de suppression
|
||||||
|
try {
|
||||||
|
$em->getManager()->remove($data);
|
||||||
|
$em->getManager()->flush();
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$request->getSession()->getFlashBag()->add('error', $e->getMessage());
|
||||||
|
|
||||||
|
return $this->redirectToRoute(str_replace('_admin_', '_'.$access.'_', $this->route).'_update', ['id' => $id]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retour
|
||||||
|
if ('admin' == $access) {
|
||||||
|
$route = str_replace('_admin_', '_'.$access.'_', $this->route);
|
||||||
|
$route = str_replace('_usage', '_'.$usage, $route);
|
||||||
|
|
||||||
|
return $this->redirect($this->generateUrl($route));
|
||||||
|
} else {
|
||||||
|
return $this->redirect($this->generateUrl('app_home'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function order($access, Request $request, ManagerRegistry $em): Response
|
||||||
|
{
|
||||||
|
$output = [];
|
||||||
|
$id = $request->request->get('id');
|
||||||
|
$order = $request->request->get('order');
|
||||||
|
|
||||||
|
$entity = $em->getRepository($this->entity)->find($id);
|
||||||
|
if (!$entity) {
|
||||||
|
throw $this->createNotFoundException('Unable to find entity.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// On s'assure que l'utilisateur à la permission
|
||||||
|
if ('all' == $access) {
|
||||||
|
$em->getRepository($this->entity)->getPermission($this->getUser(), $entity, $cansee, $canupdate, $canadd);
|
||||||
|
if (!$canupdate) {
|
||||||
|
throw $this->createNotFoundException('Permission denied');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$entity->setRoworder($order);
|
||||||
|
$em->getManager()->flush();
|
||||||
|
|
||||||
|
return new JsonResponse($output);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function view($id, $access, $usage, Request $request, ManagerRegistry $em): Response
|
||||||
|
{
|
||||||
|
$entity = $em->getRepository($this->entity)->find($id);
|
||||||
|
if (!$entity) {
|
||||||
|
return $this->redirect($this->generateUrl('app_home'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Permissions
|
||||||
|
if ('admin' == $access) {
|
||||||
|
$canupdate = true;
|
||||||
|
} else {
|
||||||
|
// On s'assure que l'utilisateur à la permission de voir
|
||||||
|
$em->getRepository($this->entity)->getPermission($this->getUser(), $entity, $cansee, $canupdate, $canadd);
|
||||||
|
if (!$cansee) {
|
||||||
|
return $this->redirect($this->generateUrl('app_home'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Type Calendrier
|
||||||
|
if (-100 == $entity->getPageCategory()->getId()) {
|
||||||
|
$entity->setUrl($this->generateUrl('app_user_calendar_view'));
|
||||||
|
|
||||||
|
return $this->render($this->twig.'viewurl.html.twig', [
|
||||||
|
'useheader' => ('admin' == $access),
|
||||||
|
'usemenu' => ('admin' == $access),
|
||||||
|
'usesidebar' => ('admin' == $access),
|
||||||
|
$this->data => $entity,
|
||||||
|
'access' => $access,
|
||||||
|
'canupdate' => $canupdate,
|
||||||
|
'usage' => $usage,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Type Blob
|
||||||
|
if (-90 == $entity->getPageCategory()->getId()) {
|
||||||
|
$entity->setUrl($this->generateUrl('app_user_blog_view'));
|
||||||
|
|
||||||
|
return $this->render($this->twig.'viewurl.html.twig', [
|
||||||
|
'useheader' => ('admin' == $access),
|
||||||
|
'usemenu' => ('admin' == $access),
|
||||||
|
'usesidebar' => ('admin' == $access),
|
||||||
|
$this->data => $entity,
|
||||||
|
'access' => $access,
|
||||||
|
'canupdate' => $canupdate,
|
||||||
|
'usage' => $usage,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Type URL
|
||||||
|
if (1 == $entity->getPageCategory()->getId()) {
|
||||||
|
return $this->render($this->twig.'viewurl.html.twig', [
|
||||||
|
'useheader' => ('admin' == $access),
|
||||||
|
'usemenu' => ('admin' == $access),
|
||||||
|
'usesidebar' => ('admin' == $access),
|
||||||
|
$this->data => $entity,
|
||||||
|
'access' => $access,
|
||||||
|
'canupdate' => $canupdate,
|
||||||
|
'usage' => $usage,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Type Widgets
|
||||||
|
if (2 == $entity->getPageCategory()->getId()) {
|
||||||
|
return $this->render($this->twig.'viewwidget.html.twig', [
|
||||||
|
'useheader' => ('admin' == $access),
|
||||||
|
'usemenu' => ('admin' == $access),
|
||||||
|
'usesidebar' => ('admin' == $access),
|
||||||
|
$this->data => $entity,
|
||||||
|
'access' => $access,
|
||||||
|
'canupdate' => $canupdate,
|
||||||
|
'widgets' => $em->getRepository("App\Entity\Widget")->getWidgetAccess($access, 'config'),
|
||||||
|
'usage' => "$usage",
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
// Type Editeur
|
||||||
|
if (3 == $entity->getPageCategory()->getId()) {
|
||||||
|
return $this->render($this->twig.'vieweditor.html.twig', [
|
||||||
|
'useheader' => ('config' == $access),
|
||||||
|
'usemenu' => ('admin' == $access),
|
||||||
|
'usesidebar' => ('config' == $access),
|
||||||
|
$this->data => $entity,
|
||||||
|
'access' => $access,
|
||||||
|
'canupdate' => $canupdate,
|
||||||
|
'usage' => $usage,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function application($access, Request $request, ManagerRegistry $em): Response
|
||||||
|
{
|
||||||
|
$entity = $em->getRepository($this->entity)->findOneBy(['parentfor' => 'app']);
|
||||||
|
if (!$entity) {
|
||||||
|
return $this->redirect($this->generateUrl('app_home'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$canupdate = false;
|
||||||
|
|
||||||
|
return $this->render($this->twig.'viewwidget.html.twig', [
|
||||||
|
'useheader' => ('admin' == $access),
|
||||||
|
'usemenu' => false,
|
||||||
|
'usesidebar' => ('admin' == $access),
|
||||||
|
$this->data => $entity,
|
||||||
|
'access' => $access,
|
||||||
|
'canupdate' => $canupdate,
|
||||||
|
'mode' => 'view',
|
||||||
|
'widgets' => $em->getRepository('App\Entity\Widget')->getWidgetAccess($access, 'config'),
|
||||||
|
'usage' => 'portal',
|
||||||
|
'selwidget' => null,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getPreference($user, $key, $id, $default)
|
||||||
|
{
|
||||||
|
$preference = $user->getPreference();
|
||||||
|
$return = $default;
|
||||||
|
|
||||||
|
if (is_array($preference)) {
|
||||||
|
if (array_key_exists($key, $preference)) {
|
||||||
|
if (array_key_exists($id, $preference[$key])) {
|
||||||
|
$return = $preference[$key][$id];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function setPreference($user, $key, $id, $value)
|
||||||
|
{
|
||||||
|
$preference = $user->getPreference();
|
||||||
|
$toupdate = false;
|
||||||
|
if (!array_key_exists($key, $preference)) {
|
||||||
|
$toupdate = true;
|
||||||
|
$preference[$key] = [];
|
||||||
|
}
|
||||||
|
if (!array_key_exists($id, $preference[$key])) {
|
||||||
|
$toupdate = true;
|
||||||
|
$preference[$key][$id] = $value;
|
||||||
|
}
|
||||||
|
if ($value && $preference[$key][$id] != $value) {
|
||||||
|
$toupdate = true;
|
||||||
|
$preference[$key][$id] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mise à jour des préferences
|
||||||
|
if ($toupdate) {
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
$user->setPreference($preference);
|
||||||
|
$em->persist($this->getUser());
|
||||||
|
$em->flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,6 +8,7 @@ use App\Form\PageUpdateWidgetType;
|
||||||
use Doctrine\Persistence\ManagerRegistry;
|
use Doctrine\Persistence\ManagerRegistry;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\Form\FormError;
|
use Symfony\Component\Form\FormError;
|
||||||
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
|
||||||
|
@ -16,7 +17,7 @@ class PagetemplateController extends AbstractController
|
||||||
private $data = 'page';
|
private $data = 'page';
|
||||||
private $entity = "App\Entity\Page";
|
private $entity = "App\Entity\Page";
|
||||||
private $twig = 'Pagetemplate/';
|
private $twig = 'Pagetemplate/';
|
||||||
private $route = 'app_admin_pagetemplate';
|
private $route = 'app_admin_page_template';
|
||||||
|
|
||||||
public function list($access): Response
|
public function list($access): Response
|
||||||
{
|
{
|
||||||
|
@ -166,6 +167,7 @@ class PagetemplateController extends AbstractController
|
||||||
$this->data => $data,
|
$this->data => $data,
|
||||||
'mode' => 'submit',
|
'mode' => 'submit',
|
||||||
'access' => $access,
|
'access' => $access,
|
||||||
|
'usage' => 'template',
|
||||||
'form' => $form->createView(),
|
'form' => $form->createView(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -194,7 +196,8 @@ class PagetemplateController extends AbstractController
|
||||||
'usesidebar' => true,
|
'usesidebar' => true,
|
||||||
$this->data => $data,
|
$this->data => $data,
|
||||||
'access' => $access,
|
'access' => $access,
|
||||||
'mode' => 'updatetemplate',
|
'mode' => 'update',
|
||||||
|
'usage' => 'template',
|
||||||
'form' => $form->createView(),
|
'form' => $form->createView(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -220,7 +223,6 @@ class PagetemplateController extends AbstractController
|
||||||
if ($group) {
|
if ($group) {
|
||||||
throw new \Exception('Impossible de supprimer ce modèle, il est utilisé par au moins un groupe');
|
throw new \Exception('Impossible de supprimer ce modèle, il est utilisé par au moins un groupe');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('app' == $data->getParentfor()) {
|
if ('app' == $data->getParentfor()) {
|
||||||
throw new \Exception('Vous ne pouvez pas supprimer un template de type Application');
|
throw new \Exception('Vous ne pouvez pas supprimer un template de type Application');
|
||||||
}
|
}
|
||||||
|
@ -237,36 +239,26 @@ class PagetemplateController extends AbstractController
|
||||||
return $this->redirect($this->generateUrl($this->route));
|
return $this->redirect($this->generateUrl($this->route));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function seleclist(Request $request)
|
public function selectlist($access, Request $request, ManagerRegistry $em): Response
|
||||||
{
|
{
|
||||||
// S'assurer que c'est un appel ajax
|
|
||||||
if (!$request->isXmlHttpRequest()) {
|
|
||||||
return new JsonResponse(['message' => 'Interdit'], 400);
|
|
||||||
}
|
|
||||||
|
|
||||||
$output = [];
|
$output = [];
|
||||||
$em = $this->getDoctrine()->getManager();
|
|
||||||
$page_limit = $request->query->get('page_limit');
|
$page_limit = $request->query->get('page_limit');
|
||||||
$q = $request->query->get('q');
|
$q = $request->query->get('q');
|
||||||
$usage = $request->query->get('usage');
|
|
||||||
|
|
||||||
$qb = $em->createQueryBuilder();
|
$qb = $em->getManager()->createQueryBuilder();
|
||||||
$qb->select('table')->from('App:Page', 'table')
|
$qb->select('table')->from($this->entity, 'table')
|
||||||
->where('table.name LIKE :value')
|
->where('table.name LIKE :value')
|
||||||
->andWhere('table.parentfor=:usage')
|
->andWhere('table.parentfor is not null')
|
||||||
->setParameter('value', '%'.$q.'%')
|
->setParameter('value', '%'.$q.'%')
|
||||||
->setParameter('usage', $usage)
|
|
||||||
->orderBy('table.name');
|
->orderBy('table.name');
|
||||||
|
|
||||||
$datas = $qb->setFirstResult(0)->setMaxResults($page_limit)->getQuery()->getResult();
|
$datas = $qb->setFirstResult(0)->setMaxResults($page_limit)->getQuery()->getResult();
|
||||||
foreach ($datas as $data) {
|
foreach ($datas as $data) {
|
||||||
array_push($output, ['id' => $data->getId(), 'text' => $data->getName()]);
|
array_push($output, ['id' => $data->getId(), 'text' => $data->getName()]);
|
||||||
}
|
}
|
||||||
|
$ret_string['results'] = $output;
|
||||||
|
|
||||||
$response = new Response(json_encode($output));
|
return new JsonResponse($ret_string);
|
||||||
$response->headers->set('Content-Type', 'application/json');
|
|
||||||
|
|
||||||
return $response;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function view($id, $access, Request $request, ManagerRegistry $em): Response
|
public function view($id, $access, Request $request, ManagerRegistry $em): Response
|
||||||
|
@ -279,8 +271,6 @@ class PagetemplateController extends AbstractController
|
||||||
// Permissions
|
// Permissions
|
||||||
$canupdate = true;
|
$canupdate = true;
|
||||||
|
|
||||||
dump($em->getRepository("App\Entity\Widget")->getWidgetAccess($access));
|
|
||||||
|
|
||||||
return $this->render('Page\viewwidget.html.twig', [
|
return $this->render('Page\viewwidget.html.twig', [
|
||||||
'useheader' => true,
|
'useheader' => true,
|
||||||
'usemenu' => true,
|
'usemenu' => true,
|
||||||
|
@ -288,35 +278,9 @@ class PagetemplateController extends AbstractController
|
||||||
$this->data => $data,
|
$this->data => $data,
|
||||||
'access' => $access,
|
'access' => $access,
|
||||||
'canupdate' => $canupdate,
|
'canupdate' => $canupdate,
|
||||||
'mode' => 'viewtemplate',
|
'usage' => 'template',
|
||||||
'widgets' => $em->getRepository("App\Entity\Widget")->getWidgetAccess($access),
|
'widgets' => $em->getRepository("App\Entity\Widget")->getWidgetAccess($access),
|
||||||
'usage' => 'config',
|
|
||||||
'group' => '',
|
'group' => '',
|
||||||
'look' => 'view',
|
|
||||||
'selwidget' => null,
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getErrorForm($id, $form, $request, $data, $mode)
|
|
||||||
{
|
|
||||||
if ($form->get('submit')->isClicked() && 'delete' == $mode) {
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($form->get('submit')->isClicked() && ('submit' == $mode)) {
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($form->get('submit')->isClicked() && !$form->isValid()) {
|
|
||||||
$this->get('session')->getFlashBag()->clear();
|
|
||||||
$validator = $this->get('validator');
|
|
||||||
$errors = $validator->validate($data);
|
|
||||||
foreach ($errors as $error) {
|
|
||||||
$request->getSession()->getFlashBag()->add('error', $error->getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
$errors = $form->getErrors();
|
|
||||||
foreach ($errors as $error) {
|
|
||||||
$request->getSession()->getFlashBag()->add('error', $error->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,6 @@ use GuzzleHttp\Exception\RequestException;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\Filesystem\Filesystem;
|
use Symfony\Component\Filesystem\Filesystem;
|
||||||
use Symfony\Component\Finder\Finder;
|
use Symfony\Component\Finder\Finder;
|
||||||
use Symfony\Component\Form\FormError;
|
|
||||||
use Symfony\Component\HttpFoundation\File\File;
|
use Symfony\Component\HttpFoundation\File\File;
|
||||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
@ -28,9 +27,6 @@ class PagewidgetController extends AbstractController
|
||||||
private $page;
|
private $page;
|
||||||
private $id;
|
private $id;
|
||||||
private $access;
|
private $access;
|
||||||
private $look;
|
|
||||||
private $mini;
|
|
||||||
private $selwidget;
|
|
||||||
private $usage;
|
private $usage;
|
||||||
private $group;
|
private $group;
|
||||||
|
|
||||||
|
@ -55,7 +51,7 @@ class PagewidgetController extends AbstractController
|
||||||
return $results;
|
return $results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function entityForm(ManagerRegistry $em, Pagewidget $entity, $idpage, $id, $access = 'config', $by = 'view')
|
private function entityForm(ManagerRegistry $em, Pagewidget $entity, $idpage, $id, $access)
|
||||||
{
|
{
|
||||||
if ($em->getManager()->contains($entity)) {
|
if ($em->getManager()->contains($entity)) {
|
||||||
$widgettype = $em->getRepository('App\Entity\Pagewidget')->find($id)->getWidget();
|
$widgettype = $em->getRepository('App\Entity\Pagewidget')->find($id)->getWidget();
|
||||||
|
@ -90,12 +86,13 @@ class PagewidgetController extends AbstractController
|
||||||
$entity->setColorbodyback($widgettype->getColorbodyback());
|
$entity->setColorbodyback($widgettype->getColorbodyback());
|
||||||
$entity->setColorbodyfont($widgettype->getColorbodyfont());
|
$entity->setColorbodyfont($widgettype->getColorbodyfont());
|
||||||
$entity->setIcon($widgettype->getIcon());
|
$entity->setIcon($widgettype->getIcon());
|
||||||
|
$entity->setWidget($widgettype);
|
||||||
|
|
||||||
$param = $widgettype->getParameter();
|
$param = $widgettype->getParameter();
|
||||||
|
|
||||||
return $this->createForm(PagewidgetType::class, $entity, [
|
return $this->createForm(PagewidgetType::class, $entity, [
|
||||||
'param' => $param,
|
'param' => $param,
|
||||||
'mode' => ('view' == $by ? 'submit' : 'submittemplate'),
|
'mode' => 'submit',
|
||||||
'access' => $access,
|
'access' => $access,
|
||||||
'idicon' => $widgettype->getIcon()->getId(),
|
'idicon' => $widgettype->getIcon()->getId(),
|
||||||
'method' => 'POST',
|
'method' => 'POST',
|
||||||
|
@ -105,9 +102,10 @@ class PagewidgetController extends AbstractController
|
||||||
|
|
||||||
public function submit($access, $idpage, $idwidgettype, Request $request, ManagerRegistry $em): Response
|
public function submit($access, $idpage, $idwidgettype, Request $request, ManagerRegistry $em): Response
|
||||||
{
|
{
|
||||||
$by = $request->query->get('by');
|
$usage = $request->query->get('usage');
|
||||||
|
|
||||||
$entity = new Pagewidget();
|
$entity = new Pagewidget();
|
||||||
$form = $this->entityForm($em, $entity, $idpage, $idwidgettype, $access, $by);
|
$form = $this->entityForm($em, $entity, $idpage, $idwidgettype, $access, $usage);
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
// On s'assure que la page où l'on souhaite insérer un widget est bien du bon type
|
// On s'assure que la page où l'on souhaite insérer un widget est bien du bon type
|
||||||
|
@ -119,9 +117,6 @@ class PagewidgetController extends AbstractController
|
||||||
throw $this->createNotFoundException('Permission denied');
|
throw $this->createNotFoundException('Permission denied');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sur erreur
|
|
||||||
$this->getErrorForm(null, $form, $request, $idwidgettype, $page, $entity, 'submit');
|
|
||||||
|
|
||||||
// Sur validation
|
// Sur validation
|
||||||
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
||||||
$idicon = $form->get('idicon')->getData();
|
$idicon = $form->get('idicon')->getData();
|
||||||
|
@ -154,24 +149,7 @@ class PagewidgetController extends AbstractController
|
||||||
$em->persist($entity);
|
$em->persist($entity);
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
// Notification création widget
|
return $this->redirect($this->generateUrl('app_'.$access.'_page_'.$usage.'_view', ['id' => $idpage]));
|
||||||
$groups = $page->getGroups();
|
|
||||||
if ($groups[0]) {
|
|
||||||
if ($groups[0]->getFgcanshare()) {
|
|
||||||
$message = 'Création Widget '.$entity->getName();
|
|
||||||
$this->wss->addMessage($this->getuser()->getApikey(), $groups[0]->getId(), $message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('admin' == $access) {
|
|
||||||
if ('view' == $by) {
|
|
||||||
return $this->redirect($this->generateUrl('app_admin_page_view', ['id' => $idpage]));
|
|
||||||
} else {
|
|
||||||
return $this->redirect($this->generateUrl('app_admin_pagetemplate_view', ['id' => $idpage]));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return $this->redirect($this->generateUrl('app_home', ['id' => $idpage]));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$icons = $em->getRepository('App\Entity\Icon')->findBy(['user' => null]);
|
$icons = $em->getRepository('App\Entity\Icon')->findBy(['user' => null]);
|
||||||
|
@ -181,14 +159,14 @@ class PagewidgetController extends AbstractController
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->render($this->twig.'edit.html.twig', [
|
return $this->render($this->twig.'edit.html.twig', [
|
||||||
'useheader' => true,
|
'useheader' => ('admin' == $access),
|
||||||
'usemenu' => false,
|
'usemenu' => false,
|
||||||
'usesidebar' => ('config' == $access),
|
'usesidebar' => ('admin' == $access),
|
||||||
'maxwidth' => ('user' == $access),
|
|
||||||
'entity' => $entity,
|
'entity' => $entity,
|
||||||
'icons' => $icons,
|
'icons' => $icons,
|
||||||
'iconsuser' => $iconsuser,
|
'iconsuser' => $iconsuser,
|
||||||
'mode' => ('view' == $by ? 'submit' : 'submittemplate'),
|
'mode' => 'submit',
|
||||||
|
'usage' => $usage,
|
||||||
'access' => $access,
|
'access' => $access,
|
||||||
'idpage' => $idpage,
|
'idpage' => $idpage,
|
||||||
'form' => $form->createView(),
|
'form' => $form->createView(),
|
||||||
|
@ -197,7 +175,6 @@ class PagewidgetController extends AbstractController
|
||||||
|
|
||||||
public function update($access, $idpage, $idwidget, Request $request, ManagerRegistry $em): Response
|
public function update($access, $idpage, $idwidget, Request $request, ManagerRegistry $em): Response
|
||||||
{
|
{
|
||||||
$by = $request->query->get('by');
|
|
||||||
$usage = $request->query->get('usage');
|
$usage = $request->query->get('usage');
|
||||||
$group = $request->query->get('group');
|
$group = $request->query->get('group');
|
||||||
|
|
||||||
|
@ -216,7 +193,7 @@ class PagewidgetController extends AbstractController
|
||||||
}
|
}
|
||||||
|
|
||||||
// Création du formulaire
|
// Création du formulaire
|
||||||
$form = $this->entityForm($em, $entity, $idpage, $idwidget, $access, $by);
|
$form = $this->entityForm($em, $entity, $idpage, $idwidget, $access);
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
// Validation
|
// Validation
|
||||||
|
@ -250,28 +227,27 @@ class PagewidgetController extends AbstractController
|
||||||
}
|
}
|
||||||
|
|
||||||
// Retour
|
// Retour
|
||||||
if ('view' == $by) {
|
if ($group) {
|
||||||
return $this->redirect($this->generateUrl('app_'.$access.'_page_view', ['id' => $idpage, 'usage' => $usage, 'group' => $group]));
|
return $this->redirect($this->generateUrl('app_'.$access.'_page_'.$usage.'_view', ['id' => $idpage, 'group' => $group]));
|
||||||
} else {
|
} else {
|
||||||
return $this->redirect($this->generateUrl('app_'.$access.'_pagetemplate_view', ['id' => $idpage]));
|
return $this->redirect($this->generateUrl('app_'.$access.'_page_'.$usage.'_view', ['id' => $idpage]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$icons = $em->getRepository('App\Entity\Icon')->findBy(['user' => null]);
|
$icons = $em->getRepository('App\Entity\Icon')->findBy(['user' => null]);
|
||||||
$iconsuser = null;
|
$iconsuser = null;
|
||||||
if ('all' == $access) {
|
if ('all' == $access) {
|
||||||
$iconsuser = $this->getDoctrine()->getRepository('App:Icon')->findBy(['user' => $this->getUser()]);
|
$iconsuser = $em->getRepository('App\Entity\Icon')->findBy(['user' => $this->getUser()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->render($this->twig.'edit.html.twig', [
|
return $this->render($this->twig.'edit.html.twig', [
|
||||||
'useheader' => ('admin' == $access),
|
'useheader' => ('admin' == $access),
|
||||||
'usemenu' => false,
|
'usemenu' => false,
|
||||||
'usesidebar' => ('admin' == $access),
|
'usesidebar' => ('admin' == $access),
|
||||||
'maxwidth' => ('all' == $access),
|
|
||||||
'entity' => $entity,
|
'entity' => $entity,
|
||||||
'icons' => $icons,
|
'icons' => $icons,
|
||||||
'iconsuser' => $iconsuser,
|
'iconsuser' => $iconsuser,
|
||||||
'mode' => ('view' == $by ? 'update' : 'updatetemplate'),
|
'mode' => 'update',
|
||||||
'access' => $access,
|
'access' => $access,
|
||||||
'idpage' => $idpage,
|
'idpage' => $idpage,
|
||||||
'form' => $form->createView(),
|
'form' => $form->createView(),
|
||||||
|
@ -311,19 +287,12 @@ class PagewidgetController extends AbstractController
|
||||||
return new JsonResponse($output);
|
return new JsonResponse($output);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function order(Request $request)
|
public function order($access, Request $request, ManagerRegistry $em): Response
|
||||||
{
|
{
|
||||||
// S'assurer que c'est un appel ajax
|
|
||||||
if (!$request->isXmlHttpRequest()) {
|
|
||||||
return new JsonResponse(['message' => 'Interdit'], 400);
|
|
||||||
}
|
|
||||||
|
|
||||||
$output = [];
|
|
||||||
$idwidget = $request->request->get('idwidget');
|
$idwidget = $request->request->get('idwidget');
|
||||||
$order = $request->request->get('order');
|
$order = $request->request->get('order');
|
||||||
$idloc = $request->request->get('idloc');
|
$idloc = $request->request->get('idloc');
|
||||||
|
|
||||||
$em = $this->getDoctrine()->getManager();
|
|
||||||
$entity = $em->getRepository($this->labelentity)->find($idwidget);
|
$entity = $em->getRepository($this->labelentity)->find($idwidget);
|
||||||
if (!$entity) {
|
if (!$entity) {
|
||||||
throw $this->createNotFoundException('Unable to find entity.');
|
throw $this->createNotFoundException('Unable to find entity.');
|
||||||
|
@ -331,69 +300,9 @@ class PagewidgetController extends AbstractController
|
||||||
|
|
||||||
$entity->setRoworder($order);
|
$entity->setRoworder($order);
|
||||||
$entity->setLoc($idloc);
|
$entity->setLoc($idloc);
|
||||||
$em->persist($entity);
|
$em->getManager()->flush();
|
||||||
$em->flush();
|
|
||||||
|
|
||||||
$response = new Response(json_encode($output));
|
return new JsonResponse([]);
|
||||||
$response->headers->set('Content-Type', 'application/json');
|
|
||||||
|
|
||||||
return $response;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function upload(Request $request, $access = null)
|
|
||||||
{
|
|
||||||
// Fichier temporaire uploadé
|
|
||||||
$tmpfile = $request->files->get('upload');
|
|
||||||
$extention = $tmpfile->getClientOriginalExtension();
|
|
||||||
|
|
||||||
// Répertoire de Destination
|
|
||||||
$fs = new Filesystem();
|
|
||||||
$rootdir = $this->get('kernel')->getRootDir().'/../web';
|
|
||||||
$fs->mkdir($rootdir.'/uploads/ckeditor');
|
|
||||||
|
|
||||||
// Fichier cible
|
|
||||||
$targetName = uniqid().'.'.$extention;
|
|
||||||
$targetFile = $rootdir.'/uploads/ckeditor/'.$targetName;
|
|
||||||
$targetUrl = '/'.$this->getParameter('alias').'/uploads/ckeditor/'.$targetName;
|
|
||||||
$message = '';
|
|
||||||
|
|
||||||
move_uploaded_file($tmpfile, $targetFile);
|
|
||||||
|
|
||||||
$output['uploaded'] = 1;
|
|
||||||
$output['fileName'] = $targetName;
|
|
||||||
$output['url'] = $targetUrl;
|
|
||||||
|
|
||||||
return new Response(json_encode($output));
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getErrorForm($id, $form, $request, $idwidgettype, $page, $data, $mode)
|
|
||||||
{
|
|
||||||
if ($form->get('submit')->isClicked() && 'delete' == $mode) {
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($form->get('submit')->isClicked() && ('submit' == $mode || 'update' == $mode)) {
|
|
||||||
// Interdire l'insertion de 2 chat dans la meme page
|
|
||||||
if (-1840 == $idwidgettype) {
|
|
||||||
$pagewidget = $this->getDoctrine()->getRepository('App\Entity\Pagewidget')->findoneby(['page' => $page, 'widget' => -1840]);
|
|
||||||
if ($pagewidget) {
|
|
||||||
$form->addError(new FormError('Vous ne pouvez pas insérer deux widgets de type Chat dans la même page'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($form->get('submit')->isClicked() && !$form->isValid()) {
|
|
||||||
$this->get('session')->getFlashBag()->clear();
|
|
||||||
$validator = $this->get('validator');
|
|
||||||
$errors = $validator->validate($data);
|
|
||||||
foreach ($errors as $error) {
|
|
||||||
$request->getSession()->getFlashBag()->add('error', $error->getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
$errors = $form->getErrors();
|
|
||||||
foreach ($errors as $error) {
|
|
||||||
$request->getSession()->getFlashBag()->add('error', $error->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function setRequest($em, $request, $id, $access)
|
protected function setRequest($em, $request, $id, $access)
|
||||||
|
@ -402,8 +311,6 @@ class PagewidgetController extends AbstractController
|
||||||
$this->user = $this->getUser();
|
$this->user = $this->getUser();
|
||||||
$this->id = $id;
|
$this->id = $id;
|
||||||
$this->access = $access;
|
$this->access = $access;
|
||||||
$this->look = $request->query->get('look');
|
|
||||||
$this->selwidget = $request->query->get('selwidget');
|
|
||||||
$this->usage = $request->query->get('usage');
|
$this->usage = $request->query->get('usage');
|
||||||
$this->group = $request->query->get('group');
|
$this->group = $request->query->get('group');
|
||||||
|
|
||||||
|
@ -416,6 +323,7 @@ class PagewidgetController extends AbstractController
|
||||||
// Permissions
|
// Permissions
|
||||||
if ('admin' == $this->access) {
|
if ('admin' == $this->access) {
|
||||||
$this->canupdate = true;
|
$this->canupdate = true;
|
||||||
|
$this->canadd = true;
|
||||||
} else {
|
} else {
|
||||||
// On s'assure que l'utilisateur à la permission de voir
|
// On s'assure que l'utilisateur à la permission de voir
|
||||||
$this->page = $this->entity->getPage();
|
$this->page = $this->entity->getPage();
|
||||||
|
@ -425,27 +333,18 @@ class PagewidgetController extends AbstractController
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Affichage miniature ?
|
$this->getPreference($this->entity);
|
||||||
$this->mini = ('list' == $this->look && $this->entity->getId() != $this->selwidget);
|
|
||||||
|
|
||||||
// Préference utilisateur
|
|
||||||
if (!$this->mini) {
|
|
||||||
$this->getPreference($this->entity);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getPreference(&$entity)
|
protected function getPreference(&$entity)
|
||||||
{
|
{
|
||||||
$user = $this->getUser();
|
$user = $this->getUser();
|
||||||
if ($user) {
|
if ($user) {
|
||||||
$preference = $user->getPreference();
|
if ($entity->isViewheader()) {
|
||||||
$id = $entity->getId();
|
$preference = $user->getPreference();
|
||||||
|
$id = $entity->getId();
|
||||||
|
|
||||||
// Preference widgetshowhide
|
// Preference widgetshowhide
|
||||||
if ('list' == $this->look) {
|
|
||||||
$entity->setOpened(true);
|
|
||||||
$entity->setBorder(false);
|
|
||||||
} else {
|
|
||||||
if (is_array($preference)) {
|
if (is_array($preference)) {
|
||||||
if (array_key_exists('widgetshowhide', $preference)) {
|
if (array_key_exists('widgetshowhide', $preference)) {
|
||||||
if (array_key_exists($id, $preference['widgetshowhide'])) {
|
if (array_key_exists($id, $preference['widgetshowhide'])) {
|
||||||
|
@ -489,8 +388,6 @@ class PagewidgetController extends AbstractController
|
||||||
'entity' => $this->entity,
|
'entity' => $this->entity,
|
||||||
'canupdate' => $this->canupdate,
|
'canupdate' => $this->canupdate,
|
||||||
'access' => $this->access,
|
'access' => $this->access,
|
||||||
'look' => $this->look,
|
|
||||||
'mini' => $this->mini,
|
|
||||||
];
|
];
|
||||||
|
|
||||||
// Parametres spéficiques
|
// Parametres spéficiques
|
||||||
|
@ -500,51 +397,48 @@ class PagewidgetController extends AbstractController
|
||||||
return $this->render($this->twig.'\\'.$view, $params);
|
return $this->render($this->twig.'\\'.$view, $params);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function viewurl($id, $access, Request $request)
|
public function viewurl($access, $id, Request $request, ManagerRegistry $em)
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
// Valeur par défaut
|
// Valeur par défaut
|
||||||
$url = '';
|
$url = '';
|
||||||
$imagemedia = false;
|
$imagemedia = false;
|
||||||
|
|
||||||
// Datas associées au widget
|
// Récupération des paramétres du widget
|
||||||
if (!$this->mini) {
|
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
||||||
// Récupération des paramétres du widget
|
if ('url' == $parameter['id']) {
|
||||||
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
$url = $parameter['value'];
|
||||||
if ('url' == $parameter['id']) {
|
|
||||||
$url = $parameter['value'];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Gestion des url youtuve
|
// Gestion des url youtuve
|
||||||
$url = str_replace('http://www.youtube.com', 'https://www.youtube.com', $url);
|
$url = str_replace('http://www.youtube.com', 'https://www.youtube.com', $url);
|
||||||
$url = str_replace('https://www.youtube.com/watch?v=', 'https://www.youtube.com/embed/', $url);
|
$url = str_replace('https://www.youtube.com/watch?v=', 'https://www.youtube.com/embed/', $url);
|
||||||
|
|
||||||
// Detecter le type de lien
|
// Detecter le type de lien
|
||||||
$pathinfo = pathinfo($url);
|
$pathinfo = pathinfo($url);
|
||||||
|
|
||||||
// Type image
|
// Type image
|
||||||
if (array_key_exists('extension', $pathinfo)) {
|
if (array_key_exists('extension', $pathinfo)) {
|
||||||
if ('jpg' == $pathinfo['extension'] || 'gif' == $pathinfo['extension'] || 'png' == $pathinfo['extension']) {
|
if ('jpg' == $pathinfo['extension'] || 'gif' == $pathinfo['extension'] || 'png' == $pathinfo['extension']) {
|
||||||
$imagemedia = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Si url classique on igonore l'usage de la sonde dnma
|
|
||||||
else {
|
|
||||||
if (false === stripos($url, '?')) {
|
|
||||||
$url .= '?notsondednma=true';
|
|
||||||
} else {
|
|
||||||
$url .= '¬sondednma=true';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Spécifique Deviant Art
|
|
||||||
if (false !== strpos($url, 'images-wixmp')) {
|
|
||||||
$imagemedia = true;
|
$imagemedia = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Si url classique on igonore l'usage de la sonde dnma
|
||||||
|
else {
|
||||||
|
if (false === stripos($url, '?')) {
|
||||||
|
$url .= '?notsondednma=true';
|
||||||
|
} else {
|
||||||
|
$url .= '¬sondednma=true';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spécifique Deviant Art
|
||||||
|
if (false !== strpos($url, 'images-wixmp')) {
|
||||||
|
$imagemedia = true;
|
||||||
|
}
|
||||||
|
|
||||||
return $this->getRender('viewurl.html.twig', [
|
return $this->getRender('viewurl.html.twig', [
|
||||||
'url' => $url,
|
'url' => $url,
|
||||||
|
@ -552,48 +446,45 @@ class PagewidgetController extends AbstractController
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function viewurlfixe(Request $request, $id, $access = 'config')
|
public function viewurlfixe($access, $id, Request $request, ManagerRegistry $em)
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
// Valeur par défaut
|
// Valeur par défaut
|
||||||
$url = '';
|
$url = '';
|
||||||
$imagemedia = false;
|
$imagemedia = false;
|
||||||
|
|
||||||
// Datas associées au widget
|
// Récupération des paramétres du widget
|
||||||
if (!$this->mini) {
|
$widgettype = $this->entity->getWidget();
|
||||||
// Récupération des paramétres du widget
|
$jsons = $widgettype->getParameter();
|
||||||
$widgettype = $this->entity->getWidget();
|
$param = [];
|
||||||
$jsons = $widgettype->getParameter();
|
$param['fields'] = [];
|
||||||
$param = [];
|
foreach ($jsons->fields as $field) {
|
||||||
$param['fields'] = [];
|
if ('url' == $field->id) {
|
||||||
foreach ($jsons->fields as $field) {
|
$url = $field->value;
|
||||||
if ('url' == $field->id) {
|
|
||||||
$url = $field->value;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Gestion des url youtuve
|
// Gestion des url youtuve
|
||||||
$url = str_replace('http://www.youtube.com', 'https://www.youtube.com', $url);
|
$url = str_replace('http://www.youtube.com', 'https://www.youtube.com', $url);
|
||||||
$url = str_replace('https://www.youtube.com/watch?v=', 'https://www.youtube.com/embed/', $url);
|
$url = str_replace('https://www.youtube.com/watch?v=', 'https://www.youtube.com/embed/', $url);
|
||||||
|
|
||||||
// Detecter le type de lien
|
// Detecter le type de lien
|
||||||
$pathinfo = pathinfo($url);
|
$pathinfo = pathinfo($url);
|
||||||
|
|
||||||
// Type image
|
// Type image
|
||||||
if (array_key_exists('extension', $pathinfo)) {
|
if (array_key_exists('extension', $pathinfo)) {
|
||||||
if ('jpg' == $pathinfo['extension'] || 'gif' == $pathinfo['extension'] || 'png' == $pathinfo['extension']) {
|
if ('jpg' == $pathinfo['extension'] || 'gif' == $pathinfo['extension'] || 'png' == $pathinfo['extension']) {
|
||||||
$imagemedia = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Spécifique Deviant Art
|
|
||||||
if (false !== strpos($url, 'images-wixmp')) {
|
|
||||||
$imagemedia = true;
|
$imagemedia = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Spécifique Deviant Art
|
||||||
|
if (false !== strpos($url, 'images-wixmp')) {
|
||||||
|
$imagemedia = true;
|
||||||
|
}
|
||||||
|
|
||||||
return $this->getRender('viewurl.html.twig', [
|
return $this->getRender('viewurl.html.twig', [
|
||||||
'url' => $url,
|
'url' => $url,
|
||||||
'imagemedia' => $imagemedia,
|
'imagemedia' => $imagemedia,
|
||||||
|
@ -615,45 +506,42 @@ class PagewidgetController extends AbstractController
|
||||||
$itemsordered = null;
|
$itemsordered = null;
|
||||||
$itemcategorys = null;
|
$itemcategorys = null;
|
||||||
|
|
||||||
// Datas associées au widget
|
// Récupération des paramétres du widget
|
||||||
if (!$this->mini) {
|
$iditemcategory = null;
|
||||||
// Récupération des paramétres du widget
|
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
||||||
$iditemcategory = null;
|
switch ($parameter['id']) {
|
||||||
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
case 'modedesktop':
|
||||||
switch ($parameter['id']) {
|
$modedesktop = $parameter['value'];
|
||||||
case 'modedesktop':
|
break;
|
||||||
$modedesktop = $parameter['value'];
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'withbookmark':
|
case 'withbookmark':
|
||||||
$withbookmark = $parameter['value'];
|
$withbookmark = $parameter['value'];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'itemcategory':
|
case 'itemcategory':
|
||||||
$iditemcategory = $parameter['value'];
|
$iditemcategory = $parameter['value'];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'search':
|
case 'search':
|
||||||
$search = (1 == $parameter['value']);
|
$search = (1 == $parameter['value']);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'menu':
|
case 'menu':
|
||||||
$menu = (1 == $parameter['value']);
|
$menu = (1 == $parameter['value']);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'menuall':
|
case 'menuall':
|
||||||
$menuall = (1 == $parameter['value']);
|
$menuall = (1 == $parameter['value']);
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Préference utilisateur
|
|
||||||
$modedesktop = $this->getKeyPreference($this->entity, 'modedesktop', $modedesktop);
|
|
||||||
|
|
||||||
// Profilage
|
|
||||||
$this->em->getRepository('App\Entity\Item')->getUserItems($this->user, $bookmarks, $items, $itemcategorys, $iditemcategory, $withbookmark, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Préference utilisateur
|
||||||
|
$modedesktop = $this->getKeyPreference($this->entity, 'modedesktop', $modedesktop);
|
||||||
|
|
||||||
|
// Profilage
|
||||||
|
$this->em->getRepository('App\Entity\Item')->getUserItems($this->user, $bookmarks, $items, $itemcategorys, $iditemcategory, $withbookmark, false);
|
||||||
|
|
||||||
// Render
|
// Render
|
||||||
return $this->getRender('viewitem.html.twig', [
|
return $this->getRender('viewitem.html.twig', [
|
||||||
'canadd' => $this->user,
|
'canadd' => $this->user,
|
||||||
|
@ -668,71 +556,65 @@ class PagewidgetController extends AbstractController
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function viewitemessential(Request $request, $id, $access = 'config')
|
public function viewitemessential($access, $id, Request $request, ManagerRegistry $em)
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
// Valeur par défaut
|
// Valeur par défaut
|
||||||
$modedesktop = 0;
|
$modedesktop = 0;
|
||||||
$itemsordered = null;
|
$itemsordered = null;
|
||||||
$bookmarks = null;
|
$bookmarks = null;
|
||||||
|
|
||||||
// Datas associées au widget
|
// Récupération des paramétres du widget
|
||||||
if (!$this->mini) {
|
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
||||||
// Récupération des paramétres du widget
|
switch ($parameter['id']) {
|
||||||
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
case 'modedesktop':
|
||||||
switch ($parameter['id']) {
|
$modedesktop = $parameter['value'];
|
||||||
case 'modedesktop':
|
break;
|
||||||
$modedesktop = $parameter['value'];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Préference utilisateur
|
|
||||||
$modedesktop = $this->getKeyPreference($this->entity, 'modedesktop', $modedesktop);
|
|
||||||
|
|
||||||
// Profilage
|
|
||||||
$itemsordered = $this->em->getRepository('App:Item')->getUserItems($this->user, $bookmarks, $items, $itemcategorys, null, $this->get('session')->get('ssoitems'), 0, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Préference utilisateur
|
||||||
|
$modedesktop = $this->getKeyPreference($this->entity, 'modedesktop', $modedesktop);
|
||||||
|
|
||||||
|
// Profilage
|
||||||
|
$em->getRepository('App\Entity\Item')->getUserItems($this->user, $bookmarks, $items, $itemcategorys, null, 0, true);
|
||||||
|
|
||||||
// Render
|
// Render
|
||||||
return $this->getRender('viewitemessential.html.twig', [
|
return $this->getRender('viewitemessential.html.twig', [
|
||||||
'canadd' => $this->user,
|
'canadd' => $this->user,
|
||||||
'modedesktop' => $modedesktop,
|
'modedesktop' => $modedesktop,
|
||||||
'items' => $itemsordered,
|
'items' => $items,
|
||||||
'bookmarks' => $bookmarks,
|
'bookmarks' => $bookmarks,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function viewalert(Request $request, $id, $access = 'config')
|
public function viewalert($id, $access, Request $request, ManagerRegistry $em)
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
// Valeur par défaut
|
// Valeur par défaut
|
||||||
$alertsordered = null;
|
$alertsordered = null;
|
||||||
|
|
||||||
// Datas associées au widget
|
// Récupération des paramétres du widget
|
||||||
if (!$this->mini) {
|
$idalertcategory = null;
|
||||||
// Récupération des paramétres du widget
|
$alertcategoryfilter = null;
|
||||||
$idalertcategory = null;
|
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
||||||
$alertcategoryfilter = null;
|
switch ($parameter['id']) {
|
||||||
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
case 'alertcategory':
|
||||||
switch ($parameter['id']) {
|
$idalertcategory = $parameter['value'];
|
||||||
case 'alertcategory':
|
if ($idalertcategory) {
|
||||||
$idalertcategory = $parameter['value'];
|
$alertcategoryfilter = $this->em->getRepository('App:Alertcategory')->find($idalertcategory);
|
||||||
if ($idalertcategory) {
|
}
|
||||||
$alertcategoryfilter = $this->em->getRepository('App:Alertcategory')->find($idalertcategory);
|
break;
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Profilage
|
|
||||||
$alertsordered = $this->em->getRepository('App:Alert')->getUserAlerts($this->user, $idalertcategory, $alertcategoryfilter, $this->get('session')->get('ssoitems'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Profilage
|
||||||
|
$alertsordered = $this->em->getRepository('App\Entity\Alert')->getUserAlerts($this->user, $idalertcategory, $alertcategoryfilter);
|
||||||
|
|
||||||
// Render
|
// Render
|
||||||
return $this->getRender('viewalert.html.twig', [
|
return $this->getRender('viewalert.html.twig', [
|
||||||
'alerts' => $alertsordered,
|
'alerts' => $alertsordered,
|
||||||
|
@ -742,261 +624,44 @@ class PagewidgetController extends AbstractController
|
||||||
public function viewflux(Request $request, $id, $access = 'config')
|
public function viewflux(Request $request, $id, $access = 'config')
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
// Valeur par défaut
|
// Valeur par défaut
|
||||||
$modelist = 0;
|
$modelist = 0;
|
||||||
$fluxsordered = null;
|
$fluxsordered = null;
|
||||||
$feeds = null;
|
$feeds = null;
|
||||||
|
|
||||||
// Datas associées au widget
|
// Récupération des paramétres du widget
|
||||||
if (!$this->mini) {
|
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
||||||
// Récupération des paramétres du widget
|
switch ($parameter['id']) {
|
||||||
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
case 'modelist':
|
||||||
switch ($parameter['id']) {
|
$modelist = $parameter['value'];
|
||||||
case 'modelist':
|
break;
|
||||||
$modelist = $parameter['value'];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Profilage
|
|
||||||
$fluxs = $this->em->getRepository('App:Flux')->getUserFluxs($this->user);
|
|
||||||
|
|
||||||
$feeds = [];
|
|
||||||
$filesystem = new Filesystem();
|
|
||||||
|
|
||||||
// Généraltion du cache associés aux flux
|
|
||||||
foreach ($fluxs as $keyflux => $flux) {
|
|
||||||
// On regarde si le flux a été lu il y a peu
|
|
||||||
$toregen = true;
|
|
||||||
$url = $flux->getUrl();
|
|
||||||
|
|
||||||
// Feed lié à un user interne
|
|
||||||
$filecache = 'uploads/flux/flux-'.$flux->getId().'.txt';
|
|
||||||
if (false !== stripos($url, '##userid##')) {
|
|
||||||
if ($user) {
|
|
||||||
$url = str_replace('##userid##', $user->getId(), $url);
|
|
||||||
$filecache = $filecache = 'uploads/flux/flux-'.$user->getId().'-'.$flux->getId().'.txt';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Si le fichie cache existe
|
|
||||||
if ($filesystem->exists($filecache)) {
|
|
||||||
// On récupère la date de modification du fichier
|
|
||||||
$timestampfile = filemtime($filecache);
|
|
||||||
$datetimeFormat = 'Y-m-d H:i:s';
|
|
||||||
$datefile = new \DateTime();
|
|
||||||
$datefile->setTimestamp($timestampfile);
|
|
||||||
|
|
||||||
// On ajoute 30mn
|
|
||||||
$datefile->add(new \DateInterval('PT30M'));
|
|
||||||
|
|
||||||
// Si la date est inférieur à maintenant on regénère le flux
|
|
||||||
$now = new \DateTime();
|
|
||||||
if ($datefile >= $now) {
|
|
||||||
$toregen = false;
|
|
||||||
$backup = unserialize(file_get_contents($filecache));
|
|
||||||
$feeds = array_merge($feeds, $backup);
|
|
||||||
if (empty($backup)) {
|
|
||||||
unset($fluxs[$keyflux]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Si le fichier est trop ancien on relit le flus
|
|
||||||
if ($toregen) {
|
|
||||||
$PROXYactivate = $this->em->getRepository('App:Config')->find('PROXYactivate')->getValue();
|
|
||||||
$weburl = $this->getParameter('weburl');
|
|
||||||
|
|
||||||
if (0 == stripos($url, '/')) {
|
|
||||||
$url = 'https://'.$weburl.$url;
|
|
||||||
$PROXYactivate = false;
|
|
||||||
}
|
|
||||||
if (0 === stripos($url, 'https://'.$weburl)) {
|
|
||||||
$PROXYactivate = false;
|
|
||||||
}
|
|
||||||
if (0 === stripos($url, 'http://'.$weburl)) {
|
|
||||||
$PROXYactivate = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($PROXYactivate) {
|
|
||||||
$PROXYserver = $this->em->getRepository('App:Config')->find('PROXYserver')->getValue();
|
|
||||||
$PROXYport = $this->em->getRepository('App:Config')->find('PROXYport')->getValue();
|
|
||||||
$clientguzzle = new \GuzzleHttp\Client(['timeout' => 3, 'verify' => false, 'proxy' => ['http' => 'http://'.$PROXYserver.':'.$PROXYport, 'https' => 'http://'.$PROXYserver.':'.$PROXYport]]);
|
|
||||||
} else {
|
|
||||||
$clientguzzle = new \GuzzleHttp\Client(['timeout' => 3, 'verify' => false]);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
$clientguzzle->request('GET', $url);
|
|
||||||
} catch (RequestException $e) {
|
|
||||||
if ($e->hasResponse()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// On lit le flux rss
|
|
||||||
$client = new \FeedIo\Adapter\Guzzle\Client($clientguzzle);
|
|
||||||
$logger = new \Psr\Log\NullLogger();
|
|
||||||
$feedIo = new \FeedIo\FeedIo($client, $logger);
|
|
||||||
|
|
||||||
try {
|
|
||||||
$result = $feedIo->read($url);
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
$result = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($result) {
|
|
||||||
$feedtitle = $result->getFeed()->getTitle();
|
|
||||||
|
|
||||||
$backup = [];
|
|
||||||
|
|
||||||
// Pour chaque articles
|
|
||||||
$nbflux = 0;
|
|
||||||
foreach ($result->getFeed() as $item) {
|
|
||||||
$title = $item->getTitle();
|
|
||||||
$link = $item->getLink();
|
|
||||||
$description = substr(strip_tags($item->getDescription()), 0, 250);
|
|
||||||
$description = str_replace('¶', '', $description);
|
|
||||||
$date = $item->getLastModified();
|
|
||||||
$dateformat = ($date ? $item->getLastModified()->format('d/m/Y H:i:s') : '');
|
|
||||||
$content = $item->getDescription();
|
|
||||||
$media = $item->getMedias();
|
|
||||||
$mediaurl = '';
|
|
||||||
|
|
||||||
foreach ($item->getMedias() as $itemMedia) {
|
|
||||||
if ('image/jpeg' == $itemMedia->getType()) {
|
|
||||||
$mediaurl = $itemMedia->getUrl();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($item->getAllElements() as $element) {
|
|
||||||
if ('content:encoded' == $element->getName()) {
|
|
||||||
$content = $element->getValue();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('' != $mediaurl) {
|
|
||||||
$imgurl = $mediaurl;
|
|
||||||
} else {
|
|
||||||
// Récupérer la première image du contenu
|
|
||||||
$imgcontent = '';
|
|
||||||
$imgurl = '';
|
|
||||||
$imgstart = stripos($content, '<img');
|
|
||||||
if (false !== $imgstart) {
|
|
||||||
$imgend = stripos($content, '>', $imgstart);
|
|
||||||
$imgcontent = substr($content, $imgstart, $imgend - $imgstart + 1);
|
|
||||||
|
|
||||||
$imgstart = stripos($imgcontent, 'src=');
|
|
||||||
$imgurl = substr($imgcontent, $imgstart + 5);
|
|
||||||
$imgend = stripos($imgurl, '"');
|
|
||||||
|
|
||||||
if (false === $imgend) {
|
|
||||||
$imgend = stripos($imgurl, "'");
|
|
||||||
}
|
|
||||||
$imgurl = substr($imgurl, 0, $imgend);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Garder le flux
|
|
||||||
$tmp = [
|
|
||||||
'feedtitle' => $feedtitle,
|
|
||||||
'title' => $title,
|
|
||||||
'link' => $link,
|
|
||||||
'description' => $description,
|
|
||||||
'date' => $date,
|
|
||||||
'dateformat' => $dateformat,
|
|
||||||
'content' => $content,
|
|
||||||
'image' => $imgurl,
|
|
||||||
'color' => $flux->getColor(),
|
|
||||||
'fluxid' => $flux->getId(),
|
|
||||||
'fluxtitle' => $flux->getTitle(),
|
|
||||||
];
|
|
||||||
|
|
||||||
array_push($feeds, $tmp);
|
|
||||||
array_push($backup, $tmp);
|
|
||||||
|
|
||||||
++$nbflux;
|
|
||||||
if ($nbflux >= $flux->getMaxread() && $flux->getMaxread() > 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (0 == $nbflux) {
|
|
||||||
unset($fluxs[$keyflux]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// On sauvegarde le résultat en fichier on rechargera son contenu que s'il n'a pas été lu depuis 30mn
|
|
||||||
$filesystem->dumpFile($filecache, serialize($backup));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Trie des fluxs
|
|
||||||
$fluxsordered = $fluxs->getIterator();
|
|
||||||
$fluxsordered->uasort(function ($first, $second) {
|
|
||||||
return (int) $first->getRowOrder() > (int) $second->getRowOrder() ? 1 : -1;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Trie des feeds
|
|
||||||
$libelle = [];
|
|
||||||
foreach ($feeds as $key => $valeur) {
|
|
||||||
$libelle[$key] = $valeur['date'];
|
|
||||||
}
|
|
||||||
array_multisort($libelle, SORT_DESC, $feeds);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Render
|
// Profilage
|
||||||
return $this->getRender('viewflux.html.twig', [
|
$fluxs = $this->em->getRepository('App:Flux')->getUserFluxs($this->user);
|
||||||
'modelist' => $modelist,
|
|
||||||
'fluxs' => $fluxsordered,
|
|
||||||
'feeds' => $feeds,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function viewrss(Request $request, $id, $access = 'config')
|
$feeds = [];
|
||||||
{
|
$filesystem = new Filesystem();
|
||||||
// Récupération de la requete
|
|
||||||
$this->setRequest($request, $id, $access);
|
|
||||||
|
|
||||||
// Valeur par défaut
|
|
||||||
$modelist = 0;
|
|
||||||
$fluxs = ['id' => 0];
|
|
||||||
$feeds = null;
|
|
||||||
|
|
||||||
// Datas associées au widget
|
|
||||||
if (!$this->mini) {
|
|
||||||
// Récupération des paramétres du widget
|
|
||||||
$url = '';
|
|
||||||
$nbarticle = '_blank';
|
|
||||||
$modelist = 0;
|
|
||||||
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
|
||||||
switch ($parameter['id']) {
|
|
||||||
case 'url':
|
|
||||||
$url = $parameter['value'];
|
|
||||||
break;
|
|
||||||
case 'nbarticle':
|
|
||||||
$nbarticle = $parameter['value'];
|
|
||||||
break;
|
|
||||||
case 'modelist':
|
|
||||||
$modelist = $parameter['value'];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// Généraltion du cache associés aux flux
|
||||||
|
foreach ($fluxs as $keyflux => $flux) {
|
||||||
// On regarde si le flux a été lu il y a peu
|
// On regarde si le flux a été lu il y a peu
|
||||||
$toregen = true;
|
$toregen = true;
|
||||||
$filecache = $filecache = 'uploads/flux/widget-'.$id.'.txt';
|
$url = $flux->getUrl();
|
||||||
$user = $this->getUser();
|
|
||||||
|
// Feed lié à un user interne
|
||||||
|
$filecache = 'uploads/flux/flux-'.$flux->getId().'.txt';
|
||||||
if (false !== stripos($url, '##userid##')) {
|
if (false !== stripos($url, '##userid##')) {
|
||||||
if ($user) {
|
if ($user) {
|
||||||
$url = str_replace('##userid##', $user->getId(), $url);
|
$url = str_replace('##userid##', $user->getId(), $url);
|
||||||
$filecache = $filecache = 'uploads/flux/widget-'.$user->getId().'-'.$id.'.txt';
|
$filecache = $filecache = 'uploads/flux/flux-'.$user->getId().'-'.$flux->getId().'.txt';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$filesystem = new Filesystem();
|
// Si le fichie cache existe
|
||||||
if ($filesystem->exists($filecache)) {
|
if ($filesystem->exists($filecache)) {
|
||||||
// On récupère la date de modification du fichier
|
// On récupère la date de modification du fichier
|
||||||
$timestampfile = filemtime($filecache);
|
$timestampfile = filemtime($filecache);
|
||||||
|
@ -1011,15 +676,19 @@ class PagewidgetController extends AbstractController
|
||||||
$now = new \DateTime();
|
$now = new \DateTime();
|
||||||
if ($datefile >= $now) {
|
if ($datefile >= $now) {
|
||||||
$toregen = false;
|
$toregen = false;
|
||||||
$feeds = unserialize(file_get_contents($filecache));
|
$backup = unserialize(file_get_contents($filecache));
|
||||||
|
$feeds = array_merge($feeds, $backup);
|
||||||
|
if (empty($backup)) {
|
||||||
|
unset($fluxs[$keyflux]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Si le fichier est trop ancien on relit le flus
|
// Si le fichier est trop ancien on relit le flus
|
||||||
if ($toregen) {
|
if ($toregen) {
|
||||||
// Connexion au client
|
|
||||||
$PROXYactivate = $this->em->getRepository('App:Config')->find('PROXYactivate')->getValue();
|
$PROXYactivate = $this->em->getRepository('App:Config')->find('PROXYactivate')->getValue();
|
||||||
$weburl = $this->getParameter('weburl');
|
$weburl = $this->getParameter('weburl');
|
||||||
|
|
||||||
if (0 == stripos($url, '/')) {
|
if (0 == stripos($url, '/')) {
|
||||||
$url = 'https://'.$weburl.$url;
|
$url = 'https://'.$weburl.$url;
|
||||||
$PROXYactivate = false;
|
$PROXYactivate = false;
|
||||||
|
@ -1043,24 +712,15 @@ class PagewidgetController extends AbstractController
|
||||||
$clientguzzle->request('GET', $url);
|
$clientguzzle->request('GET', $url);
|
||||||
} catch (RequestException $e) {
|
} catch (RequestException $e) {
|
||||||
if ($e->hasResponse()) {
|
if ($e->hasResponse()) {
|
||||||
// Render
|
continue;
|
||||||
$feeds = [];
|
|
||||||
|
|
||||||
return $this->getRender('viewflux.html.twig', [
|
|
||||||
'fluxs' => $fluxs,
|
|
||||||
'feeds' => $feeds,
|
|
||||||
'modelist' => $modelist,
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// On lit le flux rss
|
||||||
$client = new \FeedIo\Adapter\Guzzle\Client($clientguzzle);
|
$client = new \FeedIo\Adapter\Guzzle\Client($clientguzzle);
|
||||||
$logger = new \Psr\Log\NullLogger();
|
$logger = new \Psr\Log\NullLogger();
|
||||||
$feedIo = new \FeedIo\FeedIo($client, $logger);
|
$feedIo = new \FeedIo\FeedIo($client, $logger);
|
||||||
|
|
||||||
$feeds = [];
|
|
||||||
|
|
||||||
// On lit le flux rss
|
|
||||||
try {
|
try {
|
||||||
$result = $feedIo->read($url);
|
$result = $feedIo->read($url);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
|
@ -1070,6 +730,8 @@ class PagewidgetController extends AbstractController
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$feedtitle = $result->getFeed()->getTitle();
|
$feedtitle = $result->getFeed()->getTitle();
|
||||||
|
|
||||||
|
$backup = [];
|
||||||
|
|
||||||
// Pour chaque articles
|
// Pour chaque articles
|
||||||
$nbflux = 0;
|
$nbflux = 0;
|
||||||
foreach ($result->getFeed() as $item) {
|
foreach ($result->getFeed() as $item) {
|
||||||
|
@ -1118,7 +780,7 @@ class PagewidgetController extends AbstractController
|
||||||
}
|
}
|
||||||
|
|
||||||
// Garder le flux
|
// Garder le flux
|
||||||
array_push($feeds, [
|
$tmp = [
|
||||||
'feedtitle' => $feedtitle,
|
'feedtitle' => $feedtitle,
|
||||||
'title' => $title,
|
'title' => $title,
|
||||||
'link' => $link,
|
'link' => $link,
|
||||||
|
@ -1127,29 +789,243 @@ class PagewidgetController extends AbstractController
|
||||||
'dateformat' => $dateformat,
|
'dateformat' => $dateformat,
|
||||||
'content' => $content,
|
'content' => $content,
|
||||||
'image' => $imgurl,
|
'image' => $imgurl,
|
||||||
// "color" => $flux->getColor(),
|
'color' => $flux->getColor(),
|
||||||
'fluxid' => 0,
|
'fluxid' => $flux->getId(),
|
||||||
'fluxtitle' => $this->entity->getName(),
|
'fluxtitle' => $flux->getTitle(),
|
||||||
]);
|
];
|
||||||
|
|
||||||
|
array_push($feeds, $tmp);
|
||||||
|
array_push($backup, $tmp);
|
||||||
|
|
||||||
++$nbflux;
|
++$nbflux;
|
||||||
if ($nbflux >= $nbarticle && $nbarticle > 0) {
|
if ($nbflux >= $flux->getMaxread() && $flux->getMaxread() > 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$libelle = [];
|
if (0 == $nbflux) {
|
||||||
foreach ($feeds as $key => $valeur) {
|
unset($fluxs[$keyflux]);
|
||||||
$libelle[$key] = $valeur['date'];
|
|
||||||
}
|
}
|
||||||
array_multisort($libelle, SORT_DESC, $feeds);
|
|
||||||
|
|
||||||
// On sauvegarde le résultat en fichier on rechargera son contenu que s'il n'a pas été lu depuis 30mn
|
// On sauvegarde le résultat en fichier on rechargera son contenu que s'il n'a pas été lu depuis 30mn
|
||||||
$filesystem->dumpFile($filecache, serialize($feeds));
|
$filesystem->dumpFile($filecache, serialize($backup));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Trie des fluxs
|
||||||
|
$fluxsordered = $fluxs->getIterator();
|
||||||
|
$fluxsordered->uasort(function ($first, $second) {
|
||||||
|
return (int) $first->getRowOrder() > (int) $second->getRowOrder() ? 1 : -1;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Trie des feeds
|
||||||
|
$libelle = [];
|
||||||
|
foreach ($feeds as $key => $valeur) {
|
||||||
|
$libelle[$key] = $valeur['date'];
|
||||||
|
}
|
||||||
|
array_multisort($libelle, SORT_DESC, $feeds);
|
||||||
|
|
||||||
|
// Render
|
||||||
|
return $this->getRender('viewflux.html.twig', [
|
||||||
|
'modelist' => $modelist,
|
||||||
|
'fluxs' => $fluxsordered,
|
||||||
|
'feeds' => $feeds,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function viewrss(Request $request, $id, $access = 'config')
|
||||||
|
{
|
||||||
|
// Récupération de la requete
|
||||||
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
|
// Valeur par défaut
|
||||||
|
$modelist = 0;
|
||||||
|
$fluxs = ['id' => 0];
|
||||||
|
$feeds = null;
|
||||||
|
|
||||||
|
// Récupération des paramétres du widget
|
||||||
|
$url = '';
|
||||||
|
$nbarticle = '_blank';
|
||||||
|
$modelist = 0;
|
||||||
|
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
||||||
|
switch ($parameter['id']) {
|
||||||
|
case 'url':
|
||||||
|
$url = $parameter['value'];
|
||||||
|
break;
|
||||||
|
case 'nbarticle':
|
||||||
|
$nbarticle = $parameter['value'];
|
||||||
|
break;
|
||||||
|
case 'modelist':
|
||||||
|
$modelist = $parameter['value'];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// On regarde si le flux a été lu il y a peu
|
||||||
|
$toregen = true;
|
||||||
|
$filecache = $filecache = 'uploads/flux/widget-'.$id.'.txt';
|
||||||
|
$user = $this->getUser();
|
||||||
|
if (false !== stripos($url, '##userid##')) {
|
||||||
|
if ($user) {
|
||||||
|
$url = str_replace('##userid##', $user->getId(), $url);
|
||||||
|
$filecache = $filecache = 'uploads/flux/widget-'.$user->getId().'-'.$id.'.txt';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$filesystem = new Filesystem();
|
||||||
|
if ($filesystem->exists($filecache)) {
|
||||||
|
// On récupère la date de modification du fichier
|
||||||
|
$timestampfile = filemtime($filecache);
|
||||||
|
$datetimeFormat = 'Y-m-d H:i:s';
|
||||||
|
$datefile = new \DateTime();
|
||||||
|
$datefile->setTimestamp($timestampfile);
|
||||||
|
|
||||||
|
// On ajoute 30mn
|
||||||
|
$datefile->add(new \DateInterval('PT30M'));
|
||||||
|
|
||||||
|
// Si la date est inférieur à maintenant on regénère le flux
|
||||||
|
$now = new \DateTime();
|
||||||
|
if ($datefile >= $now) {
|
||||||
|
$toregen = false;
|
||||||
|
$feeds = unserialize(file_get_contents($filecache));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si le fichier est trop ancien on relit le flus
|
||||||
|
if ($toregen) {
|
||||||
|
// Connexion au client
|
||||||
|
$PROXYactivate = $this->em->getRepository('App:Config')->find('PROXYactivate')->getValue();
|
||||||
|
$weburl = $this->getParameter('weburl');
|
||||||
|
if (0 == stripos($url, '/')) {
|
||||||
|
$url = 'https://'.$weburl.$url;
|
||||||
|
$PROXYactivate = false;
|
||||||
|
}
|
||||||
|
if (0 === stripos($url, 'https://'.$weburl)) {
|
||||||
|
$PROXYactivate = false;
|
||||||
|
}
|
||||||
|
if (0 === stripos($url, 'http://'.$weburl)) {
|
||||||
|
$PROXYactivate = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($PROXYactivate) {
|
||||||
|
$PROXYserver = $this->em->getRepository('App:Config')->find('PROXYserver')->getValue();
|
||||||
|
$PROXYport = $this->em->getRepository('App:Config')->find('PROXYport')->getValue();
|
||||||
|
$clientguzzle = new \GuzzleHttp\Client(['timeout' => 3, 'verify' => false, 'proxy' => ['http' => 'http://'.$PROXYserver.':'.$PROXYport, 'https' => 'http://'.$PROXYserver.':'.$PROXYport]]);
|
||||||
|
} else {
|
||||||
|
$clientguzzle = new \GuzzleHttp\Client(['timeout' => 3, 'verify' => false]);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$clientguzzle->request('GET', $url);
|
||||||
|
} catch (RequestException $e) {
|
||||||
|
if ($e->hasResponse()) {
|
||||||
|
// Render
|
||||||
|
$feeds = [];
|
||||||
|
|
||||||
|
return $this->getRender('viewflux.html.twig', [
|
||||||
|
'fluxs' => $fluxs,
|
||||||
|
'feeds' => $feeds,
|
||||||
|
'modelist' => $modelist,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$client = new \FeedIo\Adapter\Guzzle\Client($clientguzzle);
|
||||||
|
$logger = new \Psr\Log\NullLogger();
|
||||||
|
$feedIo = new \FeedIo\FeedIo($client, $logger);
|
||||||
|
|
||||||
|
$feeds = [];
|
||||||
|
|
||||||
|
// On lit le flux rss
|
||||||
|
try {
|
||||||
|
$result = $feedIo->read($url);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$result = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($result) {
|
||||||
|
$feedtitle = $result->getFeed()->getTitle();
|
||||||
|
|
||||||
|
// Pour chaque articles
|
||||||
|
$nbflux = 0;
|
||||||
|
foreach ($result->getFeed() as $item) {
|
||||||
|
$title = $item->getTitle();
|
||||||
|
$link = $item->getLink();
|
||||||
|
$description = substr(strip_tags($item->getDescription()), 0, 250);
|
||||||
|
$description = str_replace('¶', '', $description);
|
||||||
|
$date = $item->getLastModified();
|
||||||
|
$dateformat = ($date ? $item->getLastModified()->format('d/m/Y H:i:s') : '');
|
||||||
|
$content = $item->getDescription();
|
||||||
|
$media = $item->getMedias();
|
||||||
|
$mediaurl = '';
|
||||||
|
|
||||||
|
foreach ($item->getMedias() as $itemMedia) {
|
||||||
|
if ('image/jpeg' == $itemMedia->getType()) {
|
||||||
|
$mediaurl = $itemMedia->getUrl();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($item->getAllElements() as $element) {
|
||||||
|
if ('content:encoded' == $element->getName()) {
|
||||||
|
$content = $element->getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('' != $mediaurl) {
|
||||||
|
$imgurl = $mediaurl;
|
||||||
|
} else {
|
||||||
|
// Récupérer la première image du contenu
|
||||||
|
$imgcontent = '';
|
||||||
|
$imgurl = '';
|
||||||
|
$imgstart = stripos($content, '<img');
|
||||||
|
if (false !== $imgstart) {
|
||||||
|
$imgend = stripos($content, '>', $imgstart);
|
||||||
|
$imgcontent = substr($content, $imgstart, $imgend - $imgstart + 1);
|
||||||
|
|
||||||
|
$imgstart = stripos($imgcontent, 'src=');
|
||||||
|
$imgurl = substr($imgcontent, $imgstart + 5);
|
||||||
|
$imgend = stripos($imgurl, '"');
|
||||||
|
|
||||||
|
if (false === $imgend) {
|
||||||
|
$imgend = stripos($imgurl, "'");
|
||||||
|
}
|
||||||
|
$imgurl = substr($imgurl, 0, $imgend);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Garder le flux
|
||||||
|
array_push($feeds, [
|
||||||
|
'feedtitle' => $feedtitle,
|
||||||
|
'title' => $title,
|
||||||
|
'link' => $link,
|
||||||
|
'description' => $description,
|
||||||
|
'date' => $date,
|
||||||
|
'dateformat' => $dateformat,
|
||||||
|
'content' => $content,
|
||||||
|
'image' => $imgurl,
|
||||||
|
// "color" => $flux->getColor(),
|
||||||
|
'fluxid' => 0,
|
||||||
|
'fluxtitle' => $this->entity->getName(),
|
||||||
|
]);
|
||||||
|
|
||||||
|
++$nbflux;
|
||||||
|
if ($nbflux >= $nbarticle && $nbarticle > 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$libelle = [];
|
||||||
|
foreach ($feeds as $key => $valeur) {
|
||||||
|
$libelle[$key] = $valeur['date'];
|
||||||
|
}
|
||||||
|
array_multisort($libelle, SORT_DESC, $feeds);
|
||||||
|
|
||||||
|
// On sauvegarde le résultat en fichier on rechargera son contenu que s'il n'a pas été lu depuis 30mn
|
||||||
|
$filesystem->dumpFile($filecache, serialize($feeds));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Render
|
// Render
|
||||||
return $this->getRender('viewflux.html.twig', [
|
return $this->getRender('viewflux.html.twig', [
|
||||||
'fluxs' => $fluxs,
|
'fluxs' => $fluxs,
|
||||||
|
@ -1158,30 +1034,30 @@ class PagewidgetController extends AbstractController
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function viewbookmark(Request $request, $id, $access = 'config')
|
public function viewbookmark($id, $access, Request $request, ManagerRegistry $em)
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
// Valeur par défaut
|
// Valeur par défaut
|
||||||
$modedesktop = 0;
|
$modedesktop = 0;
|
||||||
$bookmarks = null;
|
$bookmarks = null;
|
||||||
|
|
||||||
// Datas associées au widget
|
// Récupération des paramétres du widget
|
||||||
if (!$this->mini) {
|
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
||||||
// Récupération des paramétres du widget
|
switch ($parameter['id']) {
|
||||||
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
case 'modedesktop':
|
||||||
switch ($parameter['id']) {
|
$modedesktop = $parameter['value'];
|
||||||
case 'modedesktop':
|
break;
|
||||||
$modedesktop = $parameter['value'];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bookmark du widget
|
|
||||||
$bookmarks = $this->em->getRepository('App:Bookmark')->findBy(['pagewidget' => $this->entity]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Bookmark du widget
|
||||||
|
$bookmarks = $em->getRepository('App\Entity\Bookmark')->findBy(['pagewidget' => $this->entity]);
|
||||||
|
|
||||||
|
// Préference utilisateur
|
||||||
|
$modedesktop = $this->getKeyPreference($this->entity, 'modedesktop', $modedesktop);
|
||||||
|
|
||||||
// Render
|
// Render
|
||||||
return $this->getRender('viewbookmark.html.twig', [
|
return $this->getRender('viewbookmark.html.twig', [
|
||||||
'canadd' => $this->canadd,
|
'canadd' => $this->canadd,
|
||||||
|
@ -1190,10 +1066,10 @@ class PagewidgetController extends AbstractController
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function viewlink(Request $request, $id, $access = 'config')
|
public function viewlink($id, $access, Request $request, ManagerRegistry $em)
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
// Récupération des paramétres du widget
|
// Récupération des paramétres du widget
|
||||||
$url = '';
|
$url = '';
|
||||||
|
@ -1211,16 +1087,36 @@ class PagewidgetController extends AbstractController
|
||||||
|
|
||||||
// Render
|
// Render
|
||||||
return $this->getRender('viewlink.html.twig', [
|
return $this->getRender('viewlink.html.twig', [
|
||||||
'canadd' => false,
|
'canadd' => $this->canadd,
|
||||||
'url' => $url,
|
'url' => $url,
|
||||||
'target' => $target,
|
'target' => $target,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function viewinfo($id, $access, Request $request, ManagerRegistry $em)
|
||||||
|
{
|
||||||
|
// Récupération de la requete
|
||||||
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
|
if (1 == $this->entity->getPage()->getGroups()->count()) {
|
||||||
|
$this->entity->setName($this->entity->getPage()->getGroups()[0]->getLabel());
|
||||||
|
} elseif (0 == $this->entity->getPage()->getGroups()->count() && $this->entity->getPage()->getUser()) {
|
||||||
|
$this->entity->setName($this->entity->getPage()->getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Render
|
||||||
|
return $this->getRender('viewinfo.html.twig', [
|
||||||
|
'canadd' => $this->canupdate,
|
||||||
|
'usage' => $this->usage,
|
||||||
|
'id' => $id,
|
||||||
|
'idpage' => $this->entity->getPage()->getId(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
public function vieweditor(Request $request, $id, $access = 'config')
|
public function vieweditor(Request $request, $id, $access = 'config')
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
// Récupération des paramétres du widget
|
// Récupération des paramétres du widget
|
||||||
$html = '';
|
$html = '';
|
||||||
|
@ -1242,7 +1138,7 @@ class PagewidgetController extends AbstractController
|
||||||
public function viewslide(Request $request, $id, $access = 'config')
|
public function viewslide(Request $request, $id, $access = 'config')
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
// Récupération des paramétres du widget
|
// Récupération des paramétres du widget
|
||||||
$interval = '2';
|
$interval = '2';
|
||||||
|
@ -1268,7 +1164,7 @@ class PagewidgetController extends AbstractController
|
||||||
public function viewfile(Request $request, $id, $access = 'config')
|
public function viewfile(Request $request, $id, $access = 'config')
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
// Récupération des paramétres du widget
|
// Récupération des paramétres du widget
|
||||||
$view = 'small';
|
$view = 'small';
|
||||||
|
@ -1291,7 +1187,7 @@ class PagewidgetController extends AbstractController
|
||||||
public function viewgalery(Request $request, $id, $access = 'config')
|
public function viewgalery(Request $request, $id, $access = 'config')
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
$directory = $this->get('kernel')->getRootDir().'/../uploads/file/widget-'.$id;
|
$directory = $this->get('kernel')->getRootDir().'/../uploads/file/widget-'.$id;
|
||||||
$files = [];
|
$files = [];
|
||||||
|
@ -1329,7 +1225,7 @@ class PagewidgetController extends AbstractController
|
||||||
public function viewcalendar(Request $request, $id, $access = 'config')
|
public function viewcalendar(Request $request, $id, $access = 'config')
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
// Récupération des paramétres du widget
|
// Récupération des paramétres du widget
|
||||||
$nbday = '0';
|
$nbday = '0';
|
||||||
|
@ -1358,7 +1254,7 @@ class PagewidgetController extends AbstractController
|
||||||
public function viewblog(Request $request, $id, $access = 'config')
|
public function viewblog(Request $request, $id, $access = 'config')
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
// Récupération des paramétres du widget
|
// Récupération des paramétres du widget
|
||||||
$nbarticle = 10;
|
$nbarticle = 10;
|
||||||
|
@ -1398,7 +1294,7 @@ class PagewidgetController extends AbstractController
|
||||||
public function viewproject(Request $request, $id, $access = 'config')
|
public function viewproject(Request $request, $id, $access = 'config')
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
// Parametres
|
// Parametres
|
||||||
$nbarticle = 10;
|
$nbarticle = 10;
|
||||||
|
@ -1456,212 +1352,10 @@ class PagewidgetController extends AbstractController
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function viewseparator(Request $request, $id, $access = 'config')
|
|
||||||
{
|
|
||||||
// Récupération de la requete
|
|
||||||
$this->setRequest($request, $id, $access);
|
|
||||||
|
|
||||||
// Parametres
|
|
||||||
$seetitle = false;
|
|
||||||
$seeicon = false;
|
|
||||||
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
|
||||||
switch ($parameter['id']) {
|
|
||||||
case 'seetitle':
|
|
||||||
$seetitle = boolval($parameter['value']);
|
|
||||||
break;
|
|
||||||
case 'seeicon':
|
|
||||||
$seeicon = boolval($parameter['value']);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Render
|
|
||||||
return $this->getRender('viewseparator.html.twig', [
|
|
||||||
'canadd' => $this->canupdate,
|
|
||||||
'seetitle' => $seetitle,
|
|
||||||
'seeicon' => $seeicon,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function viewclock(Request $request, $id, $access = 'config')
|
|
||||||
{
|
|
||||||
// Récupération de la requete
|
|
||||||
$this->setRequest($request, $id, $access);
|
|
||||||
|
|
||||||
// Parametres
|
|
||||||
$clock = '0';
|
|
||||||
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
|
||||||
switch ($parameter['id']) {
|
|
||||||
case 'clock':
|
|
||||||
$clock = $parameter['value'];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Render
|
|
||||||
return $this->getRender('viewframe.html.twig', [
|
|
||||||
'canadd' => $this->canupdate,
|
|
||||||
'onheader' => true,
|
|
||||||
'tool' => (0 == $clock ? 'app_user_tool_clockanalogique' : 'app_user_tool_clocknumerique'),
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function viewcalculator(Request $request, $id, $access = 'config')
|
|
||||||
{
|
|
||||||
// Récupération de la requete
|
|
||||||
$this->setRequest($request, $id, $access);
|
|
||||||
|
|
||||||
// Render
|
|
||||||
return $this->getRender('viewframe.html.twig', [
|
|
||||||
'canadd' => $this->canupdate,
|
|
||||||
'onheader' => true,
|
|
||||||
'tool' => 'app_user_tool_calculator',
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function viewappexternal(Request $request, $id, $access = 'config')
|
|
||||||
{
|
|
||||||
// Récupération de la requete
|
|
||||||
$this->setRequest($request, $id, $access);
|
|
||||||
|
|
||||||
// Récupération des paramétres du widget
|
|
||||||
$idappexternal = null;
|
|
||||||
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
|
||||||
switch ($parameter['id']) {
|
|
||||||
case 'appexternal':
|
|
||||||
$idappexternal = $parameter['value'];
|
|
||||||
break;
|
|
||||||
case 'modedesktop':
|
|
||||||
$modedesktop = $parameter['value'];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$user = $this->getUser();
|
|
||||||
$items = [];
|
|
||||||
$itemcategorys = [];
|
|
||||||
if ($user) {
|
|
||||||
if ($idappexternal) {
|
|
||||||
$appextenals = $this->em->getRepository('App:Appexternal')->findBy(['id' => $idappexternal]);
|
|
||||||
} else {
|
|
||||||
$appextenals = $this->em->getRepository('App:Appexternal')->findAll();
|
|
||||||
}
|
|
||||||
foreach ($appextenals as $appexternal) {
|
|
||||||
switch ($appexternal->getName()) {
|
|
||||||
case 'Limesurvey':
|
|
||||||
$category = ['id' => 0, 'label' => 'Limesurvey'];
|
|
||||||
array_push($itemcategorys, $category);
|
|
||||||
|
|
||||||
$directory = $this->get('kernel')->getRootDir().'/../uploads/limesurvey/'.$user->getId();
|
|
||||||
$files = [];
|
|
||||||
$fs = new Filesystem();
|
|
||||||
|
|
||||||
if ($fs->exists($directory.'/invitation.json')) {
|
|
||||||
$file = file_get_contents($directory.'/invitation.json');
|
|
||||||
$json = substr($file, 0, -2); // sup dernier ,
|
|
||||||
$surveys = json_decode('{'.$json.'}', true);
|
|
||||||
if (is_array($surveys)) {
|
|
||||||
foreach ($surveys as $id => $survey) {
|
|
||||||
array_push($items, ['id' => $id, 'title' => $survey['title'], 'subtitle' => 'Sondage', 'url' => $survey['url'], 'itemcategory' => $category, 'color' => '328637', 'icon' => 'icon_limesurvey.png']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'Moodle':
|
|
||||||
$category = ['id' => 1, 'label' => 'Moodle'];
|
|
||||||
array_push($itemcategorys, $category);
|
|
||||||
|
|
||||||
$directory = $this->get('kernel')->getRootDir().'/../uploads/moodle/'.$user->getId();
|
|
||||||
$files = [];
|
|
||||||
$fs = new Filesystem();
|
|
||||||
|
|
||||||
if ($fs->exists($directory.'/invitation.json')) {
|
|
||||||
$file = file_get_contents($directory.'/invitation.json');
|
|
||||||
$json = substr($file, 0, -2); // sup dernier ,
|
|
||||||
$courses = json_decode('{'.$json.'}', true);
|
|
||||||
if (is_array($courses)) {
|
|
||||||
foreach ($courses as $id => $course) {
|
|
||||||
array_push($items, ['id' => $id, 'title' => $course['title'], 'subtitle' => 'Cours', 'url' => $course['url'], 'itemcategory' => $category, 'color' => 'f77f11', 'icon' => 'icon_moodle.png']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Trier les item par title
|
|
||||||
$title = array_column($items, 'title');
|
|
||||||
array_multisort($title, SORT_ASC, $items);
|
|
||||||
|
|
||||||
// Render
|
|
||||||
return $this->getRender('viewappexternal.html.twig', [
|
|
||||||
'canadd' => $user,
|
|
||||||
'modedesktop' => $modedesktop,
|
|
||||||
'items' => $items,
|
|
||||||
'itemcategorys' => $itemcategorys,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function viewinfo(Request $request, $id, $access = 'config')
|
|
||||||
{
|
|
||||||
// Récupération de la requete
|
|
||||||
$this->setRequest($request, $id, $access);
|
|
||||||
|
|
||||||
$icon = null;
|
|
||||||
$title = null;
|
|
||||||
$description = null;
|
|
||||||
$members = [];
|
|
||||||
if ('group' == $this->usage) {
|
|
||||||
$groupentity = $this->em->getRepository('App:Group')->find($this->group);
|
|
||||||
if ($groupentity) {
|
|
||||||
$title = $this->entity->getPage()->getName();
|
|
||||||
$id = $groupentity->getId();
|
|
||||||
if ($groupentity->getDescription()) {
|
|
||||||
$description = '<strong>Description</strong><br>'.$groupentity->getDescription();
|
|
||||||
}
|
|
||||||
if ($groupentity->getIcon()) {
|
|
||||||
$icon = '/'.$groupentity->getIcon()->getLabel();
|
|
||||||
} else {
|
|
||||||
$icon = '/uploads/icon/icon_users.png';
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($groupentity->getUsers() as $usergroup) {
|
|
||||||
array_push($members, $usergroup);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$title = $this->entity->getPage()->getName();
|
|
||||||
$proprio = $this->entity->getPage()->getUser();
|
|
||||||
$id = 0;
|
|
||||||
if ($proprio) {
|
|
||||||
$description = 'Propriétaire de la page<br>'.$proprio->getLastname().' '.$proprio->getLastname();
|
|
||||||
$icon = '/uploads/avatar/'.$proprio->getAvatar();
|
|
||||||
} else {
|
|
||||||
$icon = '/uploads/avatar/noavatar.png';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Render
|
|
||||||
return $this->getRender('viewinfo.html.twig', [
|
|
||||||
'canadd' => $this->canupdate,
|
|
||||||
'usage' => $this->usage,
|
|
||||||
'icon' => $icon,
|
|
||||||
'title' => $title,
|
|
||||||
'description' => $description,
|
|
||||||
'members' => $members,
|
|
||||||
'id' => $id,
|
|
||||||
'idpage' => $this->entity->getPage()->getId(),
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function viewchat(Request $request, $id, $access = 'config')
|
public function viewchat(Request $request, $id, $access = 'config')
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
$group = $this->group;
|
$group = $this->group;
|
||||||
if ('group' != $this->usage || !$group) {
|
if ('group' != $this->usage || !$group) {
|
||||||
|
@ -1681,7 +1375,7 @@ class PagewidgetController extends AbstractController
|
||||||
public function viewgroup(Request $request, $id, $access = 'config')
|
public function viewgroup(Request $request, $id, $access = 'config')
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
$user = $this->getUser();
|
$user = $this->getUser();
|
||||||
$mygroups = [];
|
$mygroups = [];
|
||||||
|
@ -1711,7 +1405,7 @@ class PagewidgetController extends AbstractController
|
||||||
public function viewgroupmessage(Request $request, $id, $access = 'config')
|
public function viewgroupmessage(Request $request, $id, $access = 'config')
|
||||||
{
|
{
|
||||||
// Récupération de la requete
|
// Récupération de la requete
|
||||||
$this->setRequest($request, $id, $access);
|
$this->setRequest($em, $request, $id, $access);
|
||||||
|
|
||||||
// Récupération des paramétres du widget
|
// Récupération des paramétres du widget
|
||||||
$modelist = 1;
|
$modelist = 1;
|
||||||
|
@ -1770,30 +1464,4 @@ class PagewidgetController extends AbstractController
|
||||||
'nbarticle' => $nbarticle,
|
'nbarticle' => $nbarticle,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function viewOnlydoc(Request $request, $id, $access = 'config')
|
|
||||||
{
|
|
||||||
// Récupération de la requete
|
|
||||||
$this->setRequest($request, $id, $access);
|
|
||||||
|
|
||||||
// Récupération des paramétres du widget
|
|
||||||
$apponly = 0;
|
|
||||||
$view = 'small';
|
|
||||||
foreach ($this->entity->getParameter()['fields'] as $parameter) {
|
|
||||||
switch ($parameter['id']) {
|
|
||||||
case 'apponly':
|
|
||||||
$apponly = $parameter['value'];
|
|
||||||
break;
|
|
||||||
case 'modelist':
|
|
||||||
$view = (0 == $parameter['value'] ? 'small' : 'list');
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->getRender('viewonlydoc.html.twig', [
|
|
||||||
'canadd' => $this->canupdate,
|
|
||||||
'directory' => $id,
|
|
||||||
'view' => $view,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,7 +87,7 @@ class Alert
|
||||||
* @ORM\ManyToMany(targetEntity="User", inversedBy="alertreaders", cascade={"persist"})
|
* @ORM\ManyToMany(targetEntity="User", inversedBy="alertreaders", cascade={"persist"})
|
||||||
* @ORM\JoinTable(name="alertuserread",
|
* @ORM\JoinTable(name="alertuserread",
|
||||||
* joinColumns={@ORM\JoinColumn(name="alert", referencedColumnName="id")},
|
* joinColumns={@ORM\JoinColumn(name="alert", referencedColumnName="id")},
|
||||||
* inverseJoinColumns={@ORM\JoinColumn(name="user", referencedColumnName="id")}
|
* inverseJoinColumns={@ORM\JoinColumn(name="useraccount", referencedColumnName="id")}
|
||||||
* )
|
* )
|
||||||
*/
|
*/
|
||||||
protected $readers;
|
protected $readers;
|
||||||
|
|
|
@ -103,11 +103,17 @@ class Group
|
||||||
*/
|
*/
|
||||||
protected $items;
|
protected $items;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\ManyToMany(targetEntity="Page", mappedBy="groups")
|
||||||
|
*/
|
||||||
|
protected $pages;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->users = new ArrayCollection();
|
$this->users = new ArrayCollection();
|
||||||
$this->alerts = new ArrayCollection();
|
$this->alerts = new ArrayCollection();
|
||||||
$this->items = new ArrayCollection();
|
$this->items = new ArrayCollection();
|
||||||
|
$this->pages = new ArrayCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
// == CODE A NE PAS REGENERER
|
// == CODE A NE PAS REGENERER
|
||||||
|
@ -339,4 +345,31 @@ class Group
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Collection<int, Page>
|
||||||
|
*/
|
||||||
|
public function getPages(): Collection
|
||||||
|
{
|
||||||
|
return $this->pages;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addPage(Page $page): self
|
||||||
|
{
|
||||||
|
if (!$this->pages->contains($page)) {
|
||||||
|
$this->pages->add($page);
|
||||||
|
$page->addGroup($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function removePage(Page $page): self
|
||||||
|
{
|
||||||
|
if ($this->pages->removeElement($page)) {
|
||||||
|
$page->removeGroup($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,11 +191,17 @@ class User implements UserInterface, LegacyPasswordAuthenticatedUserInterface
|
||||||
*/
|
*/
|
||||||
private $modos;
|
private $modos;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\ManyToMany(targetEntity="App\Entity\Alert", mappedBy="readers")
|
||||||
|
*/
|
||||||
|
protected $alertreaders;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->groups = new ArrayCollection();
|
$this->groups = new ArrayCollection();
|
||||||
$this->ownergroups = new ArrayCollection();
|
$this->ownergroups = new ArrayCollection();
|
||||||
$this->modos = new ArrayCollection();
|
$this->modos = new ArrayCollection();
|
||||||
|
$this->alertreaders = new ArrayCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
// == CODE A NE PAS REGENERER
|
// == CODE A NE PAS REGENERER
|
||||||
|
@ -677,4 +683,31 @@ class User implements UserInterface, LegacyPasswordAuthenticatedUserInterface
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Collection<int, Alert>
|
||||||
|
*/
|
||||||
|
public function getAlertreaders(): Collection
|
||||||
|
{
|
||||||
|
return $this->alertreaders;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addAlertreader(Alert $alertreader): self
|
||||||
|
{
|
||||||
|
if (!$this->alertreaders->contains($alertreader)) {
|
||||||
|
$this->alertreaders->add($alertreader);
|
||||||
|
$alertreader->addReader($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function removeAlertreader(Alert $alertreader): self
|
||||||
|
{
|
||||||
|
if ($this->alertreaders->removeElement($alertreader)) {
|
||||||
|
$alertreader->removeReader($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Form;
|
||||||
|
|
||||||
|
use Symfony\Component\Form\AbstractType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||||
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
|
||||||
|
class BookmarkType extends AbstractType
|
||||||
|
{
|
||||||
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
|
{
|
||||||
|
$builder
|
||||||
|
->add('submit', SubmitType::class, [
|
||||||
|
'label' => ('delete' == $options['mode'] ? 'Confirmer la Suppression' : 'Valider'),
|
||||||
|
'attr' => ('delete' == $options['mode'] ? ['class' => 'btn btn-danger'] : ['class' => 'btn btn-success']),
|
||||||
|
])
|
||||||
|
|
||||||
|
->add('title', TextType::class, [
|
||||||
|
'label' => 'Titre',
|
||||||
|
'disabled' => ('delete' == $options['mode'] ? true : false),
|
||||||
|
])
|
||||||
|
|
||||||
|
->add('subtitle', TextareaType::class, [
|
||||||
|
'label' => 'Sous Titre',
|
||||||
|
'required' => false,
|
||||||
|
'disabled' => ('delete' == $options['mode'] ? true : false),
|
||||||
|
'attr' => ['rows' => '4'],
|
||||||
|
])
|
||||||
|
|
||||||
|
->add('color', TextType::class, [
|
||||||
|
'label' => 'Couleur',
|
||||||
|
'required' => false,
|
||||||
|
'attr' => ['class' => 'pick-a-color'],
|
||||||
|
])
|
||||||
|
|
||||||
|
->add('url')
|
||||||
|
|
||||||
|
->add('target', ChoiceType::class, [
|
||||||
|
'label' => 'Ouvrir le lien dans',
|
||||||
|
'choices' => [
|
||||||
|
'Nouvel onglet/fenêtre' => '_blank',
|
||||||
|
'iFrame' => 'frame',
|
||||||
|
'Onglet courant' => '_self',
|
||||||
|
],
|
||||||
|
])
|
||||||
|
|
||||||
|
->add('idicon', HiddenType::class, ['mapped' => false, 'data' => $options['idicon']]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
|
{
|
||||||
|
$resolver->setDefaults([
|
||||||
|
'data_class' => 'App\Entity\Bookmark',
|
||||||
|
'mode' => 'string',
|
||||||
|
'idicon' => null,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
||||||
|
@ -32,6 +34,18 @@ class GroupType extends AbstractType
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$builder->add('pagetemplate',
|
||||||
|
EntityType::class, [
|
||||||
|
'class' => "App\Entity\Page",
|
||||||
|
'label' => "Modèle de Page pour l'accueil du groupe",
|
||||||
|
'required' => false,
|
||||||
|
'choice_label' => 'name',
|
||||||
|
'query_builder' => function (EntityRepository $er) {
|
||||||
|
return $er->createQueryBuilder('page')->where('page.parentfor=:parentfor')->setParameter('parentfor', 'group');
|
||||||
|
},
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
if ('admin' == $options['access'] || 'update' == $options['mode']) {
|
if ('admin' == $options['access'] || 'update' == $options['mode']) {
|
||||||
$builder->add('owner',
|
$builder->add('owner',
|
||||||
Select2EntityType::class, [
|
Select2EntityType::class, [
|
||||||
|
|
|
@ -58,7 +58,8 @@ class ItemType extends AbstractType
|
||||||
'choices' => [
|
'choices' => [
|
||||||
'Visiteur' => 'ROLE_ANONYME',
|
'Visiteur' => 'ROLE_ANONYME',
|
||||||
'Utilisateur' => 'ROLE_USER',
|
'Utilisateur' => 'ROLE_USER',
|
||||||
'Animateur de Groupe' => 'ROLE_ANIM',
|
'Manager' => 'ROLE_MANAGER',
|
||||||
|
'Master' => 'ROLE_MASTER',
|
||||||
'Modérateur' => 'ROLE_MODO',
|
'Modérateur' => 'ROLE_MODO',
|
||||||
'Administateur' => 'ROLE_ADMIN',
|
'Administateur' => 'ROLE_ADMIN',
|
||||||
],
|
],
|
||||||
|
|
|
@ -0,0 +1,148 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Form;
|
||||||
|
|
||||||
|
use App\Form\Type\FaChoiceType;
|
||||||
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
|
use Symfony\Component\Form\AbstractType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||||
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
use Tetranz\Select2EntityBundle\Form\Type\Select2EntityType;
|
||||||
|
|
||||||
|
class PageSubmitType extends AbstractType
|
||||||
|
{
|
||||||
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
|
{
|
||||||
|
$access = $options['access'];
|
||||||
|
$user = $options['user'];
|
||||||
|
|
||||||
|
$builder
|
||||||
|
->add('submit', SubmitType::class, [
|
||||||
|
'label' => ('delete' == $options['mode'] ? 'Confirmer la Suppression' : 'Valider'),
|
||||||
|
'attr' => ('delete' == $options['mode'] ? ['class' => 'btn btn-danger'] : ['class' => 'btn btn-success']),
|
||||||
|
])
|
||||||
|
|
||||||
|
->add('name', TextType::class, [
|
||||||
|
'label' => 'Nom',
|
||||||
|
])
|
||||||
|
|
||||||
|
->add('pagecategory', EntityType::class, [
|
||||||
|
'label' => 'Catégorie de Page',
|
||||||
|
'class' => 'App\Entity\Pagecategory',
|
||||||
|
'choice_label' => 'name',
|
||||||
|
'placeholder' => '-- Sélectionnez une catégorie --',
|
||||||
|
'query_builder' => function (EntityRepository $er) use ($access) {
|
||||||
|
if ('admin' == $access) {
|
||||||
|
return $er->createQueryBuilder('pc')
|
||||||
|
->select('pc');
|
||||||
|
} else {
|
||||||
|
return $er->createQueryBuilder('pc')
|
||||||
|
->select('pc')
|
||||||
|
->where('pc.id>0');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
])
|
||||||
|
|
||||||
|
->add('usage', ChoiceType::class, [
|
||||||
|
'label' => 'Usage',
|
||||||
|
'mapped' => false,
|
||||||
|
'choices' => ['Personnel' => 'user', 'Groupe de Travail' => 'group'],
|
||||||
|
'disabled' => ('delete' == $options['mode'] ? true : false),
|
||||||
|
])
|
||||||
|
|
||||||
|
->add('fonticon', FaChoiceType::class, [
|
||||||
|
'label' => 'Icône',
|
||||||
|
'required' => false,
|
||||||
|
])
|
||||||
|
|
||||||
|
->add('page',
|
||||||
|
Select2EntityType::class, [
|
||||||
|
'label' => 'Modèle de Page',
|
||||||
|
'disabled' => ('delete' == $options['mode'] ? true : false),
|
||||||
|
'required' => false,
|
||||||
|
'multiple' => false,
|
||||||
|
'remote_route' => 'app_all_page_template_selectlist',
|
||||||
|
'class' => 'App\Entity\Page',
|
||||||
|
'req_params' => ['usage' => 'parent.children[usage]'],
|
||||||
|
'primary_key' => 'id',
|
||||||
|
'text_property' => 'name',
|
||||||
|
'minimum_input_length' => 0,
|
||||||
|
'page_limit' => 10,
|
||||||
|
'allow_clear' => true,
|
||||||
|
'delay' => 250,
|
||||||
|
'cache' => false,
|
||||||
|
'cache_timeout' => 60000, // if 'cache' is true
|
||||||
|
'language' => 'fr',
|
||||||
|
'placeholder' => '-- Selectionner un modèle de page --',
|
||||||
|
'attr' => ['class' => 'form-control', 'style' => 'margin-bottom:15px'],
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
->add('groups', EntityType::class, [
|
||||||
|
'label' => 'Partager avec les Groupes',
|
||||||
|
'class' => 'App\Entity\Group',
|
||||||
|
'choice_label' => 'label',
|
||||||
|
'required' => false,
|
||||||
|
'multiple' => true,
|
||||||
|
'expanded' => false,
|
||||||
|
'placeholder' => '-- Selectionner un groupe --',
|
||||||
|
'query_builder' => function (EntityRepository $er) use ($user) {
|
||||||
|
return $er->createQueryBuilder('g')
|
||||||
|
->select('g')
|
||||||
|
->From('App:UserGroup', 'ug')
|
||||||
|
->where('g.isworkgroup=:isworkgroup')
|
||||||
|
->andWhere('g=ug.group')
|
||||||
|
->andWhere('ug.user=:user')
|
||||||
|
->andWhere('ug.rolegroup>=:role')
|
||||||
|
->setParameter('isworkgroup', true)
|
||||||
|
->setParameter('role', 90)
|
||||||
|
->setParameter('user', $user);
|
||||||
|
},
|
||||||
|
])
|
||||||
|
|
||||||
|
->add('roworder', IntegerType::class, [
|
||||||
|
'label' => 'Ordre',
|
||||||
|
])
|
||||||
|
|
||||||
|
->add('maxwidth', IntegerType::class, [
|
||||||
|
'label' => "Largeur maximum (0 pour largeur de l'écran)",
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ('admin' == $access) {
|
||||||
|
$builder->add('user', Select2EntityType::class, [
|
||||||
|
'label' => 'Propriétaire',
|
||||||
|
'disabled' => ('delete' == $options['mode'] ? true : false),
|
||||||
|
'required' => false,
|
||||||
|
'multiple' => false,
|
||||||
|
'remote_route' => 'app_admin_user_selectlist',
|
||||||
|
'class' => 'App\Entity\User',
|
||||||
|
'primary_key' => 'id',
|
||||||
|
'text_property' => 'username',
|
||||||
|
'minimum_input_length' => 2,
|
||||||
|
'page_limit' => 10,
|
||||||
|
'allow_clear' => true,
|
||||||
|
'delay' => 250,
|
||||||
|
'cache' => false,
|
||||||
|
'cache_timeout' => 60000, // if 'cache' is true
|
||||||
|
'language' => 'fr',
|
||||||
|
'placeholder' => 'Selectionner un propriétaire',
|
||||||
|
'attr' => ['class' => 'form-control', 'style' => 'margin-bottom:15px'],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
|
{
|
||||||
|
$resolver->setDefaults([
|
||||||
|
'data_class' => 'App\Entity\Page',
|
||||||
|
'mode' => 'string',
|
||||||
|
'access' => 'string',
|
||||||
|
'user' => 'App\Entity\User',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
|
@ -45,14 +45,15 @@ class PageUpdateWidgetType extends AbstractType
|
||||||
'required' => false,
|
'required' => false,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if ('config' == $options['access'] && 'group' != $options['for']) {
|
if ('admin' == $options['access'] && 'group' != $options['for']) {
|
||||||
$builder
|
$builder
|
||||||
->add('roles', ChoiceType::class, [
|
->add('roles', ChoiceType::class, [
|
||||||
'label' => 'Visible pour les Rôles',
|
'label' => 'Visible pour les Rôles',
|
||||||
'choices' => [
|
'choices' => [
|
||||||
'Visiteur' => 'ROLE_ANONYME',
|
'Visiteur' => 'ROLE_ANONYME',
|
||||||
'Utilisateur' => 'ROLE_USER',
|
'Utilisateur' => 'ROLE_USER',
|
||||||
'Animateur de Groupe' => 'ROLE_ANIM',
|
'Manager' => 'ROLE_MANAGER',
|
||||||
|
'Master' => 'ROLE_MASTER',
|
||||||
'Modérateur' => 'ROLE_MODO',
|
'Modérateur' => 'ROLE_MODO',
|
||||||
'Administateur' => 'ROLE_ADMIN',
|
'Administateur' => 'ROLE_ADMIN',
|
||||||
],
|
],
|
||||||
|
@ -63,10 +64,10 @@ class PageUpdateWidgetType extends AbstractType
|
||||||
|
|
||||||
->add('groups', Select2EntityType::class, [
|
->add('groups', Select2EntityType::class, [
|
||||||
'label' => 'Visible pour les Groupes',
|
'label' => 'Visible pour les Groupes',
|
||||||
'class' => 'App:Group',
|
'class' => 'App\Entity\Group',
|
||||||
'text_property' => 'label',
|
'text_property' => 'label',
|
||||||
'multiple' => true,
|
'multiple' => true,
|
||||||
'remote_route' => 'app_ajax_group_list',
|
'remote_route' => 'app_admin_group_selectlist',
|
||||||
'primary_key' => 'id',
|
'primary_key' => 'id',
|
||||||
'text_property' => 'label',
|
'text_property' => 'label',
|
||||||
'minimum_input_length' => 0,
|
'minimum_input_length' => 0,
|
||||||
|
@ -84,7 +85,7 @@ class PageUpdateWidgetType extends AbstractType
|
||||||
'disabled' => ('delete' == $options['mode'] ? true : false),
|
'disabled' => ('delete' == $options['mode'] ? true : false),
|
||||||
'required' => false,
|
'required' => false,
|
||||||
'multiple' => false,
|
'multiple' => false,
|
||||||
'remote_route' => 'app_config_user_ajax_selectlist',
|
'remote_route' => 'app_admin_user_selectlist',
|
||||||
'class' => 'App\Entity\User',
|
'class' => 'App\Entity\User',
|
||||||
'primary_key' => 'id',
|
'primary_key' => 'id',
|
||||||
'text_property' => 'username',
|
'text_property' => 'username',
|
||||||
|
|
|
@ -40,7 +40,6 @@ class FaChoiceType extends AbstractType
|
||||||
'attr' => [
|
'attr' => [
|
||||||
// It's the key of the solution and can be done in many ways.
|
// It's the key of the solution and can be done in many ways.
|
||||||
// Now, the rendered <select> element will have a new font.
|
// Now, the rendered <select> element will have a new font.
|
||||||
'style' => "font-family: 'FontAwesome';",
|
|
||||||
'class' => 'select2-icon',
|
'class' => 'select2-icon',
|
||||||
],
|
],
|
||||||
'choices' => $this->getFontAwesomeIconChoices(),
|
'choices' => $this->getFontAwesomeIconChoices(),
|
||||||
|
|
|
@ -40,11 +40,10 @@ class AlertRepository extends EntityRepository
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getUserAlerts($user, $idalertcategory, $alertcategoryfilter, $ssoitems)
|
public function getUserAlerts($user, $idalertcategory, $alertcategoryfilter)
|
||||||
{
|
{
|
||||||
// Profilage
|
// Profilage
|
||||||
$roles = ($user ? $user->getRoles() : ['ROLE_ANONYME']);
|
$roles = ($user ? $user->getRoles() : ['ROLE_ANONYME']);
|
||||||
$niveau01 = ($user ? $user->getNiveau01() : null);
|
|
||||||
$groups = ($user ? $user->getGroups() : []);
|
$groups = ($user ? $user->getGroups() : []);
|
||||||
|
|
||||||
$userreads = ($user ? $user->getAlertreaders() : new ArrayCollection());
|
$userreads = ($user ? $user->getAlertreaders() : new ArrayCollection());
|
||||||
|
@ -78,30 +77,6 @@ class AlertRepository extends EntityRepository
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Récupération par Niveau01
|
|
||||||
$qb = $this->createQueryBuilder('a');
|
|
||||||
$qb->select('alert')
|
|
||||||
->from('App:Alert', 'alert')
|
|
||||||
->where(':niveau01 MEMBER OF alert.niveau01s')
|
|
||||||
->andWhere('alert.publishedat <= :today')
|
|
||||||
->andWhere($qb->expr()->orX(
|
|
||||||
$qb->expr()->gt('alert.unpublishedat', ':today'),
|
|
||||||
$qb->expr()->isNull('alert.unpublishedat')
|
|
||||||
))
|
|
||||||
->setParameter('niveau01', $niveau01)
|
|
||||||
->setParameter('today', date('Y-m-d'));
|
|
||||||
|
|
||||||
if ($idalertcategory && $alertcategoryfilter) {
|
|
||||||
$qb->andWhere('alert.alertcategory=:alertcategory')
|
|
||||||
->setParameter('alertcategory', $alertcategoryfilter);
|
|
||||||
}
|
|
||||||
$alertsniveau01s = $qb->getQuery()->getResult();
|
|
||||||
foreach ($alertsniveau01s as $alertniveau01) {
|
|
||||||
if (!$alerts->contains($alertniveau01) && !$userreads->contains($alertniveau01)) {
|
|
||||||
$alerts->add($alertniveau01);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Récupération des alerts par group
|
// Récupération des alerts par group
|
||||||
foreach ($groups as $group) {
|
foreach ($groups as $group) {
|
||||||
$qb = $this->createQueryBuilder('a');
|
$qb = $this->createQueryBuilder('a');
|
||||||
|
@ -128,36 +103,6 @@ class AlertRepository extends EntityRepository
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Récupération des alerts par item
|
|
||||||
$bookmarks = null;
|
|
||||||
$items = null;
|
|
||||||
$itemcategorys = null;
|
|
||||||
$this->getEntityManager()->getRepository('App:Item')->getUserItems($user, $bookmarks, $items, $itemcategorys, null, $ssoitems, 4);
|
|
||||||
foreach ($items as $item) {
|
|
||||||
$qb = $this->createQueryBuilder('a');
|
|
||||||
$qb->select('alert')
|
|
||||||
->from('App:Alert', 'alert')
|
|
||||||
->where(':item MEMBER OF alert.items')
|
|
||||||
->andWhere('alert.publishedat <= :today')
|
|
||||||
->andWhere($qb->expr()->orX(
|
|
||||||
$qb->expr()->gt('alert.unpublishedat', ':today'),
|
|
||||||
$qb->expr()->isNull('alert.unpublishedat')
|
|
||||||
))
|
|
||||||
->setParameter('item', $item)
|
|
||||||
->setParameter('today', date('Y-m-d'));
|
|
||||||
|
|
||||||
if ($idalertcategory && $alertcategoryfilter) {
|
|
||||||
$qb->andWhere('alert.alertcategory=:alertcategory')
|
|
||||||
->setParameter('alertcategory', $alertcategoryfilter);
|
|
||||||
}
|
|
||||||
$alertsitems = $qb->getQuery()->getResult();
|
|
||||||
foreach ($alertsitems as $alertitem) {
|
|
||||||
if (!$alerts->contains($alertitem) && !$userreads->contains($alertitem)) {
|
|
||||||
$alerts->add($alertitem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Trie des alerts
|
// Trie des alerts
|
||||||
$alertsordered = $alerts->getIterator();
|
$alertsordered = $alerts->getIterator();
|
||||||
$alertsordered->uasort(function ($first, $second) {
|
$alertsordered->uasort(function ($first, $second) {
|
||||||
|
|
|
@ -87,7 +87,7 @@ class ItemRepository extends ServiceEntityRepository
|
||||||
$itemsroles = $qb->getQuery()->getResult();
|
$itemsroles = $qb->getQuery()->getResult();
|
||||||
foreach ($itemsroles as $itemrole) {
|
foreach ($itemsroles as $itemrole) {
|
||||||
if (!$bookmarksitems->contains($itemrole) && !$items->contains($itemrole)) {
|
if (!$bookmarksitems->contains($itemrole) && !$items->contains($itemrole)) {
|
||||||
if (!$fgessential || ($fgessential && $itemrole->getEssential())) {
|
if (!$fgessential || ($fgessential && $itemrole->isEssential())) {
|
||||||
$items->add($itemrole);
|
$items->add($itemrole);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,7 @@ class ItemRepository extends ServiceEntityRepository
|
||||||
$itemsgroups = $qb->getQuery()->getResult();
|
$itemsgroups = $qb->getQuery()->getResult();
|
||||||
foreach ($itemsgroups as $itemgroup) {
|
foreach ($itemsgroups as $itemgroup) {
|
||||||
if (!$bookmarksitems->contains($itemgroup) && !$items->contains($itemgroup)) {
|
if (!$bookmarksitems->contains($itemgroup) && !$items->contains($itemgroup)) {
|
||||||
if (!$fgessential || ($fgessential && $itemgroup->getEssential())) {
|
if (!$fgessential || ($fgessential && $itemgroup->isEssential())) {
|
||||||
$items->add($itemgroup);
|
$items->add($itemgroup);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -166,7 +166,6 @@ class ItemRepository extends ServiceEntityRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
// Catégories affichées
|
// Catégories affichées
|
||||||
dump($itemsordered);
|
|
||||||
$itemcategorys = new ArrayCollection();
|
$itemcategorys = new ArrayCollection();
|
||||||
if ($iditemcategory && $itemcategoryfilter) {
|
if ($iditemcategory && $itemcategoryfilter) {
|
||||||
$itemcategorys = $itemcategoryfilter;
|
$itemcategorys = $itemcategoryfilter;
|
||||||
|
|
|
@ -3,17 +3,11 @@
|
||||||
namespace App\Repository;
|
namespace App\Repository;
|
||||||
|
|
||||||
use App\Entity\Page;
|
use App\Entity\Page;
|
||||||
|
use App\Entity\Pagewidget;
|
||||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||||
|
use Doctrine\Common\Collections\ArrayCollection;
|
||||||
use Doctrine\Persistence\ManagerRegistry;
|
use Doctrine\Persistence\ManagerRegistry;
|
||||||
|
|
||||||
/**
|
|
||||||
* @extends ServiceEntityRepository<Page>
|
|
||||||
*
|
|
||||||
* @method Page|null find($id, $lockMode = null, $lockVersion = null)
|
|
||||||
* @method Page|null findOneBy(array $criteria, array $orderBy = null)
|
|
||||||
* @method Page[] findAll()
|
|
||||||
* @method Page[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
|
|
||||||
*/
|
|
||||||
class PageRepository extends ServiceEntityRepository
|
class PageRepository extends ServiceEntityRepository
|
||||||
{
|
{
|
||||||
public function __construct(ManagerRegistry $registry)
|
public function __construct(ManagerRegistry $registry)
|
||||||
|
@ -39,28 +33,386 @@ class PageRepository extends ServiceEntityRepository
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// /**
|
// getPagesUser
|
||||||
// * @return Page[] Returns an array of Page objects
|
// $user = l'utilisateur en cours
|
||||||
// */
|
// $id = la page en cours que l'on cherche à afficher
|
||||||
// public function findByExampleField($value): array
|
// &$pagecurrent = l'entité de la page à afficher
|
||||||
// {
|
// &$pagesuser = les pages de l'utilisateur
|
||||||
// return $this->createQueryBuilder('p')
|
// &$pages = les pages système de l'utilistauer
|
||||||
// ->andWhere('p.exampleField = :val')
|
// &$pagesshared = les pages partagées pour l'utilisateur
|
||||||
// ->setParameter('val', $value)
|
|
||||||
// ->orderBy('p.id', 'ASC')
|
|
||||||
// ->setMaxResults(10)
|
|
||||||
// ->getQuery()
|
|
||||||
// ->getResult()
|
|
||||||
// ;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// public function findOneBySomeField($value): ?Page
|
public function getPagesUser($user, $id, &$pagecurrent, &$pagesportal, &$pagesuser, &$groupsshared)
|
||||||
// {
|
{
|
||||||
// return $this->createQueryBuilder('p')
|
// Profilage
|
||||||
// ->andWhere('p.exampleField = :val')
|
$roles = ($user ? $user->getRoles() : ['ROLE_ANONYME']);
|
||||||
// ->setParameter('val', $value)
|
$groups = ($user ? $user->getGroups() : []);
|
||||||
// ->getQuery()
|
|
||||||
// ->getOneOrNullResult()
|
// CREATION DES PAGES TEMPLATE UTILISATEUR
|
||||||
// ;
|
if ($user) {
|
||||||
// }
|
// Initialisation du calcul des templates
|
||||||
|
$templatesnotorder = new ArrayCollection();
|
||||||
|
|
||||||
|
// Récupération des templates par rôles
|
||||||
|
foreach ($roles as $role) {
|
||||||
|
$qb = $this->createQueryBuilder('page');
|
||||||
|
$qb->where($qb->expr()->like('page.roles', $qb->expr()->literal("%$role%")))
|
||||||
|
->andWhere('page.user is null')
|
||||||
|
->andWhere("page.parentfor='user'");
|
||||||
|
|
||||||
|
$templatesroles = $qb->getQuery()->getResult();
|
||||||
|
foreach ($templatesroles as $templaterole) {
|
||||||
|
if (!$templatesnotorder->contains($templaterole)) {
|
||||||
|
$templatesnotorder->add($templaterole);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Récupération des templates par group
|
||||||
|
foreach ($groups as $group) {
|
||||||
|
$qb = $this->createQueryBuilder('page');
|
||||||
|
$qb->where(':group MEMBER OF page.groups')
|
||||||
|
->andWhere('page.user is null')
|
||||||
|
->andWhere("page.parentfor='user'")
|
||||||
|
->setParameter('group', $group->getGroup());
|
||||||
|
|
||||||
|
$templatesgroups = $qb->getQuery()->getResult();
|
||||||
|
foreach ($templatesgroups as $templategroup) {
|
||||||
|
if (!$templatesnotorder->contains($templategroup)) {
|
||||||
|
$templatesnotorder->add($templategroup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pour chaque template associé au profil de l'utilisateur on s'assure qu'il possède bien la page
|
||||||
|
foreach ($templatesnotorder as $template) {
|
||||||
|
$exist = $this->getEntityManager()->getRepository("App\Entity\Page")->findBy(['page' => $template]);
|
||||||
|
if (!$exist) {
|
||||||
|
$page = $this->clonePage($user, $template);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GENERATION DES PAGES UTILISATEURS
|
||||||
|
// Une page utilisateur est une page dont il est le propriétaire mais qui n'est pas partagé dans un groupe
|
||||||
|
$pagesuser = false;
|
||||||
|
if ($user) {
|
||||||
|
$qb = $this->createQueryBuilder('page');
|
||||||
|
$qb->where('page.user=:user')
|
||||||
|
->setParameter('user', $user)
|
||||||
|
->orderBy('page.roworder', 'ASC')
|
||||||
|
->addOrderBy('page.name', 'ASC');
|
||||||
|
$pagesuser = $qb->getQuery()->getResult();
|
||||||
|
|
||||||
|
foreach ($pagesuser as $key => $pageuser) {
|
||||||
|
if (!$pageuser->getGroups()->isEmpty()) {
|
||||||
|
unset($pagesuser[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Permission sur les pages = il a forcement le droit des les modifier : elles sont à lui
|
||||||
|
if ($pagesuser) {
|
||||||
|
foreach ($pagesuser as $pageuser) {
|
||||||
|
$pageuser->setCanupdate(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GENERATION DES PAGES GROUPES DE TRAVAIL
|
||||||
|
// Une page groupe de travail est une page associée à un groupe isworkgroup sur lequel l'utilisateur est inscrit
|
||||||
|
if ($user) {
|
||||||
|
// En premier lieu on liste les groupes de travail de l'utilisateur
|
||||||
|
$groupsshared = $this->getEntityManager()->createQueryBuilder()
|
||||||
|
->select('g')
|
||||||
|
->from('App\Entity\Group', 'g')
|
||||||
|
->from('App\Entity\UserGroup', 'ug')
|
||||||
|
->where('g.isworkgroup=:isworkgroup')
|
||||||
|
->andWhere('g=ug.group')
|
||||||
|
->andWhere('ug.user=:user')
|
||||||
|
->setParameter('isworkgroup', true)
|
||||||
|
->setParameter('user', $user)
|
||||||
|
->orderBy('g.label')
|
||||||
|
->getQuery()->getResult();
|
||||||
|
|
||||||
|
// Pour chaque groupe de travail : on s'assure que le groupe possède au moins une page
|
||||||
|
// Sinon création de la page template associée au groupe
|
||||||
|
foreach ($groupsshared as $key => $groupshared) {
|
||||||
|
$pagesshared = $this->createQueryBuilder('page')
|
||||||
|
->from('App\Entity\Group', 'g')
|
||||||
|
->where('g.id=:id')
|
||||||
|
->andWhere('g MEMBER OF page.groups')
|
||||||
|
->setParameter('id', $groupshared->getId())
|
||||||
|
->orderBy('page.roworder')
|
||||||
|
->addOrderBy('page.name')
|
||||||
|
->getQuery()->getResult();
|
||||||
|
|
||||||
|
if (empty($pagesshared)) {
|
||||||
|
unset($groupsshared[$key]);
|
||||||
|
} else {
|
||||||
|
// Si l'utilisateur est manager du group il aura les permissions de modification sur la page
|
||||||
|
$usergroup = $this->getEntityManager()->getRepository("App\Entity\UserGroup")->findOneBy(['user' => $user, 'group' => $groupshared]);
|
||||||
|
if ($usergroup && $usergroup->getRolegroup() >= 90) {
|
||||||
|
foreach ($pagesshared as $key2 => $pageshared) {
|
||||||
|
$pagesshared[$key2]->setCanupdate(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$groupsshared[$key]->pagesshared = $pagesshared;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$pagesshared = false;
|
||||||
|
if ($user) {
|
||||||
|
$pagesshared = $this->createQueryBuilder('page')
|
||||||
|
->from('App\Entity\Group', 'g')
|
||||||
|
->from('App\Entity\UserGroup', 'ug')
|
||||||
|
->from('App\Entity\UserGroup', 'proprio')
|
||||||
|
->where('g.isworkgroup=:isworkgroup')
|
||||||
|
->andWhere('g=ug.group')
|
||||||
|
->andWhere('ug.user=:user')
|
||||||
|
->andWhere('g MEMBER OF page.groups')
|
||||||
|
->andWhere('page.user != :user')
|
||||||
|
->andWhere('page.user is not null')
|
||||||
|
->andWhere('proprio.user=page.user')
|
||||||
|
->andWhere('proprio.group=g')
|
||||||
|
->setParameter('isworkgroup', true)
|
||||||
|
->setParameter('user', $user)
|
||||||
|
->orderBy('page.roworder', 'ASC')
|
||||||
|
->addOrderBy('page.name', 'ASC')
|
||||||
|
->getQuery()->getResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
// GENERATION DES PAGES ADMINISTRATEUR
|
||||||
|
// Initialisation du calcul des pages
|
||||||
|
$pagesnotorder = new ArrayCollection();
|
||||||
|
|
||||||
|
// Récupération des pages par rôles
|
||||||
|
foreach ($roles as $role) {
|
||||||
|
$qb = $this->createQueryBuilder('page');
|
||||||
|
$qb->where($qb->expr()->like('page.roles', $qb->expr()->literal("%$role%")))
|
||||||
|
->andWhere('page.user is null')
|
||||||
|
->andWhere('page.parentfor is null');
|
||||||
|
|
||||||
|
$pagesroles = $qb->getQuery()->getResult();
|
||||||
|
foreach ($pagesroles as $pagerole) {
|
||||||
|
if (!$pagesnotorder->contains($pagerole)) {
|
||||||
|
$pagesnotorder->add($pagerole);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Récupération des pages par group
|
||||||
|
foreach ($groups as $group) {
|
||||||
|
if (!$group->getGroup()->isIsworkgroup()) {
|
||||||
|
$qb = $this->createQueryBuilder('page');
|
||||||
|
$qb->where(':group MEMBER OF page.groups')
|
||||||
|
->andWhere('page.user is null')
|
||||||
|
->andWhere('page.parentfor is null')
|
||||||
|
->setParameter('group', $group->getGroup());
|
||||||
|
|
||||||
|
$pagesgroups = $qb->getQuery()->getResult();
|
||||||
|
foreach ($pagesgroups as $pagegroup) {
|
||||||
|
if (!$pagesnotorder->contains($pagegroup)) {
|
||||||
|
$pagesnotorder->add($pagegroup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Permission sur les pages
|
||||||
|
foreach ($pagesnotorder as $pageadmin) {
|
||||||
|
$pageadmin->setCanupdate(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Trie des pages
|
||||||
|
$pagesportal = $pagesnotorder->getIterator();
|
||||||
|
$pagesportal->uasort(function ($first, $second) {
|
||||||
|
return (int) $first->getRowOrder() > (int) $second->getRowOrder() ? 1 : -1;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Afficher par défaut la pagebookmarké par l'utilisateur en préférence
|
||||||
|
if ($user && !isset($id)) {
|
||||||
|
$preference = $user->getPreference();
|
||||||
|
if (is_array($preference) && array_key_exists('pagebookmark', $preference)) {
|
||||||
|
$id = $preference['pagebookmark'][0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// On récupère la page à afficher
|
||||||
|
$pagecurrent = false;
|
||||||
|
if (isset($id)) {
|
||||||
|
$pagecurrent = $this->find($id);
|
||||||
|
|
||||||
|
// On s'assure que la page fait partie des pages du profil
|
||||||
|
$have = false;
|
||||||
|
foreach ($pagesportal as $v) {
|
||||||
|
if ($v == $pagecurrent) {
|
||||||
|
$have = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($pagesuser) {
|
||||||
|
foreach ($pagesuser as $v) {
|
||||||
|
if ($v == $pagecurrent) {
|
||||||
|
$have = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($groupsshared) {
|
||||||
|
foreach ($groupsshared as $groupshared) {
|
||||||
|
foreach ($groupshared->pagesshared as $v) {
|
||||||
|
if ($v == $pagecurrent) {
|
||||||
|
$have = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$have) {
|
||||||
|
$pagecurrent = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ou On récupère la premier page profilée comme page d'accueil
|
||||||
|
if (!$pagecurrent) {
|
||||||
|
$pagesportal->rewind();
|
||||||
|
if ($pagesportal->current()) {
|
||||||
|
$id = $pagesportal->current()->getId();
|
||||||
|
$pagecurrent = $this->find($id);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si aucune page profilé on récupère la premiere page perso
|
||||||
|
if (!$pagecurrent) {
|
||||||
|
if ($pagesuser) {
|
||||||
|
$pagecurrent = $pagesuser[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si aucune page profilé on récupère la premiere page perso
|
||||||
|
if (!$pagecurrent) {
|
||||||
|
if ($groupsshared) {
|
||||||
|
if ($groupsshared[0]) {
|
||||||
|
$pagecurrent = $groupsshared[0]->pagesshared[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ou On récupère la premiere page de l'utilisateur
|
||||||
|
if (!$pagecurrent && !empty($pagesuser)) {
|
||||||
|
$pagecurrent = $pagesuser[$this->firstkey($pagesuser)];
|
||||||
|
}
|
||||||
|
|
||||||
|
// ou On récupère la premiere page partagées
|
||||||
|
if (!$pagecurrent && !empty($pagesshared)) {
|
||||||
|
$pagecurrent = $pagesshared[$this->firstkey($pagesshared)];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPermission($user, $page, &$cansee, &$canupdate, &$canadd)
|
||||||
|
{
|
||||||
|
// si page de l'utilisateur
|
||||||
|
if ($page->getUser() == $user && !is_null($user)) {
|
||||||
|
$cansee = true;
|
||||||
|
$canupdate = true;
|
||||||
|
$canadd = true;
|
||||||
|
} else {
|
||||||
|
$canupdate = false;
|
||||||
|
$cansee = false;
|
||||||
|
|
||||||
|
// Profilage
|
||||||
|
$roles = ($user ? $user->getRoles() : ['ROLE_ANONYME']);
|
||||||
|
$groups = ($user ? $user->getGroups() : []);
|
||||||
|
|
||||||
|
// La page est-elle dans les pages associées au role de l'utilisateur ?
|
||||||
|
foreach ($roles as $role) {
|
||||||
|
$qb = $this->createQueryBuilder('page');
|
||||||
|
$qb->where($qb->expr()->like('page.roles', $qb->expr()->literal("%$role%")))
|
||||||
|
->andWhere('page.id=:id')
|
||||||
|
->andWhere('page.user is null')
|
||||||
|
->setParameter('id', $page->getId());
|
||||||
|
$inpagerole = $qb->getQuery()->getResult();
|
||||||
|
if ($inpagerole) {
|
||||||
|
$cansee = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// La page est-elle dans les pages associées aux groupes de l'utilisateur ?
|
||||||
|
foreach ($groups as $group) {
|
||||||
|
$qb = $this->createQueryBuilder('page');
|
||||||
|
$qb->where(':group MEMBER OF page.groups')
|
||||||
|
->andWhere('page.id=:id')
|
||||||
|
->setParameter('id', $page->getId())
|
||||||
|
->setParameter('group', $group->getGroup());
|
||||||
|
|
||||||
|
$inpagegroup = $qb->getQuery()->getResult();
|
||||||
|
|
||||||
|
if ($inpagegroup) {
|
||||||
|
$cansee = true;
|
||||||
|
// Est-il manager du groupe
|
||||||
|
if ($group->getGroup()->isIsworkgroup()) {
|
||||||
|
if ($group->getRolegroup() >= 90) {
|
||||||
|
$canupdate = true;
|
||||||
|
}
|
||||||
|
if ($group->getRolegroup() >= 50) {
|
||||||
|
$canadd = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function clonePage($user, $template)
|
||||||
|
{
|
||||||
|
$page = new Page();
|
||||||
|
$page->setName($template->getName());
|
||||||
|
$page->setRoworder($template->getRoworder());
|
||||||
|
$page->setMaxwidth($template->getMaxwidth());
|
||||||
|
$page->setUrl($template->getUrl());
|
||||||
|
$page->setHtml($template->getHtml());
|
||||||
|
$page->setTemplate($template->getTemplate());
|
||||||
|
$page->setPagecategory($template->getPagecategory());
|
||||||
|
$page->setUser($user);
|
||||||
|
$page->setPage($template);
|
||||||
|
|
||||||
|
$this->getEntityManager()->persist($page);
|
||||||
|
$this->getEntityManager()->flush();
|
||||||
|
|
||||||
|
$widgets = $template->getPagewidgets();
|
||||||
|
foreach ($widgets as $widget) {
|
||||||
|
$pagewidget = new Pagewidget();
|
||||||
|
$pagewidget->setName($widget->getName());
|
||||||
|
$pagewidget->setLoc($widget->getLoc());
|
||||||
|
$pagewidget->setRoworder($widget->getRoworder());
|
||||||
|
$pagewidget->setHeight($widget->getHeight());
|
||||||
|
$pagewidget->setAutoajust($widget->isAutoajust());
|
||||||
|
$pagewidget->setBorder($widget->isBorder());
|
||||||
|
$pagewidget->setOpened($widget->isOpened());
|
||||||
|
$pagewidget->setViewheader($widget->isViewheader());
|
||||||
|
$pagewidget->setColorheaderback($widget->getColorheaderback());
|
||||||
|
$pagewidget->setColorheaderfont($widget->getColorheaderfont());
|
||||||
|
$pagewidget->setColorbodyback($widget->getColorbodyback());
|
||||||
|
$pagewidget->setColorbodyfont($widget->getColorbodyfont());
|
||||||
|
$pagewidget->setParameter($widget->getParameter());
|
||||||
|
$pagewidget->setPage($page);
|
||||||
|
$pagewidget->setWidget($widget->getWidget());
|
||||||
|
$pagewidget->setIcon($widget->getIcon());
|
||||||
|
|
||||||
|
$this->getEntityManager()->persist($pagewidget);
|
||||||
|
$this->getEntityManager()->flush();
|
||||||
|
|
||||||
|
// dupliquer slide et bookmarks ??
|
||||||
|
}
|
||||||
|
|
||||||
|
return $page;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function firstkey($array)
|
||||||
|
{
|
||||||
|
foreach ($array as $key => $unused) {
|
||||||
|
return $key;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,126 @@
|
||||||
|
{% extends 'base.html.twig' %}
|
||||||
|
|
||||||
|
{% block body %}
|
||||||
|
|
||||||
|
{{ form_start(form) }}
|
||||||
|
<h1 class="page-header">
|
||||||
|
{% if mode=="update" %}
|
||||||
|
Modification {{ (touser=='false' ? "Lien" : "Favori") }}
|
||||||
|
{% elseif mode=="submit" %}
|
||||||
|
Création {{ (touser=='false' ? "Lien" : "Favori") }}
|
||||||
|
{% endif %}
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
{{ form_widget(form.submit) }}
|
||||||
|
<a class="btn btn-secondary" href="{{ path('app_'~access~'_page_'~usage~'_view',{id:idpage}) }}">Annuler</a>
|
||||||
|
|
||||||
|
|
||||||
|
{% if mode=="update" %}
|
||||||
|
<a href={{ path('app_'~access~'_bookmark_delete',{'id':entity.id,'idpage':idpage,'idwidget':idwidget,'touser':touser,usage:usage}) }}
|
||||||
|
class="btn btn-danger float-end"
|
||||||
|
data-method="delete" data-csrf="_token:{{ 'csrf' }}"
|
||||||
|
data-confirm="Êtes-vous sûr de vouloir supprimer ce favoris ?">
|
||||||
|
Supprimer
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
{% if app.session.flashbag.has('error') %}
|
||||||
|
<div class='alert alert-danger' style='margin: 5px 0px'>
|
||||||
|
<strong>Erreur</strong><br>
|
||||||
|
{% for flashMessage in app.session.flashbag.get('error') %}
|
||||||
|
{{ flashMessage }}<br>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if app.session.flashbag.has('notice') %}
|
||||||
|
<div class='alert alert-info' style='margin: 5px 0px'>
|
||||||
|
<strong>Information</strong><br>
|
||||||
|
{% for flashMessage in app.session.flashbag.get('notice') %}
|
||||||
|
{{ flashMessage }}<br>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row clearfix">
|
||||||
|
<div class="col-md-8">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<i class="fas fa-pencil-alt fa-fw"></i> Informations
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
{{ form_row(form.title) }}
|
||||||
|
{{ form_row(form.subtitle) }}
|
||||||
|
{{ form_row(form.url) }}
|
||||||
|
<em>le mot clé #login# sera remplacé par le login de l'utilisateur</em><br>
|
||||||
|
{{ form_row(form.target) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<i class="fas fa-glasses fa-fw"></i> Appararence
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
{{ form_row(form.color) }}
|
||||||
|
<div id="diviconsel" class="col-md-12 text-center mb-1 mt-1" style="height:140px; padding:20px; background-color: {{ entity.color ? entity.color : 'var(--colorbgbodydark)' }};">
|
||||||
|
{% if entity.icon %}
|
||||||
|
<img src="{{ path('app_minio_image',{file:entity.icon.label}) }}" height="100" />
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-md-12" style="text-align:center;padding:0px">
|
||||||
|
{{ form_row(form.idicon) }}
|
||||||
|
<a class="btn btn-success btn-modal" data-modalid="mymodallarge" data-modaltitle="Icône" data-modalurl="{{ path('app_all_icon_select') }}" title='Selectionner un Icône'>Selectionner un Icône</a>
|
||||||
|
<a class="btn btn-danger" onClick="delIcon()" title='Détacher'>Détacher l'Icône</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ form_end(form) }}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block localscript %}
|
||||||
|
<script>
|
||||||
|
$('document').ready(function(){
|
||||||
|
showhide();
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#bookmark_color").bind("change paste keyup", function() {
|
||||||
|
$("#diviconsel").css("background-color",$(this).val());
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function selIcon(idicon,url) {
|
||||||
|
$("#bookmark_idicon").val(idicon);
|
||||||
|
$("#diviconsel img").remove();
|
||||||
|
|
||||||
|
$("#diviconsel").append("<img src='"+url+"'>");
|
||||||
|
$("#diviconsel img").attr("height","100px");
|
||||||
|
$("#mymodallarge").modal("hide");
|
||||||
|
}
|
||||||
|
|
||||||
|
function delIcon() {
|
||||||
|
$("#diviconsel img").remove();
|
||||||
|
$("#bookmark_idicon").val(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
function showhide() {
|
||||||
|
$("#divhelp").hide();
|
||||||
|
if($("#bookmark_target").val()=="frame") {
|
||||||
|
$("#divhelp").show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
|
@ -52,10 +52,12 @@
|
||||||
{% if form.isworkgroup is defined %}
|
{% if form.isworkgroup is defined %}
|
||||||
{{ form_row(form.isworkgroup) }}
|
{{ form_row(form.isworkgroup) }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div id="blockisopen">
|
{% if form.pagetemplate is defined %}
|
||||||
|
{{ form_row(form.pagetemplate) }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{{ form_row(form.isopen) }}
|
{{ form_row(form.isopen) }}
|
||||||
</div>
|
|
||||||
|
|
||||||
{{ form_row(form.description) }}
|
{{ form_row(form.description) }}
|
||||||
|
|
||||||
|
@ -95,8 +97,16 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
function showhide() {
|
function showhide() {
|
||||||
if($("#group_isworkgroup").val()==0) $("#blockisopen").hide();
|
|
||||||
else $("#blockisopen").show();
|
if($("#group_isworkgroup").val()==0) {
|
||||||
|
$("#groupfield_group_isopen").hide();
|
||||||
|
$("#groupfield_group_pagetemplate").hide();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$("#groupfield_group_isopen").show();
|
||||||
|
$("#groupfield_group_pagetemplate").show();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,13 @@
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<h1 class="page-header">Membres du Groupe = {{ group.label }}</h1>
|
<h1 class="page-header">Membres du Groupe = {{ group.label }}</h1>
|
||||||
<a class="btn btn-secondary" href={{ path('app_'~access~'_group') }}>Fermer</a>
|
|
||||||
|
{% if idpage=="" %}
|
||||||
|
<a class="btn btn-secondary" href={{ path('app_'~access~'_group') }}>Fermer</a>
|
||||||
|
{% else %}
|
||||||
|
<a class="btn btn-secondary" href={{ path('app_home',{id:idpage}) }}>Fermer</a>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
{% extends "base.html.twig" %}
|
|
||||||
|
|
||||||
{% block body %}
|
|
||||||
{% if app.user %}
|
|
||||||
{% set username = app.user.username %}
|
|
||||||
{% else %}
|
|
||||||
{% set username = "" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% for bookmark in bookmarks %}
|
|
||||||
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% for itemcategory in itemcategorys %}
|
|
||||||
{% if itemcategorys|length > 1 %} <h2 {% if not loop.first %} class="mt-3" {% endif %}>{{itemcategory.label}}</h2> {% endif %}
|
|
||||||
|
|
||||||
<div class="items-list">
|
|
||||||
{% for item in items %}
|
|
||||||
{% if item.itemcategory==itemcategory %}
|
|
||||||
<div class="item item-large" style="background-color: {{ item.color ? item.color : "var(--colorbgbodydark)" }};">
|
|
||||||
<div class="item-container">
|
|
||||||
<div class="item-content">
|
|
||||||
<a class="item-link" href="{{ item.url|replace({'#login#': username}) }}" target="{{ item.target }}">
|
|
||||||
{% if item.icon %}
|
|
||||||
<img height="35" src="{{ path('app_minio_image',{file:item.icon.label}) }}">
|
|
||||||
{% else %}
|
|
||||||
<img height="35" src="{{ path('app_minio_image',{file:"icon/icon_pin.png"}) }}">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="item-title">
|
|
||||||
<h3 >{{ item.title }}</h3>
|
|
||||||
<div class="item-subtitle">{{ item.subtitle|nl2br }}</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="item-action">
|
|
||||||
{% if item.content %}
|
|
||||||
<a style="display:none"><i class="item-info fas fa-circle-info"></i></a>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="item-description hide">{{ item.content|raw }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
{% endblock %}
|
|
|
@ -71,10 +71,14 @@
|
||||||
'items' : [
|
'items' : [
|
||||||
{
|
{
|
||||||
icon: 'fa fa-copy fa-fw',
|
icon: 'fa fa-copy fa-fw',
|
||||||
route: 'app_admin_pagetemplate',
|
route: 'app_admin_page_template',
|
||||||
name: 'Modèles de Page',
|
name: 'Modèles de Page',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
icon: 'fa fa-file fa-fw',
|
||||||
|
route: 'app_admin_page_portal',
|
||||||
|
name: 'Pages',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
icon: 'fa fa-desktop',
|
icon: 'fa fa-desktop',
|
||||||
route: 'app_admin_item',
|
route: 'app_admin_item',
|
||||||
|
|
|
@ -87,7 +87,6 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{{ form_row(form.color) }}
|
{{ form_row(form.color) }}
|
||||||
|
|
||||||
|
|
||||||
<div id="diviconsel" class="col-md-12 text-center mb-1 mt-1" style="height:140px; padding:20px; background-color: {{ item.color ? item.color : 'var(--colorbgbodydark)' }};">
|
<div id="diviconsel" class="col-md-12 text-center mb-1 mt-1" style="height:140px; padding:20px; background-color: {{ item.color ? item.color : 'var(--colorbgbodydark)' }};">
|
||||||
{% if item.icon %}
|
{% if item.icon %}
|
||||||
<img src="{{ path('app_minio_image',{file:item.icon.label}) }}" height="100" />
|
<img src="{{ path('app_minio_image',{file:item.icon.label}) }}" height="100" />
|
||||||
|
|
|
@ -92,9 +92,15 @@
|
||||||
<span class="badge bg-success float-end"></span>
|
<span class="badge bg-success float-end"></span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a class="list-group-item" data-role="ROLE_ANIM" style="cursor:pointer">
|
<a class="list-group-item" data-role="ROLE_MANAGER" style="cursor:pointer">
|
||||||
<i class="fa fa-user"></i>
|
<i class="fa fa-user"></i>
|
||||||
Animateur de Groupe
|
Manager
|
||||||
|
<span class="badge bg-success float-end"></span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="list-group-item" data-role="ROLE_MASTER" style="cursor:pointer">
|
||||||
|
<i class="fa fa-user"></i>
|
||||||
|
Master
|
||||||
<span class="badge bg-success float-end"></span>
|
<span class="badge bg-success float-end"></span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
@ -150,7 +156,8 @@
|
||||||
|
|
||||||
$("a[data-role='ROLE_ANONYME']").children("span").html($('.group-ROLE_ANONYME').length);
|
$("a[data-role='ROLE_ANONYME']").children("span").html($('.group-ROLE_ANONYME').length);
|
||||||
$("a[data-role='ROLE_USER']").children("span").html($('.group-ROLE_USER').length);
|
$("a[data-role='ROLE_USER']").children("span").html($('.group-ROLE_USER').length);
|
||||||
$("a[data-role='ROLE_ANIM']").children("span").html($('.group-ROLE_ANIM').length);
|
$("a[data-role='ROLE_MANAGER']").children("span").html($('.group-ROLE_MANAGER').length);
|
||||||
|
$("a[data-role='ROLE_MASTER']").children("span").html($('.group-ROLE_MASTER').length);
|
||||||
$("a[data-role='ROLE_MODO']").children("span").html($('.group-ROLE_MODO').length);
|
$("a[data-role='ROLE_MODO']").children("span").html($('.group-ROLE_MODO').length);
|
||||||
$("a[data-role='ROLE_ADMIN']").children("span").html($('.group-ROLE_ADMIN').length);
|
$("a[data-role='ROLE_ADMIN']").children("span").html($('.group-ROLE_ADMIN').length);
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
Gestion des Pages
|
Gestion des Pages
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<a href="{{ path('app_config_page_submit') }}" class="btn btn-success">Ajouter une Page</a>
|
<a href="{{ path('app_'~access~'_page_'~usage~'_submit') }}" class="btn btn-success">Ajouter une Page</a>
|
||||||
|
|
||||||
<div class="custom-control custom-switch float-right">
|
<div class="custom-control custom-switch float-right">
|
||||||
<input id="alluser" type="checkbox" class="custom-control-input">
|
<input id="alluser" type="checkbox" class="custom-control-input">
|
||||||
|
@ -37,7 +37,8 @@
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block localjavascript %}
|
{% block localscript %}
|
||||||
|
<script>
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
{% if not app.session.get('alluserpage') is empty %}
|
{% if not app.session.get('alluserpage') is empty %}
|
||||||
var state={{ app.session.get('alluserpage') }};
|
var state={{ app.session.get('alluserpage') }};
|
||||||
|
@ -55,7 +56,7 @@
|
||||||
processing: true,
|
processing: true,
|
||||||
serverSide: true,
|
serverSide: true,
|
||||||
ajax: {
|
ajax: {
|
||||||
"url": "{{ path('app_config_page_ajax_list') }}",
|
"url": "{{ path('app_'~access~'_page_'~usage~'_tablelist') }}",
|
||||||
"data": function ( d ) {
|
"data": function ( d ) {
|
||||||
return $.extend( {}, d, {
|
return $.extend( {}, d, {
|
||||||
"alluser": $('#alluser').is(':checked')
|
"alluser": $('#alluser').is(':checked')
|
||||||
|
@ -85,5 +86,5 @@
|
||||||
$("#labelalluser").html("Afficher les pages créées par des utilisateurs");
|
$("#labelalluser").html("Afficher les pages créées par des utilisateurs");
|
||||||
|
|
||||||
});
|
});
|
||||||
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -1,47 +1,7 @@
|
||||||
{% if not inmenu %}
|
{% if not inmenu %}
|
||||||
<ul class="list-group" id="listgrouppage">
|
|
||||||
{% for groupshared in groupsshared %}
|
|
||||||
{% for page in groupshared.pagesshared %}
|
|
||||||
{% set forcereload=true %}
|
|
||||||
{% if page.pagecategory.id==1 %}
|
|
||||||
{% set forcereload=page.toreload %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set isactive="" %}
|
|
||||||
{% if entity.id is defined and page.id==entity.id %}
|
|
||||||
{% set isactive="active" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<li id="menupage-{{page.id}}" {{ isactive }} class="list-group-item {{isactive}}" onClick="$('#listgrouppage li').removeClass('active'); $(this).addClass('active') " style="cursor:pointer">
|
|
||||||
<a data-group="{{groupshared.id}}" onClick="$('#selgrouppages').modal('hide'); showPage({{ page.id }},{{ page.pagecategory.id }},'{{ page.canupdate }}','group','{{forcereload}}','{{groupshared.id}}','{{page.name}}')">
|
|
||||||
{% if page.fonticon %}
|
|
||||||
<i class="{{ page.fonticon }} fa-faw"></i>
|
|
||||||
{% else %}
|
|
||||||
<i class="fa fa-users fa-fw"></i>
|
|
||||||
{% endif %}
|
|
||||||
{{ page.name }}
|
|
||||||
|
|
||||||
{% if loop.first and page.counterread > 0 %}
|
|
||||||
<span id="badge-{{groupshared.id}}" class="badge">{{page.counterread}}</span>
|
|
||||||
{% endif %}
|
|
||||||
</a>
|
|
||||||
|
|
||||||
{% if loop.first and groupshared.pagesshared|length > 1 %}
|
|
||||||
<ul class="list-group" style="margin-top:15px">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if groupshared.pagesshared|length > 1 and loop.last %}
|
|
||||||
</ul>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if loop.last %}
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% else %}
|
{% else %}
|
||||||
{% for groupshared in groupsshared %}
|
{% for groupshared in groups %}
|
||||||
{% if groupshared.pagesshared|length == 1 %}
|
{% if groupshared.pagesshared|length == 1 %}
|
||||||
{% set page = groupshared.pagesshared[0] %}
|
{% set page = groupshared.pagesshared[0] %}
|
||||||
{% set forcereload=true %}
|
{% set forcereload=true %}
|
||||||
|
|
|
@ -1,334 +0,0 @@
|
||||||
|
|
||||||
{% extends '@CadolesCore/base.html.twig' %}
|
|
||||||
|
|
||||||
{% set color = app.session.get('color') %}
|
|
||||||
{% set colormain = color['main'] %}
|
|
||||||
|
|
||||||
{% block pagewrapper %}
|
|
||||||
<div id="pagecontainer" style="margin: 0px -30px;"></div>
|
|
||||||
<div id="gridtemplate" style="max-width:1500px; margin:auto; margin-bottom:30px">
|
|
||||||
<div class="col-md-3">qsdfqsdfqsd</div>
|
|
||||||
|
|
||||||
<div class="col-md-9">
|
|
||||||
{% if bookmarks is not empty %}
|
|
||||||
<div class="bookmark-container">
|
|
||||||
{% if items is not empty %}
|
|
||||||
<h3 class="grid-title" data-idcategory="bookmark" style="{{ colorbodyfont }}">Favoris</h3>
|
|
||||||
{% else %}
|
|
||||||
<p></p>
|
|
||||||
{% endif %}
|
|
||||||
<div class="grid clearfix">
|
|
||||||
<div class="grid-sizer grid-small"></div>
|
|
||||||
<div class="grid-gutter-sizer"></div>
|
|
||||||
{% for bookmark in bookmarks %}
|
|
||||||
<div class="grid-item grid-small">
|
|
||||||
<div class="grid-item-content" style="background-color: {{ bookmark.color ? "#"~bookmark.color : '#'~colormain }};">
|
|
||||||
<a style="cursor:pointer" onClick="modBookmark({{ bookmark.id }})" class="item-update"><i style="color: #FFF" class="fa fa-file" title="Modifier le favori"></i></a>
|
|
||||||
|
|
||||||
{% if bookmark.target == 'frame' %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ bookmark.title }}" style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url }}')">
|
|
||||||
{% elseif bookmark.target == "_self" %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}">
|
|
||||||
{% else %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url }}" target="{{ bookmark.target }}">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="item-link clearfix">
|
|
||||||
<div class="grid-item-logo">
|
|
||||||
{% if bookmark.icon %}
|
|
||||||
<img class="grid-item-img" height="110" src="/{{ alias }}/{{ bookmark.icon.label }}">
|
|
||||||
{% else %}
|
|
||||||
<img class="grid-item-img" height="110" src="/{{ alias }}/uploads/icon/icon_pin.png">
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid-item-title">
|
|
||||||
<h2>{{ bookmark.title }}</h2>
|
|
||||||
<span>{{ bookmark.subtitle|nl2br }}</<span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="bookmark-container" style="display:none">
|
|
||||||
<h3 class="grid-title" data-idcategory="bookmark"">Favoris</h3>
|
|
||||||
<div class="grid clearfix">
|
|
||||||
<div class="grid-sizer grid-small"></div>
|
|
||||||
<div class="grid-gutter-sizer"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set mycategs = [] %}
|
|
||||||
{% for itemcategory in itemcategorys %}
|
|
||||||
{% set haveitem=false %}
|
|
||||||
|
|
||||||
{% for item in items if item.itemcategory==itemcategory %}
|
|
||||||
|
|
||||||
{% if loop.index ==1 %}
|
|
||||||
{% set mycategs = mycategs|merge({ (loop.index) : itemcategory}) %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% for itemcategory in mycategs %}
|
|
||||||
{% set haveitem=false %}
|
|
||||||
|
|
||||||
{% for item in items if item.itemcategory==itemcategory %}
|
|
||||||
|
|
||||||
{% if loop.index ==1 %}
|
|
||||||
{% set haveitem=true %}
|
|
||||||
|
|
||||||
{% if mycategs|length > 1 or bookmarks is not empty %}
|
|
||||||
<h3 class="grid-title" data-idcategory="{{ itemcategory.id }}">{{ itemcategory.label }}</h3>
|
|
||||||
{% else %}
|
|
||||||
<p></p>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="grid clearfix">
|
|
||||||
<div class="grid-sizer grid-small"></div>
|
|
||||||
<div class="grid-gutter-sizer"></div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="grid-item grid-small" data-idcategory="{{ item.itemcategory.id }}" data-iditem="{{ item.id }}">
|
|
||||||
<div class="grid-item-content" style="background-color: {{ item.color ? "#"~item.color : '#'~colormain }};">
|
|
||||||
{% if item.content %}
|
|
||||||
<a style="cursor:pointer" class="item-preview"><i style="color: #FFF" class="fa fa-info" title="Informations sur ce service"></i></a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if item.protected and not app.user %}
|
|
||||||
{% if mode_auth == "SAML" %}
|
|
||||||
<a href="{{ path('lightsaml_sp.login') }}" {% if access=="user" %}target="_top"{% endif %}>
|
|
||||||
{% elseif mode_auth == "CAS" %}
|
|
||||||
<a href="{{ path('cas_sp.login') }}" {% if access=="user" %}target="_top"{% endif %}>
|
|
||||||
{% elseif mode_auth == "MYSQL" %}
|
|
||||||
<a href="{{ path('cnous_portal_user_login') }}" {% if access=="user" %}target="_top"{% endif %}>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% else %}
|
|
||||||
{% if item.target == 'frame' %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ item.title }}" style="cursor:pointer" onClick="showFrameitem({{ item.id }},'{{ item.url }}')">
|
|
||||||
{% elseif item.target == "_self" %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url }}" target="{% if access=="user" %}_top{% else %}{{ item.target }}{% endif %}">
|
|
||||||
{% else %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url }}" target="{{ item.target }}">
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="item-link clearfix">
|
|
||||||
<div class="grid-item-logo">
|
|
||||||
{% if item.icon %}
|
|
||||||
<img class="grid-item-img" height="110" src="/{{ alias }}/{{ item.icon.label }}">
|
|
||||||
{% else %}
|
|
||||||
<img class="grid-item-img" height="110" src="/{{ alias }}/uploads/icon/icon_pin.png">
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid-item-title">
|
|
||||||
<h2>{{ item.title }}</h2>
|
|
||||||
<span>{{ item.subtitle|nl2br }}</<span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="grid-item-body" style="display:none">
|
|
||||||
{{ item.content|raw }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
{% if haveitem %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block localjavascript %}
|
|
||||||
$('document').ready(function(){
|
|
||||||
// Ajustement des frames
|
|
||||||
$(window).resize(function() {
|
|
||||||
AjustFrame();
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// Création des grilles d'items
|
|
||||||
var optiongrid={columnWidth: '.grid-sizer', itemSelector: '.grid-item', gutter: '.grid-gutter-sizer'};
|
|
||||||
$('body').imagesLoaded(function() {
|
|
||||||
var grid = $('.grid').masonry(optiongrid);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Preview item de bureau
|
|
||||||
$( ".grid .item-preview" ).click(function() {
|
|
||||||
if($(this).parent().children(".grid-item-body").css('display') == 'none') {
|
|
||||||
$(this).html('<i style="color: #FFF" class="fa fa-minus" title="Informations sur ce service"></i>');
|
|
||||||
heightbody=$(this).parent().children(".grid-item-body").height()+30;
|
|
||||||
heightitem=$(this).parent().parent().height();
|
|
||||||
|
|
||||||
|
|
||||||
$(this).parent().children(".grid-item-body").show();
|
|
||||||
$(this).parent().parent().css("width","100%");
|
|
||||||
|
|
||||||
$(this).parent().parent().css("height",heightitem+heightbody);
|
|
||||||
$(this).parent().children(".grid-item-content").css("height",heightitem+heightbody);
|
|
||||||
$(this).parent().children(".item-preview").css("height",heightitem+heightbody);
|
|
||||||
|
|
||||||
var grid = $('.grid').masonry(optiongrid);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$(this).html('<i style="color: #FFF" class="fa fa-plus" title="Informations sur ce service"></i>');
|
|
||||||
|
|
||||||
$(this).parent().children(".grid-item-body").hide();
|
|
||||||
$(this).parent().parent().css("width","");
|
|
||||||
$(this).parent().parent().css("height","");
|
|
||||||
$(this).parent().children(".grid-item-content").css("height","");
|
|
||||||
$(this).parent().children(".item-preview").css("height","");
|
|
||||||
|
|
||||||
var grid = $('.grid').masonry(optiongrid);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Sur click item à sonder
|
|
||||||
{% if activate_widsonde %}
|
|
||||||
$( ".linktosonde" ).click(function() {
|
|
||||||
title=$(this).attr("data-sonde");
|
|
||||||
//$.getScript( "{{ widsonde_url }}?appli="+title );
|
|
||||||
});
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// Ajout d'un bookmark
|
|
||||||
function addBookmark(idwidget,touser) {
|
|
||||||
var url="{{ path('cadoles_portal_user_bookmark_submit',{idpage:0,idwidget:'xx',touser:'yy'})}}";
|
|
||||||
url=url.replace('xx',idwidget);
|
|
||||||
url=url.replace('yy',touser);
|
|
||||||
|
|
||||||
$(location).attr('href', url);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Modifciation d'un bookmark
|
|
||||||
function modBookmark(idbookmark) {
|
|
||||||
var url="{{ path('cadoles_portal_user_bookmark_update',{idpage:0,id:'xx'})}}";
|
|
||||||
|
|
||||||
url=url.replace('xx',idbookmark);
|
|
||||||
$(location).attr('href', url);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ajouter un item aux bookmark
|
|
||||||
function heartBookmark(iditem) {
|
|
||||||
var idbookmark;
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
method: "POST",
|
|
||||||
url: "{{ path('cadoles_portal_user_bookmark_heart') }}",
|
|
||||||
data: {
|
|
||||||
iditem:iditem
|
|
||||||
},
|
|
||||||
success: function(idbookmark) {
|
|
||||||
location.reload();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Supprimer un fichier
|
|
||||||
function delFile(directory,filename) {
|
|
||||||
var r = confirm("Confirmez-vous la suppression de ce fichier ?");
|
|
||||||
if (r == true) {
|
|
||||||
$.ajax({
|
|
||||||
method: "POST",
|
|
||||||
url: "{{ path('cadoles_core_user_file_delete') }}",
|
|
||||||
data: {
|
|
||||||
directory:directory,
|
|
||||||
filename:filename
|
|
||||||
},
|
|
||||||
success: function() {
|
|
||||||
location.reload();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ajustement des frames
|
|
||||||
function AjustFrame() {
|
|
||||||
$('.frameajust').iframeAutoHeight({
|
|
||||||
minHeight: 500, // Sets the iframe height to this value if the calculated value is less
|
|
||||||
heightOffset: 0, // Optionally add some buffer to the bottom
|
|
||||||
callback: function(callbackObject) { $(this).parent().css("height",callbackObject.newFrameHeight) ;}
|
|
||||||
});
|
|
||||||
|
|
||||||
if($(".frameitem").length>0) {
|
|
||||||
var heightbody = $('html').height();
|
|
||||||
var heightheader = $('.header').height();
|
|
||||||
if($('.pagemenu').css("display")=="none")
|
|
||||||
var heightmenu = 0;
|
|
||||||
else
|
|
||||||
var heightmenu = $('.pagemenu').height();
|
|
||||||
|
|
||||||
var heightframe = heightbody-heightheader-heightmenu;
|
|
||||||
|
|
||||||
$(".frameitem").height(heightframe);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Affichage d'un Flux
|
|
||||||
function showFlux(idwidget, id) {
|
|
||||||
if(id=="all")
|
|
||||||
$(".widget[data-id="+idwidget+"]").find(".feed").show();
|
|
||||||
else {
|
|
||||||
$(".widget[data-id="+idwidget+"]").find(".feed").hide();
|
|
||||||
$(".widget[data-id="+idwidget+"]").find(".flux-"+id).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
var optiongrid={columnWidth: '.grid-sizer',itemSelector: '.grid-item'};
|
|
||||||
var grid = $('.grid').masonry(optiongrid);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Affichage des frames associés aux items de bureau
|
|
||||||
function resizeFrame() {
|
|
||||||
var iFrame = document.getElementById('frameContent');
|
|
||||||
|
|
||||||
var heightbody = $('html').height();
|
|
||||||
var heightheader = $('.header').height();
|
|
||||||
if($('#appmenu').css("display")=="none")
|
|
||||||
var heightmenu = 0;
|
|
||||||
else
|
|
||||||
var heightmenu = $('#appmenu').height();
|
|
||||||
|
|
||||||
|
|
||||||
var heightframe = heightbody-heightheader-heightmenu;
|
|
||||||
|
|
||||||
$(".pageframe").each(function( index ) {
|
|
||||||
$(this).height(heightframe);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function showFrameitem(id,url,forcereload) {
|
|
||||||
$(".pageframe").hide();
|
|
||||||
|
|
||||||
// Si force le rechargement et frame existante on la détruit
|
|
||||||
if(forcereload&&$("#frameitem-"+id).length)
|
|
||||||
$("#frameitem-"+id).remove();
|
|
||||||
|
|
||||||
// Si la frame en cours existe déjà on l'affiche
|
|
||||||
if($("#frameitem-"+id).length)
|
|
||||||
$("#frameitem-"+id).show();
|
|
||||||
// Sinon on la génère
|
|
||||||
else
|
|
||||||
$("#pagecontainer").append("<iframe id='frameitem-"+id+"' class='pageframe' src='"+url+"' style='border:none; width:100%'></iframe>");
|
|
||||||
|
|
||||||
|
|
||||||
resizeFrame();
|
|
||||||
}
|
|
||||||
|
|
||||||
{% endblock %}
|
|
|
@ -1,292 +1,308 @@
|
||||||
|
|
||||||
{% extends '@CadolesCore/base.html.twig' %}
|
{% extends 'base.html.twig' %}
|
||||||
|
|
||||||
{% block localstyle %}
|
{% block localstyle %}
|
||||||
body{overflow-y:hidden}
|
<style>
|
||||||
|
body{
|
||||||
|
overflow-y:hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
#page{
|
||||||
|
padding:0px !important;
|
||||||
|
overflow-y:hidden;
|
||||||
|
}
|
||||||
|
</Style>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block appmenu %}
|
{% block menuapp %}
|
||||||
<ul class="nav navbar-top-links navbar-left">
|
<ul id="menupagesportal" class="navbar-nav">
|
||||||
{% for page in pagesadmin %}
|
{% for page in pagesportal %}
|
||||||
{% set forcereload=true %}
|
<li id="menupage-{{page.id}}" class="menupage nav-item" style="cursor:pointer">
|
||||||
{% if page.pagecategory.id==1 %}
|
<a onClick="showPage({{ page.id }},{{ page.pagecategory.id }},'{{ page.canupdate }}','portal','{{page.pagecategory.id==1?page.toreload:true}}',null,'{{page.name}}')">
|
||||||
{% set forcereload=page.toreload %}
|
{% if page.fonticon %}
|
||||||
{% endif %}
|
<i class="{{ page.fonticon }} fa-fw"></i>
|
||||||
|
{% elseif loop.first %}
|
||||||
{% set usage="portal" %}
|
<i class="fas fa-home fa-fw"></i>
|
||||||
{% if loop.first %} {% set usage="accueil" %} {%endif %}
|
{% else %}
|
||||||
|
<i class="fas fa-door-closed fa-fw"></i>
|
||||||
{% if entity.id is defined and page.id==entity.id %}
|
{% endif %}
|
||||||
<li id="menupage-{{page.id}}" class="active" style="cursor:pointer">
|
{{ page.name }}
|
||||||
<a onClick="showPage({{ page.id }},{{ page.pagecategory.id }},'{{ page.canupdate }}','{{usage}}','{{forcereload}}',null,'{{page.name}}')">
|
</a>
|
||||||
{% if page.fonticon %}
|
|
||||||
<i class="{{ page.fonticon }} fa-faw"></i>
|
|
||||||
{% endif %}
|
|
||||||
{{ page.name }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% else %}
|
|
||||||
<li id="menupage-{{page.id}}">
|
|
||||||
<a style="cursor:pointer" onClick="showPage({{ page.id }},{{ page.pagecategory.id }},'{{ page.canupdate }}','portal','{{forcereload}}',null,'{{page.name}}')">
|
|
||||||
{% if page.fonticon %}
|
|
||||||
<i class="{{ page.fonticon }} fa-faw"></i>
|
|
||||||
{% endif %}
|
|
||||||
{{ page.name }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<ul id="pagesuser" class="nav navbar-top-links navbar-left">
|
|
||||||
{% for page in pagesuser %}
|
|
||||||
{% set forcereload=true %}
|
|
||||||
{% if page.pagecategory.id==1 %}
|
|
||||||
{% set forcereload=page.toreload %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
|
||||||
{% if entity.id is defined and page.id==entity.id %}
|
|
||||||
<li id="menupage-{{page.id}}" class="active" style="cursor:pointer">
|
|
||||||
<a onClick="showPage({{ page.id }},{{ page.pagecategory.id }},'{{ page.canupdate }}','user','{{forcereload}}',null,'{{page.name}}')">
|
|
||||||
{% if page.fonticon %}
|
|
||||||
<i class="{{ page.fonticon }} fa-faw"></i>
|
|
||||||
{% else %}
|
|
||||||
<i class="fa fa-user fa-fw"></i>
|
|
||||||
{% endif %}
|
|
||||||
{{ page.name }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% else %}
|
|
||||||
<li id="menupage-{{page.id}}">
|
|
||||||
<a style="cursor:pointer" onClick="showPage({{ page.id }},{{ page.pagecategory.id }},'{{ page.canupdate }}','user','{{forcereload}}',null,'{{page.name}}')">
|
|
||||||
{% if page.fonticon %}
|
|
||||||
<i class="{{ page.fonticon }} fa-faw"></i>
|
|
||||||
{% else %}
|
|
||||||
<i class="fa fa-user fa-fw"></i>
|
|
||||||
{% endif %}
|
|
||||||
{{ page.name }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<ul id="pagesgroup" class="nav navbar-top-links navbar-left">
|
|
||||||
|
|
||||||
<!-- On regroupe l'ensemble des pages si plus de x groupes -->
|
|
||||||
{% set nbgroupregrouped=5 %}
|
|
||||||
{% if groupsshared|length > nbgroupregrouped %}
|
|
||||||
<ul id="pagesshared" class="nav navbar-top-links navbar-left">
|
|
||||||
<li>
|
|
||||||
<a id="menugrouppages" style='cursor:pointer' data-toggle='modal' data-target='#selgrouppages'>
|
|
||||||
<i class="fa fa-users fa-fw"></i> Mes Groupes
|
|
||||||
<span class="caret"></span>
|
|
||||||
</a>
|
|
||||||
</li>
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul id="menupagesuser" class="navbar-nav">
|
||||||
|
{% for page in pagesuser %}
|
||||||
|
<li id="menupage-{{page.id}}" class="menupage nav-item" style="cursor:pointer">
|
||||||
|
<a onClick="showPage({{ page.id }},{{ page.pagecategory.id }},'{{ page.canupdate }}','user','{{page.pagecategory.id==1?page.toreload:true}}',null,'{{page.name}}')">
|
||||||
|
{% if page.fonticon %}
|
||||||
|
<i class="{{ page.fonticon }} fa-fw"></i>
|
||||||
|
{% else %}
|
||||||
|
<i class="fas fa-user fa-fw"></i>
|
||||||
|
{% endif %}
|
||||||
|
{{ page.name }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
{% if groups|length > 0 and groups|length < 10 %}
|
||||||
|
<ul id="menupagesgroup" class="navbar-nav">
|
||||||
|
{% for groupshared in groups %}
|
||||||
|
{% if groupshared.pagesshared|length > 1 %}
|
||||||
|
<li id="menugroup-{{groupshared.id}}" class="nav-item menupage dropdown">
|
||||||
|
<a class="dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
|
<i class="fa fa-users fa-fw"></i>
|
||||||
|
{{ groupshared.label }}
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% for page in groupshared.pagesshared %}
|
||||||
|
{% if groupshared.pagesshared|length == 1 %}
|
||||||
|
<li id="menupage-{{page.id}}" class="menupage nav-item">
|
||||||
|
{%endif%}
|
||||||
|
|
||||||
|
<a id="menupage-{{page.id}}" style="cursor:pointer" class="{{ groupshared.pagesshared|length > 1 ? "menupage dropdown-item" : "" }}" onClick="showPage({{ page.id }},{{ page.pagecategory.id }},'{{ page.canupdate }}','group','{{page.pagecategory.id==1?page.toreload:true}}',{{groupshared.id}},'{{page.name}}')">
|
||||||
|
{% if page.fonticon %}
|
||||||
|
<i class="{{ page.fonticon }} fa-fw"></i>
|
||||||
|
{% else %}
|
||||||
|
<i class="fa fa-users fa-fw"></i>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{{ page.name }}
|
||||||
|
</a>
|
||||||
|
|
||||||
|
{% if groupshared.pagesshared|length == 1 %}
|
||||||
|
</li>
|
||||||
|
{%endif%}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if groupshared.pagesshared|length > 1 %}
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% elseif groups|length > 0 %}
|
||||||
|
<ul id="menupagesgroup" class="navbar-nav">
|
||||||
|
<li class="nav-item" style="cursor:pointer">
|
||||||
|
<a onclick="$('#selmenu').modal('show');">
|
||||||
|
<i class="fa fa-users fa-fw"></i> Mes Groupes
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
{%else%}
|
|
||||||
{% set inmenu=true %}
|
|
||||||
{{ include('@CadolesPortal/Page/menugroupe.html.twig') }}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</ul>
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block menuuser %}
|
||||||
|
{% if canadd %}
|
||||||
|
<a id="menusubmit" style="cursor:pointer" onclick="submitPage()" title='Ajouter une page'><i class='fa fa-plus fa-fw'></i></a>
|
||||||
|
{% endif %}
|
||||||
|
<a id="menuupdate" style="cursor:pointer;display:none" onclick="updatePage()" title='Modifier une page'><i class='fa fa-file fa-fw'></i></a>
|
||||||
|
<a id="menushare" style="cursor:pointer;display:none" onclick="sharePage()" title='Partager une page'><i class='fa fa-share-alt fa-fw'></i></a>
|
||||||
|
<a id="menudelete" style="cursor:pointer;display:none" onclick="deletePage()" title='Supprimer une page'><i class='fa fa-trash fa-fw'></i></a>
|
||||||
|
<a id="menuwidgetuser" class="btn-modal" style='cursor:pointer' data-modalid='selwidgetuser' title='Ajouter un widget'><i class='fa fa-cubes fa-fw'></i></a></li>
|
||||||
|
<a id="menuwidgetgroup" class="btn-modal" style='cursor:pointer' data-modalid='selwidgetgroup' title='Ajouter un widget'><i class='fa fa-cubes fa-fw'></i></a></li>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
<div id="menupageaction">
|
{% block body %}
|
||||||
<a id="menuname" style="cursor:pointer;font-size:80%" href=""></a>
|
<div id="pagecontainer"></div>
|
||||||
|
|
||||||
{% if canadd %}
|
<div id="selmenu" class="modal fade" role="dialog">
|
||||||
<a id="menusubmit" style="cursor:pointer" onclick="submitPage()" title='Ajouter une page'><i class='fa fa-plus fa-fw'></i></a>
|
<div class="modal-dialog modal-xl" role="document">
|
||||||
{% endif %}
|
<div class="modal-content">
|
||||||
<a id="menuupdate" style="cursor:pointer;display:none" onclick="updatePage()" title='Modifier une page'><i class='fa fa-file fa-fw'></i></a>
|
<div id="mymodalheader" class="modal-header">
|
||||||
<a id="menushare" style="cursor:pointer;display:none" onclick="sharePage()" title='Partager une page'><i class='fa fa-share-alt fa-fw'></i></a>
|
<h4 class="modal-title">SELECTIONNER UNE PAGE</h4>
|
||||||
<a id="menudelete" style="cursor:pointer;display:none" onclick="deletePage()" title='Supprimer une page'><i class='fa fa-trash fa-fw'></i></a>
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
<a id="menubookmark" style="cursor:pointer;display:none" onclick="bookmarkPage()" title="Faire de cette page votre page d'accueil"><i class='fa fa-heart fa-fw'></i></a>
|
</div>
|
||||||
<a id="menuwidgetuser" style='cursor:pointer;display:none' data-toggle='modal' data-target='#selwidgetuser' title='Ajouter un widget'><i class='fa fa-cubes fa-fw'></i></a>
|
|
||||||
<a id="menuwidgetgroup" style='cursor:pointer;display:none' data-toggle='modal' data-target='#selwidgetgroup' title='Ajouter un widget'><i class='fa fa-cubes fa-fw'></i></a>
|
<div class="modal-body">
|
||||||
|
<div id="pagesportal" style="display:none">
|
||||||
|
{% for page in pagesportal %}
|
||||||
|
{%if loop.first %}
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-header">PAGES PORTAIL</div>
|
||||||
|
<ul class="list-group list-group-flush">
|
||||||
|
{%endif%}
|
||||||
|
|
||||||
|
<a class="list-group-item" onClick="showPage({{ page.id }},{{ page.pagecategory.id }},'{{ page.canupdate }}','portal','{{page.pagecategory.id==1?page.toreload:true}}',null,'{{page.name}}')">
|
||||||
|
{% if page.fonticon %}
|
||||||
|
<i class="{{ page.fonticon }} fa-fw"></i>
|
||||||
|
{% elseif loop.first %}
|
||||||
|
<i class="fas fa-home fa-fw"></i>
|
||||||
|
{% else %}
|
||||||
|
<i class="fas fa-door-closed fa-fw"></i>
|
||||||
|
{% endif %}
|
||||||
|
{{ page.name }}
|
||||||
|
</a>
|
||||||
|
|
||||||
|
{%if loop.last %}
|
||||||
|
</ul></div>
|
||||||
|
{%endif%}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="pagesuser" style="display:none">
|
||||||
|
{% for page in pagesuser %}
|
||||||
|
{%if loop.first %}
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-header">PAGES PERSONNEL</div>
|
||||||
|
<ul class="list-group list-group-flush">
|
||||||
|
{%endif%}
|
||||||
|
|
||||||
|
<a class="list-group-item" onClick="showPage({{ page.id }},{{ page.pagecategory.id }},'{{ page.canupdate }}','user','{{page.pagecategory.id==1?page.toreload:true}}',null,'{{page.name}}')">
|
||||||
|
{% if page.fonticon %}
|
||||||
|
<i class="{{ page.fonticon }} fa-fw"></i>
|
||||||
|
{% else %}
|
||||||
|
<i class="fas fa-user fa-fw"></i>
|
||||||
|
{% endif %}
|
||||||
|
{{ page.name }}
|
||||||
|
</a>
|
||||||
|
|
||||||
|
{%if loop.last %}
|
||||||
|
</ul></div>
|
||||||
|
{%endif%}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="pagesgroup">
|
||||||
|
{% for groupshared in groups %}
|
||||||
|
{%if loop.first %}
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-header">PAGES GROUPE DE TRAVAIL</div>
|
||||||
|
<ul class="list-group list-group-flush">
|
||||||
|
{%endif%}
|
||||||
|
|
||||||
|
{% for page in groupshared.pagesshared %}
|
||||||
|
<a class="list-group-item" onClick="showPage({{ page.id }},{{ page.pagecategory.id }},'{{ page.canupdate }}','group','{{page.pagecategory.id==1?page.toreload:true}}',{{groupshared.id}},'{{page.name}}')">
|
||||||
|
{% if page.fonticon %}
|
||||||
|
<i class="{{ page.fonticon }} fa-fw"></i>
|
||||||
|
{% else %}
|
||||||
|
<i class="fas fa-users fa-fw"></i>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{{page.name == groupshared.label ? page.name : groupshared.label~" - "~page.name}}
|
||||||
|
</a>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{%if loop.last %}
|
||||||
|
</ul></div>
|
||||||
|
{%endif%}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="selwidgetuser" class="modal fade" role="dialog">
|
||||||
|
<div class="modal-dialog modal-xl" role="document">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block pagewrapper %}
|
|
||||||
<div id="pagecontainer" style="margin: 0px -30px;"></div>
|
|
||||||
|
|
||||||
|
|
||||||
{% if activate_widonlyoffice %}
|
|
||||||
<iframe src="{{ widonlyoffice_url }}/sso/login" style="display:none"></iframe>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set nbgroupregrouped=5 %}
|
|
||||||
{% if groupsshared|length > nbgroupregrouped %}
|
|
||||||
<div id="selgrouppages" class="modal fade bs-item-modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-lg">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
||||||
<h4 class="modal-title">MES GROUPES</h4>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="modal-body">
|
|
||||||
<a onclick="$('#selgrouppages').modal('hide');" class="btn btn-default" style="margin-bottom:15px">
|
|
||||||
Annuler
|
|
||||||
</a>
|
|
||||||
|
|
||||||
{% set inmenu=false %}
|
|
||||||
{{ include('@CadolesPortal/Page/menugroupe.html.twig') }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{%endif%}
|
|
||||||
|
|
||||||
<div id="selwidgetuser" class="modal fade bs-item-modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-lg">
|
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div id="mymodalheader" class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
||||||
<h4 class="modal-title">SELECTIONNER UN WIDGET</h4>
|
<h4 class="modal-title">SELECTIONNER UN WIDGET</h4>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="form-group row clearfix">
|
<table id="dataTablesuser" class="table table-striped table-bordered table-hover" style="width:100%">
|
||||||
<div class="col-md-12" style="margin-bottom:15px">
|
<thead>
|
||||||
<a onclick="$('#selwidgetuser').modal('hide');" class="btn btn-default">
|
|
||||||
Annuler
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="dataTable_wrapper col-md-12">
|
|
||||||
<table id="dataTables" class="table table-bordered table-striped table-hover">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
<tr>
|
||||||
<th width="100px">#</th>
|
<th class="no-sort" width="80px"></th>
|
||||||
<th>Nom</th>
|
<th width="100px">Nom</th>
|
||||||
<th class="no-sort">Description</th>
|
<th class="no-sort" width="500px">Description</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for widget in widgetsuser %}
|
{% for widget in widgetsuser %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<a onClick="selWidget({{ widget.id }})" style="cursor:pointer;">
|
<a onClick="selWidget({{ widget.id }},'user')" style="cursor:pointer;">
|
||||||
<img id="widgettype-{{ widget.id }}" class="grid-item-img" height="40" src="/{{ alias }}/{{ widget.icon.label }}" style="padding:2px">
|
<img id="widgettype-{{ widget.id }}" class="grid-item-img" height="40" src="{{path('app_minio_image',{file:widget.icon.label}) }}" style="padding:2px">
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ widget.name }}</td>
|
<td>{{ widget.name }}</td>
|
||||||
<td>{{ widget.description }}</td>
|
<td>{{ widget.description }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="selwidgetgroup" class="modal fade bs-item-modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-lg">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
||||||
<h4 class="modal-title">SELECTIONNER UN WIDGET</h4>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="form-group row clearfix">
|
|
||||||
<div class="col-md-12" style="margin-bottom:15px">
|
|
||||||
<a onclick="$('#selwidgetgroup').modal('hide');" class="btn btn-default">
|
|
||||||
Annuler
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="dataTable_wrapper col-md-12">
|
|
||||||
<table id="dataTables" class="table table-bordered table-striped table-hover">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th width="100px">#</th>
|
|
||||||
<th>Nom</th>
|
|
||||||
<th class="no-sort">Description</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
|
|
||||||
<tbody>
|
|
||||||
{% for widget in widgetsgroup %}
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<a onClick="selWidget({{ widget.id }})" style="cursor:pointer;">
|
|
||||||
<img id="widgettype-{{ widget.id }}" class="grid-item-img" height="40" src="/{{ alias }}/{{ widget.icon.label }}" style="padding:2px">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>{{ widget.name }}</td>
|
|
||||||
<td>{{ widget.description }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{%if app.user %}
|
<div id="selwidgetgroup" class="modal fade" role="dialog">
|
||||||
<a id="refreshcounter" data-event=""></a>
|
<div class="modal-dialog modal-xl" role="document">
|
||||||
{% endif %}
|
<div class="modal-content">
|
||||||
|
<div id="mymodalheader" class="modal-header">
|
||||||
|
<h4 class="modal-title">SELECTIONNER UN WIDGET</h4>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-body">
|
||||||
|
<table id="dataTablesgroup" class="table table-striped table-bordered table-hover" style="width:100%">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="no-sort" width="80px"></th>
|
||||||
|
<th width="100px">Nom</th>
|
||||||
|
<th class="no-sort" width="500px">Description</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
{% for widget in widgetsgroup %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<a onClick="selWidget({{ widget.id }},'group')" style="cursor:pointer;">
|
||||||
|
<img id="widgettype-{{ widget.id }}" class="grid-item-img" height="40" src="{{path('app_minio_image',{file:widget.icon.label}) }}" style="padding:2px">
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td>{{ widget.name }}</td>
|
||||||
|
<td>{{ widget.description }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block localexternalscript %}
|
{% block localscript %}
|
||||||
{% if app.user %}
|
<script>
|
||||||
<script src="/{{alias}}/bundles/goswebsocket/js/vendor/autobahn.min.js"></script>
|
|
||||||
<script src="/{{alias}}/bundles/goswebsocket/js/gos_web_socket_client.js"></script>
|
|
||||||
{% endif %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block localjavascript %}
|
|
||||||
var idpage;
|
var idpage;
|
||||||
pagebookmark="{{app.session.get("pagebookmark")}}";
|
|
||||||
|
|
||||||
$('document').ready(function(){
|
$('document').ready(function(){
|
||||||
{% if gotoroute is empty %}
|
|
||||||
{% for page in pagesadmin %}
|
// Afficher la page courrante
|
||||||
|
{% for page in pagesportal %}
|
||||||
|
{% if page.id==entity.id %}
|
||||||
|
showPage({{ page.id }}, {{ page.pagecategory.id }},'{{ page.canupdate }}','portal',false,null,'{{page.name}}');
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% for page in pagesuser %}
|
||||||
|
{% if page.id==entity.id %}
|
||||||
|
showPage({{ page.id }}, {{ page.pagecategory.id }},'{{ page.canupdate }}','user',false,null,'{{page.name}}');
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% for groupshared in groups %}
|
||||||
|
{% for page in groupshared.pagesshared %}
|
||||||
{% if page.id==entity.id %}
|
{% if page.id==entity.id %}
|
||||||
{% set usage="portal" %}
|
showPage({{ page.id }}, {{ page.pagecategory.id }},'{{ page.canupdate }}','group',true,{{groupshared.id}},'{{page.name}}');
|
||||||
{% if loop.first %} {% set usage="accueil" %} {%endif %}
|
|
||||||
showPage({{ page.id }}, {{ page.pagecategory.id }},'{{ page.canupdate }}','{{usage}}',false,null,'{{page.name}}');
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
{% for page in pagesuser %}
|
|
||||||
{% if page.id==entity.id %}
|
|
||||||
showPage({{ page.id }}, {{ page.pagecategory.id }},'{{ page.canupdate }}','user',false,null,'{{page.name}}');
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% for groupshared in groupsshared %}
|
|
||||||
{% for page in groupshared.pagesshared %}
|
|
||||||
{% if page.id==entity.id %}
|
|
||||||
showPage({{ page.id }}, {{ page.pagecategory.id }},'{{ page.canupdate }}','group',true,{{groupshared.id}},'{{page.name}}');
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
{% else %}
|
|
||||||
var url="{{ path(gotoroute,{id:gotoid}) }}";
|
|
||||||
showGoto(url);
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
// Rendre les pages user déplacable
|
// Rendre les pages user déplacable
|
||||||
$("#pagesuser").sortable({
|
$("#menupagesuser").sortable({
|
||||||
axis: "x",
|
axis: "x",
|
||||||
forcePlaceholderSize: true,
|
forcePlaceholderSize: true,
|
||||||
placeholder: "placeholder",
|
placeholder: "placeholder",
|
||||||
|
@ -295,7 +311,7 @@
|
||||||
var idpage=$(this).attr('id').replace("menupage-","");
|
var idpage=$(this).attr('id').replace("menupage-","");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
method: "POST",
|
method: "POST",
|
||||||
url: "{{ path('cadoles_portal_'~access~'_page_order') }}",
|
url: "{{ path('app_'~access~'_page_user_order') }}",
|
||||||
data: {
|
data: {
|
||||||
id:idpage,
|
id:idpage,
|
||||||
order:order
|
order:order
|
||||||
|
@ -308,47 +324,16 @@
|
||||||
// Initialisation du tableau des widgets selectionnable à la création
|
// Initialisation du tableau des widgets selectionnable à la création
|
||||||
$('.table').DataTable({
|
$('.table').DataTable({
|
||||||
columnDefs: [ { "targets": 'no-sort', "orderable": false }, { "targets": 0, "className": "text-center" } ],
|
columnDefs: [ { "targets": 'no-sort', "orderable": false }, { "targets": 0, "className": "text-center" } ],
|
||||||
responsive: true,
|
|
||||||
iDisplayLength: 10,
|
iDisplayLength: 10,
|
||||||
order: [[ 1, "asc" ]],
|
order: [[ 1, "asc" ]],
|
||||||
|
scrollX: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
{% if app.user and app.session.get("timerefreshnotif") > 0%}
|
|
||||||
setInterval(function(){
|
|
||||||
loadmsgCounter()
|
|
||||||
}, {{(app.session.get("timerefreshnotif")*1000)}});
|
|
||||||
{% endif %}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$(window).resize(function() {
|
|
||||||
resizeFrame();
|
|
||||||
});
|
|
||||||
|
|
||||||
function resizeFrame() {
|
|
||||||
var iFrame = document.getElementById('frameContent');
|
|
||||||
|
|
||||||
var heightbody = $('html').height();
|
|
||||||
|
|
||||||
if($('.header').length)
|
|
||||||
var heightheader = $('.header').height();
|
|
||||||
else
|
|
||||||
var heightheader = $('.navbarsmall').height();
|
|
||||||
|
|
||||||
if($('#appmenu').css("display")=="none")
|
|
||||||
var heightmenu = 0;
|
|
||||||
else
|
|
||||||
var heightmenu = $('#appmenu').height();
|
|
||||||
|
|
||||||
var heightframe = heightbody-heightheader-heightmenu;
|
|
||||||
|
|
||||||
$(".pageframe").each(function( index ) {
|
|
||||||
$(this).height(heightframe);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Affichage des frames associés aux items de bureau
|
// Affichage des frames associés aux items de bureau
|
||||||
function showFrameitem(id,url,forcereload) {
|
function showItemframe(id,url,forcereload) {
|
||||||
$(".pageframereload").remove();
|
$(".pageframereload").remove();
|
||||||
$(".pageframe").hide();
|
$(".pageframe").hide();
|
||||||
|
|
||||||
|
@ -366,7 +351,7 @@
|
||||||
$("#pagecontainer").append("<iframe onload='this.contentWindow.focus()' id='frameitem-"+id+"' class='pageframe "+myclass+"' src='"+url+"' style='border:none; width:100%'></iframe>");
|
$("#pagecontainer").append("<iframe onload='this.contentWindow.focus()' id='frameitem-"+id+"' class='pageframe "+myclass+"' src='"+url+"' style='border:none; width:100%'></iframe>");
|
||||||
}
|
}
|
||||||
|
|
||||||
resizeFrame();
|
Resize();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Affichages des pages
|
// Affichages des pages
|
||||||
|
@ -377,20 +362,26 @@
|
||||||
// Cacher toutes les pages
|
// Cacher toutes les pages
|
||||||
$(".pageframereload").remove();
|
$(".pageframereload").remove();
|
||||||
$(".pageframe").hide();
|
$(".pageframe").hide();
|
||||||
|
$(".dropdown-menu").hide();
|
||||||
|
|
||||||
// Rendre actif le page en cours dans le menu
|
// Rendre actif le page en cours dans le menu
|
||||||
$(".navbar-top-links li").removeClass("active");
|
$(".menupage").removeClass("active");
|
||||||
$(".dropdown-toggle").removeClass("dropdownactive");
|
$(".dropdown-toggle").removeClass("active");
|
||||||
|
|
||||||
$("#menupage-"+id).addClass("active");
|
$("#menupage-"+id).addClass("active");
|
||||||
$('a[data-group="'+groupid+'"][data-toggle="dropdown"]').addClass("dropdownactive");;
|
$("#menugroup-"+groupid).addClass("active");
|
||||||
|
|
||||||
var url="{{ path('cadoles_portal_user_page_view',{id:'xx',usage:'yy','group':'zz'}) }}";
|
|
||||||
url=url.replace('xx',id);
|
|
||||||
url=url.replace('yy',usage);
|
|
||||||
url=url.replace('zz',groupid);
|
|
||||||
|
|
||||||
passurl="{{ path('cadoles_core_home',{id:'xx'}) }}";
|
if(usage=="portal")
|
||||||
|
var url="{{ path('app_all_page_portal_view',{id:'xx'}) }}";
|
||||||
|
else if(usage=="user")
|
||||||
|
var url="{{ path('app_all_page_user_view',{id:'xx'}) }}";
|
||||||
|
else
|
||||||
|
var url="{{ path('app_all_page_group_view',{id:'xx'}) }}";
|
||||||
|
|
||||||
|
url=url.replace('xx',id);
|
||||||
|
|
||||||
|
passurl="{{ path('app_home',{id:'xx'}) }}";
|
||||||
passurl=passurl.replace('xx',id);
|
passurl=passurl.replace('xx',id);
|
||||||
history.pushState('data to be passed', 'Title of the page', passurl);
|
history.pushState('data to be passed', 'Title of the page', passurl);
|
||||||
|
|
||||||
|
@ -408,93 +399,46 @@
|
||||||
$("#pagecontainer").append("<iframe onload='this.contentWindow.focus()' id='page-"+id+"' data-category='"+catid+"' class='pageframe "+myclass+"' src='"+url+"' style='border:none; width:100%'></iframe>");
|
$("#pagecontainer").append("<iframe onload='this.contentWindow.focus()' id='page-"+id+"' data-category='"+catid+"' class='pageframe "+myclass+"' src='"+url+"' style='border:none; width:100%'></iframe>");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Détruire le badge associé car normalement de fait on a lu les notif
|
|
||||||
if(usage=="group") {
|
|
||||||
$("#badge-"+groupid).remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Nom de la page
|
|
||||||
console.log(pagename);
|
|
||||||
$("#menuname").html(pagename);
|
|
||||||
|
|
||||||
// Cacher les actions possibles sur la page
|
// Cacher les actions possibles sur la page
|
||||||
$("#menuupdate").hide();
|
$("#menuupdate").hide();
|
||||||
$("#menushare").hide();
|
$("#menushare").hide();
|
||||||
$("#menudelete").hide();
|
$("#menudelete").hide();
|
||||||
$("#menubookmark").hide();
|
|
||||||
$("#menuwidgetuser").hide();
|
$("#menuwidgetuser").hide();
|
||||||
$("#menuwidgetgroup").hide();
|
$("#menuwidgetgroup").hide();
|
||||||
|
|
||||||
if(canupdate) {
|
if(canupdate) {
|
||||||
$("#menuupdate").show();
|
$("#menuupdate").show();
|
||||||
$("#menushare").show();
|
|
||||||
$("#menudelete").show();
|
$("#menudelete").show();
|
||||||
}
|
}
|
||||||
|
|
||||||
{% if app.user %}
|
|
||||||
|
|
||||||
if(id==pagebookmark) {
|
|
||||||
$("#menubookmark").css("color","red");
|
|
||||||
$("#menubookmark").attr("title","Ne plus faire de cette page votre page d'accueil")
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$("#menubookmark").css("color","");
|
|
||||||
$("#menubookmark").attr("title","Faire de cette page votre page d'accueil")
|
|
||||||
}
|
|
||||||
|
|
||||||
$("#menubookmark").show();
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
// Si page de type widget on affiche la selection des widgets à insérer
|
// Si page de type widget on affiche la selection des widgets à insérer
|
||||||
if($("#page-"+id).data('category')==2&&canupdate) {
|
if($("#page-"+id).data('category')==2&&canupdate) {
|
||||||
if(usage=="user") $("#menuwidgetuser").show();
|
if(usage=="user") $("#menuwidgetuser").show();
|
||||||
if(usage=="group") $("#menuwidgetgroup").show();
|
if(usage=="group") $("#menuwidgetgroup").show();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// On resize les frame
|
Resize();
|
||||||
resizeFrame();
|
|
||||||
|
|
||||||
// Mettre le focus dans la frame
|
|
||||||
//$("#page-"+id).contentWindow.focus();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Affichages des pages
|
|
||||||
function showGoto(url) {
|
|
||||||
$("#pagecontainer").append("<iframe onload='this.contentWindow.focus()' id='goto' class='pageframe pageframereload' src='"+url+"' style='border:none; width:100%'></iframe>");
|
|
||||||
|
|
||||||
// On resize les frame
|
|
||||||
resizeFrame();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function submitPage() {
|
function submitPage() {
|
||||||
var url="{{ path('cadoles_portal_'~access~'_page_submit') }}";
|
var url="{{ path('app_'~access~'_page_user_submit') }}";
|
||||||
$(location).attr('href',url);
|
$(location).attr('href',url);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updatePage() {
|
function updatePage() {
|
||||||
if($("#page-"+idpage).length) {
|
if($("#page-"+idpage).length) {
|
||||||
var url="{{ path('cadoles_portal_'~access~'_page_update',{id:'xx'}) }}";
|
var url="{{ path('app_'~access~'_page_user_update',{id:'xx'}) }}";
|
||||||
url=url.replace('xx',idpage);
|
url=url.replace('xx',idpage);
|
||||||
|
|
||||||
$(location).attr('href',url);
|
$(location).attr('href',url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function sharePage() {
|
|
||||||
if($("#page-"+idpage).length) {
|
|
||||||
var url="{{ path('cadoles_portal_'~access~'_page_share',{id:'xx'}) }}";
|
|
||||||
url=url.replace('xx',idpage);
|
|
||||||
|
|
||||||
$(location).attr('href',url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function deletePage() {
|
function deletePage() {
|
||||||
if($("#page-"+idpage).length) {
|
if($("#page-"+idpage).length) {
|
||||||
if (confirm('Êtes-vous sûr de vouloir supprimer ?')) {
|
if (confirm('Êtes-vous sûr de vouloir supprimer ?')) {
|
||||||
var url="{{ path('cadoles_portal_'~access~'_page_delete',{id:'xx'}) }}";
|
var url="{{ path('app_'~access~'_page_user_delete',{id:'xx'}) }}";
|
||||||
url=url.replace('xx',idpage);
|
url=url.replace('xx',idpage);
|
||||||
|
|
||||||
$(location).attr('href',url);
|
$(location).attr('href',url);
|
||||||
|
@ -502,70 +446,16 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function bookmarkPage() {
|
|
||||||
{% if app.user %}
|
|
||||||
if($("#page-"+idpage).length) {
|
|
||||||
if(pagebookmark==idpage)
|
|
||||||
confirmtext="Votre page d'accueil redevient l'accueil général de {{ app.session.get("appname") }}.";
|
|
||||||
else
|
|
||||||
confirmtext="Cette page sera votre page d'acueil à l'ouverture de {{ app.session.get("appname") }}, vous pourrez à tout moment changer de page d'accueil.";
|
|
||||||
|
|
||||||
if (confirm(confirmtext)) {
|
|
||||||
$.ajax({
|
|
||||||
method: "POST",
|
|
||||||
url: "{{ path('cadoles_core_user_preference') }}",
|
|
||||||
data: {
|
|
||||||
id:0,
|
|
||||||
key:'pagebookmark',
|
|
||||||
value: idpage
|
|
||||||
},
|
|
||||||
success: function() {
|
|
||||||
if(pagebookmark==idpage) {
|
|
||||||
pagebookmark="";
|
|
||||||
$("#menubookmark").css("color","");
|
|
||||||
$("#menubookmark").attr("title","Faire de cette page votre page d'accueil")
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
pagebookmark=idpage;
|
|
||||||
$("#menubookmark").css("color","red");
|
|
||||||
$("#menubookmark").attr("title","Ne plus faire de cette page votre page d'accueil")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{% endif %}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Création d'un widget selectionné
|
// Création d'un widget selectionné
|
||||||
function selWidget(idwidgettype) {
|
function selWidget(idwidgettype,usage) {
|
||||||
var url="{{ path('cadoles_portal_user_pagewidget_widget_sumbit',{idpage:'yy',idwidgettype:'xx'})}}";
|
var url="{{ path('app_all_pagewidget_widget_sumbit',{idpage:'yy',idwidgettype:'xx',usage:'zz'})}}";
|
||||||
url=url.replace('xx',idwidgettype);
|
url=url.replace('xx',idwidgettype);
|
||||||
url=url.replace('yy',idpage);
|
url=url.replace('yy',idpage);
|
||||||
|
url=url.replace('zz',usage);
|
||||||
$(location).attr('href', url);
|
|
||||||
|
$(".modal").modal("hide");
|
||||||
|
$("#page-"+idpage).attr("src",url);
|
||||||
};
|
};
|
||||||
|
|
||||||
function loadmsgCounter() {
|
</script>
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
method: "POST",
|
|
||||||
url: "{{ path('cadoles_portal_user_page_ajax_msgcounter') }}",
|
|
||||||
success: function(data) {
|
|
||||||
$.each(data, function(group, counter) {
|
|
||||||
menu=$("a[data-group='"+group+"']");
|
|
||||||
if(menu.length) {
|
|
||||||
if(menu.children(".badge").length) {
|
|
||||||
if(counter==0)
|
|
||||||
menu.remove();
|
|
||||||
else
|
|
||||||
menu.children(".badge").html(counter);
|
|
||||||
}
|
|
||||||
else if(counter>0)
|
|
||||||
menu.append("<span id='badge-"+group+"' class='badge'>"+counter+"</span");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
{% extends '@CadolesCore/base.html.twig' %}
|
|
||||||
|
|
||||||
{% block pagewrapper %}
|
|
||||||
{{ form_start(form) }}
|
|
||||||
<h1>
|
|
||||||
Partage Page
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
{{ form_widget(form.submit) }}
|
|
||||||
{% if access=="config" %}
|
|
||||||
<a class="btn btn-default" href="{{ path('cadoles_portal_config_page_view',{id:entity.id}) }}">Annuler</a>
|
|
||||||
{% else %}
|
|
||||||
<a class="btn btn-default" href="{{ path('cadoles_core_home',{id:entity.id}) }}">Annuler</a>
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
{% if app.session.flashbag.has('error') %}
|
|
||||||
<div class='alert alert-danger' style='margin: 5px 0px'>
|
|
||||||
<strong>Erreur</strong><br>
|
|
||||||
{% for flashMessage in app.session.flashbag.get('error') %}
|
|
||||||
{{ flashMessage }}<br>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if app.session.flashbag.has('notice') %}
|
|
||||||
<div class='alert alert-info' style='margin: 5px 0px'>
|
|
||||||
<strong>Information</strong><br>
|
|
||||||
{% for flashMessage in app.session.flashbag.get('notice') %}
|
|
||||||
{{ flashMessage }}<br>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="panel panel-primary">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<i class="fa fa-pencil fa-fw"></i> Informations
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="panel-body">
|
|
||||||
{{ form_row(form.groups) }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{ form_end(form) }}
|
|
||||||
{% endblock %}
|
|
|
@ -1,6 +1,6 @@
|
||||||
{% extends '@CadolesCore/base.html.twig' %}
|
{% extends 'base.html.twig' %}
|
||||||
|
|
||||||
{% block pagewrapper %}
|
{% block body %}
|
||||||
{{ form_start(form) }}
|
{{ form_start(form) }}
|
||||||
<h1>
|
<h1>
|
||||||
Nouvelle Page
|
Nouvelle Page
|
||||||
|
@ -8,10 +8,10 @@
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
{{ form_widget(form.submit) }}
|
{{ form_widget(form.submit) }}
|
||||||
{% if access=="config" %}
|
{% if access=="admin" %}
|
||||||
<a class="btn btn-default" href="{{ path('cadoles_portal_config_page') }}">Annuler</a>
|
<a class="btn btn-secondary" href="{{ path('app_admin_page_portal') }}">Annuler</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="btn btn-default" href="{{ path('cadoles_core_home') }}">Annuler</a>
|
<a class="btn btn-secondary" href="{{ path('app_home') }}">Annuler</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -33,12 +33,12 @@
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="panel panel-primary">
|
<div class="card">
|
||||||
<div class="panel-heading">
|
<div class="card-header">
|
||||||
<i class="fa fa-pencil fa-fw"></i> Informations
|
<i class="fa fa-pencil fa-fw"></i> Informations
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="panel-body">
|
<div class="card-body">
|
||||||
{{ form_row(form.name) }}
|
{{ form_row(form.name) }}
|
||||||
{{ form_row(form.pagecategory) }}
|
{{ form_row(form.pagecategory) }}
|
||||||
{{ form_row(form.usage) }}
|
{{ form_row(form.usage) }}
|
||||||
|
@ -46,8 +46,9 @@
|
||||||
{{ form_row(form.user) }}
|
{{ form_row(form.user) }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div id="pagegroup">{{ form_row(form.page) }}</div>
|
{{ form_row(form.page) }}
|
||||||
<div id="groupworkgroup">{{ form_row(form.groups) }}</div>
|
{{ form_row(form.groups) }}
|
||||||
|
|
||||||
{{ form_row(form.roworder) }}
|
{{ form_row(form.roworder) }}
|
||||||
{{ form_row(form.fonticon) }}
|
{{ form_row(form.fonticon) }}
|
||||||
{{ form_row(form.maxwidth) }}
|
{{ form_row(form.maxwidth) }}
|
||||||
|
@ -56,7 +57,8 @@
|
||||||
{{ form_end(form) }}
|
{{ form_end(form) }}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block localjavascript %}
|
{% block localscript %}
|
||||||
|
<script>
|
||||||
$('document').ready(function(){
|
$('document').ready(function(){
|
||||||
hideshow();
|
hideshow();
|
||||||
});
|
});
|
||||||
|
@ -71,16 +73,16 @@
|
||||||
|
|
||||||
function hideshow() {
|
function hideshow() {
|
||||||
if($("#page_submit_pagecategory").val()==2)
|
if($("#page_submit_pagecategory").val()==2)
|
||||||
$("#pagegroup").show();
|
$("#groupfield_page_submit_page").show();
|
||||||
else {
|
else {
|
||||||
$("#pagegroup").hide();
|
$("#groupfield_page_submit_page").hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if($("#page_submit_usage").val()=="group")
|
if($("#page_submit_usage").val()=="group")
|
||||||
$("#groupworkgroup").show();
|
$("#groupfield_page_submit_groups").show();
|
||||||
else {
|
else {
|
||||||
$("#groupworkgroup").hide();
|
$("#groupfield_page_submit_groups").hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -147,9 +147,11 @@
|
||||||
{{ form_start(form) }}
|
{{ form_start(form) }}
|
||||||
<h1 class="page-header">
|
<h1 class="page-header">
|
||||||
{% if mode=="update" %}
|
{% if mode=="update" %}
|
||||||
Modification Page Widget = {{page.name}}
|
{% if usage=="template" %}
|
||||||
{% elseif mode=="updatetemplate" %}
|
Modification Modèle de Page = {{page.name}}
|
||||||
Modification Modèle de Page = {{page.name}}
|
{% else %}
|
||||||
|
Modification Page Widget = {{page.name}}
|
||||||
|
{% endif %}
|
||||||
{% elseif mode=="submit" %}
|
{% elseif mode=="submit" %}
|
||||||
Création Page Widget
|
Création Page Widget
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -157,33 +159,21 @@
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
{{ form_widget(form.submit) }}
|
{{ form_widget(form.submit) }}
|
||||||
{% if access=="config" %}
|
{% if access=="admin" %}
|
||||||
{% if mode=="updatetemplate" %}
|
<a class="btn btn-secondary" href="{{ path('app_'~access~'_page_'~usage~'_view',{id:page.id}) }}">Annuler</a>
|
||||||
<a class="btn btn-secondary" href="{{ path('app_config_pagetemplate_view',{id:page.id}) }}">Annuler</a>
|
|
||||||
{% else %}
|
|
||||||
<a class="btn btn-secondary" href="{{ path('app_config_page_view',{id:page.id}) }}">Annuler</a>
|
|
||||||
{% endif %}
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="btn btn-secondary" href="{{ path('app_home',{id:page.id}) }}">Annuler</a>
|
<a class="btn btn-secondary" href="{{ path('app_home',{id:page.id}) }}">Annuler</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if mode=="update" %}
|
{% if mode=="update" %}
|
||||||
<a href={{ path('app_'~access~'_page_delete',{'id':page.id}) }}
|
<a href={{ path('app_'~access~'_page_'~usage~'_delete',{'id':page.id}) }}
|
||||||
class="btn btn-danger float-right"
|
class="btn btn-danger float-end"
|
||||||
data-method="delete" data-csrf="_token:{{ 'csrf' }}"
|
data-method="delete" data-csrf="_token:{{ 'csrf' }}"
|
||||||
data-confirm="Êtes-vous sûr de vouloir supprimer cette page ?">
|
data-confirm="Êtes-vous sûr de vouloir supprimer cette page ?">
|
||||||
Supprimer
|
Supprimer
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if mode=="updatetemplate" %}
|
|
||||||
<a href={{ path('app_'~access~'_pagetemplate_delete',{'id':page.id}) }}
|
|
||||||
class="btn btn-danger pull-right"
|
|
||||||
data-method="delete" data-csrf="_token:{{ 'csrf' }}"
|
|
||||||
data-confirm="Êtes-vous sûr de vouloir supprimer ce modèle ?">
|
|
||||||
Supprimer
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{% if app.session.flashbag.has('error') %}
|
{% if app.session.flashbag.has('error') %}
|
||||||
|
@ -206,30 +196,49 @@
|
||||||
|
|
||||||
<div class="form-group row clearfix">
|
<div class="form-group row clearfix">
|
||||||
{% if form.roles is defined %}
|
{% if form.roles is defined %}
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<i class="fa fa-pencil fa-fw"></i> Informations
|
||||||
|
</div>
|
||||||
|
|
||||||
{{ form_row(form.name) }}
|
<div class="card-body">
|
||||||
{{ form_row(form.roworder) }}
|
{{ form_row(form.name) }}
|
||||||
{{ form_row(form.fonticon) }}
|
{{ form_row(form.roworder) }}
|
||||||
{{ form_row(form.maxwidth) }}
|
{{ form_row(form.fonticon) }}
|
||||||
{{ form_row(form.template) }}
|
{{ form_row(form.maxwidth) }}
|
||||||
|
{{ form_row(form.template) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if form.roles is defined %}
|
{% if form.roles is defined %}
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
{{ form_row(form.user) }}
|
<div class="card">
|
||||||
{{ form_row(form.roles) }}
|
<div class="card-header">
|
||||||
{{ form_row(form.groups) }}
|
<i class="fa fa-link fa-fw"></i> Affectations
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
{{ form_row(form.user) }}
|
||||||
|
{{ form_row(form.roles) }}
|
||||||
|
{{ form_row(form.groups) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h3>Template de Mise en Page</h3>
|
<div class="card mt-3">
|
||||||
<div id="gridtemplate">
|
<div class="card-header">
|
||||||
</div>
|
<i class="fas fa-table-columns fa-fw"></i> Template de Mise en Page
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div id="gridtemplate">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{{ form_end(form) }}
|
{{ form_end(form) }}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
|
@ -1,30 +1,10 @@
|
||||||
|
|
||||||
{% extends 'base.html.twig' %}
|
{% extends 'base.html.twig' %}
|
||||||
|
|
||||||
{% block localstyle %}
|
|
||||||
{% if look=="list" %}
|
|
||||||
#R1C1:first-child {
|
|
||||||
margin-top: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.widget-mini .logo {
|
|
||||||
background-color: {{app.session.get('colorbgbodydark')}};
|
|
||||||
padding: 3px;
|
|
||||||
border-radius: 100%;
|
|
||||||
}
|
|
||||||
{% endif %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block menuuser %}
|
{% block menuuser %}
|
||||||
{% if access=="admin" %}
|
{% if access=="admin" %}
|
||||||
{% set template="" %}
|
<li><a href='{{ path('app_'~access~'_page_'~usage~'_update', {id:page.id}) }}' title='Modifier la page'><i class='fa fa-cog fa-fw'></i></a></li>
|
||||||
{% if mode=="viewtemplate" %}
|
<li><a href='{{ path('app_'~access~'_page_'~usage~'_delete', { id: page.id }) }}' data-method='delete' data-confirm='Êtes-vous sûr de vouloir supprimer ?' title='Supprimer la page'><i class='fa fa-trash fa-fw'></i></a></li>
|
||||||
{% set template="template" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<li><a href="{{ path('app_'~access~'_page'~template~'_view', {id:page.id})}}">{{ page.name }}</a></li>
|
|
||||||
<li><a href='{{ path('app_'~access~'_page'~template~'_update', {id:page.id}) }}' title='Modifier la page'><i class='fa fa-cog fa-fw'></i></a></li>
|
|
||||||
<li><a href='{{ path('app_'~access~'_page'~template~'_delete', { id: page.id }) }}' data-method='delete' data-confirm='Êtes-vous sûr de vouloir supprimer ?' title='Supprimer la page'><i class='fa fa-trash fa-fw'></i></a></li>
|
|
||||||
<li><a class="btn-modal" style='cursor:pointer' data-modalid='selwidget' title='Ajouter un widget'><i class='fa fa-cubes fa-fw'></i></a></li>
|
<li><a class="btn-modal" style='cursor:pointer' data-modalid='selwidget' title='Ajouter un widget'><i class='fa fa-cubes fa-fw'></i></a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -37,8 +17,8 @@
|
||||||
|
|
||||||
<div id="tolocalize" style="display:none">
|
<div id="tolocalize" style="display:none">
|
||||||
{% for pagewidget in page.pagewidgets %}
|
{% for pagewidget in page.pagewidgets %}
|
||||||
<a href="{{ url(pagewidget.widget.routeview|replace({'_admin_':'_'~access~'_'}),{id:pagewidget.id,by:mode,usage:usage,group:group,look:look,selwidget:selwidget}) }}"></a>
|
<a href="{{ url(pagewidget.widget.routeview|replace({'_admin_':'_'~access~'_'}),{id:pagewidget.id,usage:usage}) }}"></a>
|
||||||
{{ render(url(pagewidget.widget.routeview|replace({'_admin_':'_'~access~'_'}),{id:pagewidget.id,by:mode,usage:usage,group:group,look:look,selwidget:selwidget})) }}
|
{{ render(url(pagewidget.widget.routeview|replace({'_admin_':'_'~access~'_'}),{id:pagewidget.id,usage:usage})) }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -84,9 +64,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block localscript %}
|
{% block localscript %}
|
||||||
|
@ -191,7 +168,7 @@
|
||||||
// Rendre les widgets déplacable
|
// Rendre les widgets déplacable
|
||||||
$("#widget-container .mycol").sortable({
|
$("#widget-container .mycol").sortable({
|
||||||
connectWith: "#widget-container .mycol",
|
connectWith: "#widget-container .mycol",
|
||||||
handle: '.widgetheader',
|
handle: '.widget-sortable',
|
||||||
placeholder: "widget widgetplacehorder",
|
placeholder: "widget widgetplacehorder",
|
||||||
tolerance: "pointer",
|
tolerance: "pointer",
|
||||||
cursor: "move",
|
cursor: "move",
|
||||||
|
@ -205,10 +182,7 @@
|
||||||
stop: function( event, ui ) {
|
stop: function( event, ui ) {
|
||||||
$(".widgetbody").show();
|
$(".widgetbody").show();
|
||||||
$(".colcontainer .mycol").css("border","none");
|
$(".colcontainer .mycol").css("border","none");
|
||||||
$(".colcontainer .mycol").css("padding-bottom","");
|
$(".colcontainer .mycol").css("padding-bottom","");
|
||||||
|
|
||||||
// Création des grilles d'items
|
|
||||||
var grid = $('.grid').masonry(optiongrid);
|
|
||||||
},
|
},
|
||||||
update: updateLocalisation
|
update: updateLocalisation
|
||||||
});
|
});
|
||||||
|
@ -219,19 +193,15 @@
|
||||||
//slick();
|
//slick();
|
||||||
|
|
||||||
// Sur le click des titres de widgets ouvrir / fermer le widget
|
// Sur le click des titres de widgets ouvrir / fermer le widget
|
||||||
$( ".widgetheader .title" ).click(function() {
|
$( ".widget-header .widget-title" ).click(function() {
|
||||||
showhideWidget(this);
|
showhideWidget(this);
|
||||||
});
|
});
|
||||||
$( ".widgetheader .logo" ).click(function() {
|
$( ".widget-header .widget-logo" ).click(function() {
|
||||||
showhideWidget(this);
|
showhideWidget(this);
|
||||||
});
|
});
|
||||||
|
|
||||||
// balise h des widget editor
|
// balise h des widget editor
|
||||||
$(".widget-editor .widgetbody :header").css("color",$(".widgetbody").css("color"));
|
$(".widget-editor .widgetbody :header").css("color",$(".widgetbody").css("color"));
|
||||||
|
|
||||||
// cacher le loader
|
|
||||||
$("#loader").hide();
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// function slick
|
// function slick
|
||||||
|
@ -266,7 +236,7 @@
|
||||||
function showhideWidget(elem) {
|
function showhideWidget(elem) {
|
||||||
widget=$(elem).parent().parent();
|
widget=$(elem).parent().parent();
|
||||||
idwidget= widget.data("id");
|
idwidget= widget.data("id");
|
||||||
if(widget.children(".widgetbody").css("display")=='block')
|
if(widget.children(".widget-body").css("display")=='block')
|
||||||
value=false;
|
value=false;
|
||||||
else
|
else
|
||||||
value=true;
|
value=true;
|
||||||
|
@ -283,11 +253,7 @@
|
||||||
success: function(idbookmark) {
|
success: function(idbookmark) {
|
||||||
// on récupère le parent widget conteneur
|
// on récupère le parent widget conteneur
|
||||||
widget=$(elem).parent().parent();
|
widget=$(elem).parent().parent();
|
||||||
//console.log(widget.children(".widgetbody").css("display"));
|
widget.find(".widget-body" ).toggle();
|
||||||
widget.children(".widgetbody" ).toggle();
|
|
||||||
|
|
||||||
// On recalcule les grilles
|
|
||||||
var grid = $('.grid').masonry(optiongrid);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -298,8 +264,10 @@
|
||||||
function updateLocalisation() {
|
function updateLocalisation() {
|
||||||
$('.colcontainer .mycol').each(function(index) {
|
$('.colcontainer .mycol').each(function(index) {
|
||||||
var idloc=$(this).attr('id');
|
var idloc=$(this).attr('id');
|
||||||
|
console.log(idloc);
|
||||||
$(this).children(".widget").each(function(order){
|
$(this).children(".widget").each(function(order){
|
||||||
var idwidget=$(this).data('id');
|
var idwidget=$(this).data('id');
|
||||||
|
console.log(idwidget);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
method: "POST",
|
method: "POST",
|
||||||
url: "{{ path('app_'~access~'_pagewidget_order') }}",
|
url: "{{ path('app_'~access~'_pagewidget_order') }}",
|
||||||
|
@ -315,7 +283,7 @@
|
||||||
|
|
||||||
// Création d'un widget selectionné
|
// Création d'un widget selectionné
|
||||||
function selWidget(idwidgettype) {
|
function selWidget(idwidgettype) {
|
||||||
var url="{{ path('app_'~access~'_pagewidget_widget_sumbit',{idpage:page.id,idwidgettype:'xx','by':mode})}}";
|
var url="{{ path('app_'~access~'_pagewidget_widget_sumbit',{idpage:page.id,idwidgettype:'xx',usage:usage})}}";
|
||||||
url=url.replace('xx',idwidgettype);
|
url=url.replace('xx',idwidgettype);
|
||||||
|
|
||||||
$(location).attr('href', url);
|
$(location).attr('href', url);
|
||||||
|
@ -323,8 +291,7 @@
|
||||||
|
|
||||||
// Modifciation d'un widget
|
// Modifciation d'un widget
|
||||||
function modWidget(idwidget) {
|
function modWidget(idwidget) {
|
||||||
|
var url="{{ path('app_'~access~'_pagewidget_widget_update',{idpage:page.id,idwidget:'xx',usage:usage})}}";
|
||||||
var url="{{ path('app_'~access~'_pagewidget_widget_update',{idpage:page.id,idwidget:'xx',group:group,usage:usage,by:mode})}}";
|
|
||||||
url=url.replace('xx',idwidget);
|
url=url.replace('xx',idwidget);
|
||||||
url=url.replace(/&/g,"&");
|
url=url.replace(/&/g,"&");
|
||||||
|
|
||||||
|
@ -354,7 +321,7 @@
|
||||||
value=value+1;
|
value=value+1;
|
||||||
if(value==5) value=0;
|
if(value==5) value=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
method: "POST",
|
method: "POST",
|
||||||
url: "{{ path('app_all_preference') }}",
|
url: "{{ path('app_all_preference') }}",
|
||||||
|
@ -372,19 +339,21 @@
|
||||||
|
|
||||||
// Ajout d'un bookmark
|
// Ajout d'un bookmark
|
||||||
function addBookmark(idwidget,touser) {
|
function addBookmark(idwidget,touser) {
|
||||||
var url="{{ path('app_'~access~'_bookmark_submit',{idpage:page.id,idwidget:'xx',touser:'yy',group:group,usage:usage,by:mode})}}";
|
var url="{{ path('app_'~access~'_bookmark_submit',{idpage:page.id,idwidget:'yy',touser:'zz',usage:usage})}}";
|
||||||
url=url.replace('xx',idwidget);
|
url=url.replace('yy',idwidget);
|
||||||
url=url.replace('yy',touser);
|
url=url.replace('zz',touser);
|
||||||
url=url.replace(/&/g,"&");
|
url=url.replace(/&/g,"&");
|
||||||
|
|
||||||
$(location).attr('href', url);
|
$(location).attr('href', url);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Modifciation d'un bookmark
|
// Modifciation d'un bookmark
|
||||||
function modBookmark(idbookmark) {
|
function modBookmark(idbookmark,idwidget,touser) {
|
||||||
var url="{{ path('app_'~access~'_bookmark_update',{idpage:page.id,id:'xx',group:group,usage:usage,by:mode})}}";
|
var url="{{ path('app_'~access~'_bookmark_update',{id:'xx',idpage:page.id,idwidget:'yy',touser:'zz',usage:usage})}}";
|
||||||
|
|
||||||
url=url.replace('xx',idbookmark);
|
url=url.replace('xx',idbookmark);
|
||||||
|
url=url.replace('yy',idwidget);
|
||||||
|
url=url.replace('zz',touser);
|
||||||
url=url.replace(/&/g,"&");
|
url=url.replace(/&/g,"&");
|
||||||
|
|
||||||
$(location).attr('href', url);
|
$(location).attr('href', url);
|
||||||
|
@ -396,7 +365,7 @@
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
method: "POST",
|
method: "POST",
|
||||||
url: "{{ path('app_all_bookmark_heart') }}",
|
url: "{{ path('app_'~access~'_bookmark_heart') }}",
|
||||||
data: {
|
data: {
|
||||||
iditem:iditem
|
iditem:iditem
|
||||||
},
|
},
|
||||||
|
@ -408,11 +377,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// Supprimer un bookmark
|
// Supprimer un bookmark
|
||||||
function delBookmark(idbookmark) {
|
function delBookmark(idbookmark,idwidget,touser) {
|
||||||
if (confirm('Êtes-vous sûr de vouloir supprimer cet item ?')) {
|
if (confirm('Êtes-vous sûr de vouloir supprimer ce favoris ?')) {
|
||||||
var url="{{ path('app_'~access~'_bookmark_delete',{idpage:page.id,id:'xx',group:group,usage:usage,by:mode})}}";
|
var url="{{ path('app_'~access~'_bookmark_delete',{id:'xx',idpage:page.id,idwidget:'yy',touser:'zz',usage:usage})}}";
|
||||||
|
|
||||||
url=url.replace('xx',idbookmark);
|
url=url.replace('xx',idbookmark);
|
||||||
|
url=url.replace('yy',idwidget);
|
||||||
|
url=url.replace('zz',touser);
|
||||||
url=url.replace(/&/g,"&");
|
url=url.replace(/&/g,"&");
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
@ -445,7 +416,7 @@
|
||||||
|
|
||||||
// Liste des slides
|
// Liste des slides
|
||||||
function listSlide(idwidget) {
|
function listSlide(idwidget) {
|
||||||
var url="{{ path('app_'~access~'_slide_list',{idpage:page.id,idwidget:'xx',group:group,usage:usage,by:mode})}}";
|
var url="{{ path('app_'~access~'_slide_list',{idpage:page.id,idwidget:'xx',usage:usage})}}";
|
||||||
|
|
||||||
url=url.replace('xx',idwidget);
|
url=url.replace('xx',idwidget);
|
||||||
url=url.replace(/&/g,"&");
|
url=url.replace(/&/g,"&");
|
||||||
|
@ -463,7 +434,7 @@
|
||||||
// Affichage des frames associés aux items de bureau
|
// Affichage des frames associés aux items de bureau
|
||||||
function showItemframe(id,url,forcereload) {
|
function showItemframe(id,url,forcereload) {
|
||||||
{% if access=="all" %}
|
{% if access=="all" %}
|
||||||
window.parent.showItemframe(id,url,forcereload);
|
parent.showItemframe(id,url,forcereload);
|
||||||
{% else %}
|
{% else %}
|
||||||
$("#page").hide();
|
$("#page").hide();
|
||||||
$("body").css("overflow-y","hidden");
|
$("body").css("overflow-y","hidden");
|
||||||
|
@ -555,7 +526,6 @@
|
||||||
},
|
},
|
||||||
success: function() {
|
success: function() {
|
||||||
$("#alert-"+id).remove();
|
$("#alert-"+id).remove();
|
||||||
var grid = $('.grid').masonry(optiongrid);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<a href="{{ path('app_'~access~'_pagetemplate_submit') }}" class="btn btn-success">Ajouter un Modèle</a>
|
<a href="{{ path('app_'~access~'_template_submit') }}" class="btn btn-success">Ajouter un Modèle</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{% if app.session.flashbag.has('error') %}
|
{% if app.session.flashbag.has('error') %}
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
order: [[ 1, "asc" ]],
|
order: [[ 1, "asc" ]],
|
||||||
processing: true,
|
processing: true,
|
||||||
serverSide: true,
|
serverSide: true,
|
||||||
ajax: "{{ path('app_'~access~'_pagetemplate_tablelist') }}",
|
ajax: "{{ path('app_'~access~'_page_template_tablelist') }}",
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
{{ form_widget(form.submit) }}
|
{{ form_widget(form.submit) }}
|
||||||
<a class="btn btn-default" href="{{ path('app_'~access~'_pagetemplate') }}">Annuler</a>
|
<a class="btn btn-secondary" href="{{ path('app_'~access~'_page_template') }}">Annuler</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{% if app.session.flashbag.has('error') %}
|
{% if app.session.flashbag.has('error') %}
|
||||||
|
|
|
@ -1,238 +0,0 @@
|
||||||
{% macro libmonth(month) %}
|
|
||||||
{% if month==1 %} Janvier
|
|
||||||
{% elseif month==2 %} Février
|
|
||||||
{% elseif month==3 %} Mars
|
|
||||||
{% elseif month==4 %} Avril
|
|
||||||
{% elseif month==5 %} Mai
|
|
||||||
{% elseif month==6 %} Juin
|
|
||||||
{% elseif month==7 %} Juillet
|
|
||||||
{% elseif month==8 %} Août
|
|
||||||
{% elseif month==9 %} Septembre
|
|
||||||
{% elseif month==10 %} Octobre
|
|
||||||
{% elseif month==11 %} Novembre
|
|
||||||
{% elseif month==12 %} Décembre
|
|
||||||
{%endif%}
|
|
||||||
{% endmacro %}
|
|
||||||
|
|
||||||
{% macro libday(day) %}
|
|
||||||
{% if day==1 %} Lundi
|
|
||||||
{% elseif day==2 %} Mardi
|
|
||||||
{% elseif day==3 %} Mercredi
|
|
||||||
{% elseif day==4 %} Jeudi
|
|
||||||
{% elseif day==5 %} Vendredi
|
|
||||||
{% elseif day==6 %} Samedi
|
|
||||||
{% elseif day==7 %} Dimanche
|
|
||||||
{%endif%}
|
|
||||||
{% endmacro %}
|
|
||||||
|
|
||||||
{% macro mycolormain() %}
|
|
||||||
{% set color = app.session.get('color') %}{% set colormain = app.session.get('colorbgbodydark') %}{{ colormain }}
|
|
||||||
{% endmacro %}`
|
|
||||||
|
|
||||||
{% macro mystylewidget(entity) %}
|
|
||||||
{% set colorheaderback = entity.colorheaderback %}
|
|
||||||
{% if colorheaderback is null %}
|
|
||||||
{% set colorheaderback = "var(--colorfttitledark)" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set stylewidget = "" %}
|
|
||||||
{% if not entity.autoajust %}
|
|
||||||
{% set stylewidget = stylewidget ~ "height: " ~ entity.height ~ "px; " %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if entity.border %}
|
|
||||||
{% set stylewidget = stylewidget ~ "border:1px solid " ~ colorheaderback ~ "; " %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{{ stylewidget }}
|
|
||||||
{% endmacro %}`
|
|
||||||
|
|
||||||
|
|
||||||
{% macro mystylewidgetmenu(entity) %}
|
|
||||||
{% set color = app.session.get('color') %}
|
|
||||||
|
|
||||||
{% set colorheaderfont = entity.colorheaderfont %}
|
|
||||||
{% if colorheaderfont is null %}
|
|
||||||
{% set colorheaderfont = "var(--colorfttitledark)" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set stylewidgetmenu = "" %}
|
|
||||||
{% set stylewidgetmenu = stylewidgetmenu ~ "color: " ~ colorheaderfont ~ "; " %}
|
|
||||||
{% set stylewidgetmenu = stylewidgetmenu ~ "cursor: pointer; " %}
|
|
||||||
|
|
||||||
{{ stylewidgetmenu }}
|
|
||||||
{% endmacro %}`
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% macro mystylewidgetheader(entity) %}
|
|
||||||
|
|
||||||
{% set colorheaderback = entity.colorheaderback %}
|
|
||||||
{% if colorheaderback is null %}
|
|
||||||
{% set colorheaderback = "var(--colorbgbodydark)" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set colorheaderfont = entity.colorheaderfont %}
|
|
||||||
{% if colorheaderfont is null %}
|
|
||||||
{% set colorheaderfont = "var(--colorfttitledark)" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set stylewidgetheader = "" %}
|
|
||||||
{% set stylewidgetheader = stylewidgetheader ~ "background-color: " ~ colorheaderback ~ "; " %}
|
|
||||||
{% set stylewidgetheader = stylewidgetheader ~ "color: " ~ colorheaderfont ~ "; " %}
|
|
||||||
|
|
||||||
{{ stylewidgetheader }}
|
|
||||||
{% endmacro %}`
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% macro mystylewidgetbody(entity) %}
|
|
||||||
{% set colorbodyback = entity.colorbodyback %}
|
|
||||||
{% if colorbodyback is null %}
|
|
||||||
{% set colorbodyback = "var(--colorbgbodydark)" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set colorbodyfont = entity.colorbodyfont %}
|
|
||||||
{% if colorbodyfont is null %}
|
|
||||||
{% set colorbodyfont = "var(--colorfttitledark)" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if not entity.border %}
|
|
||||||
{% set colorbodyback = "var(--colorbgbodylight)" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set stylewidgetbody = "" %}
|
|
||||||
{% set stylewidgetbody = stylewidgetbody ~ "background-color: " ~ colorbodyback ~ "; " %}
|
|
||||||
{% set stylewidgetbody = stylewidgetbody ~ "color: " ~ colorbodyfont ~ "; " %}
|
|
||||||
{% if not entity.autoajust %}
|
|
||||||
{% set stylewidgetbody = stylewidgetbody ~ "height: " ~ (entity.height-50-2) ~ "px; overflow-y: auto;" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if entity.border %}
|
|
||||||
{% set stylewidgetbody = stylewidgetbody ~ "padding:10px;" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if not entity.opened %}
|
|
||||||
{% set stylewidgetbody = stylewidgetbody ~ "display:none;" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{{ stylewidgetbody }}
|
|
||||||
|
|
||||||
{% endmacro %}`
|
|
||||||
|
|
||||||
{% macro mystylewidgetbodyreverse(entity) %}
|
|
||||||
{% set color = app.session.get('color') %}
|
|
||||||
|
|
||||||
{% set colorbodyback = entity.colorbodyback %}
|
|
||||||
{% if colorbodyback is null %}
|
|
||||||
{% set colorbodyback = app.session.get('colorbgbodydark') %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set colorbodyfont = entity.colorbodyfont %}
|
|
||||||
{% if colorbodyfont is null %}
|
|
||||||
{% set colorbodyfont = app.session.get('colorfttitledark') %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if colorbodyfont == colorbodyback %}
|
|
||||||
{% if colorbodyfont == app.session.get('colorbgbodydark') %}
|
|
||||||
{% set colorbodyfont=app.session.get('colorfttitledark') %}
|
|
||||||
{% else %}
|
|
||||||
{% set colorbodyfont=app.session.get('colorbgbodydark') %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
|
||||||
{% set stylewidgetbody = "" %}
|
|
||||||
{% set stylewidgetbody = stylewidgetbody ~ "background-color: " ~ colorbodyback ~ "; " %}
|
|
||||||
{% set stylewidgetbody = stylewidgetbody ~ "color: " ~ colorbodyfont ~ "; " %}
|
|
||||||
|
|
||||||
|
|
||||||
{{ stylewidgetbody }}
|
|
||||||
|
|
||||||
{% endmacro %}`
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% macro mystylewidgetbodyframe(entity) %}
|
|
||||||
{% set color = app.session.get('color') %}
|
|
||||||
|
|
||||||
{% set colorheaderback = entity.colorheaderback %}
|
|
||||||
{% if colorheaderback is null %}
|
|
||||||
{% set colorheaderback = app.session.get('colorbgbodydark') %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set colorheaderfont = entity.colorheaderfont %}
|
|
||||||
{% if colorheaderfont is null %}
|
|
||||||
{% set colorheaderfont = app.session.get('colorfttitledark') %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set colorbodyback = entity.colorbodyback %}
|
|
||||||
{% if colorbodyback is null %}
|
|
||||||
{% set colorbodyback = app.session.get('colorbgbodydark') %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set colorbodyfont = entity.colorbodyfont %}
|
|
||||||
{% if colorbodyfont is null %}
|
|
||||||
{% set colorbodyfont = app.session.get('colorfttitledark') %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if not entity.border %}
|
|
||||||
{% set colorbodyback = app.session.get('colorbgbodylight') %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if colorbodyfont == colorbodyback %}
|
|
||||||
{% if colorbodyfont == app.session.get('colorbgbodydark') %}
|
|
||||||
{% set colorbodyfont=app.session.get('colorfttitledark') %}
|
|
||||||
{% else %}
|
|
||||||
{% set colorbodyfont=app.session.get('colorbgbodydark') %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set stylewidgetbodyframe = "" %}
|
|
||||||
{% set stylewidgetbodyframe = stylewidgetbodyframe ~ "background-color: " ~ colorbodyback ~ "; " %}
|
|
||||||
{% set stylewidgetbodyframe = stylewidgetbodyframe ~ "color: " ~ colorbodyfont ~ "; " %}
|
|
||||||
{% if not entity.autoajust %}
|
|
||||||
{% set stylewidgetbodyframe = stylewidgetbodyframe ~ "height: " ~ (entity.height-50-2) ~ "px;" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{{ stylewidgetbodyframe }}
|
|
||||||
|
|
||||||
{% endmacro %}`
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% macro mystylewidgetbodyimage(entity) %}
|
|
||||||
{% set color = app.session.get('color') %}
|
|
||||||
|
|
||||||
{% set colorheaderback = entity.colorheaderback %}
|
|
||||||
{% if colorheaderback is null %}
|
|
||||||
{% set colorheaderback = app.session.get('colorbgbodydark') %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set colorheaderfont = entity.colorheaderfont %}
|
|
||||||
{% if colorheaderfont is null %}
|
|
||||||
{% set colorheaderfont = app.session.get('colorfttitledark') %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set colorbodyback = entity.colorbodyback %}
|
|
||||||
{% if colorbodyback is null %}
|
|
||||||
{% set colorbodyback = app.session.get('colorbgbodydark') %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set colorbodyfont = entity.colorbodyfont %}
|
|
||||||
{% if colorbodyfont is null %}
|
|
||||||
{% set colorbodyfont = app.session.get('colorfttitledark') %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set stylewidgetbodyimage = "" %}
|
|
||||||
{% set stylewidgetbodyimage = stylewidgetbodyimage ~ "background-color: " ~ colorbodyback ~ "; " %}
|
|
||||||
{% set stylewidgetbodyimage = stylewidgetbodyimage ~ "color: " ~ colorbodyfont ~ "; " %}
|
|
||||||
{% if not entity.autoajust %}
|
|
||||||
{% set stylewidgetbodyimage = stylewidgetbodyimage ~ "height: " ~ (entity.height-2) ~ "px; " %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{{ stylewidgetbodyimage }}
|
|
||||||
{% endmacro %}`
|
|
|
@ -12,22 +12,7 @@
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
{{ form_widget(form.submit) }}
|
{{ form_widget(form.submit) }}
|
||||||
|
<a class="btn btn-secondary" href="{{ path('app_'~access~'_page_'~usage~'_view',{id:idpage}) }}">Annuler</a>
|
||||||
{% if access=="admin" %}
|
|
||||||
{% if mode=="update" %}
|
|
||||||
<a class="btn btn-secondary" href="{{ path('app_admin_page_view',{id:idpage}) }}">Annuler</a>
|
|
||||||
{% else %}
|
|
||||||
<a class="btn btn-secondary" href="{{ path('app_admin_pagetemplate_view',{id:idpage}) }}">Annuler</a>
|
|
||||||
{% endif %}
|
|
||||||
{% else %}
|
|
||||||
{% if mode=="update" %}
|
|
||||||
<a class="btn btn-secondary" href="{{ path('app_user_page_view',{id:idpage,usage:usage,group:group}) }}">Annuler</a>
|
|
||||||
{% else %}
|
|
||||||
<a class="btn btn-secondary" href="{{ path('app_home',{id:idpage}) }}">Annuler</a>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{% if app.session.flashbag.has('error') %}
|
{% if app.session.flashbag.has('error') %}
|
||||||
|
@ -159,6 +144,7 @@
|
||||||
function delIcon() {
|
function delIcon() {
|
||||||
$("#diviconsel img").remove();
|
$("#diviconsel img").remove();
|
||||||
$("#diviconsel").append("<img src='{{ path("app_minio_image",{file:entity.widget.icon.label}) }}'>");
|
$("#diviconsel").append("<img src='{{ path("app_minio_image",{file:entity.widget.icon.label}) }}'>");
|
||||||
|
$("#diviconsel img").attr("height","100px");
|
||||||
$("#pagewidget_idicon").val(null);
|
$("#pagewidget_idicon").val(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,10 +159,13 @@
|
||||||
if($("#pagewidget_viewheader").val()==1) {
|
if($("#pagewidget_viewheader").val()==1) {
|
||||||
$("#groupfield_pagewidget_colorheaderback").show();
|
$("#groupfield_pagewidget_colorheaderback").show();
|
||||||
$("#groupfield_pagewidget_colorheaderfont").show();
|
$("#groupfield_pagewidget_colorheaderfont").show();
|
||||||
|
$("#groupfield_pagewidget_opened").show();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$("#groupfield_pagewidget_colorheaderback").hide();
|
$("#groupfield_pagewidget_colorheaderback").hide();
|
||||||
$("#groupfield_pagewidget_colorheaderfont").hide();
|
$("#groupfield_pagewidget_colorheaderfont").hide();
|
||||||
|
$("#groupfield_pagewidget_opened").hide();
|
||||||
|
$("#pagewidget_opened").val(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,140 +1,42 @@
|
||||||
{% set theme = app.session.get('theme') %}
|
{% set widgetname="item" %}
|
||||||
{% if theme is not empty %}
|
{% extends 'Pagewidget/widget.twig' %}
|
||||||
{{ include('@Theme/'~theme~'/function.html.twig') }}
|
{% block widgetbody %}
|
||||||
{% endif %}
|
{% for alert in alerts %}
|
||||||
|
{% if loop.first %}
|
||||||
{% import "@CadolesPortal/Pagewidget/constants.twig" as constants %}
|
<div class="items-list">
|
||||||
|
{% endif %}
|
||||||
{% set colormain = constants.mycolormain() %}
|
<div class="item item-list" id="alert-{{alert.id}}" style="color:var(--colorftbodydark); background: {{ alert.alertcategory.color ? alert.alertcategory.color : 'var(--colorbgbodydark)' }};">
|
||||||
{% set stylewidget = constants.mystylewidget(entity) %}
|
<div class="item-container">
|
||||||
{% set stylewidgetmenu = constants.mystylewidgetmenu(entity) %}
|
<div class="item-content">
|
||||||
{% set stylewidgetheader = constants.mystylewidgetheader(entity) %}
|
<div class="item-link">
|
||||||
{% set stylewidgetbody = constants.mystylewidgetbody(entity) %}
|
{% if alert.alertcategory.icon %}
|
||||||
|
<img height="35" src="{{ path('app_minio_image',{file:alert.alertcategory.icon.label}) }}">
|
||||||
{%if mini %}
|
{% else %}
|
||||||
<div class="widget widget-mini widget-projalertect" data-id="{{ entity.id }}" loc="{{ entity.loc }}">
|
<img height="35" src="{{ path('app_minio_image',{file:"icon/icon_megaphone.png"}) }}">
|
||||||
<div class="widgetheader">
|
{% endif %}
|
||||||
<a style="cursor:pointer" onClick="bigWidget({{entity.id}})">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo" title="{{ entity.name }}"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="/{{ alias }}/uploads/icon/icon_pin.png" class="logo" title="{{ entity.name }}"/>
|
|
||||||
{% endif %}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
{% if canupdate or alerts|length>0 %}
|
|
||||||
<div class="widget {%if entity.border %} widget-bordered {%else%} widget-notbordered {%endif%} widget-alert" data-id="{{ entity.id }}" loc="{{ entity.loc }}" style="{{ stylewidget }}" height="{{ entity.height }}px">
|
|
||||||
<div class="widgetmenu">
|
|
||||||
{% if canupdate %}
|
|
||||||
<i class="fa fa-trash fa-fw" title="Supprimer le Widget" onClick="delWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
<i class="fa fa-file fa-fw" title="Modifier le Widget" onClick="modWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if look=="list" %}
|
|
||||||
<i class="glyphicon glyphicon-resize-small" title="Réduire le Widget" onClick="smallWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% else %}
|
|
||||||
<i class="glyphicon glyphicon-resize-full" title="Agrandir le Widget" onClick="bigWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="widgetheader" style="{{ stylewidgetheader }}">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="/{{ alias }}/uploads/icon/icon_pin.png" class="logo"/>
|
|
||||||
{% endif %}
|
|
||||||
<span class="title">{{ entity.name }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="widgetbody" style="{{ stylewidgetbody }}">
|
|
||||||
{% for alert in alerts %}
|
|
||||||
<div id="alert-{{ alert.id }}" class="panel list-item" style="background: {{ alert.alertcategory.color ? '#'~alert.alertcategory.color : '#'~colormain }};">
|
|
||||||
<div class="panel-heading" role="tab">
|
|
||||||
{% if alert.alertcategory.icon %}
|
|
||||||
<img height="25" src="/{{ alias }}/{{ alert.alertcategory.icon.label }}">
|
|
||||||
{% else %}
|
|
||||||
<img height="25" src="/{{ alias }}/uploads/icon/icon_megaphone.png">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{{ alert.title }}
|
|
||||||
{% if alert.fghideable and app.user %}
|
|
||||||
<a onClick="hideAlert({{alert.id}})" style="cursor:pointer;" title="Ne plus afficher"><i class="fa fa-eye-slash"></i></a>
|
|
||||||
{%endif%}
|
|
||||||
|
|
||||||
|
<div class="item-title">
|
||||||
|
<h3 >{{ alert.title }}</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="widget-ckeditor">{{ alert.content|raw }}</div>
|
|
||||||
|
|
||||||
{% if not alert.items is empty %}
|
|
||||||
{% if app.user %}
|
|
||||||
{% set username = app.user.username %}
|
|
||||||
{% else %}
|
|
||||||
{% set username = "" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="grid clearfix fitWidth" style="width:auto; margin: 0 auto;">
|
|
||||||
<div class="grid-sizer grid-small"></div>
|
|
||||||
<div class="grid-gutter-sizer"></div>
|
|
||||||
|
|
||||||
{% for item in alert.items %}
|
|
||||||
<div class="grid-item grid-list">
|
|
||||||
<div class="grid-item-content" style="background-color: {{ item.color ? "#"~item.color : '#'~colormain }};">
|
|
||||||
{% if item.protected and not app.user %}
|
|
||||||
{% if mode_auth == "SAML" %}
|
|
||||||
<a href="{{ path('lightsaml_sp.login') }}" {% if access=="user" %}target="_top"{% endif %}>
|
|
||||||
{% elseif mode_auth == "CAS" %}
|
|
||||||
<a href="{{ path('cas_sp.login') }}" {% if access=="user" %}target="_top"{% endif %}>
|
|
||||||
{% elseif mode_auth == "MYSQL" %}
|
|
||||||
<a href="{{ path('cnous_portal_user_login') }}" {% if access=="user" %}target="_top"{% endif %}>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% else %}
|
|
||||||
{% if item.target == 'frame' %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ item.title }}" style="cursor:pointer" onClick="showFrameitem({{ item.id }},'{{ item.url|replace({'#login#': username}) }}')">
|
|
||||||
{% elseif item.target == "_self" %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ item.target }}{% endif %}">
|
|
||||||
{% else %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url|replace({'#login#': username}) }}" target="{{ item.target }}">
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="item-link clearfix">
|
|
||||||
<div class="grid-item-logo" title="{{ item.subtitle|nl2br }}">
|
|
||||||
{% if item.icon %}
|
|
||||||
<img class="grid-item-img" height="110" src="/{{ alias }}/{{ item.icon.label }}">
|
|
||||||
{% else %}
|
|
||||||
<img class="grid-item-img" height="110" src="/{{ alias }}/uploads/icon/icon_pin.png">
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid-item-title">
|
|
||||||
<h2>{{ item.title }}</h2>
|
|
||||||
<span>{{ item.subtitle|nl2br }}</<span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="grid-item-body" style="display:none">
|
|
||||||
{{ item.content|raw }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endfor %}
|
<div class="item-action">
|
||||||
|
{% if alert.fghideable and app.user %}
|
||||||
|
<a onClick="hideAlert({{alert.id}})" style="cursor:pointer;" title="Ne plus afficher"><i class="fa fa-eye-slash"></i></a>
|
||||||
|
{%endif%}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="item-description">
|
||||||
|
{{ alert.content|raw }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
{% if loop.last %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
|
|
@ -1,112 +0,0 @@
|
||||||
{% set theme = app.session.get('theme') %}
|
|
||||||
{% if theme is not empty %}
|
|
||||||
{{ include('@Theme/'~theme~'/function.html.twig') }}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% import "@CadolesPortal/Pagewidget/constants.twig" as constants %}
|
|
||||||
|
|
||||||
{% set colormain = constants.mycolormain() %}
|
|
||||||
{% set stylewidget = constants.mystylewidget(entity) %}
|
|
||||||
{% set stylewidgetmenu = constants.mystylewidgetmenu(entity) %}
|
|
||||||
{% set stylewidgetheader = constants.mystylewidgetheader(entity) %}
|
|
||||||
{% set stylewidgetbody = constants.mystylewidgetbody(entity) %}
|
|
||||||
|
|
||||||
{% if modedesktop==0 %}
|
|
||||||
{% set stylegrid="" %}
|
|
||||||
{% elseif modedesktop==1 %}
|
|
||||||
{% set stylegrid="grid-medium" %}
|
|
||||||
{% elseif modedesktop==2 %}
|
|
||||||
{% set stylegrid="grid-small" %}
|
|
||||||
{% elseif modedesktop==3 %}
|
|
||||||
{% set stylegrid="grid-list" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set colorbodyfont = "" %}
|
|
||||||
{% if entity.colorbodyfont is not null %}
|
|
||||||
{% set colorbodyfont = "color: #" ~ entity.colorbodyfont %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
|
||||||
{%if mini %}
|
|
||||||
<div class="widget widget-mini widget-appexternal" data-id="{{ entity.id }}" loc="{{ entity.loc }}">
|
|
||||||
<div class="widgetheader">
|
|
||||||
<a style="cursor:pointer" onClick="bigWidget({{entity.id}})">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo" title="{{ entity.name }}"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="/{{ alias }}/uploads/icon/icon_pin.png" class="logo" title="{{ entity.name }}"/>
|
|
||||||
{% endif %}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="widget {%if entity.border %} widget-bordered {%else%} widget-notbordered {%endif%} widget-appexternal" data-id="{{ entity.id }}" loc="{{ entity.loc }}" style="{{ stylewidget }}" height="{{ entity.height }}px">
|
|
||||||
<div class="widgetmenu">
|
|
||||||
{% if canupdate %}
|
|
||||||
<i class="fa fa-trash fa-fw" title="Supprimer le Widget" onClick="delWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
<i class="fa fa-file fa-fw" title="Modifier le Widget" onClick="modWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% endif %}
|
|
||||||
{% if look=="list" %}
|
|
||||||
<i class="glyphicon glyphicon-resize-small" title="Réduire le Widget" onClick="smallWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% else %}
|
|
||||||
<i class="glyphicon glyphicon-resize-full" title="Agrandir le Widget" onClick="bigWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="widgetheader" style="{{ stylewidgetheader }}">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="/{{ alias }}/uploads/icon/icon_pin.png" class="logo"/>
|
|
||||||
{% endif %}
|
|
||||||
<span class="title">{{ entity.name }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="widgetbody" style="{{ stylewidgetbody }}">
|
|
||||||
{% for itemcategory in itemcategorys %}
|
|
||||||
{% set haveitem=false %}
|
|
||||||
|
|
||||||
{% for item in items if item.itemcategory==itemcategory %}
|
|
||||||
|
|
||||||
{% if loop.index ==1 %}
|
|
||||||
{% set haveitem=true %}
|
|
||||||
|
|
||||||
{% if itemcategorys|length > 1 %}
|
|
||||||
<h3 class="grid-title" style="{{ colorbodyfont }}" data-idcategory="{{ itemcategory.id }}">{{ itemcategory.label }}</h3>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="grid clearfix">
|
|
||||||
<div class="grid-sizer {{ stylegrid }}"></div>
|
|
||||||
<div class="grid-gutter-sizer"></div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="grid-item {{ stylegrid }}" data-idcategory="{{ item.itemcategory.id }}" data-iditem="{{ item.id }}">
|
|
||||||
<div class="grid-item-content" style="background-color: {{ item.color ? "#"~item.color : '#'~colormain }};">
|
|
||||||
<a class="linktosonde" data-sonde="{{ item.itemcategory.label }}" href="{{ item.url }}" target="_blank">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="item-link clearfix">
|
|
||||||
<div class="grid-item-logo">
|
|
||||||
<img class="grid-item-img" height="110" src="/{{ alias }}/uploads/icon/{{ item.icon }}">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid-item-title">
|
|
||||||
<h2>{{ item.title }}</h2>
|
|
||||||
<span>{{ item.subtitle|nl2br }}</<span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
{% if haveitem %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,132 +1,90 @@
|
||||||
{% import "Pagewidget/constants.twig" as constants %}
|
{% set widgetname="item" %}
|
||||||
|
{% extends 'Pagewidget/widget.twig' %}
|
||||||
|
|
||||||
|
{% block widgetaction %}
|
||||||
|
{% if canadd %}
|
||||||
|
<i class="fas fa-text-height" title="Changer taille des items" onClick="changeWidget({{ entity.id }},'modedesktop',{{modedesktop}})"></i>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% set stylewidget = constants.mystylewidget(entity) %}
|
{% block widgetbody %}
|
||||||
{% set stylewidgetmenu = constants.mystylewidgetmenu(entity) %}
|
<div class="items-list">
|
||||||
{% set stylewidgetheader = constants.mystylewidgetheader(entity) %}
|
{% for bookmark in bookmarks %}
|
||||||
{% set stylewidgetbody = constants.mystylewidgetbody(entity) %}
|
{% set havebookmark=true %}
|
||||||
|
{% if bookmark.item %}
|
||||||
{% if modedesktop==0 %}
|
{% set bookmarktitle = bookmark.item.title %}
|
||||||
{% set stylegrid="" %}
|
{% set bookmarksubtitle = bookmark.item.subtitle %}
|
||||||
{% elseif modedesktop==1 %}
|
{% set bookmarkbackgroundcolor = bookmark.item.color ? bookmark.item.color : app.session.get('colorbgbodydark')|raw %}
|
||||||
{% set stylegrid="grid-medium" %}
|
{% set bookmarktarget = bookmark.item.target %}
|
||||||
{% elseif modedesktop==2 %}
|
{% set bookmarkurl = ( bookmark.item.protected and not app.user ? path("app_login") : bookmark.item.url|replace({'#login#': username}) ) %}
|
||||||
{% set stylegrid="grid-small" %}
|
{% set bookmarkcontent = bookmark.item.content %}
|
||||||
{% elseif modedesktop==3 %}
|
{% set bookmarkicon = (bookmark.item.icon ? bookmark.item.icon.label : "icon/icon_pin.png") %}
|
||||||
{% set stylegrid="grid-list" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set colorbodyfont = "" %}
|
|
||||||
{% if entity.colorbodyfont is not null %}
|
|
||||||
{% set colorbodyfont = "color: #" ~ entity.colorbodyfont %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if app.user %}
|
|
||||||
{% set username = app.user.username %}
|
|
||||||
{% else %}
|
|
||||||
{% set username = "" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{%if mini %}
|
|
||||||
<div class="widget widget-mini widget-bookmark" data-id="{{ entity.id }}" loc="{{ entity.loc }}">
|
|
||||||
<div class="widgetheader">
|
|
||||||
<a style="cursor:pointer" onClick="bigWidget({{entity.id}})">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ appAlias }}/{{ entity.icon.label }}" class="logo" title="{{ entity.name }}"/>
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<img src="/{{ appAlias }}/uploads/icon/icon_pin.png" class="logo" title="{{ entity.name }}"/>
|
{% set bookmarktitle = bookmark.title %}
|
||||||
{% endif %}
|
{% set bookmarksubtitle = bookmark.subtitle %}
|
||||||
</a>
|
{% set bookmarkbackgroundcolor = bookmark.color ? bookmark.color : app.session.get('colorbgbodydark')|raw %}
|
||||||
</div>
|
{% set bookmarktarget = bookmark.target %}
|
||||||
</div>
|
{% set bookmarkurl = bookmark.url|replace({'#login#': username}) %}
|
||||||
{% else %}
|
{% set bookmarkcontent = null %}
|
||||||
<div class="widget {%if entity.border %} widget-bordered {%else%} widget-notbordered {%endif%} widget-bookmark" data-id="{{ entity.id }}" loc="{{ entity.loc }}" style="{{ stylewidget }}" height="{{ entity.height }}px">
|
{% set bookmarkicon = bookmark.icon ? bookmark.icon.label : "icon/icon_pin.png" %}
|
||||||
<div class="widgetmenu">
|
|
||||||
{% if canupdate %}
|
|
||||||
<i class="fa fa-trash fa-fw" title="Supprimer le Widget" onClick="delWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
<i class="fa fa-file fa-fw" title="Modifier le Widget" onClick="modWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if canadd %}
|
<div class="item {{itemsize}}" style="background-color: {{ bookmarkbackgroundcolor }};" data-idcategory="bookmark" data-title="{{bookmarktitle|lower}}">
|
||||||
<i class="fa fa-plus fa-fw" title="Ajouter un Favori" onClick="addBookmark({{ entity.id }},false)" style="{{ stylewidgetmenu }}"></i>
|
<div class="item-container">
|
||||||
{% endif %}
|
<div class="item-content">
|
||||||
|
{% if bookmarktarget == 'frame' %}
|
||||||
{% if look=="list" %}
|
<a class="item-link" onClick="showItemframe('bookmark{{ bookmark.id }}','{{ bookmarkurl }}')">
|
||||||
<i class="glyphicon glyphicon-resize-small" title="Réduire le Widget" onClick="smallWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
{% else %}
|
||||||
{% else %}
|
<a class="item-link" href="{{ bookmarkurl }}" target="{{bookmarktarget }}">
|
||||||
<i class="glyphicon glyphicon-resize-full" title="Agrandir le Widget" onClick="bigWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="widgetheader" style="{{ stylewidgetheader }}">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ appAlias }}/{{ entity.icon.label }}" class="logo"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="/{{ appAlias }}/uploads/icon/icon_pin.png" class="logo"/>
|
|
||||||
{% endif %}
|
|
||||||
<span class="title">{{ entity.name }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% if bookmarks is not empty or canadd %}
|
|
||||||
<div class="widgetbody" style="{{ stylewidgetbody }}">
|
|
||||||
<div class="bookmark-container">
|
|
||||||
<div class="grid clearfix">
|
|
||||||
<div class="grid-sizer {{ stylegrid }}"></div>
|
|
||||||
<div class="grid-gutter-sizer"></div>
|
|
||||||
{% for bookmark in bookmarks %}
|
|
||||||
<div class="grid-item {{ stylegrid }}">
|
|
||||||
<div class="grid-item-content" style="background-color: {{ bookmark.color ? "#"~bookmark.color : app.session.get('colorbgbodydark') }};">
|
|
||||||
{% if canadd %}
|
|
||||||
<a style="cursor:pointer" onClick="modBookmark({{ bookmark.id }})" class="item-update"><i style="color: #FFF" class="fa fa-file" title="Modifier le favori"></i></a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if bookmark.target == 'frame' %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ bookmark.title }}" style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url|replace({'#login#': username}) }}')">
|
|
||||||
{% elseif bookmark.target == "_self" %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}">
|
|
||||||
{% else %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url|replace({'#login#': username}) }}" target="{{ bookmark.target }}">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="item-link clearfix">
|
|
||||||
<div class="grid-item-logo" title="{{ bookmark.subtitle|nl2br }}">
|
|
||||||
{% if bookmark.icon %}
|
|
||||||
<img class="grid-item-img" height="110" src="/{{ appAlias }}/{{ bookmark.icon.label }}">
|
|
||||||
{% else %}
|
|
||||||
<img class="grid-item-img" height="110" src="/{{ appAlias }}/uploads/icon/icon_pin.png">
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid-item-title">
|
|
||||||
<h2>{{ bookmark.title }}</h2>
|
|
||||||
<span>{{ bookmark.subtitle|nl2br }}</<span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% if canadd %}
|
|
||||||
<div class="grid-item {{ stylegrid }}">
|
|
||||||
<div title="Ajouter un Favori" onClick="addBookmark({{ entity.id }},false)" class="grid-item-content" style="background-color: app.session.get('colorbgbodydark')}};cursor:pointer;">
|
|
||||||
<div class="item-link clearfix">
|
|
||||||
<div class="grid-item-logo">
|
|
||||||
<img class="grid-item-img imageshadow" height="110" src="/{{ appAlias }}/uploads/icon/icon_add.png">
|
|
||||||
</div>
|
|
||||||
<div class="grid-item-title">
|
|
||||||
<h2>Ajouter</h2>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<img height="35" src="{{ path('app_minio_image',{file:bookmarkicon}) }}">
|
||||||
|
|
||||||
|
<div class="item-title">
|
||||||
|
<h3 >{{ bookmarktitle }}</h3>
|
||||||
|
<div class="item-subtitle">{{ bookmarksubtitle|nl2br }}</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div class="item-action">
|
||||||
|
{% if canadd %}
|
||||||
|
{% if bookmark.item %}
|
||||||
|
<a style="display:none" onClick="delBookmark({{ bookmark.id }},{{ entity.id }},false)"><i class="item-heart fas fa-heart-crack"></i></a>
|
||||||
|
{% else %}
|
||||||
|
<a style="display:none" onClick="modBookmark({{ bookmark.id }},{{ entity.id }},false)"><i class="item-mod fas fa-file"></i></a>
|
||||||
|
<a style="display:none" onClick="delBookmark({{ bookmark.id }},{{ entity.id }},false)"><i class="item-trash fas fa-trash"></i></a>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if bookmarkcontent %}
|
||||||
|
<a style="display:none"><i class="item-info fas fa-circle-info"></i></a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="item-description hide">{{ bookmarkcontent|raw }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if canadd %}
|
||||||
|
<div class="item {{ itemsize }}" style="background-color: var(--colorbgbodydark);" data-idcategory="bookmark">
|
||||||
|
<div class="item-container">
|
||||||
|
<div class="item-content">
|
||||||
|
<a class="item-link" onClick="addBookmark({{ entity.id }},false)">
|
||||||
|
<img height="35" src="{{ path('app_minio_image',{file:"icon/icon_add.png"}) }}">
|
||||||
|
<div class="item-title">
|
||||||
|
<h3 >Ajouter</h3>
|
||||||
|
<div class="item-subtitle">Ajouter un Lien</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<div class="item-action">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,116 +0,0 @@
|
||||||
{% set theme = app.session.get('theme') %}
|
|
||||||
{% if theme is not empty %}
|
|
||||||
{{ include('@Theme/'~theme~'/function.html.twig') }}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% import "@CadolesPortal/Pagewidget/constants.twig" as constants %}
|
|
||||||
|
|
||||||
{% set colormain = constants.mycolormain() %}
|
|
||||||
{% set stylewidget = constants.mystylewidget(entity) %}
|
|
||||||
{% set stylewidgetmenu = constants.mystylewidgetmenu(entity) %}
|
|
||||||
{% set stylewidgetheader = constants.mystylewidgetheader(entity) %}
|
|
||||||
{% set stylewidgetbody = constants.mystylewidgetbody(entity) %}
|
|
||||||
{% set stylewidgetbodyreverse = constants.mystylewidgetbodyreverse(entity) %}
|
|
||||||
|
|
||||||
{% set permgroup = app.session.get('permgroup') %}
|
|
||||||
{% set canadd = false %}
|
|
||||||
{% if is_granted('ROLE_ADMIN') or (is_granted('ROLE_MODO') and (permgroup=="ROLE_MODO" or permgroup=="ROLE_ANIM" or permgroup=="ROLE_USER")) or (is_granted('ROLE_ANIM') and (permgroup=="ROLE_ANIM" or permgroup=="ROLE_USER")) or (is_granted('ROLE_USER') and permgroup=="ROLE_USER") %}
|
|
||||||
{% set canadd = true %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if mini %}
|
|
||||||
<div class="widget widget-mini widget-group" data-id="{{ entity.id }}" loc="{{ entity.loc }}">
|
|
||||||
<div class="widgetheader">
|
|
||||||
<a style="cursor:pointer" onClick="bigWidget({{entity.id}})">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo" title="{{ entity.name }}"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="/{{ alias }}/uploads/icon/icon_pin.png" class="logo" title="{{ entity.name }}"/>
|
|
||||||
{% endif %}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="widget {%if entity.border %} widget-bordered {%else%} widget-notbordered {%endif%} widget-group" data-id="{{ entity.id }}" loc="{{ entity.loc }}" style="{{ stylewidget }}" height="{{ entity.height }}px">
|
|
||||||
<div class="widgetmenu">
|
|
||||||
{% if canupdate %}
|
|
||||||
<i class="fa fa-trash fa-fw" title="Supprimer le Widget" onClick="delWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
<i class="fa fa-file fa-fw" title="Modifier le Widget" onClick="modWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if canadd %}
|
|
||||||
<a title="Ajouter un Groupe" href="{{ path('cadoles_core_user_group_submit') }}" target="_top">
|
|
||||||
<i class="fa fa-plus fa-fw" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if look=="list" %}
|
|
||||||
<i class="glyphicon glyphicon-resize-small" title="Réduire le Widget" onClick="smallWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% else %}
|
|
||||||
<i class="glyphicon glyphicon-resize-full" title="Agrandir le Widget" onClick="bigWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="widgetheader" style="{{ stylewidgetheader }}">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="/{{ alias }}/uploads/icon/icon_pin.png" class="logo"/>
|
|
||||||
{% endif %}
|
|
||||||
<span class="title">{{ entity.name }}</span>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="widgetbody" style="{{ stylewidgetbody }}; overflow-x:hidden; ">
|
|
||||||
<div class="grid clearfix">
|
|
||||||
<div class="grid-sizer grid-small"></div>
|
|
||||||
<div class="grid-gutter-sizer"></div>
|
|
||||||
{% for group in groups %}
|
|
||||||
<div class="grid-item grid-small" >
|
|
||||||
<div class="grid-item-content" style="background-color:{{ group.color ? "#"~group.color : '#'~colormain }}">
|
|
||||||
<a href="{{path('cadoles_core_home',{id:group.id})}}" target="_top" style="{{ stylewidgetbodyreverse }};">
|
|
||||||
<div class="item-link clearfix">
|
|
||||||
<div class="grid-item-logo">
|
|
||||||
{% if group.icon %}
|
|
||||||
<img class="grid-item-img" height="110" src="/{{ alias }}{{ group.icon }}" />
|
|
||||||
{% else %}
|
|
||||||
<img class="grid-item-img" height="110" src="/{{ alias }}/uploads/icon/icon_users.png" />
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="grid-item-title">
|
|
||||||
<h2>{{ group.title }}</h2>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% if canadd %}
|
|
||||||
<div class="grid-item grid-small">
|
|
||||||
<div class="grid-item-content" style="{{ stylewidgetbodyreverse }};">
|
|
||||||
<a title="Ajouter un Groupe" href="{{path('cadoles_core_user_group_submit')}}" target="_top" style="{{ stylewidgetbodyreverse }};">
|
|
||||||
<div class="item-link clearfix">
|
|
||||||
|
|
||||||
<div class="grid-item-logo">
|
|
||||||
<img class="grid-item-img imageshadow" height="110" src="/{{ alias }}/uploads/icon/icon_add.png" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="grid-item-title">
|
|
||||||
<h2>Ajouter un Groupe</h2>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
|
|
@ -1,60 +1,64 @@
|
||||||
{% extends 'widget.html.twig' %}
|
{% set widgetname="info" %}
|
||||||
|
{% extends 'Pagewidget/widget.twig' %}
|
||||||
|
|
||||||
{% block widgetmenu %}
|
{% block widgetmenu %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block widgetbody %}
|
{% block widgetbody %}
|
||||||
<div style="text-align: center;">
|
{% for group in entity.page.groups %}
|
||||||
{{ description | raw }}
|
{% if entity.page.groups|length > 1 or not widgethaveheader %}
|
||||||
</div>
|
<h3 style="margin:0px; font-size:25px; {{colorbodyfont}} ">{{group.label}}</h3>
|
||||||
|
{% endif %}
|
||||||
{%if usage=="group" %}
|
{% if group.description %}
|
||||||
<div class="grid clearfix">
|
{{ group.description|nl2br}}
|
||||||
<div class="grid-sizer grid-verysmall"></div>
|
<br><br>
|
||||||
<div class="grid-gutter-sizer"></div>
|
{% endif %}
|
||||||
|
<div class="items-list">
|
||||||
{% if canadd==true %}
|
{% for member in group.users %}
|
||||||
<div class="grid-item grid-verysmall" style="{{stylewidgetitem}}">
|
<div class="item item-verysmall" style="background-color: var(--colorbgbodydark);">
|
||||||
<div class="grid-item-content">
|
<div class="item-container">
|
||||||
<a href="{{path('app_user_group_users',{'id':id,'idreturn':idpage})}}" target="_top">
|
<div class="item-content">
|
||||||
<div class="item-link clearfix">
|
<div class="item-link">
|
||||||
<div class="grid-item-logo">
|
<img src="{{ path('app_minio_image',{file:"avatar/"~member.user.avatar}) }}" class="avatar" style="height:40px; width: 40px;">
|
||||||
<img class="grid-item-img imageshadow" height="110" src="/{{ appAlias }}/uploads/icon/icon_add.png" />
|
<div class="item-title">
|
||||||
</div>
|
<h3>{{ member.user.lastname }} {{ member.user.firstname }}</h3>
|
||||||
|
<div class="item-subtitle" style="display:block !important">
|
||||||
<div class="grid-item-title">
|
{% if member.rolegroup==100 %}
|
||||||
<h2>Ajouter un membre</h2>
|
<i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i>
|
||||||
|
{% elseif member.rolegroup==90 %}
|
||||||
|
<i class="fa fa-star"></i><i class="fa fa-star"></i>
|
||||||
|
{% elseif member.rolegroup==50 %}
|
||||||
|
<i class="fa fa-star"></i>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% for member in members %}
|
|
||||||
<div class="grid-item grid-verysmall" style="{{stylewidgetitem}}">
|
|
||||||
<div class="grid-item-content">
|
|
||||||
<div class="item-link clearfix">
|
|
||||||
<div class="grid-item-logo">
|
|
||||||
<img onclick="seeUser({{member.user.id}})" src="/{{ appAlias }}/uploads/avatar/{{ member.user.avatar}}" class="grid-item-img avatar" height="110" style="cursor:pointer;">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid-item-title">
|
|
||||||
<h2>
|
|
||||||
{{ member.user.lastname }} {{ member.user.firstname }}
|
|
||||||
{% if member.rolegroup==100 %}
|
|
||||||
<br><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i>
|
|
||||||
{% elseif member.rolegroup==90 %}
|
|
||||||
<br><i class="fa fa-star"></i><i class="fa fa-star"></i>
|
|
||||||
{% elseif member.rolegroup==50 %}
|
|
||||||
<br><i class="fa fa-star"></i>
|
|
||||||
{% endif %}
|
|
||||||
</h2>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
{%if canadd %}
|
||||||
|
<div class="item item-verysmall" style="background-color: var(--colorbgbodydark);">
|
||||||
|
<div class="item-container">
|
||||||
|
<div class="item-content">
|
||||||
|
<a class="item-link" href="{{path("app_all_group_users",{id:group.id,idpage:entity.page.id,usage:usage})}}" target="_top">
|
||||||
|
<img height="35" src="{{ path('app_minio_image',{file:"icon/icon_add.png"}) }}">
|
||||||
|
<div class="item-title">
|
||||||
|
<h3 >Ajouter</h3>
|
||||||
|
<div class="item-subtitle">Ajouter un Utilisateur</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if entity.page.groups|length == 0 and entity.page.user %}
|
||||||
|
<center>
|
||||||
|
<img src="{{ path('app_minio_image',{file:"avatar/"~entity.page.user.avatar}) }}" class="avatar" style="height:128px; width: 128px; margin-bottom:15px">
|
||||||
|
</center>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -1,263 +1,174 @@
|
||||||
<style>
|
|
||||||
.widget{
|
|
||||||
margin-bottom:30px;
|
|
||||||
}
|
|
||||||
.widget-bordered {
|
|
||||||
border:1px solid;
|
|
||||||
}
|
|
||||||
.widget-menu {
|
|
||||||
float: right;
|
|
||||||
color: #fff;
|
|
||||||
margin: 10px 5px 0px 0px;
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
.widget-menu i {
|
|
||||||
cursor:pointer;
|
|
||||||
}
|
|
||||||
.widget-header {
|
|
||||||
padding:10px;
|
|
||||||
font-family: var(--fonttitle);
|
|
||||||
}
|
|
||||||
.widget-logo {
|
|
||||||
height:30px;
|
|
||||||
margin-right:5px;
|
|
||||||
}
|
|
||||||
.widget-body {
|
|
||||||
padding: 5px 0px 0px 0px;
|
|
||||||
}
|
|
||||||
.widget-bordered .widget-body {
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cat-list {
|
|
||||||
color: var(--colorfttitledark);
|
|
||||||
background-color: var(--colorbgbodydark);
|
|
||||||
padding: 5px 10px;
|
|
||||||
display: inline-block;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|
||||||
{% set widgethaveheader=entity.viewheader %}
|
|
||||||
{% set widgetname="item" %}
|
{% set widgetname="item" %}
|
||||||
{%if widgethaveheader %}
|
{% extends 'Pagewidget/widget.twig' %}
|
||||||
{% set widgetstyle=(entity.colorheaderback ? "border-color:"~entity.colorheaderback~";" : "border-color:var(--colorbgbodydark);") %}
|
|
||||||
{% set widgetstylemenu=(entity.colorheaderback ? "background-color:"~entity.colorheaderback~";" : "background-color:var(--colorbgbodydark);")~(entity.colorheaderfont ? "color:"~entity.colorheaderfont~";" : "color:var(--colorfttitledark);") %}
|
|
||||||
{%else%}
|
|
||||||
{% set widgetstyle=(entity.colorbodyback ? "border-color:"~entity.colorbodyback~";" : "border-color:var(--colorbgbodydark);") %}
|
|
||||||
{% set widgetstylemenu="background-color:var(--colorbgbodydark); color: var(--colorfttitledark); padding:10px; border-radius: 5px;" %}
|
|
||||||
{%endif%}
|
|
||||||
|
|
||||||
{% set widgetstyleheader=(entity.colorheaderback ? "background-color:"~entity.colorheaderback~";" : "background-color:var(--colorbgbodydark);")~(entity.colorheaderfont ? "color:"~entity.colorheaderfont~";" : "color:var(--colorfttitledark);") %}
|
{% block widgetaction %}
|
||||||
{% set widgetstylebody=(entity.colorbodyback ? "background-color:"~entity.colorbodyback~";" : "background-color:var(--colorbgbodylight);")~(entity.colorbodyfont ? "color:"~entity.colorbodyfont~";" : "color:var(--colorfttitlelight);") %}
|
{% if canadd %}
|
||||||
{% set widgeicon= entity.icon ? path('app_minio_image',{file:entity.icon.label}) : path('app_minio_image',{file:"icon/icon_pin.png"}) %}
|
<i class="fas fa-text-height" title="Changer taille des items" onClick="changeWidget({{ entity.id }},'modedesktop',{{modedesktop}})"></i>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% if modedesktop==0 %}
|
{% block widgetbody %}
|
||||||
{% set itemsize="item-verysmall" %}
|
{% set havemenu=false %}
|
||||||
{% elseif modedesktop==1 %}
|
{% set havebookmark=false %}
|
||||||
{% set itemsize="item-small" %}
|
|
||||||
{% elseif modedesktop==2 %}
|
|
||||||
{% set itemsize="item-medium" %}
|
|
||||||
{% elseif modedesktop==3 %}
|
|
||||||
{% set itemsize="item-large" %}
|
|
||||||
{% elseif modedesktop==4 %}
|
|
||||||
{% set itemsize="item-list" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if app.user %}
|
{% if menu and withbookmark!= 2 and (canadd or bookmarks is not empty or itemcategorys|length > 1) %}
|
||||||
{% set username = app.user.username %}
|
{% set havemenu=true %}
|
||||||
{% else %}
|
<div style="margin-bottom: 5px;">
|
||||||
{% set username = "" %}
|
{% if menuall %}
|
||||||
{% endif %}
|
<div class="cat-list" onClick="showItemCat({{ entity.id}},'all')">Tout</div>
|
||||||
|
|
||||||
|
|
||||||
{% set colorbodyfont = "" %}
|
|
||||||
{% if entity.colorbodyfont is not null %}
|
|
||||||
{% set colorbodyfont = "color: #" ~ entity.colorbodyfont %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
|
||||||
<div class="widget widget-{{widgetname}} {%if entity.border %} widget-bordered {%else%} widget-notbordered {%endif%} " data-id="{{ entity.id }}" loc="{{ entity.loc }}" style="{{ widgetstyle }}" height="{{ entity.height }}px">
|
|
||||||
<div class="widget-menu" style="{{ widgetstylemenu }}">
|
|
||||||
{% if canadd %}
|
|
||||||
<i class="fas fa-text-height" title="Changer taille des items" onClick="changeWidget({{ entity.id }},'modedesktop',{{modedesktop}})"></i>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if canupdate %}
|
{% if bookmarks is not empty or canadd %}
|
||||||
<i class="fa fa-trash fa-fw" title="Supprimer le Widget" onClick="delWidget({{ entity.id }})" ></i>
|
<div class="cat-list" onClick="showItemCat({{ entity.id}},'bookmark')"><i class="fa fa-heart"></i></div>
|
||||||
<i class="fa fa-file fa-fw" title="Modifier le Widget" onClick="modWidget({{ entity.id }})"></i>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if canadd and access!="admin"%}
|
{% for itemcategory in itemcategorys %}
|
||||||
<i class="fa fa-plus fa-fw" title="Ajouter un Favori" onClick="addBookmark({{ entity.id }},true)" ></i>
|
<div class="cat-list" onClick="showItemCat({{ entity.id}},{{itemcategory.id}})">{{itemcategory.label}}</div>
|
||||||
{% endif %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{%if widgethaveheader %}
|
{% if search %}
|
||||||
<div class="widget-header" style="{{ widgetstyleheader }}">
|
{% set havemenu=true %}
|
||||||
<img class="widget-logo" src="{{widgeicon}}" />
|
<div class="input-group" style="margin-bottom: 5px;">
|
||||||
<span class="widget-title">{{ entity.name }}</span>
|
<div class="input-group-prepend">
|
||||||
</div>
|
<span class="input-group-text"><i class="fa fa-search"></i> </span>
|
||||||
{%endif%}
|
|
||||||
|
|
||||||
<div class="widget-body" style="{{ widgetstylebody }};">
|
|
||||||
{% set havemenu=false %}
|
|
||||||
{% set havebookmark=false %}
|
|
||||||
|
|
||||||
{% if menu and withbookmark!= 2 and bookmarks is not empty and itemcategorys|length > 1 %}
|
|
||||||
{% set havemenu=true %}
|
|
||||||
<div style="margin-bottom: 5px;">
|
|
||||||
{% if menuall %}
|
|
||||||
<div class="cat-list" onClick="showItemCat({{ entity.id}},'all')">Tout</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if bookmarks is not empty %}
|
|
||||||
<div class="cat-list" onClick="showItemCat({{ entity.id}},'fav')"><i class="fa fa-heart"></i></div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% for itemcategory in itemcategorys %}
|
|
||||||
<div class="cat-list" onClick="showItemCat({{ entity.id}},{{itemcategory.id}})">{{itemcategory.label}}</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
<input id="itemsearch" onKeyup="searchItem({{ entity.id}},$(this).val());" type="text" class="form-control" aria-label="Amount (to the nearest dollar)">
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if search %}
|
{% if (bookmarks is not empty or canadd ) and (withbookmark==0 or withbookmark==2) %}
|
||||||
{% set havemenu=true %}
|
{% if withbookmark==0 or itemcategorys|length > 1 %}
|
||||||
<div class="input-group" style="margin-bottom: 5px;">
|
<h3 class="itemcategory-title {{not havemenu ? "mt-1" : "mt-3"}} mb-0" style="{{ entity.colorbodyfont ? "color:"~entity.colorbodyfont~";" : "color:var(--colorfttitlelight);"}}" data-idcategory="bookmark">Favoris</h3>
|
||||||
<div class="input-group-prepend">
|
{% endif %}
|
||||||
<span class="input-group-text"><i class="fa fa-search"></i> </span>
|
<div class="items-list">
|
||||||
|
{% for bookmark in bookmarks %}
|
||||||
|
{% set havebookmark=true %}
|
||||||
|
{% if bookmark.item %}
|
||||||
|
{% set bookmarktitle = bookmark.item.title %}
|
||||||
|
{% set bookmarksubtitle = bookmark.item.subtitle %}
|
||||||
|
{% set bookmarkbackgroundcolor = bookmark.item.color ? bookmark.item.color : app.session.get('colorbgbodydark')|raw %}
|
||||||
|
{% set bookmarktarget = bookmark.item.target %}
|
||||||
|
{% set bookmarkurl = ( bookmark.item.protected and not app.user ? path("app_login") : bookmark.item.url|replace({'#login#': username}) ) %}
|
||||||
|
{% set bookmarkcontent = bookmark.item.content %}
|
||||||
|
{% set bookmarkicon = (bookmark.item.icon ? bookmark.item.icon.label : "icon/icon_pin.png") %}
|
||||||
|
{% else %}
|
||||||
|
{% set bookmarktitle = bookmark.title %}
|
||||||
|
{% set bookmarksubtitle = bookmark.subtitle %}
|
||||||
|
{% set bookmarkbackgroundcolor = bookmark.color ? bookmark.color : app.session.get('colorbgbodydark')|raw %}
|
||||||
|
{% set bookmarktarget = bookmark.target %}
|
||||||
|
{% set bookmarkurl = bookmark.url|replace({'#login#': username}) %}
|
||||||
|
{% set bookmarkcontent = null %}
|
||||||
|
{% set bookmarkicon = bookmark.icon ? bookmark.icon.label : "icon/icon_pin.png" %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="item {{itemsize}}" style="background-color: {{ bookmarkbackgroundcolor }};" data-idcategory="bookmark" data-title="{{bookmarktitle|lower}}">
|
||||||
|
<div class="item-container">
|
||||||
|
<div class="item-content">
|
||||||
|
{% if bookmarktarget == 'frame' %}
|
||||||
|
<a class="item-link" onClick="showItemframe('bookmark{{ bookmark.id }}','{{ bookmarkurl }}')">
|
||||||
|
{% else %}
|
||||||
|
<a class="item-link" href="{{ bookmarkurl }}" target="{{bookmarktarget }}">
|
||||||
|
{% endif %}
|
||||||
|
<img height="35" src="{{ path('app_minio_image',{file:bookmarkicon}) }}">
|
||||||
|
|
||||||
|
<div class="item-title">
|
||||||
|
<h3 >{{ bookmarktitle }}</h3>
|
||||||
|
<div class="item-subtitle">{{ bookmarksubtitle|nl2br }}</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div class="item-action">
|
||||||
|
{% if canadd %}
|
||||||
|
{% if bookmark.item %}
|
||||||
|
<a style="display:none" onClick="delBookmark({{ bookmark.id }},{{ entity.id }},true)"><i class="item-heart fas fa-heart-crack"></i></a>
|
||||||
|
{% else %}
|
||||||
|
<a style="display:none" onClick="modBookmark({{ bookmark.id }},{{ entity.id }},true)"><i class="item-mod fas fa-file"></i></a>
|
||||||
|
<a style="display:none" onClick="delBookmark({{ bookmark.id }},{{ entity.id }},true)"><i class="item-trash fas fa-trash"></i></a>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if bookmarkcontent %}
|
||||||
|
<a style="display:none"><i class="item-info fas fa-circle-info"></i></a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="item-description hide">{{ bookmarkcontent|raw }}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input id="itemsearch" onKeyup="searchItem({{ entity.id}},$(this).val());" type="text" class="form-control" aria-label="Amount (to the nearest dollar)">
|
{% endfor %}
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if (bookmarks is not empty or canadd ) and (withbookmark==0 or withbookmark==2) %}
|
{% if (canadd) %}
|
||||||
{% if withbookmark==0 and itemcategorys|length > 1 %}
|
<div class="item {{ itemsize }}" style="background-color: var(--colorbgbodydark);" data-idcategory="bookmark">
|
||||||
<h3 class="itemcategory-title {{not havemenu ? "mt-1" : "mt-3"}} mb-0" style="{{ entity.colorbodyfont ? "color:"~entity.colorbodyfont~";" : "color:var(--colorfttitlelight);"}}" data-idcategory="bookmark">Favoris</h3>
|
<div class="item-container">
|
||||||
|
<div class="item-content">
|
||||||
|
<a class="item-link" onClick="addBookmark({{ entity.id }},true)">
|
||||||
|
<img height="35" src="{{ path('app_minio_image',{file:"icon/icon_add.png"}) }}">
|
||||||
|
<div class="item-title">
|
||||||
|
<h3 >Ajouter</h3>
|
||||||
|
<div class="item-subtitle">Ajouter un Favoris</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<div class="item-action">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="items-list" style="margin-top:-5px">
|
</div>
|
||||||
{% for bookmark in bookmarks %}
|
{% endif %}
|
||||||
{% set havebookmark=true %}
|
|
||||||
{% if bookmark.item %}
|
|
||||||
{% set bookmarktitle = bookmark.item.title %}
|
|
||||||
{% set bookmarksubtitle = bookmark.item.subtitle %}
|
|
||||||
{% set bookmarkbackgroundcolor = bookmark.item.color ? bookmark.item.color : app.session.get('colorbgbodydark')|raw %}
|
|
||||||
{% set bookmarktarget = bookmark.item.target %}
|
|
||||||
{% set bookmarkurl = ( bookmark.item.protected and not app.user ? path("app_login") : bookmark.item.url|replace({'#login#': username}) ) %}
|
|
||||||
{% set bookmarkcontent = bookmark.item.content %}
|
|
||||||
{% set bookmarkicon = (bookmark.item.icon ? bookmark.item.icon.label : "icon/icon_pin.png") %}
|
|
||||||
{% else %}
|
|
||||||
{% set bookmarktitle = bookmark.title %}
|
|
||||||
{% set bookmarksubtitle = bookmark.subtitle %}
|
|
||||||
{% set bookmarkbackgroundcolor = bookmark.color ? bookmark.color : app.session.get('colorbgbodydark')|raw %}
|
|
||||||
{% set bookmarktarget = bookmark.target %}
|
|
||||||
{% set bookmarkurl = bookmark.url|replace({'#login#': username}) %}
|
|
||||||
{% set bookmarkcontent = bookmark.content %}
|
|
||||||
{% set bookmarkicon = bookmark.icon ? bookmark.icon.label : "icon/icon_pin.png" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="item {{itemsize}}" style="background-color: {{ bookmarkbackgroundcolor }};" data-idcategory="bookmark" data-title="{{bookmarktitle|lower}}">
|
{% for itemcategory in itemcategorys %}
|
||||||
|
{% if itemcategorys|length > 1 or havebookmark or canadd %} <h3 class="itemcategory-title {{loop.first and not havemenu and not havebookmark ? "mt-1" : "mt-3"}} mb-0" style="{{ entity.colorbodyfont ? "color:"~entity.colorbodyfont~";" : "color:var(--colorfttitlelight);"}}" data-idcategory="{{itemcategory.id}}">{{itemcategory.label}}</h3> {% endif %}
|
||||||
|
<div class="items-list">
|
||||||
|
{% for item in items %}
|
||||||
|
{% if item.itemcategory==itemcategory %}
|
||||||
|
<div class="item {{itemsize}}" style="background-color: {{ item.color ? item.color : "var(--colorbgbodydark)" }};" data-idcategory="{{item.itemcategory.id}}" data-title="{{item.title|lower}}">
|
||||||
<div class="item-container">
|
<div class="item-container">
|
||||||
<div class="item-content">
|
<div class="item-content">
|
||||||
{% if bookmarktarget == 'frame' %}
|
{% set url=item.url|replace({'#login#': username}) %}
|
||||||
<a class="item-link" onClick="showItemframe('bookmark{{ bookmark.id }}','{{ bookmarkurl }}')">
|
{% if item.protected and not app.user %}
|
||||||
{% else %}
|
{% set url=path('app_login') %}
|
||||||
<a class="item-link" href="{{ bookmarkurl }}" target="{{bookmarktarget }}">
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<img height="35" src="{{ path('app_minio_image',{file:bookmarkicon}) }}">
|
|
||||||
|
{% if item.target == 'frame' %}
|
||||||
|
<a class="item-link" onClick="showItemframe({{ item.id }},'{{ url }}')">
|
||||||
|
{% else %}
|
||||||
|
<a class="item-link" href="{{ url }}" target="{{ item.target }}">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if item.icon %}
|
||||||
|
<img height="35" src="{{ path('app_minio_image',{file:item.icon.label}) }}">
|
||||||
|
{% else %}
|
||||||
|
<img height="35" src="{{ path('app_minio_image',{file:"icon/icon_pin.png"}) }}">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<div class="item-title">
|
<div class="item-title">
|
||||||
<h3 >{{ bookmarktitle }}</h3>
|
<h3 >{{ item.title }}</h3>
|
||||||
<div class="item-subtitle">{{ bookmarksubtitle|nl2br }}</div>
|
<div class="item-subtitle">{{ item.subtitle|nl2br }}</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div class="item-action">
|
<div class="item-action">
|
||||||
{% if bookmarkcontent %}
|
{% if canadd %}
|
||||||
|
<a style="display:none" onClick="heartBookmark({{ item.id }})"><i class="item-heart fa fa-heart"></i></a>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if item.content %}
|
||||||
<a style="display:none"><i class="item-info fas fa-circle-info"></i></a>
|
<a style="display:none"><i class="item-info fas fa-circle-info"></i></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="item-description hide">{{ bookmarkcontent|raw }}</div>
|
<div class="item-description hide">{{ item.content|raw }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
{% if (canadd) %}
|
</div>
|
||||||
<div class="item {{ itemsize }}" style="background-color: var(--colorbgbodydark);" data-idcategory="bookmark">
|
{% endfor %}
|
||||||
<div class="item-container">
|
{% endblock %}
|
||||||
<div class="item-content">
|
|
||||||
<a class="item-link" onClick="addBookmark({{ entity.id }},true)">
|
|
||||||
<img height="35" src="{{ path('app_minio_image',{file:"icon/icon_add.png"}) }}">
|
|
||||||
<div class="item-title">
|
|
||||||
<h3 >Ajouter</h3>
|
|
||||||
<div class="item-subtitle">Ajouter un Favoris</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
<div class="item-action">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% for itemcategory in itemcategorys %}
|
|
||||||
{% if itemcategorys|length > 1 or havebookmark %} <h3 class="itemcategory-title {{loop.first and not havemenu ? "mt-1" : "mt-3"}} mb-0" style="{{ entity.colorbodyfont ? "color:"~entity.colorbodyfont~";" : "color:var(--colorfttitlelight);"}}" data-idcategory="{{itemcategory.id}}">{{itemcategory.label}}</h3> {% endif %}
|
|
||||||
<div class="items-list" style="margin-top:-5px">
|
|
||||||
{% for item in items %}
|
|
||||||
{% if item.itemcategory==itemcategory %}
|
|
||||||
<div class="item {{itemsize}}" style="background-color: {{ item.color ? item.color : "var(--colorbgbodydark)" }};" data-idcategory="{{item.itemcategory.id}}" data-title="{{item.title|lower}}">
|
|
||||||
<div class="item-container">
|
|
||||||
<div class="item-content">
|
|
||||||
{% set url=item.url|replace({'#login#': username}) %}
|
|
||||||
{% if item.protected and not app.user %}
|
|
||||||
{% set url=path('app_login') %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if item.target == 'frame' %}
|
|
||||||
<a class="item-link" onClick="showItemframe({{ item.id }},'{{ url }}')">
|
|
||||||
{% else %}
|
|
||||||
<a class="item-link" href="{{ url }}" target="{{ item.target }}">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if item.icon %}
|
|
||||||
<img height="35" src="{{ path('app_minio_image',{file:item.icon.label}) }}">
|
|
||||||
{% else %}
|
|
||||||
<img height="35" src="{{ path('app_minio_image',{file:"icon/icon_pin.png"}) }}">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="item-title">
|
|
||||||
<h3 >{{ item.title }}</h3>
|
|
||||||
<div class="item-subtitle">{{ item.subtitle|nl2br }}</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="item-action">
|
|
||||||
{% if canadd %}
|
|
||||||
<a style="display:none" onClick="heartBookmark({{ item.id }})"><i class="item-heart fa fa-heart"></i></a></a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if item.content %}
|
|
||||||
<a style="display:none"><i class="item-info fas fa-circle-info"></i></a>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="item-description hide">{{ item.content|raw }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,249 +1,131 @@
|
||||||
{% set theme = app.session.get('theme') %}
|
{% set widgetname="item" %}
|
||||||
{% if theme is not empty %}
|
{% extends 'Pagewidget/widget.twig' %}
|
||||||
{{ include('@Theme/'~theme~'/function.html.twig') }}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% import "@CadolesPortal/Pagewidget/constants.twig" as constants %}
|
{% block widgetaction %}
|
||||||
|
{% if canadd %}
|
||||||
{% set colormain = constants.mycolormain() %}
|
<i class="fas fa-text-height" title="Changer taille des items" onClick="changeWidget({{ entity.id }},'modedesktop',{{modedesktop}})"></i>
|
||||||
{% set stylewidget = constants.mystylewidget(entity) %}
|
{% endif %}
|
||||||
{% set stylewidgetmenu = constants.mystylewidgetmenu(entity) %}
|
{% endblock %}
|
||||||
{% set stylewidgetheader = constants.mystylewidgetheader(entity) %}
|
|
||||||
{% set stylewidgetbody = constants.mystylewidgetbody(entity) %}
|
|
||||||
|
|
||||||
|
|
||||||
{% if modedesktop==0 %}
|
{% block widgetbody %}
|
||||||
{% set stylegrid="" %}
|
<div class="items-list">
|
||||||
{% elseif modedesktop==1 %}
|
{% for bookmark in bookmarks %}
|
||||||
{% set stylegrid="grid-medium" %}
|
{% set havebookmark=true %}
|
||||||
{% elseif modedesktop==2 %}
|
{% if bookmark.item %}
|
||||||
{% set stylegrid="grid-small" %}
|
{% set bookmarktitle = bookmark.item.title %}
|
||||||
{% elseif modedesktop==3 %}
|
{% set bookmarksubtitle = bookmark.item.subtitle %}
|
||||||
{% set stylegrid="grid-list" %}
|
{% set bookmarkbackgroundcolor = bookmark.item.color ? bookmark.item.color : app.session.get('colorbgbodydark')|raw %}
|
||||||
{% endif %}
|
{% set bookmarktarget = bookmark.item.target %}
|
||||||
|
{% set bookmarkurl = ( bookmark.item.protected and not app.user ? path("app_login") : bookmark.item.url|replace({'#login#': username}) ) %}
|
||||||
{% set colorbodyfont = "" %}
|
{% set bookmarkcontent = bookmark.item.content %}
|
||||||
{% if entity.colorbodyfont is not null %}
|
{% set bookmarkicon = (bookmark.item.icon ? bookmark.item.icon.label : "icon/icon_pin.png") %}
|
||||||
{% set colorbodyfont = "color: #" ~ entity.colorbodyfont %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if app.user %}
|
|
||||||
{% set username = app.user.username %}
|
|
||||||
{% else %}
|
|
||||||
{% set username = "" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{%if mini %}
|
|
||||||
<div class="widget widget-mini widget-itemessential" data-id="{{ entity.id }}" loc="{{ entity.loc }}">
|
|
||||||
<div class="widgetheader">
|
|
||||||
<a style="cursor:pointer" onClick="bigWidget({{entity.id}})">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo" title="{{ entity.name }}"/>
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<img src="/{{ alias }}/uploads/icon/icon_pin.png" class="logo" title="{{ entity.name }}"/>
|
{% set bookmarktitle = bookmark.title %}
|
||||||
{% endif %}
|
{% set bookmarksubtitle = bookmark.subtitle %}
|
||||||
</a>
|
{% set bookmarkbackgroundcolor = bookmark.color ? bookmark.color : app.session.get('colorbgbodydark')|raw %}
|
||||||
</div>
|
{% set bookmarktarget = bookmark.target %}
|
||||||
</div>
|
{% set bookmarkurl = bookmark.url|replace({'#login#': username}) %}
|
||||||
{% else %}
|
{% set bookmarkcontent = null %}
|
||||||
<div class="widget {%if entity.border %} widget-bordered {%else%} widget-notbordered {%endif%} widget-itemessential" data-id="{{ entity.id }}" loc="{{ entity.loc }}" style="{{ stylewidget }}" height="{{ entity.height }}px">
|
{% set bookmarkicon = bookmark.icon ? bookmark.icon.label : "icon/icon_pin.png" %}
|
||||||
<div class="widgetmenu">
|
|
||||||
{% if canadd %}
|
|
||||||
<i class="fas fa-text-height" title="Changer taille des items" onClick="changeWidget({{ entity.id }},'modedesktop',{{modedesktop}})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if canupdate %}
|
<div class="item {{itemsize}}" style="background-color: {{ bookmarkbackgroundcolor }};" data-idcategory="bookmark" data-title="{{bookmarktitle|lower}}">
|
||||||
<i class="fa fa-trash fa-fw" title="Supprimer le Widget" onClick="delWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
<div class="item-container">
|
||||||
<i class="fa fa-file fa-fw" title="Modifier le Widget" onClick="modWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
<div class="item-content">
|
||||||
{% endif %}
|
{% if bookmarktarget == 'frame' %}
|
||||||
|
<a class="item-link" onClick="showItemframe('bookmark{{ bookmark.id }}','{{ bookmarkurl }}')">
|
||||||
|
{% else %}
|
||||||
|
<a class="item-link" href="{{ bookmarkurl }}" target="{{bookmarktarget }}">
|
||||||
|
{% endif %}
|
||||||
|
<img height="35" src="{{ path('app_minio_image',{file:bookmarkicon}) }}">
|
||||||
|
|
||||||
|
<div class="item-title">
|
||||||
|
<h3 >{{ bookmarktitle }}</h3>
|
||||||
|
<div class="item-subtitle">{{ bookmarksubtitle|nl2br }}</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
{% if canadd and access!="config"%}
|
<div class="item-action">
|
||||||
<a title="Ajouter une Application" href="{{ path('cadoles_portal_user_page_application') }}">
|
|
||||||
<i class="fa fa-plus fa-fw" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if look=="list" %}
|
|
||||||
<i class="glyphicon glyphicon-resize-small" title="Réduire le Widget" onClick="smallWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% else %}
|
|
||||||
<i class="glyphicon glyphicon-resize-full" title="Agrandir le Widget" onClick="bigWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="widgetheader" style="{{ stylewidgetheader }}">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="/{{ alias }}/uploads/icon/icon_pin.png" class="logo"/>
|
|
||||||
{% endif %}
|
|
||||||
<span class="title">{{ entity.name }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% if canadd or bookmarks is not empty or items is not empty %}
|
|
||||||
<div class="widgetbody" style="{{ stylewidgetbody }}">
|
|
||||||
<div class="grid clearfix">
|
|
||||||
<div class="grid-sizer {{ stylegrid }}"></div>
|
|
||||||
<div class="grid-gutter-sizer"></div>
|
|
||||||
|
|
||||||
{% for bookmark in bookmarks %}
|
|
||||||
{% if bookmark.item %}
|
|
||||||
<div class="grid-item {{ stylegrid }}" data-idcategory="bookmark" data-title="{{ bookmark.item.title|lower }}">
|
|
||||||
<div class="grid-item-content" style="background-color: {{ bookmark.item.color ? "#"~bookmark.item.color : '#'~colormain }};">
|
|
||||||
{% if bookmark.item.content %}
|
|
||||||
<a style="cursor:pointer" class="item-preview"><i style="color: #FFF" class="fa fa-info" title="Informations sur ce service"></i></a>
|
|
||||||
{% endif %}
|
|
||||||
{% if canadd %}
|
{% if canadd %}
|
||||||
<a style="cursor:pointer" onClick="delBookmark({{ bookmark.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-trash" title="Supprimer des favoris"></i></a>
|
{% if bookmark.item %}
|
||||||
{% endif %}
|
<a style="display:none" onClick="delBookmark({{ bookmark.id }},{{ entity.id }},true)"><i class="item-heart fas fa-heart-crack"></i></a>
|
||||||
|
|
||||||
{% if bookmark.item.target == 'frame' %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ bookmark.item.title }}" style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.item.id }}','{{ bookmark.item.url|replace({'#login#': username}) }}')">
|
|
||||||
{% elseif bookmark.target == "_self" %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ bookmark.item.title }}" href="{{ bookmark.item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.item.target }}{% endif %}">
|
|
||||||
{% else %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ bookmark.item.title }}" href="{{ bookmark.item.url|replace({'#login#': username}) }}" target="{{ bookmark.item.target }}">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="item-link clearfix">
|
|
||||||
<div class="grid-item-logo" title="{{ bookmark.item.subtitle|nl2br }}">
|
|
||||||
{% if bookmark.item.icon %}
|
|
||||||
<img class="grid-item-img" src="/{{ alias }}/{{ bookmark.item.icon.label }}">
|
|
||||||
{% else %}
|
|
||||||
<img class="grid-item-img" src="/{{ alias }}/uploads/icon/icon_pin.png">
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid-item-title">
|
|
||||||
<h2>{{ bookmark.item.title }}</h2>
|
|
||||||
<span>{{ bookmark.item.subtitle|nl2br }}</span>
|
|
||||||
{% if not bookmark.item.badgeurl is empty %}
|
|
||||||
<div style="margin-top:5px;text-align:center;{% if stylegrid == "grid-list"%} float: right;position: absolute;top: 10px;right: -50px; {%endif%}">
|
|
||||||
<div class="itembadgeurl badge badge-pill" data-url="{{bookmark.item.badgeurl}}" style="background-color: #ffffff; color: {{ bookmark.item.color ? "#"~bookmark.item.color : '#'~colormain }};"></div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="grid-item-body" style="display:none">
|
|
||||||
{{ bookmark.item.content|raw }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{%else%}
|
|
||||||
<div class="grid-item {{ stylegrid }}">
|
|
||||||
<div class="grid-item-content" style="background-color: {{ bookmark.color ? "#"~bookmark.color : '#'~colormain }};">
|
|
||||||
<a style="cursor:pointer" onClick="modBookmark({{ bookmark.id }})" class="item-update"><i style="color: #FFF" class="fa fa-file" title="Modifier le favori"></i></a>
|
|
||||||
<a style="cursor:pointer" onClick="delBookmark({{ bookmark.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-trash" title="Supprimer le favori"></i></a>
|
|
||||||
|
|
||||||
{% if bookmark.target == 'frame' %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ bookmark.title }}" style="cursor:pointer" onClick="showFrameitem('bookmark{{ bookmark.id }}','{{ bookmark.url|replace({'#login#': username}) }}')">
|
|
||||||
{% elseif bookmark.target == "_self" %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ bookmark.target }}{% endif %}">
|
|
||||||
{% else %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ bookmark.title }}" href="{{ bookmark.url|replace({'#login#': username}) }}" target="{{ bookmark.target }}">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="item-link clearfix">
|
|
||||||
<div class="grid-item-logo" title="{{ bookmark.subtitle|nl2br }}">
|
|
||||||
{% if bookmark.icon %}
|
|
||||||
<img class="grid-item-img" height="110" src="/{{ alias }}/{{ bookmark.icon.label }}">
|
|
||||||
{% else %}
|
|
||||||
<img class="grid-item-img" height="110" src="/{{ alias }}/uploads/icon/icon_pin.png">
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid-item-title">
|
|
||||||
<h2>{{ bookmark.title }}</h2>
|
|
||||||
<span>{{ bookmark.subtitle|nl2br }}</<span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{%endif%}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
|
|
||||||
{% for item in items %}
|
|
||||||
<div class="grid-item {{ stylegrid }}" data-idcategory="{{ item.itemcategory.id }}" data-iditem="{{ item.id }}">
|
|
||||||
<div class="grid-item-content" style="background-color: {{ item.color ? "#"~item.color : '#'~colormain }};">
|
|
||||||
{% if item.content %}
|
|
||||||
<a style="cursor:pointer" class="item-preview"><i style="color: #FFF" class="fa fa-info" title="Informations sur ce service"></i></a>
|
|
||||||
{% endif %}
|
|
||||||
{% if canadd %}
|
|
||||||
<a style="cursor:pointer" onClick="heartBookmark({{ item.id }})" class="item-heart"><i style="color: #FFF" class="fa fa-heart" title="Ajouter aux favoris"></i></a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if item.protected and not app.user %}
|
|
||||||
{% if mode_auth == "SAML" %}
|
|
||||||
<a href="{{ path('lightsaml_sp.login') }}" {% if access=="user" %}target="_top"{% endif %}>
|
|
||||||
{% elseif mode_auth == "CAS" %}
|
|
||||||
<a href="{{ path('cas_sp.login') }}" {% if access=="user" %}target="_top"{% endif %}>
|
|
||||||
{% elseif mode_auth == "MYSQL" %}
|
|
||||||
<a href="{{ path('cnous_portal_user_login') }}" {% if access=="user" %}target="_top"{% endif %}>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% else %}
|
|
||||||
{% if item.target == 'frame' %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ item.title }}" style="cursor:pointer" onClick="showFrameitem({{ item.id }},'{{ item.url|replace({'#login#': username}) }}')">
|
|
||||||
{% elseif item.target == "_self" %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ item.target }}{% endif %}">
|
|
||||||
{% else %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ item.title }}" href="{{ item.url|replace({'#login#': username}) }}" target="{{ item.target }}">
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="item-link clearfix">
|
|
||||||
<div class="grid-item-logo" title="{{ item.subtitle|nl2br }}">
|
|
||||||
{% if item.icon %}
|
|
||||||
<img class="grid-item-img" height="110" src="/{{ alias }}/{{ item.icon.label }}">
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<img class="grid-item-img" height="110" src="/{{ alias }}/uploads/icon/icon_pin.png">
|
<a style="display:none" onClick="modBookmark({{ bookmark.id }},{{ entity.id }},true)"><i class="item-mod fas fa-file"></i></a>
|
||||||
|
<a style="display:none" onClick="delBookmark({{ bookmark.id }},{{ entity.id }},true)"><i class="item-trash fas fa-trash"></i></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
{% endif %}
|
||||||
|
|
||||||
<div class="grid-item-title">
|
{% if bookmarkcontent %}
|
||||||
<h2>{{ item.title }}</h2>
|
<a style="display:none"><i class="item-info fas fa-circle-info"></i></a>
|
||||||
<span>{{ item.subtitle|nl2br }}</span>
|
{% endif %}
|
||||||
{% if not item.badgeurl is empty %}
|
</div>
|
||||||
<div style="margin-top:5px;text-align:center;{% if stylegrid == "grid-list"%} float: right;position: absolute;top: 10px;right: -50px; {%endif%}">
|
|
||||||
<div class="itembadgeurl badge badge-pill" data-url="{{item.badgeurl}}" style="background-color: #ffffff; color: {{ item.color ? "#"~item.color : '#'~colormain }};"></div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="grid-item-body" style="display:none">
|
|
||||||
{{ item.content|raw }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% if canadd %}
|
<div class="item-description hide">{{ bookmarkcontent|raw }}</div>
|
||||||
<div class="grid-item {{ stylegrid }}">
|
</div>
|
||||||
<div class="grid-item-content" style="background-color: #{{colormain}};cursor:pointer;">
|
|
||||||
<a title="Ajouter une Application" href="{{ path('cadoles_portal_user_page_application') }}">
|
|
||||||
<div class="item-link clearfix">
|
|
||||||
<div class="grid-item-logo">
|
|
||||||
<img class="grid-item-img imageshadow" height="110" src="/{{ alias }}/uploads/icon/icon_add.png">
|
|
||||||
</div>
|
|
||||||
<div class="grid-item-title">
|
|
||||||
<h2>Ajouter</h2>
|
|
||||||
<span>Ajouter une Application</<span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% endfor %}
|
||||||
{% endif %}
|
|
||||||
|
{% for item in items %}
|
||||||
|
<div class="item {{itemsize}}" style="background-color: {{ item.color ? item.color : "var(--colorbgbodydark)" }};" data-idcategory="{{item.itemcategory.id}}" data-title="{{item.title|lower}}">
|
||||||
|
<div class="item-container">
|
||||||
|
<div class="item-content">
|
||||||
|
{% set url=item.url|replace({'#login#': username}) %}
|
||||||
|
{% if item.protected and not app.user %}
|
||||||
|
{% set url=path('app_login') %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if item.target == 'frame' %}
|
||||||
|
<a class="item-link" onClick="showItemframe({{ item.id }},'{{ url }}')">
|
||||||
|
{% else %}
|
||||||
|
<a class="item-link" href="{{ url }}" target="{{ item.target }}">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if item.icon %}
|
||||||
|
<img height="35" src="{{ path('app_minio_image',{file:item.icon.label}) }}">
|
||||||
|
{% else %}
|
||||||
|
<img height="35" src="{{ path('app_minio_image',{file:"icon/icon_pin.png"}) }}">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="item-title">
|
||||||
|
<h3 >{{ item.title }}</h3>
|
||||||
|
<div class="item-subtitle">{{ item.subtitle|nl2br }}</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div class="item-action">
|
||||||
|
{% if canadd %}
|
||||||
|
<a style="display:none" onClick="heartBookmark({{ item.id }})"><i class="item-heart fa fa-heart"></i></a>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if item.content %}
|
||||||
|
<a style="display:none"><i class="item-info fas fa-circle-info"></i></a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="item-description hide">{{ item.content|raw }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
<div class="item {{ itemsize }}" style="background-color: var(--colorbgbodydark);" data-idcategory="bookmark">
|
||||||
|
<div class="item-container">
|
||||||
|
<div class="item-content">
|
||||||
|
<a class="item-link" href="{{path("app_all_page_application")}}">
|
||||||
|
<img height="35" src="{{ path('app_minio_image',{file:"icon/icon_add.png"}) }}">
|
||||||
|
<div class="item-title">
|
||||||
|
<h3 >Voir Plus</h3>
|
||||||
|
<div class="item-subtitle">Voir toutes les Applications</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<div class="item-action">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,22 @@
|
||||||
{% set onlyheader=true %}
|
{% set widgetname="link" %}
|
||||||
{% extends 'widget.html.twig' %}
|
{% extends 'Pagewidget/widget.twig' %}
|
||||||
|
|
||||||
{% block widgetheader %}
|
{% block widgetbody %}
|
||||||
|
{% set url=url|replace({'#login#': username}) %}
|
||||||
{% if target == 'frame' %}
|
{% if target == 'frame' %}
|
||||||
<a class="linktosonde" data-sonde="{{ entity.name }}" style="{{stylewidgetitem}}; font-family: var(--fonttitle); cursor:pointer;" onClick="showFrameitem('link{{ entity.id }}','{{ url|replace({'#login#': username}) }}')">
|
<a class="item-link" onClick="showItemframe(link{{ entity.id }}','{{ url }}')">
|
||||||
{% elseif target == "_self" %}
|
|
||||||
<a class="linktosonde" data-sonde="{{ entity.name }}" style="{{stylewidgetitem}}; font-family: var(--fonttitle); cursor:pointer;" href="{{ url|replace({'#login#': username}) }}" target="{% if access=="user" %}_top{% else %}{{ target }}{% endif %}">
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="linktosonde" data-sonde="{{ entity.name }}" style="{{stylewidgetitem}}; font-family: var(--fonttitle); cursor:pointer;" href="{{ url|replace({'#login#': username}) }}" target="{{ target }}">
|
<a class="item-link" href="{{ url }}" target="{{ target }}">
|
||||||
{% endif %}
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ appAlias }}/{{ entity.icon.label }}" style="max-height: 100%; width: auto; display: block; margin: auto; padding-top: 10px;" />
|
|
||||||
{% else %}
|
|
||||||
<img src="/{{ appAlias }}/uploads/icon/icon_pin.png" style="max-height: 100%; width: auto; display: block; margin: auto; padding-top: 10px;" />
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div style="text-align: center;">{{ entity.name }}</div>
|
{% if entity.icon %}
|
||||||
|
<img src="{{ path('app_minio_image',{file:entity.icon.label}) }}" style="max-width: 90%; width:128px; height: auto; display: block; margin: auto; padding-top: 10px;" />
|
||||||
|
{% else %}
|
||||||
|
<img src=""{{ path('app_minio_image',{file:"icon/icon_pin.png"}) }}" style="max-width: 90%; width:128px; height: auto; display: block; margin: auto; padding-top: 10px;" />
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="text-center mt-3 pb-1" style="font-size: 22px; font-family: var(--fonttitle); {{colorbodyfont}} !important">{{ entity.name }}</div>
|
||||||
</a>
|
</a>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
|
@ -1,76 +0,0 @@
|
||||||
{% set theme = app.session.get('theme') %}
|
|
||||||
{% if theme is not empty %}
|
|
||||||
{{ include('@Theme/'~theme~'/function.html.twig') }}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% import "@CadolesPortal/Pagewidget/constants.twig" as constants %}
|
|
||||||
|
|
||||||
{% set stylewidget = constants.mystylewidget(entity) %}
|
|
||||||
{% set stylewidgetmenu = constants.mystylewidgetmenu(entity) %}
|
|
||||||
{% set stylewidgetheader = constants.mystylewidgetheader(entity) %}
|
|
||||||
{% set stylewidgetbody = constants.mystylewidgetbody(entity) %}
|
|
||||||
{% set stylewidgetbodyreverse = constants.mystylewidgetbodyreverse(entity) %}
|
|
||||||
{% set stylewidgetbodyframe = constants.mystylewidgetbodyframe(entity) %}
|
|
||||||
|
|
||||||
{% set color = app.session.get('color') %}
|
|
||||||
|
|
||||||
{% set colorbodyback = entity.colorbodyback %}
|
|
||||||
{% if colorbodyback is null %}
|
|
||||||
{% set colorbodyback = color['main'] %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
|
||||||
{% set colorbodyfont = entity.colorbodyfont %}
|
|
||||||
{% if entity.border and colorbodyfont is null %}
|
|
||||||
{% set colorbodyfont = color['fontcolorhover'] %}
|
|
||||||
{% endif %}
|
|
||||||
{% if colorbodyfont is null %}
|
|
||||||
{% set colorbodyfont = color['main'] %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{%if mini %}
|
|
||||||
<div class="widget widget-mini widget-onlydoc" data-id="{{ entity.id }}" loc="{{ entity.loc }}">
|
|
||||||
<div class="widgetheader">
|
|
||||||
<a style="cursor:pointer" onClick="bigWidget({{entity.id}})">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo" title="{{ entity.name }}"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="/{{ alias }}/uploads/icon/icon_pin.png" class="logo" title="{{ entity.name }}"/>
|
|
||||||
{% endif %}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="widget {%if entity.border %} widget-bordered {%else%} widget-notbordered {%endif%} widget-onlydoc" data-id="{{ entity.id }}" loc="{{ entity.loc }}" style="{{ stylewidget }}" height="{{ entity.height }}px">
|
|
||||||
<div class="widgetmenu">
|
|
||||||
{% if canupdate %}
|
|
||||||
<i class="fa fa-trash fa-fw" title="Supprimer le Widget" onClick="delWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
<i class="fa fa-file fa-fw" title="Modifier le Widget" onClick="modWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% endif %}
|
|
||||||
{% if look=="list" %}
|
|
||||||
<i class="glyphicon glyphicon-resize-small" title="Réduire le Widget" onClick="smallWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% else %}
|
|
||||||
<i class="glyphicon glyphicon-resize-full" title="Agrandir le Widget" onClick="bigWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="widgetheader" style="{{ stylewidgetheader }}">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="/{{ alias }}/uploads/icon/icon_pin.png" class="logo"/>
|
|
||||||
{% endif %}
|
|
||||||
<span class="title">{{ entity.name }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="widgetbody" style="{{ stylewidgetbody }}">
|
|
||||||
|
|
||||||
<iframe id="frame-{{directory}}" src="{{ path("cadoles_portal_"~access~"_frame_only",{'directory':directory,'defaultview':view}) }}" data-color="#{{colorbodyfont}}" style="{{ stylewidgetbodyframe }}" class="{% if not entity.autoajust %}notframeajust {% endif %}"></iframe>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,86 +1,11 @@
|
||||||
{% set theme = app.session.get('theme') %}
|
{% set widgetname="url" %}
|
||||||
{% if theme is not empty %}
|
{% extends 'Pagewidget/widget.twig' %}
|
||||||
{{ include('@Theme/'~theme~'/function.html.twig') }}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% import "@CadolesPortal/Pagewidget/constants.twig" as constants %}
|
{% block widgetbody %}
|
||||||
|
{% if imagemedia %}
|
||||||
{% set stylewidget = constants.mystylewidget(entity) %}
|
<img src="{{ url|replace({'#login#': username}) }}" width="100%" >
|
||||||
{% set stylewidgetmenu = constants.mystylewidgetmenu(entity) %}
|
{% else %}
|
||||||
{% set stylewidgetheader = constants.mystylewidgetheader(entity) %}
|
<iframe src="{{ url|replace({'#login#': username}) }}" class="{% if entity.autoajust %}frameajust {% endif %}" style="width:100%"></iframe>
|
||||||
{% set stylewidgetbodyframe = constants.mystylewidgetbodyframe(entity) %}
|
{% endif %}
|
||||||
{% set stylewidgetbodyimage = constants.mystylewidgetbodyimage(entity) %}
|
{% endblock %}
|
||||||
|
|
||||||
{% if app.user %}
|
|
||||||
{% set username = app.user.username %}
|
|
||||||
{% else %}
|
|
||||||
{% set username = "" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{%if mini %}
|
|
||||||
<div class="widget widget-mini widget-project" data-id="{{ entity.id }}" loc="{{ entity.loc }}">
|
|
||||||
<div class="widgetheader">
|
|
||||||
<a style="cursor:pointer" onClick="bigWidget({{entity.id}})">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo" title="{{ entity.name }}"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="/{{ alias }}/uploads/icon/icon_pin.png" class="logo" title="{{ entity.name }}"/>
|
|
||||||
{% endif %}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="widget {%if entity.border %} widget-bordered {%else%} widget-notbordered {%endif%} widget-url" data-id="{{ entity.id }}" loc="{{ entity.loc }}" style="{{ stylewidget }}" height="{{ entity.height }}px">
|
|
||||||
<div class="widgetmenu">
|
|
||||||
{% if canupdate %}
|
|
||||||
<i class="fa fa-trash fa-fw" title="Supprimer le Widget" onClick="delWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
<i class="fa fa-file fa-fw" title="Modifier le Widget" onClick="modWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% endif %}
|
|
||||||
{% if look=="list" %}
|
|
||||||
<i class="glyphicon glyphicon-resize-small" title="Réduire le Widget" onClick="smallWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% else %}
|
|
||||||
<i class="glyphicon glyphicon-resize-full" title="Agrandir le Widget" onClick="bigWidget({{ entity.id }})" style="{{ stylewidgetmenu }}"></i>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
{% if imagemedia %}
|
|
||||||
{% if entity.autoajust %}
|
|
||||||
<div class="widgetheader" style="{{ stylewidgetheader }}">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="/{{ alias }}/uploads/icon/icon_pin.png" class="logo"/>
|
|
||||||
{% endif %}
|
|
||||||
<span class="title">{{ entity.name }}</span>
|
|
||||||
</div>
|
|
||||||
<div class="widgetbody" style="{{ stylewidgetbodyframe }}">
|
|
||||||
<img src="{{ url|replace({'#login#': username}) }}" width="100%" >
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="widgetheader" style="{{ stylewidgetbodyimage }} width:100%; background-image: url({{ url|replace({'#login#': username}) }}); background-size:cover; background-position:center;")></div>
|
|
||||||
{% endif %}
|
|
||||||
{% else %}
|
|
||||||
<div class="widgetheader" style="{{ stylewidgetheader }}">
|
|
||||||
{% if entity.icon %}
|
|
||||||
<img src="/{{ alias }}/{{ entity.icon.label }}" class="logo"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="/{{ alias }}/uploads/icon/icon_pin.png" class="logo"/>
|
|
||||||
{% endif %}
|
|
||||||
<span class="title">{{ entity.name }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="widgetbody" style="{{ stylewidgetbodyframe }}">
|
|
||||||
{% set minheight="" %}
|
|
||||||
{%if look=="list" %}
|
|
||||||
{% set minheight="min-height:1300px;" %}
|
|
||||||
{% endif %}
|
|
||||||
<iframe src="{{ url|replace({'#login#': username}) }}" class="{% if entity.autoajust %}frameajust {% endif %}" style="{{ stylewidgetbodyframe }} {{minheight}}"></iframe>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<script>
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
{% set widgethaveheader=entity.viewheader %}
|
||||||
|
{%if widgethaveheader %}
|
||||||
|
{% set widgetstyle=(entity.colorheaderback ? "border-color:"~entity.colorheaderback~";" : "border-color:var(--colorbgbodydark);") %}
|
||||||
|
{% set widgetstylemenu=(entity.colorheaderback ? "background-color:"~entity.colorheaderback~";" : "background-color:var(--colorbgbodydark);")~(entity.colorheaderfont ? "color:"~entity.colorheaderfont~";" : "color:var(--colorfttitledark);") %}
|
||||||
|
{%else%}
|
||||||
|
{% set widgetstyle=(entity.colorbodyback ? "border-color:"~entity.colorbodyback~";" : "border-color:var(--colorbgbodydark);") %}
|
||||||
|
{% set widgetstylemenu="margin:-26px 0px 0px 0px; padding: 1px 10px; background-color:var(--colorbgbodydark); color: var(--colorfttitledark); border-radius: 5px;" %}
|
||||||
|
{%endif%}
|
||||||
|
|
||||||
|
{% set widgetstyleheader=(entity.colorheaderback ? "background-color:"~entity.colorheaderback~";" : "background-color:var(--colorbgbodydark);")~(entity.colorheaderfont ? "color:"~entity.colorheaderfont~";" : "color:var(--colorfttitledark);") %}
|
||||||
|
{% set widgetstylebody=(entity.colorbodyback ? "background-color:"~entity.colorbodyback~";" : "background-color:var(--colorbgbodylight);")~(entity.colorbodyfont ? "color:"~entity.colorbodyfont~";" : "color:var(--colorfttitlelight);")~(entity.isopened ? "display:block;" : "display:none;")~(widgetname=="url" ? "padding:0px;" : "")~(not widgethaveheader and not entity.border ? "padding-top: 0px" : "")~(entity.autoajust ? "" : "height:"~entity.height~"px;") %}
|
||||||
|
{% set widgeicon= entity.icon ? path('app_minio_image',{file:entity.icon.label}) : path('app_minio_image',{file:"icon/icon_pin.png"}) %}
|
||||||
|
|
||||||
|
{% if modedesktop is defined %}
|
||||||
|
{% if modedesktop==0 %}
|
||||||
|
{% set itemsize="item-verysmall" %}
|
||||||
|
{% elseif modedesktop==1 %}
|
||||||
|
{% set itemsize="item-small" %}
|
||||||
|
{% elseif modedesktop==2 %}
|
||||||
|
{% set itemsize="item-medium" %}
|
||||||
|
{% elseif modedesktop==3 %}
|
||||||
|
{% set itemsize="item-large" %}
|
||||||
|
{% elseif modedesktop==4 %}
|
||||||
|
{% set itemsize="item-list" %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if app.user %}
|
||||||
|
{% set username = app.user.username %}
|
||||||
|
{% else %}
|
||||||
|
{% set username = "" %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% set colorbodyfont = "color: var(--colorfttitlelight)" %}
|
||||||
|
{% if entity.colorbodyfont is not null %}
|
||||||
|
{% set colorbodyfont = "color: " ~ entity.colorbodyfont %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="widget widget-{{widgetname}} {%if entity.border %} widget-bordered {%else%} widget-notbordered {%endif%} " data-id="{{ entity.id }}" loc="{{ entity.loc }}" style="{{ widgetstyle }}">
|
||||||
|
<div class="widget-menu" style="{{ widgetstylemenu }}">
|
||||||
|
{% if canupdate and not widgethaveheader %}
|
||||||
|
<i class="widget-sortable fas fa-up-down-left-right" title="Déplacer le widget"></i>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% block widgetaction %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% if canupdate %}
|
||||||
|
<i class="fa fa-trash fa-fw" title="Supprimer le Widget" onClick="delWidget({{ entity.id }})" ></i>
|
||||||
|
<i class="fa fa-file fa-fw" title="Modifier le Widget" onClick="modWidget({{ entity.id }})"></i>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{%if widgethaveheader %}
|
||||||
|
<div class="widget-header widget-sortable" style="{{ widgetstyleheader }}">
|
||||||
|
<img class="widget-logo" src="{{widgeicon}}" />
|
||||||
|
<span class="widget-title">{{ entity.name }}</span>
|
||||||
|
</div>
|
||||||
|
{%endif%}
|
||||||
|
|
||||||
|
<div class="widget-body" style="{{ widgetstylebody }};">
|
||||||
|
{% block widgetbody %}
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,91 +0,0 @@
|
||||||
{%if not mini %}
|
|
||||||
{# Récupération des couleurs #}
|
|
||||||
{% set colorheaderback = entity.colorheaderback %}
|
|
||||||
{% if colorheaderback is null %}
|
|
||||||
{% set colorheaderback = "var(--colorbgbodydark)" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set colorheaderfont = entity.colorheaderfont %}
|
|
||||||
{% if colorheaderfont is null %}
|
|
||||||
{% set colorheaderfont = "var(--colorftbodydark)" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set colorbodyback = entity.colorbodyback %}
|
|
||||||
{% if colorbodyback is null %}
|
|
||||||
{% set colorbodyback = "var(--colorbgbodydark)" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set colorbodyfont = entity.colorbodyfont %}
|
|
||||||
{% if colorbodyfont is null %}
|
|
||||||
{% set colorbodyfont = "var(--colorftbodydark)" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if not entity.border %}
|
|
||||||
{% set colorbodyback = "var(--colorbgbodylight)" %}
|
|
||||||
{% set colorbodyfont = "var(--colorftbodylight)" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
|
||||||
{# Definition style widget #}
|
|
||||||
{% set widgetheight = "" %}
|
|
||||||
{% if not entity.autoajust %}
|
|
||||||
{% set widgetheight = "height: " ~ entity.height ~ "px; " %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{# Definition style widgetheader #}
|
|
||||||
{% set widgetheaderback = "background-color:"~colorheaderback~";" %}
|
|
||||||
{% set widgetheaderfont = "color:"~colorheaderfont~";" %}
|
|
||||||
|
|
||||||
{% set widgetheaderborder = "" %}
|
|
||||||
{% if entity.border %}
|
|
||||||
{% set widgetheaderborder = "border:1px solid " ~ colorheaderback ~ "; " %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{# Definition style widgetbody #}
|
|
||||||
{% set widgetbodyback = "background-color:"~colorbodyback~";" %}
|
|
||||||
{% set widgetbodyfont = "color:"~colorbodyfont~";" %}
|
|
||||||
|
|
||||||
{% set widgetbodyborder = "" %}
|
|
||||||
{% if entity.border %}
|
|
||||||
{% set widgetbodyborder = "border:1px solid " ~ colorbodyback ~ "; " %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set widgetbodypadding = "" %}
|
|
||||||
{% if entity.border %}
|
|
||||||
{% set widgetbodypadding = "padding:10px;" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set widgetbodydisplay = "" %}
|
|
||||||
{% if not entity.opened %}
|
|
||||||
{% set widgetbodydisplay = "display:none;" %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% set stylewidgetbodyreverse = widgetheaderback~widgetheaderfont %}
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
class="widget widget-info"
|
|
||||||
data-id="{{ entity.id }}"
|
|
||||||
loc="{{ entity.loc }}"
|
|
||||||
style="{{ widgetheight }}">
|
|
||||||
<div
|
|
||||||
class="widgetmenu"
|
|
||||||
style="{{widgetheaderback}}{{widgetheaderfont}}">
|
|
||||||
{{ widgetmenu|raw }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
|
||||||
class="widgetheader"
|
|
||||||
style="{{widgetheaderback}}{{widgetheaderfont}}{{widgetheaderborder}}">
|
|
||||||
{% if icon %}
|
|
||||||
<img src="/{{ appAlias }}{{ icon }}" class="logo" style="border-radius:100%"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="{{icondefault}}" class="logo"/>
|
|
||||||
{% endif %}
|
|
||||||
<span class="title">{{ title }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
|
||||||
class="widgetbody"
|
|
||||||
style="{{widgetbodyback}}{{widgetbodyfont}}{{widgetbodyborder}}{{widgetbodypadding}}{{widgetbodydisplay}}">
|
|
||||||
{% endif %}
|
|
|
@ -1,13 +0,0 @@
|
||||||
{%if mini %}
|
|
||||||
<div class="widget widget-mini widget-info" data-id="{{ entity.id }}" loc="{{ entity.loc }}">
|
|
||||||
<div class="widgetheader">
|
|
||||||
<a style="cursor:pointer" onClick="bigWidget({{entity.id}})">
|
|
||||||
{% if icon %}
|
|
||||||
<img src="/{{ appAlias }}{{ icon }}" class="logo" title="{{ title }}"/>
|
|
||||||
{% else %}
|
|
||||||
<img src="{{icondefault}}" class="logo" title="{{ title }}"/>
|
|
||||||
{% endif %}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
|
@ -86,19 +86,17 @@
|
||||||
<a class="nav-link navbar-logo" href="{{ path('app_home')}}" style="display:none">
|
<a class="nav-link navbar-logo" href="{{ path('app_home')}}" style="display:none">
|
||||||
<img src="{{ path('app_minio_image',{file:"logo/"~app.session.get("logodark")}) }}">
|
<img src="{{ path('app_minio_image',{file:"logo/"~app.session.get("logodark")}) }}">
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a class="nav-link ps-0" href="{{ path('app_home')}}">
|
|
||||||
{% if not app.session.get("fgheader") %}
|
|
||||||
{{app.session.get("appname")}}
|
|
||||||
{% else %}
|
|
||||||
Accueil
|
|
||||||
{% endif %}
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="collapse navbar-collapse" id="navbarNav">
|
<a class="nav-toogle" style="display:none" ><i class="fa-solid fa-bars"></i></a>
|
||||||
<ul class="navbar-nav">
|
|
||||||
|
<div id="menuapp">
|
||||||
|
<ul class="nav">
|
||||||
|
{% block menuapp %}
|
||||||
|
{% endblock %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="me-auto"> </div>
|
||||||
|
|
||||||
<ul id="menuuser" class="nav navbar-right pe-3">
|
<ul id="menuuser" class="nav navbar-right pe-3">
|
||||||
{% block menuuser %}
|
{% block menuuser %}
|
||||||
|
@ -108,7 +106,7 @@
|
||||||
<ul id="menulink" class="nav navbar-right pe-3" style="display:none;">
|
<ul id="menulink" class="nav navbar-right pe-3" style="display:none;">
|
||||||
{% if app.user %}
|
{% if app.user %}
|
||||||
<a href="{{path("app_all_user")}}">
|
<a href="{{path("app_all_user")}}">
|
||||||
<img src="{{ path('app_minio_image',{file:"avatar/"~app.user.avatar}) }}" class="avatar" style="width:25px; height:25px; margin-top:-3px; margin-right:3px;">
|
<img src="{{ path('app_minio_image',{file:"avatar/"~app.user.avatar}) }}" class="avatar" style="width:20px; height:20px; margin-top:-3px; margin-right:3px;">
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
{% if is_granted('ROLE_ADMIN') %}
|
{% if is_granted('ROLE_ADMIN') %}
|
||||||
|
@ -202,6 +200,47 @@
|
||||||
});
|
});
|
||||||
{% endif %}
|
{% endif %}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Resize
|
||||||
|
function Resize() {
|
||||||
|
if($("#header").is(":visible")){
|
||||||
|
$(".navbar-logo").hide();
|
||||||
|
$("#menulink").hide();
|
||||||
|
$("#header").hide();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$(".navbar-logo").show();
|
||||||
|
$("#menulink").show();
|
||||||
|
$("#header").show();
|
||||||
|
}
|
||||||
|
|
||||||
|
$("main").css("height",$(window).height()-$(".header").height());
|
||||||
|
$("#page").css("height",$(window).height()-$(".header").height());
|
||||||
|
$(".pageframe").css("height",$(window).height()-$(".header").height());
|
||||||
|
$("#sidebar").css("min-height",$("body").height()-$(".header").height());
|
||||||
|
|
||||||
|
if($("#menuapp").is(":visible") && $(".nav-toogle").is(":visible")){
|
||||||
|
$("#menuapp").css("height",$(window).height()-$(".header").height());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$("#menuapp").css("height","auto");
|
||||||
|
}
|
||||||
|
|
||||||
|
$(".widget-body").find("iframe").each(function(){
|
||||||
|
if($(this).hasClass("frameajust")) {
|
||||||
|
try {
|
||||||
|
height=this.contentWindow.document.body.scrollHeight;
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
height=0;
|
||||||
|
}
|
||||||
|
if(height==0) height=630;
|
||||||
|
this.style.height = height+"px";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$(this).height($(this).parent().height());
|
||||||
|
});
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{% block localscript %}{% endblock %}
|
{% block localscript %}{% endblock %}
|
||||||
|
|
|
@ -2998,6 +2998,11 @@ icss-utils@^5.0.0, icss-utils@^5.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
|
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
|
||||||
integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
|
integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
|
||||||
|
|
||||||
|
iframe-resizer@^4.3.2:
|
||||||
|
version "4.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/iframe-resizer/-/iframe-resizer-4.3.2.tgz#42dd88345d18b9e377b6044dddb98c664ab0ce6b"
|
||||||
|
integrity sha512-gOWo2hmdPjMQsQ+zTKbses08mDfDEMh4NneGQNP4qwePYujY1lguqP6gnbeJkf154gojWlBhIltlgnMfYjGHWA==
|
||||||
|
|
||||||
import-fresh@^3.0.0, import-fresh@^3.2.1:
|
import-fresh@^3.0.0, import-fresh@^3.2.1:
|
||||||
version "3.3.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
|
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
|
||||||
|
|
Loading…
Reference in New Issue