Version 5.0.6
This commit is contained in:
1 parent
a3a4a9ccbd
commit
b89858b2ff
1214 files changed
+92828
-14859
No files matched your search
@@ -1 +1 @@
|
||||
.ipsTemplateEditor{overflow:hidden;}.ipsTemplateEditor__columns{display:grid;grid-template-columns:280px 1fr;height:calc(100vh - 200px);min-height:570px;}.ipsTemplateEditor__listColumn, .ipsTemplateEditor__codeColumn{display:flex;flex-direction:column;}:where(:is(.ipsTemplateEditor__listColumn, .ipsTemplateEditor__codeColumn) > *){flex:0 0 auto;}.ipsTemplateEditor__listColumn{border-inline-end:1px solid var(--i-background_4);}.cTemplateControls{padding:.5em;min-height:60px;align-content:center;}.cTemplateControls__input{display:flex;background:var(--i-background_1);border:1px solid var(--i-background_5);border-radius:8px;}.cTemplateControls__input:has([type="text"]:focus){border-color:currentColor;}.cTemplateControls__input [type="text"]{flex:1 1 100%;outline-width:0;padding:.8em 1em;}.cTemplateControls__filter{flex:0 0 auto;display:flex;align-items:center;gap:.4em;padding:0 .7em;color:var(--i-color_soft);}.cTemplateControls__filter:hover{color:var(--i-color_hard);}.cTemplateControls__filter .fa-caret-down{font-size:10px;opacity:.5;}#elTemplateEditor_info{display:flex;justify-content:space-evenly;font-size:.8em;background:var(--i-background_1);padding:1em 0;border-top:1px solid var(--i-background_3);}#elTemplateEditor_newButton{background:var(--i-background_2);padding:.8em;}.ipsTemplateEditor__editorToolbar{display:flex;align-items:center;gap:6px;}#elTemplateEditor .ipsTabs{background:var(--i-background_2);display:block;box-shadow:none;border:1px solid var(--i-background_4);border-width:1px 0;padding:.6em;}#elTemplateEditor_tabbar.ipsTabs [role="tablist"]{flex-wrap:wrap;}#elTemplateEditor .ipsTabs:not(:has([role="tab"])){display:none;}#elTemplateEditor [data-action="closeTab"]{font-size:12px;opacity:.5;display:inline-grid;width:1.6em;height:1.6em;line-height:1;place-content:center;border-radius:3px;margin:-1em -.7em;margin-inline-start:.5em;}#elTemplateEditor [data-action="closeTab"]:hover{opacity:1;background:color-mix(in srgb, currentColor 10%, transparent);}#elTemplateEditor_panels{flex:1 1 100%;display:flex;flex-direction:column;}#elTemplateEditor .CodeMirror{height:100%;}#elTemplateEditor [data-role="editor"], #elTemplateEditor .CodeMirror{border-width:0;border-radius:0;padding-bottom:1em;}#elTemplateEditor [data-role="editor"]{font-family:monospace;}#elTemplateEditor [data-role="templatePanelWrap"] textarea{height:550px;}.ipsTabs__panel:has(.cTemplateMergeHeaders){display:flex;flex-direction:column;}.cTemplateMergeHeaders{border:1px solid var(--i-background_4);border-bottom:0;flex:0 0 auto;display:flex;justify-content:space-between;}.cTemplateMergeHeader, .CodeMirror-merge-2pane .CodeMirror-merge-pane{width:calc(50% - 40px);}.CodeMirror-merge-2pane .CodeMirror-merge-gap{width:80px;}.CodeMirror-merge{height:100%;border-width:0;display:flex;}.CodeMirror-merge-pane{height:100%;}#elTemplateEditor_fileList{flex:1 1 auto;overflow:auto;}.cTemplateList{padding:8px;}.cTemplateList a:not(.ipsCms_templateOptions){padding:5px 0;display:block;position:relative;color:var(--i-color_soft);border-radius:6px;}.cTemplateList a[href*="location=database"]:not(.ipsCms_templateOptions){}.cTemplateList li{position:relative;}.cTemplateList > li > details > summary{font-weight:600;}.cTemplateList summary{padding:.7em 1em;border-radius:6px;display:flex;}.cTemplateList summary:hover{background:var(--i-background_3);}.cTemplateList summary::before{flex:0 0 auto;content:"+";display:inline-block;width:1.5em;opacity:.3;}.cTemplateList [open] > summary::before{content:"-";}.cTemplateList i-details-content{padding-inline-start:1em;}a.ipsCms_templateOptions{float:inline-end;position:relative;padding:.7em 8px;color:var(--i-color_hard);opacity:.1;border-radius:6px;}li:hover > a.ipsCms_templateOptions{opacity:.8;}.cTemplateList li.cTemplateList_inactiveBranch > a:not(.ipsCms_templateOptions)::before, .cTemplateList li.cTemplateList_activeBranch > a:not(.ipsCms_templateOptions)::before{font-family:var(--i-font-awesome);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;display:inline-block;line-height:7px;font-size:14px;}.cTemplateList li.cTemplateList_inactiveBranch > a:not(.ipsCms_templateOptions)::before, .cTemplateList li.cTemplateList_activeBranch > a:not(.ipsCms_templateOptions)::before{content:'\f0da';margin-inline-end:7px;}[dir="rtl"] .cTemplateList li.cTemplateList_inactiveBranch > a:not(.ipsCms_templateOptions)::before, [dir="rtl"] .cTemplateList li.cTemplateList_activeBranch > a:not(.ipsCms_templateOptions)::before{content:'\f0d9';}[dir="ltr"] .cTemplateList li.cTemplateList_activeBranch > a:not(.ipsCms_templateOptions)::before, [dir="rtl"] .cTemplateList li.cTemplateList_activeBranch > a:not(.ipsCms_templateOptions)::before{content:'\f0d7';}.cTemplateList li.cTemplateList_inactiveBranch > ul{display:none;}.cTemplateList li a:not(.ipsCms_templateOptions){padding-inline-start:15px;}.cTemplateList li li a:not(.ipsCms_templateOptions){padding-inline-start:30px;}.cTemplateList Line truncated
|
||||
.ipsTemplateEditor{overflow:hidden;}.ipsTemplateEditor__columns{display:grid;grid-template-columns:280px 1fr;height:calc(100vh - 200px);min-height:570px;}.ipsTemplateEditor__listColumn, .ipsTemplateEditor__codeColumn{display:flex;flex-direction:column;}:where(:is(.ipsTemplateEditor__listColumn, .ipsTemplateEditor__codeColumn) > *){flex:0 0 auto;}.ipsTemplateEditor__listColumn{border-inline-end:1px solid var(--i-background_4);}.cTemplateControls{padding:.5em;min-height:60px;align-content:center;}.cTemplateControls__input{display:flex;background:var(--i-background_1);border:1px solid var(--i-background_5);border-radius:8px;}.cTemplateControls__input:has([type="text"]:focus){border-color:currentColor;}.cTemplateControls__input [type="text"]{flex:1 1 100%;outline-width:0;padding:.8em 1em;}.cTemplateControls__filter{flex:0 0 auto;display:flex;align-items:center;gap:.4em;padding:0 .7em;color:var(--i-color_soft);}.cTemplateControls__filter:hover{color:var(--i-color_hard);}.cTemplateControls__filter .fa-caret-down{font-size:10px;opacity:.5;}#elTemplateEditor_info{display:flex;justify-content:space-evenly;font-size:.8em;background:var(--i-background_1);padding:1em 0;border-top:1px solid var(--i-background_3);}#elTemplateEditor_newButton{background:var(--i-background_2);padding:.8em;}.ipsTemplateEditor__editorToolbar{display:flex;align-items:center;gap:6px;}#elTemplateEditor .ipsTabs{background:var(--i-background_2);display:block;box-shadow:none;border:1px solid var(--i-background_4);border-width:1px 0;padding:.6em;}#elTemplateEditor_tabbar.ipsTabs [role="tablist"]{flex-wrap:wrap;}#elTemplateEditor .ipsTabs:not(:has([role="tab"])){display:none;}#elTemplateEditor [data-action="closeTab"]{font-size:12px;opacity:.5;display:inline-grid;width:1.6em;height:1.6em;line-height:1;place-content:center;border-radius:3px;margin:-1em -.7em;margin-inline-start:.5em;}#elTemplateEditor [data-action="closeTab"]:hover{opacity:1;background:color-mix(in srgb, currentColor 10%, transparent);}#elTemplateEditor_panels{flex:1 1 100%;display:flex;flex-direction:column;container-type:size;container-name:templateeditor;}#elTemplateEditor .CodeMirror{height:100cqh;}#elTemplateEditor [data-role="editor"], #elTemplateEditor .CodeMirror{border-width:0;border-radius:0;padding-bottom:1em;}#elTemplateEditor [data-role="editor"]{font-family:monospace;}#elTemplateEditor [data-role="templatePanelWrap"] textarea{height:550px;}.ipsTabs__panel:has(.cTemplateMergeHeaders){display:flex;flex-direction:column;}.cTemplateMergeHeaders{border:1px solid var(--i-background_4);border-bottom:0;flex:0 0 auto;display:flex;justify-content:space-between;}.cTemplateMergeHeader, .CodeMirror-merge-2pane .CodeMirror-merge-pane{width:calc(50% - 40px);}.CodeMirror-merge-2pane .CodeMirror-merge-gap{width:80px;}.CodeMirror-merge{height:100%;border-width:0;display:flex;}.CodeMirror-merge-pane{height:100%;}#elTemplateEditor_fileList{flex:1 1 auto;overflow:auto;}.cTemplateList{padding:8px;}.cTemplateList a:not(.ipsCms_templateOptions){padding:5px 0;display:block;position:relative;color:var(--i-color_soft);border-radius:6px;}.cTemplateList a[href*="location=database"]:not(.ipsCms_templateOptions){}.cTemplateList li{position:relative;}.cTemplateList > li > details > summary{font-weight:600;}.cTemplateList summary{padding:.7em 1em;border-radius:6px;display:flex;}.cTemplateList summary:hover{background:var(--i-background_3);}.cTemplateList summary::before{flex:0 0 auto;content:"+";display:inline-block;width:1.5em;opacity:.3;}.cTemplateList [open] > summary::before{content:"-";}.cTemplateList i-details-content{padding-inline-start:1em;}a.ipsCms_templateOptions{float:inline-end;position:relative;padding:.7em 8px;color:var(--i-color_hard);opacity:.1;border-radius:6px;}li:hover > a.ipsCms_templateOptions{opacity:.8;}.cTemplateList li.cTemplateList_inactiveBranch > a:not(.ipsCms_templateOptions)::before, .cTemplateList li.cTemplateList_activeBranch > a:not(.ipsCms_templateOptions)::before{font-family:var(--i-font-awesome);-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;display:inline-block;line-height:7px;font-size:14px;}.cTemplateList li.cTemplateList_inactiveBranch > a:not(.ipsCms_templateOptions)::before, .cTemplateList li.cTemplateList_activeBranch > a:not(.ipsCms_templateOptions)::before{content:'\f0da';margin-inline-end:7px;}[dir="rtl"] .cTemplateList li.cTemplateList_inactiveBranch > a:not(.ipsCms_templateOptions)::before, [dir="rtl"] .cTemplateList li.cTemplateList_activeBranch > a:not(.ipsCms_templateOptions)::before{content:'\f0d9';}[dir="ltr"] .cTemplateList li.cTemplateList_activeBranch > a:not(.ipsCms_templateOptions)::before, [dir="rtl"] .cTemplateList li.cTemplateList_activeBranch > a:not(.ipsCms_templateOptions)::before{content:'\f0d7';}.cTemplateList li.cTemplateList_inactiveBranch > ul{display:none;}.cTemplateList li a:not(.ipsCms_templateOptions){padding-inline-start:15px;}.cTemplateList li li a:not(.ipsCms_templateOptions){padding-inline-start:30pLine truncated
|
||||
@@ -1 +1 @@
|
||||
.ipsControlStrip{display:flex;justify-content:end;gap:4px;position:relative;z-index:1;}.ipsControlStrip > *{flex:1 1 auto;}@media (min-width:500px){.ipsControlStrip > *{flex:0 0 auto;}}.ipsControlStrip a{display:flex;align-items:center;justify-content:center;color:inherit;min-width:2.4em;min-height:2.4em;border-radius:5px;}.ipsControlStrip_disabled{background:transparent;pointer-events:none;}.ipsControlStrip_disabled .ipsControlStrip_icon{opacity:.5;}:where(.ipsTree_row:hover .ipsControlStrip a){background:var(--i-background_3);}@media (hover:none){.ipsControlStrip a:not(:hover){background:var(--i-background_3);}}.ipsControlStrip a:hover{color:var(--i-primary-contrast);background:var(--i-primary);}:where(.ipsControlStrip:not(.ipsControlStrip_showText) .ipsControlStrip_item){border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px;}.ipsControlStrip_showText a{width:auto;padding:0 .7em;}.ipsControlStrip_item:where(:not(.ipsMenu *)){font-size:.9em;margin-inline-start:.6em;font-weight:600;}.ipsWidthHeight{background:#fff;border:1px dashed #000;margin-bottom:10px;}[dir="rtl"] .ipsWidthHeight{display:none;}.ui-icon-gripsmall-diagonal-se{background:url('../resources/core_84c1e40ea0e759e3f1505eb1788ddf3c_resizable.png');}.ui-resizable{position:relative;}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;}.ui-resizable-se{cursor:nwse-resize;width:12px;height:12px;right:0px;bottom:0px;}[data-ips-scheme="light"] .ipsFieldRow_searchResult{background-color:#f4e5c4;border-color:#ebc46f;color:#7a5206;}[data-ips-scheme="dark"] .ipsFieldRow_searchResult{background-color:#534531;border-color:#786743;color:#f8e5d4;}[data-controller="ips.core.badgepreview"] svg{width:180px;}@media (min-width:1100px){.ipsBadgePicker--form{display:grid;grid-template-columns:180px 1fr 1fr 1fr;}:where(.ipsBadgePicker--form > li){grid-column:1/-1;}.ipsFieldRow--badge-creator-preview .ipsFieldRow__content{position:sticky;top:90px;}.ipsFieldRow--badge-creator{grid-column:auto;align-content:start !important;}.ipsFieldRow--badge-creator:not(.ipsHide, [hidden]){display:grid !important;grid-template-columns:1fr !important;}.ipsFieldRow--badge-creator .ipsFieldRow__label{text-align:start !important;display:flex !important;}.ipsFieldRow--badge-creator .ipsFieldRow__required{flex:0 0 auto !important;}.ipsFieldRow--badge-creator .sp-colorize{max-width:none;}.ipsFieldRow--badge-creator-preview:not([hidden], .ipsHide, #x){grid-column:1/2;grid-row-end:span 5;display:block !important;}.ipsFieldRow--badge-creator-icon{grid-column:3/5;}[data-controller="ips.core.badgepreview"] svg, .ipsFieldRow--badge-creator .sp-colorize-container{width:100%;}.ipsFieldRow--badge-creator [data-controller="core.admin.core.nodeCopySetting"]{display:none;}}.acpFormTabContent .ipsBox{border-width:0;border-radius:0;}.ipsSubmitRow{position:-webkit-sticky;position:sticky;bottom:0;z-index:3;}.ipsEditor__toolbar--main:has(.ipsEditor__anchored-panel:not([hidden])){z-index:4;}.ipsForm:has(.ipsSelectTree_active) + .ipsSubmitRow{position:static;}:root{--i-layout-gutter:15px;}svg[style*="hidden"] rect[fill="#ffffff"], svg[style*="hidden"] path[fill="#ffffff"]{fill:var(--i-background_1);}svg[style*="hidden"] rect[fill="#edf0f5"]{fill:var(--i-background_1);}svg[style*="hidden"] text[fill="#444444"]{fill:var(--i-color_soft);}svg[style*="hidden"] text[fill="#222222"]{fill:var(--i-color_hard);}svg[style*="hidden"] text[fill="#000000"]{fill:var(--i-color_hard);}svg[style*="hidden"] rect[width="1"], svg[style*="hidden"] rect[height="1"]{fill:var(--i-background_3);}#elLogo{height:62px;display:flex;align-items:center;justify-content:center;}#elLogo img{width:30px;}#acpAppList .ipsNotification{top:3px;inset-inline-end:3px;}#acpAppList .acpAppList__sub .ipsNotification{position:static;margin-inline-start:1em;}#acpAppList #elHideMenu{width:16px;height:32px;line-height:32px;position:fixed;bottom:0;z-index:6000;background:var(--i-background_1);border-radius:5px 0 0 0;}#acpAppList #elHideMenu a{color:inherit !important;}body.cAdminDevModeOn #acpAppList #elHideMenu{bottom:60px;}#acpAppList #elHideMenu{inset-inline-start:54px;inset-inline-start:calc(60px - 16px);}#acpAppList #elHideMenu a{padding:0 !important;height:100% !important;}.acpSearch{background:var(--i-background_3);color:var(--i-color_root);border-radius:6px;flex:1 1 100%;display:flex;align-items:center;height:41px;margin-inline-end:10px;}.acpSearch:focus-within{background:var(--i-background_1);outline:2px solid var(--i-primary);outline-offset:-1px;}.acpSearch .fa-magnifying-glass{margin:0 1em;opacity:.6;}#acpSearchKeyword{border:0;background:transparent;max-width:100%;padding:.75em 0;color:inherit;box-shadow:none;flex:1 1 100%;outline:none;}@media (hover:none) and (max-width:1024px){#acpSearchKeyword{font-size:max(16px, 1em);}}#acpSearchKeyword::-webkit-input-placeholder{color:var(--i-color_soft);opacity:1;}#acpSearchKeyword::placeholder{color:var(--i-color_softLine truncated
|
||||
.ipsControlStrip{display:flex;justify-content:end;gap:4px;position:relative;z-index:1;}.ipsControlStrip > *{flex:1 1 auto;}@media (min-width:500px){.ipsControlStrip > *{flex:0 0 auto;}}.ipsControlStrip a{display:flex;align-items:center;justify-content:center;color:inherit;min-width:2.4em;min-height:2.4em;border-radius:5px;}.ipsControlStrip_disabled{background:transparent;pointer-events:none;}.ipsControlStrip_disabled .ipsControlStrip_icon{opacity:.5;}:where(.ipsTree_row:hover .ipsControlStrip a){background:var(--i-background_3);}@media (hover:none){.ipsControlStrip a:not(:hover){background:var(--i-background_3);}}.ipsControlStrip a:hover{color:var(--i-primary-contrast);background:var(--i-primary);}:where(.ipsControlStrip:not(.ipsControlStrip_showText) .ipsControlStrip_item){border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px;}.ipsControlStrip_showText a{width:auto;padding:0 .7em;}.ipsControlStrip_item:where(:not(.ipsMenu *)){font-size:.9em;margin-inline-start:.6em;font-weight:600;}.ipsWidthHeight{background:#fff;border:1px dashed #000;margin-bottom:10px;}[dir="rtl"] .ipsWidthHeight{display:none;}.ui-icon-gripsmall-diagonal-se{background:url('../resources/core_84c1e40ea0e759e3f1505eb1788ddf3c_resizable.png');}.ui-resizable{position:relative;}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;}.ui-resizable-se{cursor:nwse-resize;width:12px;height:12px;right:0px;bottom:0px;}[data-ips-scheme="light"] .ipsFieldRow_searchResult{background-color:#f4e5c4;border-color:#ebc46f;color:#7a5206;}[data-ips-scheme="dark"] .ipsFieldRow_searchResult{background-color:#534531;border-color:#786743;color:#f8e5d4;}[data-controller="ips.core.badgepreview"] svg{width:180px;}@media (min-width:1100px){.ipsBadgePicker--form{display:grid;grid-template-columns:220px 1fr 1fr 1fr 1fr 1fr 1fr;}:where(.ipsBadgePicker--form > li){grid-column:1/-1;}.ipsFieldRow--badge-creator-preview .ipsFieldRow__content{position:sticky;top:90px;}.ipsFieldRow--badge-creator{grid-column:span 2;align-content:start !important;}.ipsFieldRow--badge-creator:not(.ipsHide, [hidden]){display:grid !important;grid-template-columns:1fr !important;}.ipsFieldRow--badge-creator .ipsFieldRow__label{text-align:start !important;display:flex !important;}.ipsFieldRow--badge-creator .ipsFieldRow__required{flex:0 0 auto !important;}.ipsFieldRow--badge-creator .sp-colorize{max-width:none;}.ipsFieldRow--badge-creator-preview:not([hidden], .ipsHide, #x){grid-column:1/2;grid-row-end:span 5;display:block !important;}.ipsFieldRow--badge-creator-preview > .ipsFieldRow__content{padding:1em;}.ipsFieldRow--badge-creator-icon{grid-column:span 4;}.ipsBadgePicker--include-number-overlay .ipsFieldRow--badge-creator-icon{grid-column:span 2;}[data-controller="ips.core.badgepreview"] svg, .ipsFieldRow--badge-creator .sp-colorize-container{width:100%;}.ipsFieldRow--badge-creator [data-controller="core.admin.core.nodeCopySetting"]{display:none;}}[data-controller="ips.core.badgepreview"] svg{-webkit-filter:drop-shadow( 2px 2px 4px var(--i-color_root));filter:drop-shadow( 2px 2px 4px var(--i-color_root));}.acpFormTabContent .ipsBox{border-width:0;border-radius:0;}.ipsSubmitRow{position:-webkit-sticky;position:sticky;bottom:0;z-index:3;}.ipsEditor__toolbar--main:has(.ipsEditor__anchored-panel:not([hidden])){z-index:4;}.ipsForm:has(.ipsSelectTree_active) + .ipsSubmitRow{position:static;}:root{--i-layout-gutter:15px;}svg[style*="hidden"] rect[fill="#ffffff"], svg[style*="hidden"] path[fill="#ffffff"]{fill:var(--i-background_1);}svg[style*="hidden"] rect[fill="#edf0f5"]{fill:var(--i-background_1);}svg[style*="hidden"] text[fill="#444444"]{fill:var(--i-color_soft);}svg[style*="hidden"] text[fill="#222222"]{fill:var(--i-color_hard);}svg[style*="hidden"] text[fill="#000000"]{fill:var(--i-color_hard);}svg[style*="hidden"] rect[width="1"], svg[style*="hidden"] rect[height="1"]{fill:var(--i-background_3);}#elLogo{height:62px;display:flex;align-items:center;justify-content:center;}#elLogo img{width:30px;}#acpAppList .ipsNotification{top:3px;inset-inline-end:3px;}#acpAppList .acpAppList__sub .ipsNotification{position:static;margin-inline-start:1em;}#acpAppList #elHideMenu{width:16px;height:32px;line-height:32px;position:fixed;bottom:0;z-index:6000;background:var(--i-background_1);border-radius:5px 0 0 0;}#acpAppList #elHideMenu a{color:inherit !important;}body.cAdminDevModeOn #acpAppList #elHideMenu{bottom:60px;}#acpAppList #elHideMenu{inset-inline-start:54px;inset-inline-start:calc(60px - 16px);}#acpAppList #elHideMenu a{padding:0 !important;height:100% !important;}.acpSearch{background:var(--i-background_3);color:var(--i-color_root);border-radius:6px;flex:1 1 100%;display:flex;align-items:center;height:41px;margin-inline-end:10px;}.acpSearch:focus-within{background:var(--i-background_1);outline:2px solid var(--i-primary);outline-offset:-1px;}.acpSearch .fa-magnifying-glass{margin:0 1em;opacity:.6;}#acpSearchKeyword{boLine truncated
|
||||
@@ -1 +1 @@
|
||||
#emoticonsManagement li [data-role="dragHandle"]{cursor:move;}.cEmoticons_box{height:100%;background:var(--i-background_1);border-radius:6px;box-shadow:color-mix(in srgb, var(--i-color_root) 10%, transparent) 0px 0px 0px 1px;}.cEmoticons_box [data-delete]{background:#222;width:18px;height:18px;line-height:18px;color:#fff;position:absolute;top:5px;inset-inline-end:5px;border-radius:30px;}#emoticonsManagement img{max-height:100px;}.cEmoticons_input{display:flex;align-items:center;padding:.5em .7em;font-size:.9em;}.cEmoticons_hd{flex:0 0 auto;}
|
||||
#emoticonsManagement [data-role="dragHandle"]{cursor:move;}.cEmoticons_box{background:var(--i-background_1);border-radius:6px;box-shadow:color-mix(in srgb, var(--i-color_root) 10%, transparent) 0px 0px 0px 1px;position:relative;}.cEmoticons_box [data-delete]{position:absolute;top:5px;inset-inline-end:5px;}#emoticonsManagement img{height:100px;width:100%;object-fit:scale-down;}
|
||||
@@ -1 +1 @@
|
||||
.cTranslateTable .ipsTable_wrap{max-width:220px;}.cTranslateTable_field{position:relative;}.cTranslateTable_field a[data-action]{display:none;position:absolute;bottom:10px;z-index:4000;line-height:20px;}.cTranslateTable_field_focus textarea ~ a[data-action]{display:block;}.cTranslateTable_field a[data-action="saveWords"]{inset-inline-end:10px;}.cTranslateTable_field a[data-action="revertWords"]{inset-inline-end:65px;}.cTranslateTable textarea{height:100%;min-height:50px;min-width:150px;field-sizing:content;}
|
||||
.cTranslateTable .ipsTable_wrap{max-width:220px;}.cTranslateTable_field{position:relative;}.cTranslateTable_field [data-action]{display:none;position:absolute;bottom:10px;z-index:4000;line-height:20px;}.cTranslateTable_field_focus textarea ~ [data-action]{display:block;}.cTranslateTable_field [data-action="saveWords"]{inset-inline-end:10px;}.cTranslateTable_field [data-action="revertWords"]{inset-inline-end:65px;}.cTranslateTable textarea{height:100%;min-height:50px;min-width:150px;field-sizing:content;}
|
||||
@@ -1 +1 @@
|
||||
#elTemplateEditor{margin:0 -15px -5px -15px;border-top:1px solid rgba(0,0,0,0.1);}.cTemplateControls, #elTemplateEditor .ipsTabs{background:var(--i-background_2);}#elTemplateEditor > .ipsColumns > .ipsColumn_wide{border-inline-end:4px solid var(--i-background_2);}.cTemplateControls{height:66px;padding-top:15px;}.cTemplateControls .ipsButton.ipsButton--disabled{opacity:0.2;}#elTemplateEditor_fileListControls{padding-left:15px;padding-right:15px;}#elTemplateEditor_fileListControls > div:first-child{display:flex;}#elTemplateEditor_fileListControls > div:first-child input[type="text"]{flex-grow:1;padding:0 7px;border-right-width:0px;line-height:34px;border-start-start-radius:3px;border-end-start-radius:3px;box-shadow:none;}#elTemplateEditor_panelToolbar{padding-inline-end:15px;}#elTemplateEditor > .ipsColumns > .ipsColumn{padding:0;}#elTemplateEditor_info{position:fixed;bottom:0;inset-inline-start:270px;inset-inline-end:0;background:var(--i-background_1);text-align:center;padding:7px;border-top:1px solid rgba(0,0,0,0.2);border-color:var(--i-background_3);}#elTemplateEditor .ipsTabs{padding:0;}#elTemplateEditor .ipsTabs__tab{text-overflow:clip !important;margin-inline-end:0;color:inherit;border-radius:0;}#elTemplateEditor .ipsTabs__tab[aria-selected="true"]{background:var(--i-background_1);font-weight:bold;}#elTemplateEditor [data-role="editor"], #elTemplateEditor .CodeMirror{border-width:0px !important;border-radius:0px !important;padding-bottom:10px;}#elTemplateEditor [data-role="editor"]{font-family:monospace;font-size:13px;}#elTemplateEditor [data-role="templateToolbar"]{margin-bottom:15px;}#elTemplateEditor_panelWrap{position:absolute;inset:0;}#elTemplateEditor_outerPanelWrap{position:relative;}#elTemplateEditor [data-role="templatePanelWrap"]{width:100%;background-color:var(--i-background_1);position:absolute;top:49px;left:0;right:0;bottom:0;}#elTemplateEditor [data-role="templatePanelWrap"] textarea{height:550px;}#elTemplateEditor [data-action="closeTab"]{font-size:12px;color:var(--i-color_soft);margin-inline-start:3px;}#elTemplateEditor [data-action="closeTab"]:hover, #elTemplateEditor [data-state="unsaved"] [data-action="closeTab"]{color:var(--i-color_hard);}#elTemplateEditor input[data-role="templateSearch"]{background-clip:padding-box;width:75%;max-width:350px;padding:7px;}#elTemplateFilterMenu{line-height:34px;border-start-end-radius:3px;border-end-end-radius:3px;}#elTemplateEditor_fileList{height:550px;overflow:auto;}.cTemplateList a{padding:5px 0;display:block;position:relative;color:var(--i-color_root);}.cTemplateList li.cTemplateList_inactiveBranch > a::before, .cTemplateList li.cTemplateList_activeBranch > a::before{font-family:var(--i-font-awesome);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;display:inline-block;line-height:6px;font-size:14px;}.cTemplateList li.cTemplateList_inactiveBranch > a::before, .cTemplateList li.cTemplateList_activeBranch > a::before{content:'\f0da';margin-inline-end:7px;}[dir="rtl"] .cTemplateList li.cTemplateList_inactiveBranch > a::before, [dir="rtl"] .cTemplateList li.cTemplateList_activeBranch > a::before{content:'\f0d9';}[dir="ltr"] .cTemplateList li.cTemplateList_activeBranch > a::before, [dir="rtl"] .cTemplateList li.cTemplateList_activeBranch > a::before{content:'\f0d7';}.cTemplateList li.cTemplateList_inactiveBranch > ul{display:none;}.cTemplateList_highlight{background:var(--i-background_2);}.cTemplateList li a{padding-inline-start:15px;}.cTemplateList li li a{padding-inline-start:30px;}.cTemplateList li li li a{padding-inline-start:45px;}.cTemplateList li li li li a{padding-inline-start:70px;}.cTemplateList li.cTemplateList_activeNode > a{background:var(--i-primary);color:#fff;}.cTemplateList li:not( .cTemplateList_activeNode ) > a:hover{background:var(--i-background_3);}a[data-inherited-value]:after{position:absolute;margin-top:2px;inset-inline-end:5px;}li[class^="cTemplateState_"]:before{display:inline-block;color:#fff !important;}a[data-inherited-value]:after, li[class^="cTemplateState_"]:before{font-size:9px;font-weight:bold;text-transform:uppercase;font-family:monospace;padding:0 5px;color:#b3b3b3;line-height:14px;border-radius:10px;opacity:0.1;transition:0.4s all linear;}a[data-inherited-value="original"]:after{display:none;}.cTemplateList:hover a[data-inherited-value]:after, li[class^="cTemplateState_"]:before{opacity:1;}.cTemplateList a[data-inherited-value="custom"]:after, .cTemplateState_custom:before{content:'C';background:#c9c030;color:#fff;}.cTemplateList a[data-inherited-value="inherit"]:after, .cTemplateState_inherit:before{content:'I';background:#83b256;color:#fff;}.cTemplateList a[data-inherited-value="changed"]:after, .cTemplateState_changed:before{content:'M';background:#eb841d;color:#fff;}.cTemplateList a[data-inherited-value="outofdate"]:after, .cTemplateState_outofdate:before{content:'M';background:#c93054;color:#fff;}.cTemplateMergeHeaders{border:1px solid var(--i-backgrounLine truncated
|
||||
#elTemplateEditor{margin:0 -15px -5px -15px;border-top:1px solid rgba(0,0,0,0.1);}.cTemplateControls, #elTemplateEditor .ipsTabs{background:var(--i-background_2);}#elTemplateEditor > .ipsColumns > .ipsColumn_wide{border-inline-end:4px solid var(--i-background_2);}.cTemplateControls{height:66px;padding-top:15px;}.cTemplateControls .ipsButton.ipsButton--disabled{opacity:0.2;}#elTemplateEditor_fileListControls{padding-left:15px;padding-right:15px;}#elTemplateEditor_fileListControls > div:first-child{display:flex;}#elTemplateEditor_fileListControls > div:first-child input[type="text"]{flex-grow:1;padding:0 7px;border-right-width:0px;line-height:34px;border-start-start-radius:3px;border-end-start-radius:3px;box-shadow:none;}#elTemplateEditor_panelToolbar{padding-inline-end:15px;}#elTemplateEditor > .ipsColumns > .ipsColumn{padding:0;}#elTemplateEditor_info{position:fixed;bottom:0;inset-inline-start:270px;inset-inline-end:0;background:var(--i-background_1);text-align:center;padding:7px;border-top:1px solid rgba(0,0,0,0.2);border-color:var(--i-background_3);}#elTemplateEditor .ipsTabs{padding:0;}#elTemplateEditor .ipsTabs__tab{text-overflow:clip !important;margin-inline-end:0;color:inherit;border-radius:0;}#elTemplateEditor .ipsTabs__tab[aria-selected="true"]{background:var(--i-background_1);font-weight:bold;}#elTemplateEditor [data-role="editor"], #elTemplateEditor .CodeMirror{border-width:0px !important;border-radius:0px !important;padding-bottom:10px;}#elTemplateEditor [data-role="editor"]{font-family:monospace;font-size:13px;}#elTemplateEditor [data-role="templateToolbar"]{margin-bottom:15px;}#elTemplateEditor_panelWrap{position:absolute;inset:0;}#elTemplateEditor_outerPanelWrap{position:relative;}#elTemplateEditor [data-role="templatePanelWrap"]{width:100%;background-color:var(--i-background_1);position:absolute;top:49px;left:0;right:0;bottom:0;}#elTemplateEditor [data-role="templatePanelWrap"] textarea{height:550px;}#elTemplateEditor [data-action="closeTab"]{font-size:12px;color:var(--i-color_soft);margin-inline-start:3px;}#elTemplateEditor [data-action="closeTab"]:hover, #elTemplateEditor [data-state="unsaved"] [data-action="closeTab"]{color:var(--i-color_hard);}#elTemplateEditor input[data-role="templateSearch"]{background-clip:padding-box;width:75%;max-width:350px;padding:7px;}#elTemplateFilterMenu{line-height:34px;border-start-end-radius:3px;border-end-end-radius:3px;}#elTemplateEditor_fileList{height:550px;overflow:auto;}.cTemplateList a{padding:5px 0;display:block;position:relative;color:var(--i-color_root);}.cTemplateList li.cTemplateList_inactiveBranch > a::before, .cTemplateList li.cTemplateList_activeBranch > a::before{font-family:var(--i-font-awesome);-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;display:inline-block;line-height:6px;font-size:14px;}.cTemplateList li.cTemplateList_inactiveBranch > a::before, .cTemplateList li.cTemplateList_activeBranch > a::before{content:'\f0da';margin-inline-end:7px;}[dir="rtl"] .cTemplateList li.cTemplateList_inactiveBranch > a::before, [dir="rtl"] .cTemplateList li.cTemplateList_activeBranch > a::before{content:'\f0d9';}[dir="ltr"] .cTemplateList li.cTemplateList_activeBranch > a::before, [dir="rtl"] .cTemplateList li.cTemplateList_activeBranch > a::before{content:'\f0d7';}.cTemplateList li.cTemplateList_inactiveBranch > ul{display:none;}.cTemplateList_highlight{background:var(--i-background_2);}.cTemplateList li a{padding-inline-start:15px;}.cTemplateList li li a{padding-inline-start:30px;}.cTemplateList li li li a{padding-inline-start:45px;}.cTemplateList li li li li a{padding-inline-start:70px;}.cTemplateList li.cTemplateList_activeNode > a{background:var(--i-primary);color:#fff;}.cTemplateList li:not( .cTemplateList_activeNode ) > a:hover{background:var(--i-background_3);}a[data-inherited-value]:after{position:absolute;margin-top:2px;inset-inline-end:5px;}li[class^="cTemplateState_"]:before{display:inline-block;color:#fff !important;}a[data-inherited-value]:after, li[class^="cTemplateState_"]:before{font-size:9px;font-weight:bold;text-transform:uppercase;font-family:monospace;padding:0 5px;color:#b3b3b3;line-height:14px;border-radius:10px;opacity:0.1;transition:0.4s all linear;}a[data-inherited-value="original"]:after{display:none;}.cTemplateList:hover a[data-inherited-value]:after, li[class^="cTemplateState_"]:before{opacity:1;}.cTemplateList a[data-inherited-value="custom"]:after, .cTemplateState_custom:before{content:'C';background:#c9c030;color:#fff;}.cTemplateList a[data-inherited-value="inherit"]:after, .cTemplateState_inherit:before{content:'I';background:#83b256;color:#fff;}.cTemplateList a[data-inherited-value="changed"]:after, .cTemplateState_changed:before{content:'M';background:#eb841d;color:#fff;}.cTemplateList a[data-inherited-value="outofdate"]:after, .cTemplateState_outofdate:before{content:'M';background:#c93054;color:#fff;}.cTemplateMergeHeaders{border:1px solid var(--i-background_4);border-bottom:0;}.cTemplateMeLine truncated
|
||||
@@ -1 +1 @@
|
||||
[data-role="massToggle"], [data-role="toggle"]{opacity:0;transition:all 0.2s linear;margin-inline-start:1em;}.acpRestrictions_header{display:flex;align-items:center;gap:.9em;}.acpRestrictions_subHeader{display:flex;align-items:center;gap:.6em;font-weight:600;margin:10px 0;}.acpRestrictions_header + ul{padding-inline-start:15px;}.acpRestrictions_header > label{font-size:15px;}.acpRestrictions_subHeader h3{font-size:14px;cursor:pointer;}.acpRestrictions_subHeader:hover [data-role="massToggle"], .acpRestrictions_header:hover [data-role="toggle"]{opacity:1;}.acpRestrictions_subHeader h3:before{display:inline-block;font-family:var(--i-font-awesome);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;content:'\f0da';margin-inline-end:.6em;}[dir="rtl"] .acpRestrictions_subHeader h3:before{content:'\f0d9';}[dir="ltr"] .acpRestrictions_closed.acpRestrictions_subHeader h3:before{content:'\f0da';}[dir="rtl"] .acpRestrictions_closed.acpRestrictions_subHeader h3:before{content:'\f0d9';}.acpRestrictions_open.acpRestrictions_subHeader h3:before{content:'\f0d7';}.acpRestrictions_panel ul{display:grid;gap:.6em;}.acpRestrictions_closed.acpRestrictions_subHeader + ul{display:none;}.ipsBadge.ipsBadge--label{min-width:60px;text-align:center;margin-inline-end:8px;}
|
||||
[data-role="massToggle"], [data-role="toggle"]{opacity:0;transition-property:opacity;transition-duration:.2s;margin-inline-start:1em;}.acpRestrictions_header{display:flex;align-items:center;gap:.9em;}.acpRestrictions_subHeader{display:flex;align-items:center;gap:.6em;font-weight:600;margin:10px 0;}.acpRestrictions_header + ul{padding-inline-start:15px;}.acpRestrictions_header > label{font-size:15px;}.acpRestrictions_subHeader h3{font-size:14px;cursor:pointer;}.acpRestrictions_subHeader:hover [data-role="massToggle"], .acpRestrictions_header:hover [data-role="toggle"]{opacity:1;}.acpRestrictions_subHeader h3:before{display:inline-block;font-family:var(--i-font-awesome);-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;content:'\f0da';margin-inline-end:.6em;}[dir="rtl"] .acpRestrictions_subHeader h3:before{content:'\f0d9';}[dir="ltr"] .acpRestrictions_closed.acpRestrictions_subHeader h3:before{content:'\f0da';}[dir="rtl"] .acpRestrictions_closed.acpRestrictions_subHeader h3:before{content:'\f0d9';}.acpRestrictions_open.acpRestrictions_subHeader h3:before{content:'\f0d7';}.acpRestrictions_panel ul{display:grid;gap:.6em;}.acpRestrictions_closed.acpRestrictions_subHeader + ul{display:none;}.ipsBadge.ipsBadge--label{min-width:60px;text-align:center;margin-inline-end:8px;}
|
||||
@@ -1 +1 @@
|
||||
.ipsAcpProfile{display:flex;flex-wrap:wrap;gap:1em;align-items:start;}.ipsAcpProfile__aside{flex:1 1 360px;display:grid;gap:inherit;}.ipsAcpProfile__main{flex:999 1 50%;display:flex;flex-wrap:wrap;gap:inherit;}.ipsAcpProfile__main > *{flex:1 1 100%;}.ipsAcpProfile__half{flex-basis:max(300px, 26%);}.acpMemberView_info{padding:5px;}.acpMemberView_stats .ipsTable{display:none;}.acpMemberView_tabBar{background:var(--i-background_1);}.acpMemberView_tabBarPanel{background:transparent;}.acpMemberView_layoutWrap{display:grid;gap:1em;padding:1em;}@media screen and (min-width:768px){.acpMemberView_layoutWrap{grid-template-columns:[main] auto [history] 350px [end];padding:2em;}.acpMemberView_layoutMain{grid-column-start:main;grid-column-end:history;}.acpMemberView_layoutHistory{grid-column-start:history;grid-column-end:end;}}.acpMemberView_coverPhoto{position:relative;min-height:90px;}.acpMemberView_coverPhoto .ipsCoverPhoto__container{min-height:90px;}.acpMemberView_coverPhoto .acpMemberView_editButton{position:absolute;top:10px;inset-inline-end:10px;}.acpMemberView_photo{position:relative;text-align:center;margin:-45px auto 0;max-width:120px;}.acpMemberView_photo .acpMemberView_editButton{position:absolute;bottom:0;inset-inline-end:0;white-space:nowrap;}.acpMemberView_map{background:#EEE5C9;opacity:.3;height:200px;}.acpMemberView_countStat{padding:10px 45px 10px 10px;border-radius:4px;display:block;position:relative;background:var(--i-background_5);color:var(--i-color_hard) !important;}.acpMemberView_countStat .ipsMinorTitle{color:inherit;opacity:0.8;}a.acpMemberView_countStat:before{content:'';position:absolute;inset-inline-end:40px;top:10px;bottom:10px;border-inline-start:1px solid currentColor;opacity:.2;}a.acpMemberView_countStat:after{content:'\f0d7';font-family:var(--i-font-awesome);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;position:absolute;inset-inline-end:18px;top:22px;}.acpMemberView_quotaNumber{font-size:18px;font-weight:600;}.acpMemberView_percentage{font-size:22px;margin-top:14px;}.acpMemberView_editButton{background:var(--i-background_4);color:var(--i-color_hard);border-radius:5px;padding:2px 5px;font-size:14px;}.acpMemberView_requestUnblockButton{background:var(--i-background_negative-soft);color:var(--i-color_negative);}.acpMemberView_editButton .fa-caret-down{margin-inline-start:4px;}.acpMemberView_message{border-radius:5px;}.acpMemberView_message a.ipsButton{margin-top:0;}.acpMemberView_message{padding:20px;padding-inline-start:85px;}.acpMemberView_message:before{font-size:47px;inset-inline-start:25px;}.cMemberHistory > li{padding:1.2em;border-top:1px solid var(--i-background_4);}.cMemberHistory_date{color:var(--i-color_hard);font-size:1.2em;font-weight:600;background-color:var(--i-background_2);}
|
||||
.ipsAcpProfile{display:flex;flex-wrap:wrap;gap:1em;align-items:start;}.ipsAcpProfile__aside{flex:1 1 360px;display:grid;gap:inherit;}.ipsAcpProfile__main{flex:999 1 50%;display:flex;flex-wrap:wrap;gap:inherit;}.ipsAcpProfile__main > *{flex:1 1 100%;}.ipsAcpProfile__half{flex-basis:max(300px, 26%);}.acpMemberView_info{padding:5px;}.acpMemberView_stats .ipsTable{display:none;}.acpMemberView_tabBar{background:var(--i-background_1);}.acpMemberView_tabBarPanel{background:transparent;}.acpMemberView_layoutWrap{display:grid;gap:1em;padding:1em;}@media screen and (min-width:768px){.acpMemberView_layoutWrap{grid-template-columns:[main] auto [history] 350px [end];padding:2em;}.acpMemberView_layoutMain{grid-column-start:main;grid-column-end:history;}.acpMemberView_layoutHistory{grid-column-start:history;grid-column-end:end;}}.acpMemberView_coverPhoto{position:relative;min-height:90px;}.acpMemberView_coverPhoto .ipsCoverPhoto__container{min-height:90px;}.acpMemberView_coverPhoto .acpMemberView_editButton{position:absolute;top:10px;inset-inline-end:10px;}.acpMemberView_photo{position:relative;text-align:center;margin:-45px auto 0;max-width:120px;}.acpMemberView_photo .acpMemberView_editButton{position:absolute;bottom:0;inset-inline-end:0;white-space:nowrap;}.acpMemberView_map{background:#EEE5C9;opacity:.3;height:200px;}.acpMemberView_countStat{padding:10px 45px 10px 10px;border-radius:4px;display:block;position:relative;background:var(--i-background_5);color:var(--i-color_hard) !important;}.acpMemberView_countStat .ipsMinorTitle{color:inherit;opacity:0.8;}a.acpMemberView_countStat:before{content:'';position:absolute;inset-inline-end:40px;top:10px;bottom:10px;border-inline-start:1px solid currentColor;opacity:.2;}a.acpMemberView_countStat:after{content:'\f0d7';font-family:var(--i-font-awesome);-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;position:absolute;inset-inline-end:18px;top:22px;}.acpMemberView_quotaNumber{font-size:18px;font-weight:600;}.acpMemberView_percentage{font-size:22px;margin-top:14px;}.acpMemberView_editButton{background:var(--i-background_4);color:var(--i-color_hard);border-radius:5px;padding:2px 5px;font-size:14px;}.acpMemberView_requestUnblockButton{background:var(--i-background_negative-soft);color:var(--i-color_negative);}.acpMemberView_editButton .fa-caret-down{margin-inline-start:4px;}.acpMemberView_message{border-radius:5px;}.acpMemberView_message a.ipsButton{margin-top:0;}.acpMemberView_message{padding:20px;padding-inline-start:85px;}.acpMemberView_message:before{font-size:47px;inset-inline-start:25px;}.cMemberHistory > li{padding:1.2em;border-top:1px solid var(--i-background_4);}.cMemberHistory_date{color:var(--i-color_hard);font-size:1.2em;font-weight:600;background-color:var(--i-background_2);}
|
||||
@@ -1 +1 @@
|
||||
[data-role="supportBlock"].ipsLoading{min-height:60px;}.ipsGrid--system-health [data-iconType]{font-size:1.4em;}.ipsGrid--system-health .ipsBox.elCritical{border:1px solid var(--i-color_negative);box-shadow:0 0 0 0 rgba(255, 82, 82, 1);animation:pulseCritical 1.5s infinite;}@keyframes pulseCritical{0%{box-shadow:0 0 0 0 rgba(255, 82, 82, 0.7);}85%{box-shadow:0 0 0 6px rgba(255, 82, 82, 0);}100%{box-shadow:0 0 0 1px rgba(255, 82, 82, 0);}}[data-controller="core.admin.support.contact"] .ipsField__checkboxOverflow__toggles{display:none;}#elInput_support_advice_search{background:transparent;border-width:0;box-shadow:none;outline:0;padding-inline-start:0;}#guideSearchResults.ipsLoading{min-height:100px;}#featuredGuides ul, #guideSearchResults ul{padding-inline-start:10px;}#featuredGuides li a::before, #guideSearchResults li a::before{font-family:var(--i-font-awesome);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;content:'\f105';margin-inline-end:8px;}.elPhpinfo{width:100%;}@media screen and (max-width:979px){.elHealthChart .ipsChart_filters{display:none;}}.ipsDialog_content .ipsForm[data-controller="core.admin.support.contact"] > .i-background_2{margin:-15px;}
|
||||
[data-role="supportBlock"].ipsLoading{min-height:60px;}.ipsGrid--system-health [data-iconType]{font-size:1.4em;}.ipsGrid--system-health .ipsBox.elCritical{border:1px solid var(--i-color_negative);box-shadow:0 0 0 0 rgba(255, 82, 82, 1);animation:pulseCritical 1.5s infinite;}@keyframes pulseCritical{0%{box-shadow:0 0 0 0 rgba(255, 82, 82, 0.7);}85%{box-shadow:0 0 0 6px rgba(255, 82, 82, 0);}100%{box-shadow:0 0 0 1px rgba(255, 82, 82, 0);}}[data-controller="core.admin.support.contact"] .ipsField__checkboxOverflow__toggles{display:none;}#elInput_support_advice_search{background:transparent;border-width:0;box-shadow:none;outline:0;padding-inline-start:0;}#guideSearchResults.ipsLoading{min-height:100px;}#featuredGuides ul, #guideSearchResults ul{padding-inline-start:10px;}#featuredGuides li a::before, #guideSearchResults li a::before{font-family:var(--i-font-awesome);-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;content:'\f105';margin-inline-end:8px;}.elPhpinfo{width:100%;}@media screen and (max-width:979px){.elHealthChart .ipsChart_filters{display:none;}}.ipsDialog_content .ipsForm[data-controller="core.admin.support.contact"] > .i-background_2{margin:-15px;}
|
||||
@@ -1 +1 @@
|
||||
.cApi{}.cApiKey{padding-top:5px;font-size:14px;font-family:monospace;}.cApiTree :is(summary, a){padding:.5em 0;padding-inline-start:15px;display:block;position:relative;border-radius:5px;color:var(--i-color_hard);}.cApiTree :is(summary, a):hover{background:var(--i-background_3);color:var(--i-color_hard);}.cApiTree > li > details > summary{font-size:15px;font-weight:700;}.cApiTree ul :is(summary, a){color:var(--i-color_soft);font-weight:500;}.cApiTree summary::before{font-family:var(--i-font-awesome);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;display:inline-block;font-size:12px;content:"\2b";margin-inline-end:.8em;opacity:.3;}.cApiTree [open] > summary::before{content:"\f068";}.cApiTree li li :is(summary, a){padding-inline-start:30px;}.cApiTree li li li :is(summary, a){padding-inline-start:45px;}.cApiTree li li li li :is(summary, a){padding-inline-start:60px;}.cApiTree .cApiTree_activeNode > a{background:var(--i-primary);color:#fff;}.cApiPermissions_header h2{font-weight:600;display:inline-block;margin-inline-end:1.5em;}.cApiPermissions{margin:10px 0;margin-inline-start:20px;}.cApiPermissions > li{line-height:1.6;margin-top:5px;margin-bottom:10px;}.cApiPermissions > li > ul{margin-inline-start:20px;}.cApiPermissions h3 ~ ul > li{margin:5px 0;}.cApiPermissions h3{display:inline-block;margin-inline-end:1em;cursor:pointer;font-weight:500;}.cApiPermissions h3::before{font-family:"Font Awesome 6 Free";display:inline-block;width:1.4em;font-weight:900;}.cApiPermissions_closed h3::before{content:'\f0da';}.cApiPermissions_closed ul{display:none;}.cApiPermissions_open h3::before{content:'\f0d7';}.cApiPermissions [data-role="endpointOverview"]{margin-inline-end:15px;}.cApiPermissions [data-role="massToggle"], .cApiPermissions_header [data-role="massToggle"]{display:none;}.cApiPermissions_header:hover [data-role="massToggle"], .cApiPermissions > li:hover [data-role="massToggle"]{display:inline-block;}.cApiPermissionsMatrix td[data-col="name"]{vertical-align:top;text-align:start;}.cApiPermissionsMatrix td[data-col="endpoints"]{text-align:start;}.cApiPermissionsMatrix .ipsTable_controls{vertical-align:top;}.cApi td .fa-key{margin-inline-end:.6em;opacity:.5;}
|
||||
.cApi{}.cApiKey{padding-top:5px;font-size:14px;font-family:monospace;}.cApiTree :is(summary, a){padding:.5em 0;padding-inline-start:15px;display:block;position:relative;border-radius:5px;color:var(--i-color_hard);}.cApiTree :is(summary, a):hover{background:var(--i-background_3);color:var(--i-color_hard);}.cApiTree > li > details > summary{font-size:15px;font-weight:700;}.cApiTree ul :is(summary, a){color:var(--i-color_soft);font-weight:500;}.cApiTree summary::before{font-family:var(--i-font-awesome);-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;display:inline-block;font-size:12px;content:"\2b";margin-inline-end:.8em;opacity:.3;}.cApiTree [open] > summary::before{content:"\f068";}.cApiTree li li :is(summary, a){padding-inline-start:30px;}.cApiTree li li li :is(summary, a){padding-inline-start:45px;}.cApiTree li li li li :is(summary, a){padding-inline-start:60px;}.cApiTree .cApiTree_activeNode > a{background:var(--i-primary);color:#fff;}.cApiPermissions_header h2{font-weight:600;display:inline-block;margin-inline-end:1.5em;}.cApiPermissions{margin:10px 0;margin-inline-start:20px;}.cApiPermissions > li{line-height:1.6;margin-top:5px;margin-bottom:10px;}.cApiPermissions > li > ul{margin-inline-start:20px;}.cApiPermissions h3 ~ ul > li{margin:5px 0;}.cApiPermissions h3{display:inline-block;margin-inline-end:1em;cursor:pointer;font-weight:500;}.cApiPermissions h3::before{font-family:"Font Awesome 6 Free";display:inline-block;width:1.4em;font-weight:900;}.cApiPermissions_closed h3::before{content:'\f0da';}.cApiPermissions_closed ul{display:none;}.cApiPermissions_open h3::before{content:'\f0d7';}.cApiPermissions [data-role="endpointOverview"]{margin-inline-end:15px;}.cApiPermissions [data-role="massToggle"], .cApiPermissions_header [data-role="massToggle"]{display:none;}.cApiPermissions_header:hover [data-role="massToggle"], .cApiPermissions > li:hover [data-role="massToggle"]{display:inline-block;}.cApiPermissionsMatrix td[data-col="name"]{vertical-align:top;text-align:start;}.cApiPermissionsMatrix td[data-col="endpoints"]{text-align:start;}.cApiPermissionsMatrix .ipsTable_controls{vertical-align:top;}.cApi td .fa-key{margin-inline-end:.6em;opacity:.5;}
|
||||
@@ -1 +1 @@
|
||||
.cMenuManager{--menu-manager--active:var(--i-primary);}.cMenuManager .cMenuManager_column.cMenuManager_readyToSlide{overflow:hidden;}.cMenuManager_editorWrapper{width:200%;display:flex;}.cMenuManager_main, .cMenuManager_dropdown{flex:0 0 50%;position:relative;padding:20px;padding-bottom:50px;}.cMenuManager_leaf ~ ol{padding-inline-start:1.5em;}.cMenuManager_leaf{background:var(--i-background_1);border:2px solid var(--i-background_3);padding:12px 10px;margin:5px 0;border-radius:6px;cursor:move;display:flex;align-items:center;}:where([data-ips-scheme="dark"]) .cMenuManager_leaf{background:var(--i-background_3);border-color:var(--i-background_4);}.cMenuManager_tools{display:flex;gap:1em;margin-inline-start:auto;}.cMenuManager_tools [data-action="editDropdown"]{color:inherit;}.cMenuManager_leaf.cMenuManager_active{background:var(--menu-manager--active);color:#fff;border-color:var(--menu-manager--active);margin-inline-end:-21px;padding-inline-end:20px;border-start-end-radius:0px;border-end-end-radius:0px;}.cMenuManager_leaf .cMenuManager_leafTitle{font-size:16px;font-weight:500;}.cMenuManager_leaf + ol .cMenuManager_leaf{padding:.6em .8em;}.cMenuManager_leaf + ol .cMenuManager_leaf.cMenuManager_active{padding-inline-end:20px;}.cMenuManager_leaf + ol .cMenuManager_leaf .cMenuManager_leafTitle{font-size:14px;}.cMenuManager_leaf .cMenuManager_leafMeta{font-size:12px;}.cMenuManager_leaf [data-action="removeItem"], .cMenuManager_dropdown .ipsMenu_item [data-action="removeItem"]{color:inherit;opacity:0.1;transition:opacity 0.1s linear;}.cMenuManager_leaf:hover [data-action="removeItem"], .cMenuManager_dropdown .ipsMenu_item:hover [data-action="removeItem"]{opacity:1;}.cMenuManager_emptyHover{border:1px solid var(--i-color_soft);background:var(--i-background_4);border-radius:4px;height:37px;position:relative;margin-inline-start:-10px;}.cMenuManager_emptyHover.cMenuManager_emptyError{background:#f9ebeb;color:#906161;border:1px solid currentColor;}[data-ips-scheme="dark"] .cMenuManager_emptyHover.cMenuManager_emptyError{background:#5f3434;}.cMenuManager_emptyHover.cMenuManager_emptyError:before{content:'\f00d';font-family:var(--i-font-awesome);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;font-size:18px;position:absolute;inset-inline-start:10px;line-height:40px;}.cMenuManager_dropdown .ipsMenu{position:relative;top:0;inset-inline-start:0;width:80%;margin:30px auto 50px auto;min-height:30px;box-shadow:0px 12px 60px rgba(0,0,0,0.2);}.cMenuManager_dropdown .ipsMenu .ipsMenu_item > div{display:flex;align-items:center;color:var(--i-color_hard);padding:.8em 1em;cursor:move;}.cMenuManager_dropdown .ipsMenu .ipsMenu_item{border:1px solid transparent;}.cMenuManager_dropdown .ipsMenu .ipsMenu_item a:hover{background:transparent;}.cMenuManager_dropdown .ipsMenu .ipsMenu_item.cMenuManager_active{background:var(--i-background_4);border-color:var(--i-primary);}.cMenuManager_dropdown .ipsButton_narrow{padding:0;border:0;}.cMenuManager_emptyList{line-height:40px;font-size:12px;font-style:italic;opacity:0.8;}.cMenuManager_form{position:relative;}.cMenuManager_form.cMenuManager_formActive{border-inline-start:4px solid var(--menu-manager--active);padding:10px;}.cMenuManager_form > .cMenuManager_formLoading{position:absolute;inset:0;}.cMenuManager_preview{position:-webkit-sticky;position:sticky;bottom:0;background:var(--i-background_2);}.cMenuManager_preview h2{background:var(--i-primary);color:#fff;height:48px;font-size:16px;font-weight:500;display:flex;align-items:center;gap:1em;}.cMenuManager_preview h2 a{color:inherit;}.cMenuManager_preview #elPreviewTheme{opacity:.8;}.cMenuManager_preview [data-role="previewBody"]{}.cMenuManager_preview iframe{width:100%;height:300px;}.cMenuManager_preview [data-action="previewToggle"]{width:3em;height:3em;display:grid;place-content:center;background:hsl(0 0% 100% / .2);}.cMenuManager_preview [data-action="previewToggle"]:hover{background:hsl(0 0% 100% / .3);}#elMenuManagerPreview_body{padding:50px 30px;--i-header-row--he:3em;}
|
||||
.cMenuManager{--menu-manager--active:var(--i-primary);}.cMenuManager .cMenuManager_column.cMenuManager_readyToSlide{overflow:hidden;}.cMenuManager_editorWrapper{width:200%;display:flex;}.cMenuManager_main, .cMenuManager_dropdown{flex:0 0 50%;position:relative;padding:20px;padding-bottom:50px;}.cMenuManager_leaf ~ ol{padding-inline-start:1.5em;}.cMenuManager_leaf{background:var(--i-background_1);border:2px solid var(--i-background_3);padding:12px 10px;margin:5px 0;border-radius:6px;cursor:move;display:flex;align-items:center;}:where([data-ips-scheme="dark"]) .cMenuManager_leaf{background:var(--i-background_3);border-color:var(--i-background_4);}.cMenuManager_tools{display:flex;gap:1em;margin-inline-start:auto;}.cMenuManager_tools [data-action="editDropdown"]{color:inherit;}.cMenuManager_leaf.cMenuManager_active{background:var(--menu-manager--active);color:#fff;border-color:var(--menu-manager--active);margin-inline-end:-21px;padding-inline-end:20px;border-start-end-radius:0px;border-end-end-radius:0px;}.cMenuManager_leaf .cMenuManager_leafTitle{font-size:16px;font-weight:500;}.cMenuManager_leaf + ol .cMenuManager_leaf{padding:.6em .8em;}.cMenuManager_leaf + ol .cMenuManager_leaf.cMenuManager_active{padding-inline-end:20px;}.cMenuManager_leaf + ol .cMenuManager_leaf .cMenuManager_leafTitle{font-size:14px;}.cMenuManager_leaf .cMenuManager_leafMeta{font-size:12px;}.cMenuManager_leaf [data-action="removeItem"], .cMenuManager_dropdown .ipsMenu_item [data-action="removeItem"]{color:inherit;opacity:0.1;transition:opacity 0.1s linear;}.cMenuManager_leaf:hover [data-action="removeItem"], .cMenuManager_dropdown .ipsMenu_item:hover [data-action="removeItem"]{opacity:1;}.cMenuManager_emptyHover{border:1px solid var(--i-color_soft);background:var(--i-background_4);border-radius:4px;height:37px;position:relative;margin-inline-start:-10px;}.cMenuManager_emptyHover.cMenuManager_emptyError{background:#f9ebeb;color:#906161;border:1px solid currentColor;}[data-ips-scheme="dark"] .cMenuManager_emptyHover.cMenuManager_emptyError{background:#5f3434;}.cMenuManager_emptyHover.cMenuManager_emptyError:before{content:'\f00d';font-family:var(--i-font-awesome);-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;font-size:18px;position:absolute;inset-inline-start:10px;line-height:40px;}.cMenuManager_dropdown .ipsMenu{position:relative;top:0;inset-inline-start:0;width:80%;margin:30px auto 50px auto;min-height:30px;box-shadow:0px 12px 60px rgba(0,0,0,0.2);}.cMenuManager_dropdown .ipsMenu .ipsMenu_item > div{display:flex;align-items:center;color:var(--i-color_hard);padding:.8em 1em;cursor:move;}.cMenuManager_dropdown .ipsMenu .ipsMenu_item{border:1px solid transparent;}.cMenuManager_dropdown .ipsMenu .ipsMenu_item a:hover{background:transparent;}.cMenuManager_dropdown .ipsMenu .ipsMenu_item.cMenuManager_active{background:var(--i-background_4);border-color:var(--i-primary);}.cMenuManager_dropdown .ipsButton_narrow{padding:0;border:0;}.cMenuManager_emptyList{line-height:40px;font-size:12px;font-style:italic;opacity:0.8;}.cMenuManager_form{position:relative;}.cMenuManager_form.cMenuManager_formActive{border-inline-start:4px solid var(--menu-manager--active);padding:10px;}.cMenuManager_form > .cMenuManager_formLoading{position:absolute;inset:0;}.cMenuManager_preview{position:-webkit-sticky;position:sticky;bottom:0;background:var(--i-background_2);}.cMenuManager_preview h2{background:var(--i-primary);color:#fff;height:48px;font-size:16px;font-weight:500;display:flex;align-items:center;gap:1em;}.cMenuManager_preview h2 a{color:inherit;}.cMenuManager_preview #elPreviewTheme{opacity:.8;}.cMenuManager_preview [data-role="previewBody"]{}.cMenuManager_preview iframe{width:100%;height:300px;}.cMenuManager_preview [data-action="previewToggle"]{width:3em;height:3em;display:grid;place-content:center;background:hsl(0 0% 100% / .2);}.cMenuManager_preview [data-action="previewToggle"]:hover{background:hsl(0 0% 100% / .3);}#elMenuManagerPreview_body{padding:50px 30px;--i-header-row--he:3em;}
|
||||
@@ -1 +1 @@
|
||||
#elErrorMessage{max-width:800px;margin-left:auto;margin-right:auto;}.ipsHovercard[data-role="advicePopup"]{display:none;width:300px;}.ipsHovercard[data-role="advicePopup"] > div{min-height:60px;}.ipsHovercard[data-role="advicePopup"].cStem_ltr .ipsHovercard_stem{right:100%;top:15px;}.ipsHovercard[data-role="advicePopup"].cStem_ltr .ipsHovercard_stem:before{right:1px;border-right-color:inherit;}.ipsHovercard[data-role="advicePopup"].cStem_ltr .ipsHovercard_stem:after{border-right-color:currentColor;}.ipsHovercard[data-role="advicePopup"].cStem_rtl .ipsHovercard_stem{left:100%;top:15px;}.ipsHovercard[data-role="advicePopup"].cStem_rtl .ipsHovercard_stem:before{left:1px;border-left-color:inherit;}.ipsHovercard[data-role="advicePopup"].cStem_rtl .ipsHovercard_stem:after{border-left-color:currentColor;}.ipsHovercard[data-role="advicePopup"].cStem_above .ipsHovercard_stem{left:50%;margin-left:-1em;top:100%;}.ipsHovercard[data-role="advicePopup"].cStem_above .ipsHovercard_stem:before{border-top-color:inherit;top:1px;}.ipsHovercard[data-role="advicePopup"].cStem_above .ipsHovercard_stem:after{border-top-color:currentColor;}.ipsShareLinks{display:flex;flex-wrap:wrap;gap:.4em;}.ipsShareLink{width:2.4em;height:2.4em;border-radius:min(var(--i-design-radius), 6px);display:inline-grid;place-content:center;color:#fff !important;font-size:max(15px, 1em);}.ipsShareLink--internal{background:#008b00;}.ipsShareLink--deviantart{background:#00e59b;}.ipsShareLink--email{background:#444;}.ipsShareLink--facebook{background:#1778F2;}.ipsShareLink--linkedin{background:#0a66c2;}.ipsShareLink--reddit{background:#FF4500;}.ipsShareLink--vk{background:#507299;}.ipsShareLink--weibo{background:#D32F2F;}.ipsShareLink--youtube{background:#ff0000;}.ipsShareLink--foursquare{background:#2D5BE3;}.ipsShareLink--etsy{background:#F56400;}.ipsShareLink--flickr{background:#ff0084;}.ipsShareLink--github{background:#24292f;}.ipsShareLink--instagram{background:#E13D62;}.ipsShareLink--pinterest{background:#BD081C;}.ipsShareLink--slack{background:#42C299;}.ipsShareLink--xing{background:#B0D400;}.ipsShareLink--tumblr{background:#36465D;}.ipsShareLink--twitch{background:#772ce8;}.ipsShareLink--discord{background:#5865f2;}.ipsShareLink--x{background:#000000;}.ipsShareLink--bluesky{background:#59baff;}.ipsWidget .cStatusUpdateWidget .ipsComposeArea_dummy{padding:7px 10px;font-size:var(--i-font-size_-1);}.ipsWidget .cStatusUpdateWidget .ipsComposeArea_dummy i[class*=" fa-"]{margin-inline-end:5px;}.ipsWidget .cStatusUpdateWidget [data-role="attachmentArea"]{display:none !important;}.cTagPopup .ipsTags{margin-top:10px;}#elGuestTerms{background:var(--i-background_1);border-top:1px solid color-mix(in srgb, var(--i-color_root) 10%, transparent);background-clip:var(--if-light,padding-box) var(--if-dark,border-box);position:sticky;bottom:0;padding:1.3em 0;z-index:4000;}:where([data-ips-scheme="dark"]) #elGuestTerms{background:var(--i-background_3);}@media (max-width:979px){#elGuestTerms{bottom:var(--i-mobileFooter--he);}}.cGuestTeaser_social{width:250px;margin-bottom:5px;}.grecaptcha-badge{z-index:10;}@media (max-width:979px){body:not(:has(.ipsEditor:focus-within)) .grecaptcha-badge{bottom:calc(var(--i-mobileFooter--he) + 10px) !important;}}@media (min-width:980px){body:has(#elGuestTerms[style*="block"]) .grecaptcha-badge{bottom:120px !important;}}.cColorChoices li{position:relative;}.cColorChoice_chooser{background-color:var(--_ba-co);width:42px;height:36px;display:block;position:relative;border-radius:4px;}.cColorChoices [type="radio"]{position:absolute;width:100%;height:100%;z-index:1;appearance:none;cursor:pointer;}.cColorChoices [type="radio"]:checked + .cColorChoice_chooser{outline:2px solid currentColor;outline-offset:1px;}.cClubEmbedHeader{position:relative;height:180px;}.cClubEmbedHeader.cClubEmbedHeaderNoPhoto, .cClubEmbedHeader.cClubEmbedHeaderNoPhoto span{height:120px;}.cClubEmbedHeader .ipsUserPhoto{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);border:2px solid #fff;}.cNotifcationPrompt{position:relative;background:var(--i-background_dark);color:#fff;}.cNotifcationPrompt_title{color:inherit;}.cNotifcationPrompt_text{opacity:0.7;}.cNotifcationPrompt_icon{display:block;background-image:url('../resources/core_d0e70b4cbb9ab8afb1bc1065a3f8487a_notification.svg');background-repeat:no-repeat;background-size:cover;aspect-ratio:1;}.cNotifcationPrompt_dismiss{background:hsl(0 0% 0% / .6);width:16px;height:16px;border-radius:16px;line-height:16px;text-align:center;color:#fff;font-size:12px;position:absolute;top:9px;inset-inline-end:9px;}.cContentMessageEditor.cContentMessageEditor--private .ipsEditor{border-color:var(--i-color_negative);--bo-sh:color-mix(in srgb, var(--i-color_negative) 15%, transparent);box-shadow:var(--bo-sh) 0px 0px 0px 6px;}.cContentMessageEditor.cContentMessageEditor--public .ipsEditor{border-color:var(--i-color_positive);--bo-sh:color-mix(in srgb, var(--i-color_positive) 15%, transparent);box-shadow:var(--bo-sh) 0px 0px Line truncated
|
||||
#elErrorMessage{max-width:800px;margin-left:auto;margin-right:auto;}.ipsHovercard[data-role="advicePopup"]{display:none;width:300px;}.ipsHovercard[data-role="advicePopup"] > div{min-height:60px;}.ipsHovercard[data-role="advicePopup"].cStem_ltr .ipsHovercard_stem{right:100%;top:15px;}.ipsHovercard[data-role="advicePopup"].cStem_ltr .ipsHovercard_stem:before{right:1px;border-right-color:inherit;}.ipsHovercard[data-role="advicePopup"].cStem_ltr .ipsHovercard_stem:after{border-right-color:currentColor;}.ipsHovercard[data-role="advicePopup"].cStem_rtl .ipsHovercard_stem{left:100%;top:15px;}.ipsHovercard[data-role="advicePopup"].cStem_rtl .ipsHovercard_stem:before{left:1px;border-left-color:inherit;}.ipsHovercard[data-role="advicePopup"].cStem_rtl .ipsHovercard_stem:after{border-left-color:currentColor;}.ipsHovercard[data-role="advicePopup"].cStem_above .ipsHovercard_stem{left:50%;margin-left:-1em;top:100%;}.ipsHovercard[data-role="advicePopup"].cStem_above .ipsHovercard_stem:before{border-top-color:inherit;top:1px;}.ipsHovercard[data-role="advicePopup"].cStem_above .ipsHovercard_stem:after{border-top-color:currentColor;}.ipsShareLinks{display:flex;flex-wrap:wrap;gap:.4em;}.ipsShareLink{width:2.4em;height:2.4em;border-radius:min(var(--i-design-radius), 6px);display:inline-grid;place-content:center;color:#fff !important;font-size:max(15px, 1em);}.ipsShareLink--internal{background:#008b00;}.ipsShareLink--deviantart{background:#00e59b;}.ipsShareLink--email{background:#444;}.ipsShareLink--facebook{background:#1778F2;}.ipsShareLink--linkedin{background:#0a66c2;}.ipsShareLink--reddit{background:#FF4500;}.ipsShareLink--vk{background:#507299;}.ipsShareLink--weibo{background:#D32F2F;}.ipsShareLink--youtube{background:#ff0000;}.ipsShareLink--foursquare{background:#2D5BE3;}.ipsShareLink--etsy{background:#F56400;}.ipsShareLink--flickr{background:#ff0084;}.ipsShareLink--github{background:#24292f;}.ipsShareLink--instagram{background:#E13D62;}.ipsShareLink--pinterest{background:#BD081C;}.ipsShareLink--slack{background:#42C299;}.ipsShareLink--xing{background:#B0D400;}.ipsShareLink--tumblr{background:#36465D;}.ipsShareLink--twitch{background:#772ce8;}.ipsShareLink--discord{background:#5865f2;}.ipsShareLink--x{background:#000000;}.ipsShareLink--bluesky{background:#59baff;}.ipsWidget .cStatusUpdateWidget .ipsComposeArea_dummy{padding:7px 10px;font-size:var(--i-font-size_-1);}.ipsWidget .cStatusUpdateWidget .ipsComposeArea_dummy i[class*=" fa-"]{margin-inline-end:5px;}.ipsWidget .cStatusUpdateWidget [data-role="attachmentArea"]{display:none !important;}.cTagPopup .ipsTags{margin-top:10px;}#elGuestTerms{background:var(--i-background_1);border-top:1px solid color-mix(in srgb, var(--i-color_root) 10%, transparent);background-clip:var(--if-light,padding-box) var(--if-dark,border-box);position:sticky;bottom:0;padding:1.3em 0;z-index:4000;}:where([data-ips-scheme="dark"]) #elGuestTerms{background:var(--i-background_3);}@media (max-width:979px){#elGuestTerms{bottom:var(--i-mobileFooter--he);}}.cGuestTeaser_social{width:250px;margin-bottom:5px;}.grecaptcha-badge{z-index:10;}@media (max-width:979px){.grecaptcha-badge{bottom:calc(var(--i-mobileFooter--he) + 10px) !important;}}@media (min-width:980px){.ipsLayout:has(#elGuestTerms) .grecaptcha-badge{bottom:120px !important;}}.cColorChoices li{position:relative;}.cColorChoice_chooser{background-color:var(--_ba-co);width:42px;height:36px;display:block;position:relative;border-radius:4px;}.cColorChoices [type="radio"]{position:absolute;width:100%;height:100%;z-index:1;appearance:none;cursor:pointer;}.cColorChoices [type="radio"]:checked + .cColorChoice_chooser{outline:2px solid currentColor;outline-offset:1px;}.cClubEmbedHeader{position:relative;height:180px;}.cClubEmbedHeader.cClubEmbedHeaderNoPhoto, .cClubEmbedHeader.cClubEmbedHeaderNoPhoto span{height:120px;}.cClubEmbedHeader .ipsUserPhoto{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);border:2px solid #fff;}.cNotifcationPrompt{position:relative;background:var(--i-background_dark);color:#fff;}.cNotifcationPrompt_title{color:inherit;}.cNotifcationPrompt_text{opacity:0.7;}.cNotifcationPrompt_icon{display:block;background-image:url('../resources/core_d0e70b4cbb9ab8afb1bc1065a3f8487a_notification.svg');background-repeat:no-repeat;background-size:cover;aspect-ratio:1;}.cNotifcationPrompt_dismiss{background:hsl(0 0% 0% / .6);width:16px;height:16px;border-radius:16px;line-height:16px;text-align:center;color:#fff;font-size:12px;position:absolute;top:9px;inset-inline-end:9px;}.cContentMessageEditor.cContentMessageEditor--private .ipsEditor{border-color:var(--i-color_negative);--bo-sh:color-mix(in srgb, var(--i-color_negative) 15%, transparent);box-shadow:var(--bo-sh) 0px 0px 0px 6px;}.cContentMessageEditor.cContentMessageEditor--public .ipsEditor{border-color:var(--i-color_positive);--bo-sh:color-mix(in srgb, var(--i-color_positive) 15%, transparent);box-shadow:var(--bo-sh) 0px 0px 0px 6px;}.cLogin_single{max-width:500px;margin:0 aLine truncated
|
||||
@@ -1 +1 @@
|
||||
[data-role="internalEmbed"]{background:var(--i-background_1) !important;}[data-role="externalEmbed"], [data-role="internalEmbed"]{overflow:hidden;}#ipsEmbedLoading{display:none;}.unloaded #ipsEmbedLoading{background:var(--i-background_1);display:grid;grid-template-columns:42px 1fr;grid-template-rows:42px 1fr;gap:20px;padding:20px;position:fixed;inset:0;}@keyframes dummy_anim{0%, 100%{opacity:.5}50%{opacity:1}}#ipsEmbedLoading::before, #ipsEmbedLoading::after, #ipsEmbedLoading span::before, #ipsEmbedLoading span::after{display:block;content:'';background:var(--i-background_5);border-radius:6px;animation:dummy_anim 2s infinite;}#ipsEmbedLoading::before{width:100%;aspect-ratio:1;border-radius:50%;}#ipsEmbedLoading span{display:grid;gap:.5em;}#ipsEmbedLoading span::before{width:80%;}#ipsEmbedLoading span::after{width:60%;}#ipsEmbedLoading::after{grid-column:span 2;}#ipsEmbed{opacity:0.0001;overflow:hidden;}#ipsEmbed .twitter-tweet{border-radius:15px;overflow:hidden;}
|
||||
[data-role="internalEmbed"]{background:var(--i-background_1) !important;overflow:hidden;}[data-role="externalEmbed"]{background:none !important;overflow:hidden;}#ipsEmbedLoading{display:none;}.unloaded #ipsEmbedLoading{background:var(--i-background_1);display:grid;grid-template-columns:42px 1fr;grid-template-rows:42px 1fr;gap:20px;padding:20px;position:fixed;inset:0;}@keyframes dummy_anim{0%, 100%{opacity:.5}50%{opacity:1}}#ipsEmbedLoading::before, #ipsEmbedLoading::after, #ipsEmbedLoading span::before, #ipsEmbedLoading span::after{display:block;content:'';background:var(--i-background_5);border-radius:6px;animation:dummy_anim 2s infinite;}#ipsEmbedLoading::before{width:100%;aspect-ratio:1;border-radius:50%;}#ipsEmbedLoading span{display:grid;gap:.5em;}#ipsEmbedLoading span::before{width:80%;}#ipsEmbedLoading span::after{width:60%;}#ipsEmbedLoading::after{grid-column:span 2;}#ipsEmbed{opacity:0.0001;overflow:hidden;}#ipsEmbed .twitter-tweet{border-radius:15px;overflow:hidden;}
|
||||
@@ -1 +1 @@
|
||||
html body{margin-inline-end:300px;}#elMetaTagEditor{position:fixed;top:0;bottom:0;inset-inline-end:0;width:300px;overflow:auto;}#elMetaTagEditor_customTags > li, #elMetaTagEditor_defaultTags > li{padding-bottom:20px;margin-bottom:20px;}#elMetaTagEditor::after{content:'';display:block;height:60px;}#elMetaTagEditor_submit{position:fixed;bottom:0;inset-inline-end:0;width:300px;background:#000;min-height:60px;}
|
||||
html body{margin-inline-end:300px;}#elMetaTagEditor{position:fixed;top:0;bottom:0;inset-inline-end:0;width:300px;overflow:auto;}#elMetaTagEditor_submit{position:-webkit-sticky;position:sticky;bottom:0;background:#000;z-index:1;padding:1em;}
|
||||
@@ -1 +1 @@
|
||||
#elApprovalToolbar{width:auto;}#elModCPMemberSearch{position:relative;}#elModCPApprovalSplash{max-width:56ch;margin:0 auto;}.cIPInfo_map{padding-top:0;padding-inline-start:0;}.cIPInfo_value{font-size:34px;}.ipsColumns--modcpanel .ipsColumns__secondary{background:var(--i-background_2);border:0px solid transparent;border-color:color-mix(in srgb, var(--i-co) 10%, transparent);border-bottom-width:1px;padding:var(--i-sp_2);}.cModCP_header .ipsTitle .fa-solid{font-size:.65em;}@media (min-width:980px){.ipsColumns--modcpanel .ipsColumns__secondary{border-width:0;border-inline-end-width:1px;padding:var(--i-sp_3);border-end-start-radius:var(--i-box--bo-ra);}}.ipsModCpanel__stickyHeader{padding:var(--i-sp_2);background:var(--i-background_1);background:color-mix(in srgb, var(--i-background_1) 88%, transparent);box-shadow:hsl(0 0% 0% / .1) 0px 1px 0px, hsl(0 0% 0% / .04) 0px 1px 10px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);position:sticky;top:var(--i-sticky-offset, 0px);z-index:var(--i-z-index_sticky);}.ipsData__item .ipsApprovalQueueItem{margin:calc(var(--_padding) * -1);}.ipsData__item:not(:last-child) .ipsApprovalQueueItem{border-bottom:5px solid var(--i-background_6);}
|
||||
#elApprovalToolbar{width:auto;}#elModCPMemberSearch{position:relative;}#elModCPApprovalSplash{max-width:56ch;margin:0 auto;}.ipsColumns--modcpanel > .ipsColumns__secondary{background:var(--i-background_2);border:0px solid transparent;border-color:color-mix(in srgb, var(--i-co) 10%, transparent);border-bottom-width:1px;padding:var(--i-sp_2);}.cModCP_header .ipsTitle .fa-solid{font-size:.65em;}@media (min-width:980px){.ipsColumns--modcpanel > .ipsColumns__secondary{border-width:0;border-inline-end-width:1px;padding:var(--i-sp_3);border-end-start-radius:var(--i-box--bo-ra);}}.ipsModCpanel__stickyHeader{padding:var(--i-sp_2);background:var(--i-background_1);background:color-mix(in srgb, var(--i-background_1) 88%, transparent);box-shadow:hsl(0 0% 0% / .1) 0px 1px 0px, hsl(0 0% 0% / .04) 0px 1px 10px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);position:sticky;top:var(--i-sticky-offset, 0px);z-index:var(--i-z-index_sticky);}.ipsData__item .ipsApprovalQueueItem{margin:calc(var(--_padding) * -1);}.ipsData__item:not(:last-child) .ipsApprovalQueueItem{border-bottom:5px solid var(--i-background_6);}.ipsModCpanel .ipsButtonBar{border-radius:0;}
|
||||
@@ -1 +1 @@
|
||||
.ipsCoverPhoto--minimal .ipsCoverPhoto__container{aspect-ratio:10;}.ipsCoverPhoto--profile:not(.ipsCoverPhoto--minimal) ~ .ipsCoverPhotoMeta [data-action="goToProfile"], .ipsCoverPhoto--minimal ~ .ipsCoverPhotoMeta [data-action="browseContent"], .ipsCoverPhoto--minimal #ipsMenu_elprofile_edit{display:none !important;}.ipsProfileContainer{container:ipsProfile / inline-size;}.ipsProfile{display:grid;gap:1em;}.ipsProfile__sticky-inner{display:grid;gap:1em;grid-template-columns:repeat(auto-fill, minmax(min(100%, 280px), 1fr));}@container (min-width:768px){.ipsProfile{grid-template-columns:min(360px, 35%) 1fr;}.ipsProfile__aside{display:grid;}.ipsProfile__sticky-outer{min-height:min(100%, calc(100vh - (var(--i-sp_block) * 2) - var(--i-sticky-offset)));min-height:min(100%, calc(100svh - (var(--i-sp_block) * 2) - var(--i-sticky-offset)));position:sticky;bottom:var(--i-sp_block);align-self:end;}.ipsProfile__sticky-inner{position:sticky;top:calc(var(--i-sticky-offset) + var(--i-sp_block));}}.ipsProfile__aside .ipsSideMenu{padding:1em;}.ipsProfile__aside .ipsData:not(.ipsData--profileVisitors){--i-data--padding:1.4em;--i-data--title:1.05em;}.ipsProfile__aside .ipsData:not(.ipsData--profileVisitors) .ipsData__title{font-weight:600;}.ipsProfile__aside .ipsData:not(.ipsData--profileVisitors) .ipsData__desc{margin:0;display:block;}.ipsData--profileMeta .ipsData__icon{opacity:.3;flex-basis:1em;align-self:center;font-size:16px;}.ipsProfile__aside .ipsTime__long{display:revert;}.ipsProfile__aside .ipsTime__short{display:none;}.ipsProfileWidget{padding:3em 1.5em;border-bottom:1px solid var(--i-background_3);display:block;}.cProfileAchievements > a:hover{background:var(--i-background_2);}.cProfileRepScore{background:var(--i-background_5);color:var(--i-base-contrast_6);border-radius:6px;text-align:center;display:grid;font-weight:600;}.cProfileRepScore--badge{font-size:1.5em;}.cProfileRepScore--positive, .cProfileRepScore--solutions{background:var(--i-background_positive);color:var(--i-color_positive-soft);}.cProfileRepScore--negative{background:var(--i-background_negative);color:var(--i-color_negative-soft);}.cProfileRepScore__points{font-size:2em;}.cProfileSubscription{display:grid;overflow:hidden;border-radius:min(var(--i-design-radius), 7px);background-color:var(--i-background_dark);color:#fff;text-align:center;font-weight:600;}.cProfileSubscription > *{grid-area:1/-1;}.cProfileSubscription img{width:100%;}.cProfileSubscription__gradient{background-image:linear-gradient(to bottom, rgba(0,0,0,0) 50%, rgba(0,0,0,0.8));}.cProfileSubscription__text{padding:2em 1em;align-self:end;}.cProfileSubscription--with-image .cProfileSubscription__text{padding-top:5em;text-shadow:rgba(0,0,0,0.2) 0px 1px 1px;}.cRankHistory{position:relative;z-index:1;display:grid;gap:20px;}.cRankHistory::before{content:'';width:2px;background:var(--i-color_soft);position:absolute;top:10px;bottom:10px;inset-inline-start:19px;z-index:-1;opacity:.4;}.cRankHistory__item{position:relative;display:flex;align-items:center;gap:var(--i-sp_2);}.cRankHistory__icon{background:var(--i-background_1);padding:3px 0;flex:0 0 auto;}.cRankHistory__icon img{width:40px;aspect-ratio:1;object-fit:cover;}.cRankHistory__itemBadge--unearned{filter:opacity(15%) grayscale(1);}.ipsTabs--profile{background:var(--i-background_2);border-top-left-radius:inherit;border-top-right-radius:inherit;}.ipsTabs__panels--profile{scroll-margin-top:4.5em;}
|
||||
.ipsCoverPhoto--profile:not(.ipsCoverPhoto--minimal) ~ .ipsCoverPhotoMeta [data-action="goToProfile"], .ipsCoverPhoto--minimal ~ .ipsCoverPhotoMeta [data-action="browseContent"], .ipsCoverPhoto--minimal #ipsMenu_elprofile_edit{display:none !important;}.ipsProfileContainer{container:ipsProfile / inline-size;}.ipsProfile{display:grid;gap:1em;}.ipsProfile__sticky-inner{display:grid;gap:1em;grid-template-columns:repeat(auto-fill, minmax(min(100%, 280px), 1fr));}@container (min-width:768px){.ipsProfile{grid-template-columns:min(360px, 35%) 1fr;}.ipsProfile__aside{display:grid;}.ipsProfile__sticky-outer{min-height:min(100%, calc(100vh - (var(--i-sp_block) * 2) - var(--i-sticky-offset)));min-height:min(100%, calc(100svh - (var(--i-sp_block) * 2) - var(--i-sticky-offset)));position:sticky;bottom:var(--i-sp_block);align-self:end;}.ipsProfile__sticky-inner{position:sticky;top:calc(var(--i-sticky-offset) + var(--i-sp_block));}}.ipsProfile__aside .ipsSideMenu{padding:1em;}.ipsProfile__aside .ipsData:not(.ipsData--profileVisitors){--i-data--padding:1.4em;--i-data--title:1.05em;}.ipsProfile__aside .ipsData:not(.ipsData--profileVisitors) .ipsData__title{font-weight:600;}.ipsProfile__aside .ipsData:not(.ipsData--profileVisitors) .ipsData__desc{margin:0;display:block;}.ipsData--profileMeta .ipsData__icon{opacity:.3;flex-basis:1em;align-self:center;font-size:16px;}.ipsProfile__aside .ipsTime__long{display:revert;}.ipsProfile__aside .ipsTime__short{display:none;}.ipsProfileWidget{padding:3em 1.5em;border-bottom:1px solid var(--i-background_3);display:block;}.cProfileAchievements > a:hover{background:var(--i-background_2);}.cProfileRepScore{background:var(--i-background_5);color:var(--i-base-contrast_6);border-radius:6px;text-align:center;display:grid;font-weight:600;}.cProfileRepScore--badge{font-size:1.5em;}.cProfileRepScore--positive, .cProfileRepScore--solutions{background:var(--i-background_positive);color:var(--i-color_positive-soft);}.cProfileRepScore--negative{background:var(--i-background_negative);color:var(--i-color_negative-soft);}.cProfileRepScore__points{font-size:2em;}.cProfileSubscription{display:grid;overflow:hidden;border-radius:min(var(--i-design-radius), 7px);background-color:var(--i-background_dark);color:#fff;text-align:center;font-weight:600;}.cProfileSubscription > *{grid-area:1/-1;}.cProfileSubscription img{width:100%;}.cProfileSubscription__gradient{background-image:linear-gradient(to bottom, rgba(0,0,0,0) 50%, rgba(0,0,0,0.8));}.cProfileSubscription__text{padding:2em 1em;align-self:end;}.cProfileSubscription--with-image .cProfileSubscription__text{padding-top:5em;text-shadow:rgba(0,0,0,0.2) 0px 1px 1px;}.cRankHistory{position:relative;z-index:1;display:grid;gap:20px;}.cRankHistory::before{content:'';width:2px;background:var(--i-color_soft);position:absolute;top:10px;bottom:10px;inset-inline-start:19px;z-index:-1;opacity:.4;}.cRankHistory__item{position:relative;display:flex;align-items:center;gap:var(--i-sp_2);}.cRankHistory__icon{background:var(--i-background_1);padding:3px 0;flex:0 0 auto;}.cRankHistory__icon img{width:40px;aspect-ratio:1;object-fit:cover;}.cRankHistory__itemBadge--unearned{filter:opacity(15%) grayscale(1);}.ipsTabs--profile{background:var(--i-background_2);border-top-left-radius:inherit;border-top-right-radius:inherit;}.ipsTabs__panels--profile{scroll-margin-top:4.5em;}
|
||||
@@ -1 +1 @@
|
||||
@media (min-width:980px){html body{margin-inline-end:clamp(300px, 19vw, 500px);}#elQueryLog{position:fixed;top:0;bottom:0;inset-inline-end:0;padding-bottom:70px;width:clamp(300px, 19vw, 500px);background:#212223;overflow:auto;}:is(#elQueryLog, .elQueryLogMenu) h3{color:#fff;padding:1em;text-align:center;font-weight:600;}#elQueryLog > div{border-bottom:1px solid hsl(0 0% 100% / .25);}#elQueryLog [data-ipsdialog]{cursor:pointer;}:is(#elQueryLog, .elQueryLogMenu) .prettyprint{border:0;background:transparent;white-space:pre-wrap;padding:1.2em;}}@media screen and (max-width:979px){#elQueryLog{display:none;}}
|
||||
@media (min-width:980px){html body{margin-inline-end:clamp(300px, 19vw, 500px);}#elQueryLog{position:fixed;top:0;bottom:0;inset-inline-end:0;padding-bottom:70px;width:clamp(300px, 19vw, 500px);background:#121417;color:#fafafa;overflow:auto;}:is(#elQueryLog, .elQueryLogMenu) h3{color:#fff;padding:1em;text-align:center;font-weight:600;}#elQueryLog > div{border-bottom:1px solid hsl(0 0% 100% / .25);}#elQueryLog [data-ipsdialog]{cursor:pointer;}:is(#elQueryLog, .elQueryLogMenu) .prettyprint{border:0;background:transparent;white-space:pre-wrap;padding:1.2em;}:is(#elQueryLog, .elQueryLogMenu) .prettyprint:hover{background:hsl(0 0% 100% / .08);}}@media screen and (max-width:979px){#elQueryLog{display:none;}}
|
||||
@@ -1 +1 @@
|
||||
.ipsForm--filter-inline-form{container:none;}.cStreamFilter{display:grid;grid-template-columns:repeat(auto-fit, minmax(12em, 1fr));gap:1px;border-top:1px solid var(--i-background_4);overflow:hidden;}.cStreamFilter > li{position:relative;outline:1px solid var(--i-background_3);}.cStreamFilter > li > a{display:block;padding:1.3em;color:inherit;}.cStreamFilter > li > a:hover{background-color:color-mix(in srgb, var(--i-background_3) 50%, transparent);}.cStreamFilter > li > a.cStreamFilter_active{background:var(--i-primary);color:var(--i-primary-contrast);}.cStreamFilter__title{font-weight:600;font-size:1.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.cStreamFilter__title::after{content:'\f107';font-family:var(--i-font-awesome);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;margin-inline-start:.6em;font-size:.9em;opacity:.6;}.cStreamFilter__blurb em{opacity:0.3;}.cStreamFilter__blurb{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ipsBox--activity-stream:not(:has(#elStreamFilterForm)) [aria-controls="elStreamFilterForm"]{display:none;}.cStreamForm_list > li{position:relative;}.cStreamForm_list .ipsSideMenu_item{padding-top:5px;padding-bottom:5px;}.cStreamForm_list .ipsSideMenu_item.cStream_withOptions{margin-inline-end:45px;}.cStreamForm_list .ipsSideMenu_item.ipsSideMenu_itemActive + .cStreamForm_menu, .cStreamForm_list .ipsSideMenu_item:not(.ipsSideMenu_itemActive):hover + .cStreamForm_menu{display:block;background:var(--i-background_5);}.cStreamForm_list .ipsSideMenu_item.ipsSideMenu_itemActive + .cStreamForm_menu{color:#fff;background:hsl(0 0% 100% / .1);}.cStreamForm_list .ipsSideMenu_item.ipsSideMenu_itemActive + .cStreamForm_menu.cStreamForm_menuActive{background:var(--i-background_3);}.cStreamForm_list li:hover a.ipsSideMenu_item:not(.ipsSideMenu_itemActive) + .cStreamForm_menu{opacity:0.3;pointer-events:none;}.cStreamForm_menu{padding:5px 10px;cursor:pointer;position:absolute;top:0;display:none;inset-inline-end:0;}.cStreamForm_list[data-filterType="type"] .ipsSideMenu_item .cStreamForm_menu + a{margin-inline-end:45px;}.cStreamForm_nodes{display:block;padding:5px 0;padding-inline-start:12px;margin-inline-start:10px;border-inline-start:2px solid var(--i-background_6);}.cStreamForm_nodes .ipsFieldRow{width:100%;}
|
||||
.cStreamFilter{display:grid;grid-template-columns:repeat(auto-fit, minmax(12em, 1fr));gap:1px;border-bottom:1px solid var(--i-background_4);overflow:hidden;}.cStreamFilter > li{position:relative;outline:1px solid var(--i-background_3);}.cStreamFilter > li > a{display:block;padding:1.3em;color:inherit;}.cStreamFilter > li > a:hover{background-color:color-mix(in srgb, var(--i-background_3) 50%, transparent);}.cStreamFilter > li > a.cStreamFilter_active{background:var(--i-primary);color:var(--i-primary-contrast);}.cStreamFilter__title{font-weight:600;font-size:1.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.cStreamFilter__title::after{content:'\f107';font-family:var(--i-font-awesome);-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;margin-inline-start:.6em;font-size:.9em;opacity:.6;}.cStreamFilter__blurb em{opacity:0.3;}.cStreamFilter__blurb{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.ipsBox--activity-stream:not(:has(#elStreamFilterForm)) [aria-controls="elStreamFilterForm"]{display:none;}.cStreamForm_list > li{position:relative;}.cStreamForm_list .ipsSideMenu_item.cStream_withOptions{margin-inline-end:45px;}.cStreamForm_menu{padding:.6em;cursor:pointer;position:absolute;top:0;inset-inline-end:0;border-radius:min(var(--i-design-radius), .45em);border-start-start-radius:0;border-end-start-radius:0;color:#fff;background:hsl(0 0% 100% / .1);visibility:hidden;}.cStreamForm_menu:hover{background:hsl(0 0% 100% / .2);}.ipsSideMenu_itemActive + .cStreamForm_menu{visibility:visible;}.ipsSideMenu_itemActive + .cStreamForm_menu{}.cStreamForm_list[data-filterType="type"] .ipsSideMenu_item .cStreamForm_menu + a{margin-inline-end:45px;}.cStreamForm_nodes{display:block;margin-inline-start:2em;border-inline-start:2px solid var(--i-background_3);}
|
||||
@@ -1 +1 @@
|
||||
body{overflow:hidden;}[data-ips-scheme="light"] theme-editor{--panel--ba-co:hsl(220 20% 100%);--panel--ba-co-alt:hsl(220 20% 96%);--panel--ba-co-active:hsl(220 20% 88%);--panel--co:hsl(220 20% 30%);--panel--co_soft:hsl(220 20% 50%);--panel--co_hard:hsl(220 20% 0%);--panel--bo-co:hsl(220 20% 80%);--vte-tooltip:hsl(220 20% 20%);}[data-ips-scheme="dark"] theme-editor{--panel--ba-co:hsl(220 10% 12%);--panel--ba-co-alt:hsl(220 10% 23%);--panel--ba-co-active:hsl(220 10% 30%);--panel--co:hsl(220 10% 70%);--panel--co_soft:hsl(220 10% 50%);--panel--co_hard:hsl(220 10% 90%);--panel--bo-co:hsl(220 10% 30%);--vte-tooltip:hsl(220 10% 40%);}theme-editor{display:grid;grid-template-columns:1fr clamp(370px, 18vw, 450px);position:fixed;top:0;left:0;width:100%;height:100%;font-weight:normal;}theme-editor::-webkit-scrollbar{display:none;}theme-editor button{touch-action:manipulation;}theme-editor .i-color_soft{color:var(--panel--co_soft);}theme-editor .i-color_hard{color:var(--panel--co_hard);}live-preview{background:oklch(32% calc(clamp(0, 100 - var(--i-base-c), 1) * 5%) var(--i-base-h));display:flex;justify-content:center;align-items:center;position:relative;}live-preview iframe{width:100%;height:100%;max-width:100vw;max-height:100vh;transition:.5s;background:var(--panel--ba-co);}:is([data-workspace-size="small"], [data-workspace-size="medium"]) live-preview iframe{max-width:1180px;max-height:820px;height:calc(100vh - 20px);width:calc(100% - 20px);border-radius:10px;}[data-workspace-size="small"] live-preview iframe{max-width:393px;max-height:760px;}theme-editor[data-loading] live-preview::after{content:'';width:50px;height:50px;border-radius:50%;border:5px solid hsl(0 0% 100% / .4);border-top-color:#fff;animation:iframeLoad .6s linear infinite;position:absolute;margin:auto;}@keyframes iframeLoad{100%{transform:rotate(360deg);}}theme-editor[data-loading] live-preview iframe{opacity:0;}.editor__form{display:grid;grid-template-columns:auto 1fr;background:var(--panel--ba-co);color:var(--panel--co);box-shadow:hsl(0 0% 0% / .08) calc(var(--i-lang-dir) * -2px) 0px 0px;font-family:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:14px;line-height:1.5;position:relative;}editor-panels{display:grid;grid-template-rows:1fr auto;grid-template-areas:'panel' 'footer';overflow:hidden;height:100%;}editor-buttons{border:0px solid var(--panel--bo-co);border-inline-end-width:1px;padding:6px;display:flex;flex-direction:column;}editor-buttons div{display:grid;gap:6px;flex:0 0 auto;}@media (min-width:701px){editor-buttons div:not(:last-of-type){margin-bottom:2em;padding-bottom:2em;border-bottom:1px solid var(--panel--bo-co);}}editor-buttons :is(a, button){position:relative;width:42px;height:42px;display:flex;align-items:center;justify-content:center;gap:.8em;border-radius:4px;color:inherit;}@media (any-hover:hover){editor-buttons :where(:is(a, button):hover){background-color:var(--panel--ba-co-alt);}}editor-buttons [data-active], [data-ips-scheme="light"] [data-ips-prefers-color-scheme="light"], [data-ips-scheme="dark"] [data-ips-prefers-color-scheme="dark"]{background-color:var(--panel--ba-co-active);}editor-buttons [type="submit"]{background:#46c371;color:#fff;}.editor-buttons__tooltip{position:absolute;inset-inline-end:calc(100% + 10px);top:50%;background:var(--vte-tooltip);color:#fff;padding:.4em 1em;border-radius:4px;white-space:nowrap;pointer-events:none;font-weight:bold;font-size:12px;transform:translateY(-50%);transition:.1s;}.editor-buttons__tooltip::after{content:'';border:5px solid transparent;border-inline-start-color:var(--vte-tooltip);position:absolute;inset-inline-start:100%;top:50%;transform:translateY(-50%);}editor-buttons :is(a, button):not(:hover) .editor-buttons__tooltip{transform:translateY(-50%) translateX(calc(-20px * var(--i-lang-dir)));opacity:0;}@media(hover:none){.editor-buttons__tooltip{display:none;}}editor-buttons [data-active] :is(.fa-lightbulb, .fa-moon){font-weight:900;}.editor-buttons__text{font-weight:600;}editor-panel{grid-area:panel;--panel-direction:1;display:flex;flex-direction:column;transition-property:opacity, transform;transition-duration:.3s;background-color:var(--panel--ba-co);}[data-panel-prev]{--panel-direction:-1;}editor-panel[aria-hidden="true"]{opacity:0;pointer-events:none;transform:translateX(calc(30% * var(--panel-direction)));}editor-panel[aria-hidden="false"]{z-index:1;}editor-panel > *{flex:0 0 auto;}editor-panel header{padding:clamp(1.2em, 5vw, 2em);}editor-panel header :is(h1, h2, h3, h4){font-weight:600;color:var(--panel--co_hard);font-size:1.4em;line-height:1.2;}editor-panel header p{font-weight:500;color:var(--panel--co_soft);margin-top:.4em;}[data-panel-nav="back"]{color:var(--panel--co);padding:1.4em;text-transform:uppercase;font-weight:600;font-size:.9em;outline-offset:-2px;}[data-panel-nav="back"]::before{content:'\2190';margin-inline-end:.5em;transition:tLine truncated
|
||||
html{overflow:hidden;}[data-ips-scheme="light"] theme-editor{--panel--ba-co:hsl(220 20% 100%);--panel--ba-co-alt:hsl(220 20% 96%);--panel--ba-co-active:hsl(220 20% 88%);--panel--co:hsl(220 20% 30%);--panel--co_soft:hsl(220 20% 50%);--panel--co_hard:hsl(220 20% 0%);--panel--bo-co:hsl(220 20% 80%);--vte-tooltip:hsl(220 20% 20%);}[data-ips-scheme="dark"] theme-editor{--panel--ba-co:hsl(220 10% 12%);--panel--ba-co-alt:hsl(220 10% 23%);--panel--ba-co-active:hsl(220 10% 30%);--panel--co:hsl(220 10% 70%);--panel--co_soft:hsl(220 10% 50%);--panel--co_hard:hsl(220 10% 90%);--panel--bo-co:hsl(220 10% 30%);--vte-tooltip:hsl(220 10% 40%);}theme-editor{display:grid;grid-template-columns:1fr clamp(370px, 18vw, 450px);position:fixed;top:0;left:0;width:100%;height:100%;font-weight:normal;}theme-editor::-webkit-scrollbar{display:none;}theme-editor button{touch-action:manipulation;}theme-editor .i-color_soft{color:var(--panel--co_soft);}theme-editor .i-color_hard{color:var(--panel--co_hard);}live-preview{background:oklch(32% calc(clamp(0, 100 - var(--i-base-c), 1) * 5%) var(--i-base-h));display:flex;justify-content:center;align-items:center;position:relative;}live-preview iframe{width:100%;height:100%;max-width:100vw;max-height:100vh;transition:.5s;background:var(--panel--ba-co);}:is([data-workspace-size="small"], [data-workspace-size="medium"]) live-preview iframe{max-width:1180px;max-height:820px;height:calc(100vh - 20px);width:calc(100% - 20px);border-radius:10px;}[data-workspace-size="small"] live-preview iframe{max-width:393px;max-height:760px;}theme-editor[data-loading] live-preview::after{content:'';width:50px;height:50px;border-radius:50%;border:5px solid hsl(0 0% 100% / .4);border-top-color:#fff;animation:iframeLoad .6s linear infinite;position:absolute;margin:auto;}@keyframes iframeLoad{100%{transform:rotate(360deg);}}theme-editor[data-loading] live-preview iframe{opacity:0;}.editor__form{display:grid;grid-template-columns:auto 1fr;background:var(--panel--ba-co);color:var(--panel--co);box-shadow:hsl(0 0% 0% / .08) calc(var(--i-lang-dir) * -2px) 0px 0px;font-family:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:14px;line-height:1.5;position:relative;}editor-panels{display:grid;grid-template-rows:1fr auto;grid-template-areas:'panel' 'footer';overflow:hidden;height:100%;}editor-buttons{border:0px solid var(--panel--bo-co);border-inline-end-width:1px;padding:6px;display:flex;flex-direction:column;}editor-buttons div{display:grid;gap:6px;flex:0 0 auto;}@media (min-width:701px){editor-buttons div:not(:last-of-type){margin-bottom:2em;padding-bottom:2em;border-bottom:1px solid var(--panel--bo-co);}}editor-buttons :is(a, button){position:relative;width:42px;height:42px;display:flex;align-items:center;justify-content:center;gap:.8em;border-radius:4px;color:inherit;}@media (any-hover:hover){editor-buttons :where(:is(a, button):hover){background-color:var(--panel--ba-co-alt);}}editor-buttons [data-active], [data-ips-scheme="light"] [data-ips-prefers-color-scheme="light"], [data-ips-scheme="dark"] [data-ips-prefers-color-scheme="dark"]{background-color:var(--panel--ba-co-active);}editor-buttons [type="submit"]{background:#46c371;color:#fff;}.editor-buttons__tooltip{position:absolute;inset-inline-end:calc(100% + 10px);top:50%;background:var(--vte-tooltip);color:#fff;padding:.4em 1em;border-radius:4px;white-space:nowrap;pointer-events:none;font-weight:bold;font-size:12px;transform:translateY(-50%);transition:.1s;}.editor-buttons__tooltip::after{content:'';border:5px solid transparent;border-inline-start-color:var(--vte-tooltip);position:absolute;inset-inline-start:100%;top:50%;transform:translateY(-50%);}editor-buttons :is(a, button):not(:hover) .editor-buttons__tooltip{transform:translateY(-50%) translateX(calc(-20px * var(--i-lang-dir)));opacity:0;}@media(hover:none){.editor-buttons__tooltip{display:none;}}editor-buttons [data-active] :is(.fa-lightbulb, .fa-moon){font-weight:900;}.editor-buttons__text{font-weight:600;}editor-panel{grid-area:panel;--panel-direction:1;display:flex;flex-direction:column;transition-property:opacity, transform;transition-duration:.3s;background-color:var(--panel--ba-co);}[data-panel-prev]{--panel-direction:-1;}editor-panel[aria-hidden="true"]{opacity:0;pointer-events:none;transform:translateX(calc(30% * var(--panel-direction)));}editor-panel[aria-hidden="false"]{z-index:1;}editor-panel > *{flex:0 0 auto;}editor-panel header{padding:clamp(1.2em, 5vw, 2em);}editor-panel header :is(h1, h2, h3, h4){font-weight:600;color:var(--panel--co_hard);font-size:1.4em;line-height:1.2;}editor-panel header p{font-weight:500;color:var(--panel--co_soft);margin-top:.4em;}[data-panel-nav="back"]{color:var(--panel--co);padding:1.4em;text-transform:uppercase;font-weight:600;font-size:.9em;outline-offset:-2px;}[data-panel-nav="back"]::before{content:'\2190';margin-inline-end:.5em;transition:tLine truncated
|
||||
@@ -1 +1 @@
|
||||
*{margin:0;padding:0;}*, ::before, ::after{box-sizing:border-box;min-width:0;min-height:0;}html{-webkit-text-size-adjust:100%;accent-color:var(--i-primary);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;}hr{color:inherit;}hr, iframe, fieldset{border-width:0;}iframe:where([src*="youtube."], [src*="youtube-nocookie."], [src*="vimeo."]){width:100%;height:auto;aspect-ratio:16/9;}img, svg{border:0;display:inline-block;max-width:100%;height:auto;vertical-align:top;}:where(img::before){display:block;overflow:hidden;height:100%;}h1, h2, h3, h4, h5, h6{font-size:inherit;font-weight:inherit;}b, strong{font-weight:bolder;}menu, ol, ul, summary{list-style-type:none;}blockquote, q{quotes:none;}table{border-collapse:collapse;border-spacing:0;}input, textarea, select, button{background:none;border:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;text-align:inherit;text-transform:inherit;}textarea, select{-webkit-appearance:none;appearance:none;box-shadow:none;}textarea{display:block;width:100%;}select{cursor:pointer;}[type="search"]{-webkit-appearance:none;appearance:none;}[type="date"], [type="time"]{accent-color:currentColor;}::placeholder{color:inherit;opacity:.5;}button, [type="submit"], summary{-webkit-appearance:none;appearance:none;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;}button{text-align:inherit;}details summary::-webkit-details-marker{display:none;}:focus{outline-color:transparent;}:focus-visible{outline:var(--i-outline-width) var(--i-outline-style) var(--i-outline-color);outline-offset:var(--i-outline-offset);}address{font-style:inherit;}dialog{border-width:0;margin:auto;}dialog:not([open]){display:none !important;}.sr-only, .ipsInvisible{border:0 !important;clip:rect(1px, 1px, 1px, 1px) !important;clip-path:inset(50%) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:1px !important;}[hidden]{display:none !important;}:root{--light__i-primary:hsl(220 85% 50%);--light__i-primary-relative-l:33;--light__i-secondary:hsl(220 49% 13%);--light__i-secondary-relative-l:10;--light__i-base:oklch(calc(var(--light__i-base-l) * 1%) calc(var(--light__i-base-c) * 1%) var(--light__i-base-h));--light__i-base-l:100;--light__i-base-c:30;--light__i-base-h:260;--dark__i-primary:hsl(215 85% 50%);--dark__i-primary-relative-l:37;--dark__i-secondary:hsl(215 18% 26%);--dark__i-secondary-relative-l:24;--dark__i-base:oklch(calc(var(--dark__i-base-l) * 1%) calc(var(--dark__i-base-c) * 1%) var(--dark__i-base-h));--dark__i-base-l:30;--dark__i-base-c:20;--dark__i-base-h:260;--set__i-default-scheme:system;--set__i-change-scheme:1;--set__i-logo--fo-fa:var(--i-font-family);--set__i-logo--fo-we:500;--set__i-desktop-logo--fo-si:18;--set__i-sidebar-ui-logo--fo-si:20;--set__i-mobile-logo--fo-si:18;--set__logo-light:;--set__logo-dark:;--set__i-logo--he:70;--set__i-sidebar-ui-logo--he:70;--set__mobile-logo-light:;--set__mobile-logo-dark:;--set__i-mobile-logo--he:70;--set__i-font-family:var(--i-font-family_system-ui);--set__i-font-size:14;--set__i-user-content-font-size:110;--set__i-position-logo:4;--set__i-position-navigation:5;--set__i-position-user:6;--set__i-position-breadcrumb:7;--set__i-position-search:9;--set__i-header-top--he:50;--set__i-header-primary--he:100;--set__i-header-secondary--he:50;--set__i-nav-bar-icons:0;--set__i-mobile-header--he:60;--set__i-sidebar-ui-header--he:65;--set__i-sidebar-width:350;--set__i-flip-sidebar:0;--set__i-sticky-sidebar:1;--set__i-layout-width:1500;--set__i-avatar-radius:1;--set__i-design-border:1;--set__i-design-radius:8;--set__i-design-shadow:2;--set__i-link-panels:1;--set__i-mobile-icons-location:footer;--set__i-mobile-footer-labels:1;--light__i-color_root:var(--i-base-contrast_3);--dark__i-color_root:var(--i-base-contrast_4);--light__i-color_soft:var(--i-base-contrast_1);--dark__i-color_soft:var(--i-base-contrast_2);--light__i-color_hard:var(--i-base-contrast_6);--dark__i-color_hard:var(--i-base-contrast_6);--light__i-link--co:var(--i-base-contrast_5);--dark__i-link--co:var(--i-base-contrast_5);--light__i-link-hover--co:var(--i-color_primary);--dark__i-link-hover--co:var(--i-color_primary);--light__i-headerTop--ba-co:var(--i-base-contrast_5);--dark__i-headerTop--ba-co:var(--i-base_3);--light__i-headerTop--co:var(--i-base_1);--dark__i-headerTop--co:var(--i-base-contrast_6);--light__i-headerPrimary--ba-co:var(--i-base-contrast_4);--dark__i-headerPrimary--ba-co:var(--i-base_3);--light__i-headerPrimary--co:var(--i-base_1);--dark__i-headerPrimary--co:var(--i-base-contrast_6);--light__i-headerSecondary--ba-co:var(--i-base-contrast_5);--dark__i-headerSecondary--ba-co:var(--i-base_4);--light__i-headerSecondary--co:var(--i-base_1);--dark__i-headerSecondary--co:var(--i-base-contrast_5);--light__i-headerMobile--ba-co:var(--i-base_1);--dark__i-headerMobile--ba-Line truncated
|
||||
*, ::before, ::after{margin:0;padding:0;box-sizing:border-box;min-width:0;min-height:0;}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;accent-color:var(--i-primary);}hr{color:inherit;}hr, iframe, fieldset{border-width:0;}iframe:where([src*="youtube."], [src*="youtube-nocookie."], [src*="vimeo."]){width:100%;height:auto;aspect-ratio:16/9;}img, svg{border:0;display:inline-block;max-width:100%;height:auto;vertical-align:top;}:where(img::before){display:block;overflow:hidden;height:100%;}h1, h2, h3, h4, h5, h6{font:inherit;}b, strong{font-weight:bolder;}menu, ol, ul, summary{list-style-type:none;}blockquote, q{quotes:none;}table{border-collapse:collapse;border-spacing:0;}input, textarea, select, button{background:none;border:0;color:inherit;font:inherit;line-height:inherit;text-align:inherit;text-transform:inherit;}textarea, select{-webkit-appearance:none;appearance:none;box-shadow:none;}textarea{display:block;width:100%;}select{cursor:pointer;font-weight:normal;}[type="search"]{-webkit-appearance:none;appearance:none;}[type="date"], [type="time"]{accent-color:currentColor;}::placeholder{color:inherit;opacity:.5;}button, [type="submit"], summary{-webkit-appearance:none;appearance:none;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;}button{text-align:inherit;}details summary::-webkit-details-marker{display:none;}:focus{outline-color:transparent;}:focus-visible{outline:var(--i-outline-width) var(--i-outline-style) var(--i-outline-color);outline-offset:var(--i-outline-offset);}address{font-style:inherit;}dialog{border-width:0;margin:auto;}dialog:not([open]){display:none !important;}.sr-only, .ipsInvisible{border:0 !important;clip:rect(1px, 1px, 1px, 1px) !important;clip-path:inset(50%) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:1px !important;}[hidden]{display:none !important;}:root{--light__i-primary:hsl(220 85% 50%);--light__i-primary-relative-l:33;--light__i-secondary:hsl(220 49% 13%);--light__i-secondary-relative-l:10;--light__i-base:oklch(calc(var(--light__i-base-l) * 1%) calc(var(--light__i-base-c) * 1%) var(--light__i-base-h));--light__i-base-l:100;--light__i-base-c:30;--light__i-base-h:260;--dark__i-primary:hsl(215 85% 50%);--dark__i-primary-relative-l:37;--dark__i-secondary:hsl(215 18% 26%);--dark__i-secondary-relative-l:24;--dark__i-base:oklch(calc(var(--dark__i-base-l) * 1%) calc(var(--dark__i-base-c) * 1%) var(--dark__i-base-h));--dark__i-base-l:30;--dark__i-base-c:20;--dark__i-base-h:260;--set__i-default-scheme:system;--set__i-change-scheme:1;--set__i-logo--fo-fa:var(--i-font-family);--set__i-logo--fo-we:500;--set__i-desktop-logo--fo-si:18;--set__i-sidebar-ui-logo--fo-si:20;--set__i-mobile-logo--fo-si:18;--set__logo-light:;--set__logo-dark:;--set__i-logo--he:70;--set__i-sidebar-ui-logo--he:70;--set__mobile-logo-light:;--set__mobile-logo-dark:;--set__i-mobile-logo--he:70;--set__i-font-family:var(--i-font-family_system-ui);--set__i-font-size:14;--set__i-user-content-font-size:110;--set__i-position-logo:4;--set__i-position-navigation:5;--set__i-position-user:6;--set__i-position-breadcrumb:7;--set__i-position-search:9;--set__i-header-top--he:50;--set__i-header-primary--he:100;--set__i-header-secondary--he:50;--set__i-nav-bar-icons:0;--set__i-mobile-header--he:60;--set__i-sidebar-ui-header--he:65;--set__i-sidebar-width:350;--set__i-flip-sidebar:0;--set__i-sticky-sidebar:1;--set__i-layout-width:1500;--set__i-avatar-radius:1;--set__i-design-border:1;--set__i-design-radius:8;--set__i-design-shadow:2;--set__i-link-panels:1;--set__i-mobile-icons-location:footer;--set__i-mobile-footer-labels:1;--light__i-color_root:var(--i-base-contrast_3);--dark__i-color_root:var(--i-base-contrast_4);--light__i-color_soft:var(--i-base-contrast_1);--dark__i-color_soft:var(--i-base-contrast_2);--light__i-color_hard:var(--i-base-contrast_6);--dark__i-color_hard:var(--i-base-contrast_6);--light__i-link--co:var(--i-base-contrast_6);--dark__i-link--co:var(--i-base-contrast_6);--light__i-link-hover--co:var(--i-color_primary);--dark__i-link-hover--co:var(--i-color_primary);--light__i-headerTop--ba-co:var(--i-base-contrast_5);--dark__i-headerTop--ba-co:var(--i-base_3);--light__i-headerTop--co:var(--i-base_1);--dark__i-headerTop--co:var(--i-base-contrast_6);--light__i-headerPrimary--ba-co:var(--i-base-contrast_4);--dark__i-headerPrimary--ba-co:var(--i-base_3);--light__i-headerPrimary--co:var(--i-base_1);--dark__i-headerPrimary--co:var(--i-base-contrast_6);--light__i-headerSecondary--ba-co:var(--i-base-contrast_5);--dark__i-headerSecondary--ba-co:var(--i-base_4);--light__i-headerSecondary--co:var(--i-base_1);--dark__i-headerSecondary--co:var(--i-base-contrast_5);--light__i-headerMobile--ba-co:var(--i-base_1);--dark__i-headerMobile--ba-co:var(--i-base_2);--light__i-headerMobile--co:var(--i-base-contrast_5);--dark__i-headerMobile--co:var(--i-base-contrast_5);--light__i-Line truncated
|
||||
@@ -1 +1 @@
|
||||
.ipsData--download-category{--icon:"\f019";}.ipsCarousel--downloads-file-screenshots{--i-carousel--pa:2em;--i-column-gap:1em;}.ipsCarousel--downloads-file-screenshots + .ipsCarouselNav{margin-bottom:1em;}.cFilePrice{color:var(--i-color_secondary);text-transform:uppercase;font-weight:500;}#elDownloadStatsLatest > .ipsWidget_latestItem{margin-inline-start:85px;}#elDownloadsSubmit_progress > .ipsProgress{height:32px;}#elDownloadsSubmit .ipsUploader__row{border:1px solid var(--i-background_3);}.cDownloadsPrimaryRadio{background:var(--i-background_1);border-radius:40px;position:absolute;top:110px;inset-inline-start:1em;padding:.3em .8em .3em .3em;font-size:max(11px, .8em) !important;}.ipsUploader__row.ipsAttach_error .cDownloadsPrimaryRadio{display:none;}#elURLFiles, #elImportFiles, #elURLScreenshots{position:relative;}
|
||||
.ipsData--download-category{--icon:"\f019";}.cFilePrice{color:var(--i-color_secondary);text-transform:uppercase;font-weight:500;}#elDownloadStatsLatest > .ipsWidget_latestItem{margin-inline-start:85px;}#elDownloadsSubmit_progress > .ipsProgress{height:32px;}#elDownloadsSubmit .ipsUploader__row{border:1px solid var(--i-background_3);}.cDownloadsPrimaryRadio{background:var(--i-background_1);border-radius:40px;position:absolute;top:110px;inset-inline-start:1em;padding:.3em .8em .3em .3em;font-size:max(11px, .8em) !important;}.ipsUploader__row.ipsAttach_error .cDownloadsPrimaryRadio{display:none;}#elURLFiles, #elImportFiles, #elURLScreenshots{position:relative;}[data-controller="downloads.front.view.download"] .ipsData__title [data-role="editableTitle"]:hover{background:var(--i-background_selected);color:var(--i-color_hard);}
|
||||
@@ -1 +1 @@
|
||||
.ipsData--forum-grid{}.ipsData--forum-grid .ipsData__stats + .ipsData__last{padding-top:1em;}.ipsCategoryWithFeed{container:ipsCategoryWithFeed / inline-size;}.ipsCategoryWithFeed__item{border-top:6px solid var(--i-featured, var(--i-background_6));}.ipsData--forumFeedViewParent{grid-template-columns:1fr;}.ipsData--forumFeedViewParent .ipsData__stats{font-weight:550;color:var(--i-color_root);}@container ipsCategoryWithFeed (min-width:650.1px){.ipsCategoryWithFeed__item{display:grid;grid-template-columns:clamp(280px, 33%, 350px) 1fr;}.ipsCategoryWithFeed__meta{border-inline-end:1px solid var(--i-background_4);}.ipsData--forumFeedViewParent{height:100%;}.ipsData--forumFeedView{--i-data--padding:1.1em;--i-data--cell-spacing:1em;--i-data--icon-width:30px;height:100%;display:flex;flex-direction:column;}}@container ipsCategoryWithFeed (max-width:650px){.ipsData.ipsData--forumFeedViewParent{--i-data--padding:1.2em;--i-data--icon-ratio:1;}.ipsData--forumFeedViewParent .ipsData__item{flex-direction:row;align-items:start;}.ipsData--forumFeedViewParent .ipsData__image{flex:0 0 clamp(60px, 17vw, 120px);margin:0;}.ipsData--forumFeedView{--i-data--gap:1.2em;padding:1em var(--i-data--gap);display:flex;gap:1px;overflow:auto;scroll-snap-type:x mandatory;scroll-padding:var(--i-data--gap);scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--i-co) 20%, transparent) transparent;}.ipsData--forumFeedView .ipsData__item{flex:0 0 min(80vw, 400px);border-width:0;scroll-snap-align:start;outline:1px solid var(--i-background_4);}.ipsData--forumFeedView .ipsData__item:first-child{border-start-start-radius:min(var(--i-design-radius), 6px);border-end-start-radius:min(var(--i-design-radius), 6px);}.ipsData--forumFeedView .ipsData__item:last-child{border-start-end-radius:min(var(--i-design-radius), 6px);border-end-end-radius:min(var(--i-design-radius), 6px);}.ipsData--forumFeedView .ipsData__icon{align-self:center;}.ipsData--forumFeedView .ipsData__title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}}.cTopicHovercard .cTopicHovercard_container{height:200px;overflow:auto;}.ipsData--snippet-topic-list .ipsReactOverview--reactions a{display:block;}.ipsData--snippet-topic-list .ipsReactOverview--reactions img{height:1.3em;display:block;}.ipsData--snippet-topic-list .ipsReactOverview--points{display:flex;align-items:center;}.ipsData--snippet-topic-list .ipsReactOverview--points p{margin-inline-start:.6em;}.ipsData__item--snippet .ipsReactOverview--none{display:none;}.cForumMiniList_wrapper{padding:.5em;font-weight:500;}.cForumMiniList :where(a){display:flex;align-items:center;gap:.6em;padding:.5em 1em;color:var(--i-color_root);border-radius:var(--i-design-radius);}:where(.cForumMiniList a:hover){background-color:var(--i-background_2);}.cForumMiniList__selected{background-color:var(--i-background_3);}.cForumMiniList [data-ips-unread]{color:var(--i-color_hard);font-weight:700;}.cForumMiniList [data-category] > a{font-size:1.3em;font-weight:600;}.cForumMiniList [data-category]:not(:first-child){margin-top:1em;}.cForumMiniList .cForumMiniList .cForumMiniList{margin-inline-start:1.5em;}.cForumMiniList__count{font-size:.85em;flex:0 0 auto;color:var(--i-color_soft);margin-inline-start:auto;}.cForumMiniList .cForumMiniList__blob{background:var(--i-featured, var(--i-background_6));color:#fff;flex:0 0 auto;font-size:16px;width:1em;height:1em;border-radius:5px;display:inline-grid;place-items:center;transform:scale(.5);transition:.2s;}.cForumMiniList .cForumMiniList__blob [class*="fa-"]{display:none;font-size:.6em;}.cForumMiniList .cForumMiniList__selected > .cForumMiniList__blob{opacity:1;transform:scale(1);}.cForumMiniList .cForumMiniList__selected > .cForumMiniList__blob [class*="fa-"]{display:block;}.cForumMiniList [data-ips-read] > .cForumMiniList__blob{background-color:var(--i-background_6);}@media screen and (max-width:979px){.cForumMiniList_wrapper{display:none;}.ipsDialog #elFluidFormFilters{border:0;}.ipsDialog .cForumMiniList_wrapper, .cForumMiniList{display:block !important;}}
|
||||
.ipsData--forum-grid{}.ipsData--forum-grid .ipsData__stats + .ipsData__last{padding-top:1em;}.ipsCategoryWithFeed{container:ipsCategoryWithFeed / inline-size;}.ipsCategoryWithFeed__item{border-top:6px solid var(--i-featured, var(--i-background_6));}.ipsData--forumFeedViewParent{grid-template-columns:1fr;}.ipsData--forumFeedViewParent .ipsData__stats{font-weight:550;color:var(--i-color_root);}@container ipsCategoryWithFeed (min-width:650.1px){.ipsCategoryWithFeed__item{display:grid;grid-template-columns:clamp(280px, 33%, 350px) 1fr;}.ipsCategoryWithFeed__meta{border-inline-end:1px solid var(--i-background_4);}.ipsData--forumFeedViewParent{height:100%;}.ipsCategoryWithFeed__item .ipsTime__long{display:revert;}.ipsCategoryWithFeed__item .ipsTime__short{display:none;}}@container ipsCategoryWithFeed (max-width:650px){.ipsData.ipsData--forumFeedViewParent{--i-data--padding:1.2em;--i-data--icon-ratio:1;}.ipsData--forumFeedViewParent .ipsData__item{flex-direction:row;align-items:start;}.ipsData--forumFeedViewParent .ipsData__image{flex:0 0 clamp(60px, 17vw, 120px);margin:0;}.ipsData--forumFeedView{--i-data--gap:1.2em;padding:1em var(--i-data--gap);display:flex;gap:1px;overflow:auto;scroll-snap-type:x mandatory;scroll-padding:var(--i-data--gap);scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--i-co) 20%, transparent) transparent;}.ipsData--forumFeedView .ipsData__item{flex:0 0 min(80vw, 400px);border-width:0;scroll-snap-align:start;outline:1px solid var(--i-background_4);}.ipsData--forumFeedView .ipsData__item:first-child{border-start-start-radius:min(var(--i-design-radius), 6px);border-end-start-radius:min(var(--i-design-radius), 6px);}.ipsData--forumFeedView .ipsData__item:last-child{border-start-end-radius:min(var(--i-design-radius), 6px);border-end-end-radius:min(var(--i-design-radius), 6px);}.ipsData--forumFeedView .ipsData__icon{align-self:center;}.ipsData--forumFeedView .ipsData__title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}}.cTopicHovercard .cTopicHovercard_container{height:200px;overflow:auto;}.ipsData--snippet-topic-list .ipsReactOverview--reactions a{display:block;}.ipsData--snippet-topic-list .ipsReactOverview--reactions img{height:1.3em;display:block;}.ipsData--snippet-topic-list .ipsReactOverview--points{display:flex;align-items:center;}.ipsData--snippet-topic-list .ipsReactOverview--points p{margin-inline-start:.6em;}.ipsData__item--snippet .ipsReactOverview--none{display:none;}.cForumMiniList_wrapper{padding:.5em;font-weight:500;}.cForumMiniList :where(a){display:flex;align-items:center;gap:.6em;padding:.5em 1em;color:var(--i-color_root);border-radius:var(--i-design-radius);}:where(.cForumMiniList a:hover){background-color:var(--i-background_2);}.cForumMiniList__selected{background-color:var(--i-background_3);}.cForumMiniList [data-ips-unread]{color:var(--i-color_hard);font-weight:700;}.cForumMiniList [data-category] > a{font-size:1.3em;font-weight:600;}.cForumMiniList [data-category]:not(:first-child){margin-top:1em;}.cForumMiniList .cForumMiniList .cForumMiniList{margin-inline-start:1.5em;}.cForumMiniList__count{font-size:.85em;flex:0 0 auto;color:var(--i-color_soft);margin-inline-start:auto;}.cForumMiniList .cForumMiniList__blob{background:var(--i-featured, var(--i-background_6));color:#fff;flex:0 0 auto;font-size:16px;width:1em;height:1em;border-radius:5px;display:inline-grid;place-items:center;transform:scale(.5);transition:.2s;}.cForumMiniList .cForumMiniList__blob [class*="fa-"]{display:none;font-size:.6em;}.cForumMiniList .cForumMiniList__selected > .cForumMiniList__blob{opacity:1;transform:scale(1);}.cForumMiniList .cForumMiniList__selected > .cForumMiniList__blob [class*="fa-"]{display:block;}.cForumMiniList [data-ips-read] > .cForumMiniList__blob{background-color:var(--i-background_6);}@media screen and (max-width:979px){.cForumMiniList_wrapper{display:none;}.ipsDialog #elFluidFormFilters{border:0;}.ipsDialog .cForumMiniList_wrapper, .cForumMiniList{display:block !important;}}
|
||||
@@ -1 +1 @@
|
||||
.cTopicOverviewContainer{container-type:inline-size;container-name:cTopicOverview;overflow:hidden;}.cTopicOverviewContainer.ipsBox{margin:1em 0;}.cTopicOverview, .cTopicOverview__content{display:flex;flex-wrap:wrap;gap:1px;flex:9999 1 auto;}.cTopicOverview > *, .cTopicOverview__item{outline:1px solid var(--i-background_3);}.cTopicOverview__item{padding:1.5em;flex:1 1 max(300px, 40%);}.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__content{flex-wrap:nowrap;}.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__item{flex:1 0 auto;}@container cTopicOverview (min-width:500px){.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__content{flex-wrap:nowrap;overflow:hidden;mask-image:linear-gradient(to left, transparent, #000 300px);}}@container cTopicOverview (max-width:750px){.cTopicOverview{display:grid;}}.cTopicOverview--main:not(.cTopicOverview--expanded) :is(.cTopicOverview__item--popularPosts, .cTopicOverview__item--helpfulPosts, .cTopicOverview__item--images){display:none;}@container cTopicOverview (max-width:499px){.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__item:not(.cTopicOverview__item--stats){display:none;}}.cTopicOverview__title{font-weight:600;margin-bottom:1em;font-size:1.2em;color:var(--i-color_hard);}.cTopicOverview__toggle{flex:1 0 auto;padding:.5em;text-align:center;}.cTopicOverview__toggle i[class*=" fa-"]{transition:0.2s all ease-in-out;}.cTopicOverview--expanded .cTopicOverview__toggle i[class*=" fa-"]{transform:rotate(180deg);}.cTopicOverview__toggle:hover{background:var(--i-background_2);}.ipsLayout__secondary-column .cTopicOverview__toggle{display:none;}.cTopicOverview__item--stats{display:flex;gap:1em 2em;text-align:center;}.cTopicOverview--expanded .cTopicOverview__item--stats{flex:1 1 100%;}.cTopicOverview__item--stats > li{flex:1 0 auto;display:grid;place-content:center;}.cTopicOverview__dataList{display:flex;flex-wrap:wrap;gap:2em;}.cTopicOverview__dataList > *{flex:1 1 170px;}:is(.cTopicOverview__item--topPosters, .cTopicOverview__item--popularDays) .cTopicOverview__dataList > *{flex-basis:max(120px, 40%);}.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__item--topPosters .cTopicOverview__dataList{gap:1em;}.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__dataList > *{flex:0 0 auto;}.cTopicOverview--main:not(.cTopicOverview--expanded) .ipsPhotoPanel__text{display:none;}.cTopicOverview__imageGrid{display:grid;grid-template-columns:repeat(auto-fill, minmax(80px, 1fr));gap:15px;}.ipsTopicMeta{margin-bottom:1em;padding:.5em 1em;display:grid;gap:.5em;color:var(--i-color_soft);font-weight:500;font-size:.9em;}@supports (color:oklch(from var(--i) clamp(0, (.60 - l) * 1000, 1) c h)) and (color:oklch(from red l c h)){.ipsTopicMeta:not(.ipsBox *){color:oklch(from var(--i-body--ba-co) clamp(0, (.60 - l) * 1000, 1) c h);}}.ipsBox .ipsTopicMeta{margin:0;border-top:1px solid var(--i-background_3);background:var(--i-background_2)}.ipsTopicMeta a{color:inherit;}@media (min-width:768px){.ipsEntry--post ~ .ipsTopicMeta{padding-inline-start:var(--post-column--fl-ba, 240px);}}.ipsTopicMeta__time{margin-inline-end:var(--i-sp_2);}#ipsTopicView[data-ips-topic-ui="traditional"][data-ips-topic-first-page="true"] [data-ips-hide="traditional-first"], #ipsTopicView[data-ips-topic-ui="minimal"] [data-ips-hide="minimal"], #ipsTopicView[data-ips-topic-comments="helpful"] .ipsTopicMeta{display:none;}.ipsMessage--assigned .ipsMessage__icon{top:calc(50% - .5em);}
|
||||
.cTopicOverviewContainer{container-type:inline-size;container-name:cTopicOverview;overflow:hidden;}.cTopicOverviewContainer.ipsBox{margin:1em 0;}.cTopicOverview, .cTopicOverview__content{display:flex;flex-wrap:wrap;gap:1px;flex:9999 1 auto;}.cTopicOverview > *, .cTopicOverview__item{outline:1px solid var(--i-background_3);}.cTopicOverview__item{padding:1.5em;flex:1 1 max(300px, 40%);}.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__content{flex-wrap:nowrap;}.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__item{flex:1 0 auto;}@container cTopicOverview (min-width:500px){.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__content{flex-wrap:nowrap;overflow:hidden;mask-image:linear-gradient(to left, transparent, #000 300px);}}@container cTopicOverview (max-width:750px){.cTopicOverview{display:grid;}}.cTopicOverview--main:not(.cTopicOverview--expanded) :is(.cTopicOverview__item--popularPosts, .cTopicOverview__item--helpfulPosts, .cTopicOverview__item--images){display:none;}@container cTopicOverview (max-width:499px){.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__item:not(.cTopicOverview__item--stats){display:none;}}.cTopicOverview__title{font-weight:600;margin-bottom:1em;font-size:1.2em;color:var(--i-color_hard);}.cTopicOverview__toggle{flex:1 0 auto;padding:.5em;text-align:center;}.cTopicOverview__toggle i[class*=" fa-"]{transition:0.2s all ease-in-out;}.cTopicOverview--expanded .cTopicOverview__toggle i[class*=" fa-"]{transform:rotate(180deg);}.cTopicOverview__toggle:hover{background:var(--i-background_2);}.ipsLayout__secondary-column .cTopicOverview__toggle{display:none;}.cTopicOverview__item--stats{display:flex;flex-wrap:wrap;gap:1em 2em;text-align:center;}.cTopicOverview--expanded .cTopicOverview__item--stats{flex:1 1 100%;}.cTopicOverview__item--stats > li{flex:1 0 auto;display:grid;place-content:center;}.cTopicOverview__dataList{display:flex;flex-wrap:wrap;gap:2em;}.cTopicOverview__dataList > *{flex:1 1 170px;}:is(.cTopicOverview__item--topPosters, .cTopicOverview__item--popularDays) .cTopicOverview__dataList > *{flex-basis:max(120px, 40%);}.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__item--topPosters .cTopicOverview__dataList{gap:1em;}.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__dataList > *{flex:0 0 auto;}.cTopicOverview--main:not(.cTopicOverview--expanded) .ipsPhotoPanel__text{display:none;}.cTopicOverview__imageGrid{display:grid;grid-template-columns:repeat(auto-fill, minmax(80px, 1fr));gap:15px;}.ipsTopicMeta{margin-bottom:1em;padding:.5em 1em;display:grid;gap:.5em;color:var(--i-color_soft);font-weight:500;font-size:.9em;}@supports (color:oklch(from var(--i) clamp(0, (.60 - l) * 1000, 1) c h)) and (color:oklch(from red l c h)){.ipsTopicMeta:not(.ipsBox *){color:oklch(from var(--i-body--ba-co) clamp(0, (.60 - l) * 1000, 1) c h);}}.ipsBox .ipsTopicMeta{margin:0;border-top:1px solid var(--i-background_3);background:var(--i-background_2)}.ipsTopicMeta a{color:inherit;}@media (min-width:768px){.ipsEntry--post ~ .ipsTopicMeta{padding-inline-start:var(--post-column--fl-ba, 240px);}}.ipsTopicMeta__time{margin-inline-end:var(--i-sp_2);}#ipsTopicView[data-ips-topic-ui="traditional"][data-ips-topic-first-page="true"] [data-ips-hide="traditional-first"], #ipsTopicView[data-ips-topic-ui="minimal"] [data-ips-hide="minimal"], #ipsTopicView[data-ips-topic-comments="helpful"] .ipsTopicMeta{display:none;}.ipsMessage--assigned .ipsMessage__icon{top:calc(50% - .5em);}[data-ips-ad="topic_view"]{margin-bottom:1em;}
|
||||
@@ -1 +1 @@
|
||||
.ipsCarousel--gallery-featured{--i-column-gap:0em;border-radius:0 0 var(--i-box--bo-ra) var(--i-box--bo-ra);}.ipsCarousel--gallery-featured .ipsFigure{border-radius:0;}.elGalleryImage{display:grid;place-content:center;position:relative;}.cGalleryImageFade{position:absolute;bottom:1em;inset-inline-end:1em;transition:opacity 0.3s ease-in-out;opacity:0;}.elGalleryImage:hover .cGalleryImageFade, .elGalleryImage.cGalleryImageHover .cGalleryImageFade{opacity:1;}.elGalleryImage .ipsNsfwOverlay{position:absolute;inset:0;color:#fff;}.elGalleryImageNav{position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);display:flex;justify-content:space-between;pointer-events:none;}.elGalleryImageNav a{color:#fff;font-size:60px;width:1em;height:1em;display:grid;place-content:center;opacity:.4;transition:all 0.2s ease-in-out;z-index:100;pointer-events:auto;}.elGalleryImage:hover .elGalleryImageNav a{opacity:1;background:rgba(0,0,0,0.2);}.elGalleryImageNav i{font-size:.4em;}:is(.ipsData--gallery-categories, .ipsData--gallery-club-categories) .ipsTime__short{display:none;}:is(.ipsData--gallery-categories, .ipsData--gallery-club-categories) .ipsTime__long{display:revert;}.cGalleryImageThumbs{position:relative;background-color:oklch(25% calc(clamp(0, 100 - var(--i-base-c), 1) * 5%) var(--i-base-h));box-shadow:inset hsl(0 0% 100% / .1) 0px 1px 0px;border-radius:0 0 var(--i-box--bo-ra) var(--i-box--bo-ra);}@media (max-width:767px){.cGalleryImageThumbs{border-radius:0;}}.cGalleryAlbums > li:not( :last-child ){margin-bottom:7px;}.cGalleryViewImage{position:relative;}.cGalleryViewImage img[data-role="theImage"], #elGalleryVideo{margin:auto;position:relative;width:auto;height:auto;max-width:100%;max-height:100%;}.cGalleryViewImage [data-ipslightbox]{display:grid;cursor:zoom-in;height:clamp(300px, 60vh, 800px);}.cGalleryViewImage_controls{margin-inline-start:auto;}.cGalleryViewImage:hover .cGalleryNote{opacity:1;}.cGalleryNote{position:absolute;opacity:0;}.cGalleryNote_border{border:1px solid #000;height:100%;background:rgba(255,255,255,0.0001);}.cGalleryNote_border::after{content:'';position:absolute;inset:1px;display:block;border:1px solid #ccc;}.cGalleryNote_editing .cGalleryNote_border, .cGalleryNote_editing .cGalleryNote_border::after{border-style:dashed;opacity:1;}.cGalleryNote_editing{opacity:1 !important;}.cGalleryNote_editing .cGalleryNote_note{opacity:1 !important;display:block !important;width:280px;padding:12px;pointer-events:auto;z-index:1000;}.cGalleryNote_editing .cGalleryNote_note a{color:#fff;}.cGalleryNote_editing .cGalleryNote_note textarea{outline:1px solid currentColor;outline-offset:0px;padding:1em;}.cGalleryNote_note{width:max-content;max-width:250px;position:absolute;top:calc(100% + 5px);left:50%;transform:translateX(-50%);background:hsl(0 0% 0% / .6);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;font-weight:600;font-size:.9em;border-radius:5px;pointer-events:none;padding:10px;}.cGalleryNote_delete{position:absolute;top:-10px;inset-inline-end:-10px;width:1.5em;height:1.5em;display:grid;place-content:center;border-radius:50%;background:#000;border:1px solid currentColor;color:#fff;font-size:17px;}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;}.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle{display:none;}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0;}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0;}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%;}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%;}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px;}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px;}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px;}.ui-icon-gripsmall-diagonal-se{background:url( "../resources/core_84c1e40ea0e759e3f1505eb1788ddf3c_resizable.png" );}.ui-draggable{cursor:move;}.cGallerySearchAlbumThumbs, .cGalleryManagedAlbumThumbs{display:grid;gap:4px;grid-template-columns:repeat(auto-fill, minmax(40px, 1fr));}.cGallerySearchAlbumThumbs li:nth-child(20) ~ *{display:none;}.cGalleryManagedAlbumThumbs{margin-top:10px;}.cGalleryAlbums_recent{--_thumb:100px;--_gap:4px;padding-inline-start:calc(var(--_thumb) * 2 + var(--_gap));display:grid;grid-template-columns:repeat(auto-fill, minmax(var(--_thumb), 1fr));gap:var(--_gap);height:calc(var(--_thumb) * 2 + var(--_gap));position:relative;overflow:hidden;}.cGalleryAlbums_recent > li{height:var(--_thumb);position:relative;}.cGalleryAlbums_recent .ipsFigure{height:100%;}.cGalleryAlbums_recent .ipsFigure__footer{justify-self:end;padding:.5em;}.cGalleryAlbums_recent .ipsFigure__footer::before{display:none;}.cGalleryAlbums_recent > li:first-child{width:calc(var(--_thumb) * 2);height:calc(var(--_thumb) * 2);overflow:hidden;positioLine truncated
|
||||
.ipsCarousel--gallery-featured{--i-column-gap:0em;border-radius:0 0 var(--i-box--bo-ra) var(--i-box--bo-ra);}.ipsCarousel--gallery-featured .ipsFigure{border-radius:0;}.elGalleryImage{display:grid;place-content:center;position:relative;}.cGalleryImageFade{position:absolute;bottom:1em;inset-inline-end:1em;transition:opacity 0.3s ease-in-out;opacity:0;}.elGalleryImage:hover .cGalleryImageFade, .elGalleryImage.cGalleryImageHover .cGalleryImageFade{opacity:1;}.elGalleryImage .ipsNsfwOverlay{position:absolute;inset:0;color:#fff;}.elGalleryImageNav{position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);display:flex;justify-content:space-between;pointer-events:none;}.elGalleryImageNav a{color:#fff;font-size:60px;width:1em;height:1em;display:grid;place-content:center;opacity:.4;transition:all 0.2s ease-in-out;z-index:100;pointer-events:auto;}.elGalleryImage:hover .elGalleryImageNav a{opacity:1;background:rgba(0,0,0,0.2);}.elGalleryImageNav i{font-size:.4em;}:is(.ipsData--gallery-categories, .ipsData--gallery-club-categories) .ipsTime__short{display:none;}:is(.ipsData--gallery-categories, .ipsData--gallery-club-categories) .ipsTime__long{display:revert;}.cGalleryImageThumbs{position:relative;background-color:oklch(25% calc(clamp(0, 100 - var(--i-base-c), 1) * 5%) var(--i-base-h));box-shadow:inset hsl(0 0% 100% / .1) 0px 1px 0px;border-radius:0 0 var(--i-box--bo-ra) var(--i-box--bo-ra);}@media (max-width:767px){.cGalleryImageThumbs{border-radius:0;}}.cGalleryAlbums > li:not( :last-child ){margin-bottom:7px;}.cGalleryViewImage{position:relative;}.cGalleryViewImage img[data-role="theImage"], #elGalleryVideo{margin:auto;position:relative;width:auto;height:auto;max-width:100%;max-height:100%;}.cGalleryViewImage [data-ipslightbox]{display:grid;cursor:zoom-in;height:clamp(300px, 60vh, 800px);}.cGalleryViewImage_controls{margin-inline-start:auto;}.cGalleryViewImage:hover .cGalleryNote{opacity:1;}.cGalleryNote{position:absolute;opacity:0;}.cGalleryNote_border{border:1px solid #000;height:100%;background:rgba(255,255,255,0.0001);}.cGalleryNote_border::after{content:'';position:absolute;inset:1px;display:block;border:1px solid #ccc;}.cGalleryNote_editing .cGalleryNote_border, .cGalleryNote_editing .cGalleryNote_border::after{border-style:dashed;opacity:1;}.cGalleryNote_editing{opacity:1 !important;}.cGalleryNote_editing .cGalleryNote_note{opacity:1 !important;display:block !important;width:280px;padding:12px;pointer-events:auto;z-index:1000;}.cGalleryNote_editing .cGalleryNote_note a{color:#fff;}.cGalleryNote_editing .cGalleryNote_note textarea{outline:1px solid currentColor;outline-offset:0px;padding:1em;}.cGalleryNote_note{width:max-content;max-width:250px;position:absolute;top:calc(100% + 5px);left:50%;transform:translateX(-50%);background:hsl(0 0% 0% / .6);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;font-weight:600;font-size:.9em;border-radius:5px;pointer-events:none;padding:10px;}.cGalleryNote_delete{position:absolute;top:-10px;inset-inline-end:-10px;width:1.5em;height:1.5em;display:grid;place-content:center;border-radius:50%;background:#000;border:1px solid currentColor;color:#fff;font-size:17px;}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;}.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle{display:none;}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0;}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0;}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%;}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%;}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px;}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px;}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px;}.ui-icon-gripsmall-diagonal-se{background:url( "../resources/core_84c1e40ea0e759e3f1505eb1788ddf3c_resizable.png" );}.ui-draggable{cursor:move;}.cGallerySearchAlbumThumbs, .cGalleryManagedAlbumThumbs{display:grid;gap:4px;grid-template-columns:repeat(auto-fill, minmax(40px, 1fr));}.cGallerySearchAlbumThumbs li:nth-child(20) ~ *{display:none;}.cGalleryManagedAlbumThumbs{margin-top:10px;}.cGalleryAlbums_recent{--_thumb:100px;--_gap:4px;padding-inline-start:calc(var(--_thumb) * 2 + var(--_gap));display:grid;grid-template-columns:repeat(auto-fill, minmax(var(--_thumb), 1fr));gap:var(--_gap);height:calc(var(--_thumb) * 2 + var(--_gap));position:relative;overflow:hidden;}.cGalleryAlbums_recent > li{height:var(--_thumb);position:relative;}.cGalleryAlbums_recent .ipsFigure{height:100%;}.cGalleryAlbums_recent .ipsFigure__footer{justify-self:end;padding:.5em;}.cGalleryAlbums_recent .ipsFigure__footer::before{display:none;}.cGalleryAlbums_recent > li:first-child{width:calc(var(--_thumb) * 2);height:calc(var(--_thumb) * 2);overflow:hidden;positioLine truncated
|
||||
@@ -1 +1 @@
|
||||
.cGalleryDialog{display:flex;flex-direction:column;position:relative;}.cGalleryDialog_inner{flex:1 1 auto;display:flex;}.cGalleryDialog_primary{flex:999 1 60%;display:flex;flex-direction:column;}.cGalleryDialog_title{flex:0 0 auto;padding:var(--i-sp_3);display:flex;align-items:center;justify-content:space-between;}.cGalleryDialog_imageFormAlign{height:100%;display:flex;flex-direction:column;}#elGallerySubmit_toolBar{padding:1em;background:var(--i-background_3);flex:0 0 auto;position:sticky;top:0;z-index:2;}.cGallerySubmit_imageDetails{flex:1 1 400px;overflow:auto;background:var(--i-background_2);}.cGalleryDialog:not(.cGalleryDialog_uploadStep) .cGallerySubmit_imageDetails{display:none;}.cGallerySubmit_imageDetails .ipsAttachment_dropZone [data-action="uploadFile"]{margin:0 0 10px 0;width:100%;}.cGallerySubmit_imageDetails .ipsAttachment_dropZone.ipsAttachment_dropZoneSmall{padding:5px;}.cGallerySubmit_imageDetails .ipsSubmitRow{position:-webkit-sticky;position:sticky;bottom:0;}.cGallerySubmit_preview{height:190px;aspect-ratio:auto;text-align:center;}.cGallerySubmit_preview .ipsThumb img{object-fit:contain;}.cGalleryDialog .ipsDialog_title{padding:0;}.cGalleryDialog_close{font-size:40px;line-height:1;display:none;}.ipsDialog_content .cGalleryDialog_close{}#elFileTypes_menu strong{display:none;}.ipsDialog .cGalleryChooseAlbum_wrap{display:contents;}.cGalleryChooseAlbum_list{flex:1 1 auto;display:flex;justify-content:center;align-items:center;padding:0 2em 2em 2em;}.cGalleryChooseAlbum_list > ul{width:min(100% - 30px, 450px);}.cGalleryChooseAlbum_listItem{display:block;background:var(--i-background_2);padding:1.4em;padding-inline-end:40px;margin-bottom:1em;border-radius:6px;position:relative;}.cGalleryChooseAlbum_listItem[data-disabled]{opacity:.7;cursor:not-allowed;}.cGalleryChooseAlbum_listItem[data-disabled] .ipsTitle{color:var(--i-color_soft);}.cGalleryChooseAlbum_listItem:not([data-disabled])::after{font-family:var(--i-font-awesome);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;content:'\f061';position:absolute;inset-inline-end:1.2em;top:50%;font-size:1.4em;transform:translateY(-50%);color:var(--i-color_soft);}.cGalleryChooseAlbum_listItem:not([data-disabled]):hover{background:var(--i-background_3);}.cGalleryChooseAlbum_listItem .ipsTitle{font-size:var(--i-font-size_2);}.cGallerySubmit_albumChoice{padding:5em 1em;}.cGallerySubmit_albumChoice .ipsSelectTree{margin:auto;}#elGallerySubmit_albumChooser{max-height:60vh;display:flex;flex-direction:column;gap:1em;padding:0 2em 2em 2em;}#elGallerySubmit_albumChooser > li{position:relative;flex:0 0 auto;}#elGallerySubmit_albumChooser [type="radio"]{position:absolute;opacity:0;}#elGallerySubmit_albumChooser > li > div{background:var(--i-background_2);padding:1.4em;border-radius:min(var(--i-design-radius), 6px);}#elGallerySubmit_albumChooser > li > div:hover{background:var(--i-background_3);}#elGallerySubmit_albumChooser label{position:absolute;inset:0;cursor:pointer;}#elGallerySubmit_albumChooser > li > [type="radio"]:checked + div{background:var(--i-primary);color:var(--i-primary-contrast);}#elGallerySubmit_albumChooser > li > [type="radio"]:checked + div .i-color_soft{color:inherit;opacity:0.7;}[data-role="existingAlbumForm"]{display:contents;}.cGalleryChooseAlbum{flex:1 1 100%;display:flex;flex-direction:column;}.cGalleryDialog_container{display:contents;}.cGalleryDialog_imageForm{flex:1 1 auto;overflow:auto;}.cGallerySubmit_uploadImages .ipsAttachment_dropZone:not(.ipsDragging){background:var(--i-background_2);border-color:var(--i-background_3);}.cGallerySubmit_uploadImages .ipsAttachment_dropZone{display:grid;place-content:center;text-align:center;gap:0;}.cGallerySubmit_uploadImages .ipsUploader__icon{font-size:3em;margin-bottom:15px;}.cGallerySubmit_uploadImages .fa-cloud-upload::before{content:"\f055";}#elGallerySubmit_imageUploader .ipsAttachment_dropZone{cursor:pointer;}.cGalleryDialog_uploadStep .ipsUploader[style*="block"]{display:flex !important;gap:var(--i-sp_3);}.cGalleryDialog_uploadStep #elGallerySubmit_imageUploader .ipsAttachment_dropZone{flex:1 1 200px;align-self:start;height:200px;margin-bottom:2em;}#elGallerySubmit_imageUploader a[data-action="uploadFile"]{display:none;}#elGallerySubmit_imageUploader .moxie-shim.moxie-shim-html5, #elGallerySubmit_imageUploader .moxie-shim.moxie-shim-html5 > input[type="file"]{top:0 !important;left:0 !important;width:0.1px !important;height:0.1px !important;}.cGallerySubmit_uploadImages .ipsAttachment_fileList{flex:999 1 50%;}.cGalleryThumbField .ipsAttachment_dropZoneSmall_info{margin-inline-start:auto !important;}.cGalleryThumbField [data-role="title"]{width:150px;max-width:150px;}.cGallerySubmit_fileList:empty{display:none !important;}.cGallerySubmit_fileList{display:grid;grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));gap:1em;padding-bottom:2em;}.cGallerySubmit_fileList .ipsImageAttach{border:1px solid var(--i-background_4);background:vLine truncated
|
||||
.cGalleryDialog{display:flex;flex-direction:column;position:relative;}.cGalleryDialog_inner{flex:1 1 auto;display:flex;}.cGalleryDialog_primary{flex:999 1 60%;display:flex;flex-direction:column;}.cGalleryDialog_title{flex:0 0 auto;padding:var(--i-sp_3);display:flex;align-items:center;justify-content:space-between;}.cGalleryDialog_imageFormAlign{height:100%;display:flex;flex-direction:column;}#elGallerySubmit_toolBar{padding:1em;background:var(--i-background_3);flex:0 0 auto;position:sticky;top:0;z-index:2;}.cGallerySubmit_imageDetails{flex:1 1 400px;overflow:auto;background:var(--i-background_2);}.cGalleryDialog:not(.cGalleryDialog_uploadStep) .cGallerySubmit_imageDetails{display:none;}.cGallerySubmit_imageDetails .ipsAttachment_dropZone [data-action="uploadFile"]{margin:0 0 10px 0;width:100%;}.cGallerySubmit_imageDetails .ipsAttachment_dropZone.ipsAttachment_dropZoneSmall{padding:5px;}.cGallerySubmit_imageDetails .ipsSubmitRow{position:-webkit-sticky;position:sticky;bottom:0;}.cGallerySubmit_preview{height:190px;aspect-ratio:auto;text-align:center;}.cGallerySubmit_preview .ipsThumb img{object-fit:contain;}.cGalleryDialog .ipsDialog_title{padding:0;}.cGalleryDialog_close{font-size:40px;line-height:1;display:none;}.ipsDialog_content .cGalleryDialog_close{}#elFileTypes_menu strong{display:none;}.ipsDialog .cGalleryChooseAlbum_wrap{display:contents;}.cGalleryChooseAlbum_list{flex:1 1 auto;display:flex;justify-content:center;align-items:center;padding:0 2em 2em 2em;}.cGalleryChooseAlbum_list > ul{width:min(100% - 30px, 450px);}.cGalleryChooseAlbum_listItem{display:block;background:var(--i-background_2);padding:1.4em;padding-inline-end:40px;margin-bottom:1em;border-radius:6px;position:relative;}.cGalleryChooseAlbum_listItem[data-disabled]{opacity:.7;cursor:not-allowed;}.cGalleryChooseAlbum_listItem[data-disabled] .ipsTitle{color:var(--i-color_soft);}.cGalleryChooseAlbum_listItem:not([data-disabled])::after{font-family:var(--i-font-awesome);-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;content:'\f061';position:absolute;inset-inline-end:1.2em;top:50%;font-size:1.4em;transform:translateY(-50%);color:var(--i-color_soft);}.cGalleryChooseAlbum_listItem:not([data-disabled]):hover{background:var(--i-background_3);}.cGalleryChooseAlbum_listItem .ipsTitle{font-size:var(--i-font-size_2);}.cGallerySubmit_albumChoice{padding:5em 1em;}.cGallerySubmit_albumChoice .ipsSelectTree{margin:auto;}#elGallerySubmit_albumChooser{max-height:60vh;display:flex;flex-direction:column;gap:1em;padding:0 2em 2em 2em;}#elGallerySubmit_albumChooser > li{position:relative;flex:0 0 auto;}#elGallerySubmit_albumChooser [type="radio"]{position:absolute;opacity:0;}#elGallerySubmit_albumChooser > li > div{background:var(--i-background_2);padding:1.4em;border-radius:min(var(--i-design-radius), 6px);}#elGallerySubmit_albumChooser > li > div:hover{background:var(--i-background_3);}#elGallerySubmit_albumChooser label{position:absolute;inset:0;cursor:pointer;}#elGallerySubmit_albumChooser > li > [type="radio"]:checked + div{background:var(--i-primary);color:var(--i-primary-contrast);}#elGallerySubmit_albumChooser > li > [type="radio"]:checked + div .i-color_soft{color:inherit;opacity:0.7;}[data-role="existingAlbumForm"]{display:contents;}.cGalleryChooseAlbum{flex:1 1 100%;display:flex;flex-direction:column;}.cGalleryDialog_container{display:contents;}.cGalleryDialog_imageForm{flex:1 1 auto;overflow:auto;}.cGallerySubmit_uploadImages .ipsAttachment_dropZone:not(.ipsDragging){background:var(--i-background_2);border-color:var(--i-background_3);}.cGallerySubmit_uploadImages .ipsAttachment_dropZone{display:grid;place-content:center;text-align:center;gap:0;}.cGallerySubmit_uploadImages .ipsUploader__icon{font-size:3em;margin-bottom:15px;}.cGallerySubmit_uploadImages .fa-cloud-upload::before{content:"\f055";}#elGallerySubmit_imageUploader .ipsAttachment_dropZone{cursor:pointer;}.cGalleryDialog_uploadStep .ipsUploader[style*="block"]{display:flex !important;gap:var(--i-sp_3);}.cGalleryDialog_uploadStep #elGallerySubmit_imageUploader .ipsAttachment_dropZone{flex:1 1 200px;align-self:start;height:200px;margin-bottom:2em;}#elGallerySubmit_imageUploader a[data-action="uploadFile"]{display:none;}#elGallerySubmit_imageUploader .moxie-shim.moxie-shim-html5, #elGallerySubmit_imageUploader .moxie-shim.moxie-shim-html5 > input[type="file"]{top:0 !important;left:0 !important;width:0.1px !important;height:0.1px !important;}.cGallerySubmit_uploadImages .ipsAttachment_fileList{flex:999 1 50%;}.cGalleryThumbField .ipsAttachment_dropZoneSmall_info{margin-inline-start:auto !important;}.cGalleryThumbField [data-role="title"]{width:150px;max-width:150px;}.cGallerySubmit_fileList:empty{display:none !important;}.cGallerySubmit_fileList{display:grid;grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));gap:1em;padding-bottom:2em;}.cGallerySubmit_fileList .ipsImageAttach{border:1px solid var(--i-background_4);background:var(--i-background_2);cursor:move;}Line truncated
|
||||
@@ -1 +1 @@
|
||||
.cInvoiceStatus .fa{font-size:54px;line-height:60px;}.cInvoice_note{border-top:3px solid #d99c1a;padding:7px;margin-top:7px;background:#efebe3;color:#968562;}ul.cInvoiceUnpaidConsequences{margin:5px 0px;padding:0;list-style-position:inside;list-style-type:disc;}ul.cInvoiceUnpaidConsequences > li{padding:5px;}ul.cInvoiceUnpaidConsequences ul{margin:5px 0px;padding-inline-start:20px;list-style-position:inside;list-style-type:square;}.cInvoiceUnpaidConsequences_warning{display:block;margin-top:3px;margin-inline-start:10px;color:#a52638;}.cInvoiceUnpaidConsequences_warning:before{font-family:var(--i-font-awesome);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;content:'\f06a';margin-inline-end:3px;}
|
||||
.cInvoiceStatus .fa{font-size:54px;line-height:60px;}.cInvoice_note{border-top:3px solid #d99c1a;padding:7px;margin-top:7px;background:#efebe3;color:#968562;}ul.cInvoiceUnpaidConsequences{margin:5px 0px;padding:0;list-style-position:inside;list-style-type:disc;}ul.cInvoiceUnpaidConsequences > li{padding:5px;}ul.cInvoiceUnpaidConsequences ul{margin:5px 0px;padding-inline-start:20px;list-style-position:inside;list-style-type:square;}.cInvoiceUnpaidConsequences_warning{display:block;margin-top:3px;margin-inline-start:10px;color:#a52638;}.cInvoiceUnpaidConsequences_warning:before{font-family:var(--i-font-awesome);-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;content:'\f06a';margin-inline-end:3px;}
|
||||
@@ -1 +1 @@
|
||||
.cNexusInvoiceExplain{margin-inline-start:250px;border-inline-start:3px solid black;padding-top:5px;padding-inline-start:15px;}.cNexusInvoiceExplain li{position:relative;margin-bottom:20px;}.cNexusInvoiceExplain li p{margin:0;}.cNexusInvoiceExplain li .time{position:absolute;inset-inline-start:-375px;top:0px;text-align:end;width:340px;}.cNexusInvoiceExplain li::before{position:absolute;top:0px;inset-inline-start:-22px;font-family:var(--i-font-awesome);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;content:'\f111';color:black;}
|
||||
.cNexusInvoiceExplain{margin-inline-start:250px;border-inline-start:3px solid black;padding-top:5px;padding-inline-start:15px;}.cNexusInvoiceExplain li{position:relative;margin-bottom:20px;}.cNexusInvoiceExplain li p{margin:0;}.cNexusInvoiceExplain li .time{position:absolute;inset-inline-start:-375px;top:0px;text-align:end;width:340px;}.cNexusInvoiceExplain li::before{position:absolute;top:0px;inset-inline-start:-22px;font-family:var(--i-font-awesome);-webkit-font-smoothing:antialiased;text-rendering:auto;font-weight:900;content:'\f111';color:black;}
|
||||
@@ -2,5 +2,5 @@
|
||||
if(fieldDefaultValue){fieldDefaultValue.addEventListener('input',_.throttle(()=>this.checkChange(),50));this.currentValue=fieldDefaultValue.value||'';document.querySelectorAll('#field_default_update_existing').ipsHide();}
|
||||
this.on('change','input[data-control="color"]',this.changeBadgeColor);this.on('change','input[type="checkbox"][name*="color"]',this.changeBadgeColor);this.elem.querySelector('form').addEventListener('ips:calculateToggles',e=>{const form=e.target;if(!(form instanceof HTMLFormElement)){return;}
|
||||
const typeSelector=form.querySelector('select[name="field_type"]');const showMapActive=typeSelector?.value?.toLowerCase()==='address';const mapEl=form.querySelectorAll('#field_show_map_listing,#field_show_map_display');if(mapEl&&!showMapActive){mapEl.forEach(el=>e.detail.togglesOff.add(el));}
|
||||
if(typeSelector?.value?.match(/^(youtube|spotify|soundcloud)$/i)){form.querySelectorAll("#field_display_listing_json_badge, #field_display_listing_badge_bgcolor, #field_display_listing_badge_color, #field_display_display_json_badge, #field_display_display_badge_bgcolor, #field_display_display_badge_color, #field_display_display_json_where").forEach(el=>{e.detail.togglesOff.add(el);e.detail.togglesOn.delete(el);});}else{form.querySelectorAll("#media_display_listing_method, #media_display_display_method").forEach(el=>{e.detail.togglesOff.add(el);e.detail.togglesOn.delete(el);});}
|
||||
if(typeSelector?.value?.match(/^(youtube|spotify|soundcloud)$/i)){form.querySelectorAll("#field_display_listing_json_badge, #field_display_listing_badge_bgcolor, #field_display_listing_badge_color, #field_display_display_json_badge, #field_display_display_badge_bgcolor, #field_display_display_badge_color").forEach(el=>{e.detail.togglesOff.add(el);e.detail.togglesOn.delete(el);});}else{form.querySelectorAll("#media_display_listing_method, #media_display_display_method").forEach(el=>{e.detail.togglesOff.add(el);e.detail.togglesOn.delete(el);});}
|
||||
const fieldTruncate=form.querySelector('#field_truncate');if(fieldTruncate){if(form.querySelector('#check_field_display_listing')&&!form.querySelector('#check_field_display_listing').checked){e.detail.togglesOff.add(fieldTruncate);e.detail.togglesOn.delete(fieldTruncate);}}})},checkChange(){if(document.querySelector('#elTextarea_field_default_value').value!==this.currentValue){document.querySelector('#field_default_update_existing').ipsShow();}else{document.querySelector('#field_default_update_existing').ipsHide();}},changeBadgeColor(e){const colorPicker=e.target?.closest?.('.ipsFieldRow[id]').getAttribute('id');const badge=`#elField_field_display_${colorPicker?.includes('listing') ? 'listing' : 'display'}_json_badge_badge_label`;const color=(!colorPicker||document.querySelector(`#${colorPicker}_none`)?.checked)?'':document.querySelector(`input[name="${colorPicker}"]`)?.value;document.querySelectorAll(`${badge} span`).forEach(span=>span.style[colorPicker?.includes('bgcolor')?'background':'color']=color);}});}(jQuery,_));;
|
||||
@@ -1,2 +1,2 @@
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('cms.front.blocks.navigation',{initialize:function(){this.on('click','details',this.loadNavigationItems);var openSection=$(this.scope).find('details[open]:first');if(openSection.length){this.loadNavigationItems(null,openSection);}},loadNavigationItems:function(e,details=null){if(details===null){details=$(e.target).parents('details:first');}
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('cms.front.blocks.navigation',{initialize:function(){this.on('click','details',this.loadNavigationItems);let self=this;$.each(self.scope.find('details[open]'),function(){self.loadNavigationItems(null,this);});},loadNavigationItems:function(e,details=null){if(details===null){details=$(e.target).parents('details:first');}
|
||||
var itemContainer=$(details).find('> [data-role="containerItems"]');var self=this;if(!itemContainer.html().trim().length){ips.getAjax()(ips.getSetting('baseURL')+'?app=cms&module=pages&controller=ajax&do=loadItems',{data:{navType:$(self.scope).attr('data-navType'),navId:$(self.scope).attr('data-navId'),container:$(details).data('container')}}).done(function(response){$(itemContainer).html(response);if(!_.isUndefined(ips.getSetting('currentRecordId'))){$(itemContainer).find('a[data-id="'+ips.getSetting('currentRecordId')+'"]').attr('aria-current','page');}});}}});}(jQuery,_));;
|
||||
@@ -1,14 +1,14 @@
|
||||
;(function($,_){"use strict";ips.controller.register('ips.core.badgepreview',{preview:undefined,badgetype:'badge',initialize(){this.preview=this.elem.querySelector('[data-role="preview"]')
|
||||
;(function($,_){"use strict";ips.controller.register('ips.core.badgepreview',{preview:undefined,badgetype:'custombadge',initialize(){this.preview=this.elem.querySelector('[data-role="preview"]')
|
||||
if('badgetype'in this.elem.dataset){this.badgetype=this.elem.dataset.badgetype;}
|
||||
const _debounced=_.throttle(async()=>{await this.updateImage();},200,{trailing:true});for(const id of['icon','shape','foreground','background','border','sides','rotation','number_overlay'].map(i=>`${this.badgetype}_${i}`)){const config={attributes:true,childList:false,subtree:false}
|
||||
const _debounced=_.throttle(async()=>{await this.updateImage();},200,{trailing:true});for(const id of['icon','shape','foreground','background','border','sides','rotation','number_overlay','icon_size'].map(i=>`${this.badgetype}_${i}`)){const config={attributes:true,childList:false,subtree:false}
|
||||
this.getForm().querySelectorAll(`#${id} input`).forEach(element=>{if(id.endsWith('rotation')){element.oninput=()=>this.updateRotation();}else if(id.match(/_number_overlay$/)){element.oninput=()=>this.updateNumberOverlay();}else if(!id.match(/_(foreground|border|background)$/)){element.oninput=_debounced;}
|
||||
const observer=new MutationObserver(mutationList=>{for(const mutationRecord of mutationList){if(mutationRecord.type==='attributes'&&['value','style'].includes(mutationRecord.attributeName)){if(id.endsWith('rotation')){this.updateRotation();}else if(id.match(/_(foreground|background|border)$/)){this.updateColor();}else if(id.match(/_number_overlay$/)){this.updateNumberOverlay();}else{_debounced();}
|
||||
break}}})
|
||||
observer.observe(element,config)})}},async updateImage(){let url=ipsSettings.baseURL+`/admin/?app=core&module=achievements&controller=badges&do=badgePreview`;const contents=await ips.fetch(url,{method:"POST",data:{shape:this.getShape(),icon:JSON.stringify(this.getIcon()),foreground:this.getForeground(),background:this.getBackground(),border:this.getBorder(),rotation:this.getRotation(),sides:this.getSides(),numberoverlay:this.getNumberOverlay()}});if(contents.querySelector('svg')){this.preview.innerHTML='';this.preview.appendChild(contents.querySelector('svg'));}},updateColor(){const foreground=this.getForeground();const background=this.getBackground();const border=this.getBorder();const svgElement=this.preview.querySelector('svg');const attrMap={foreground:['fgcolor',foreground],background:['bgcolor',background],border:['bordercolor',border]}
|
||||
for(const colorField in attrMap){svgElement.querySelectorAll(`[data-${attrMap[colorField][0]}-placeholder]`).forEach(el=>{el.dataset[attrMap[colorField][0]+"Placeholder"].split(',').forEach(attr=>{el.setAttribute(attr,attrMap[colorField][1]);});})}
|
||||
observer.observe(element,config)})}},async updateImage(){let url=ipsSettings.baseURL+`/admin/?app=core&module=achievements&controller=badges&do=badgePreview`;const contents=await ips.fetch(url,{method:"POST",data:{shape:this.getShape(),icon:JSON.stringify(this.getIcon()),foreground:this.getForeground(),background:this.getBackground(),border:this.getBorder(),rotation:this.getRotation(),sides:this.getSides(),numberoverlay:this.getNumberOverlay(),iconsize:this.getIconSize()}});if(contents.querySelector('svg')){this.preview.innerHTML='';this.preview.appendChild(contents.querySelector('svg'));this.updateNumberOverlay();}},updateColor(){const foreground=this.getForeground();const background=this.getBackground();const border=this.getBorder();const svgElement=this.preview.querySelector('svg');const attrMap={foreground:['fgcolor',foreground],background:['bgcolor',background],border:['bordercolor',border]}
|
||||
for(const colorField in attrMap){svgElement?.querySelectorAll(`[data-${attrMap[colorField][0]}-placeholder]`).forEach(el=>{el.dataset[attrMap[colorField][0]+"Placeholder"].split(',').forEach(attr=>{el.setAttribute(attr,attrMap[colorField][1]);});})}
|
||||
svgElement?.querySelectorAll('[data-embedded-fg-color][href]').forEach(img=>{const href=img.getAttribute('href');const url=new URL(href);if(url.protocol.toLowerCase()==='data:'&&url.pathname.startsWith('image/svg+xml,')){const data=decodeURIComponent(url.pathname.split(',',2)[1]);const embeddedXML=(new DOMParser()).parseFromString(data,'text/xml');let changed=false;for(const colorField in attrMap){embeddedXML.querySelectorAll(`[data-${attrMap[colorField][0]}-placeholder]`).forEach(el=>{el.getAttribute(`data-${attrMap[colorField][0]}-placeholder`).split(",").forEach(attr=>{changed=true;el.setAttribute(attr,attrMap[colorField][1]);})});}
|
||||
if(changed){const encoded=`data:image/svg+xml,${encodeURIComponent(embeddedXML.documentElement.outerHTML)}`
|
||||
img.setAttribute('href',encoded);}}})},updateNumberOverlay(){const svgElement=this.preview.querySelector('svg');const numberInput=this.getNumberOverlay();if(svgElement){if(numberInput){svgElement.querySelectorAll('.svg__text_overlay').forEach(overlay=>{overlay.innerHTML=`${numberInput}`});svgElement.querySelectorAll('[data-number-overlay]').forEach(overlay=>{overlay.style.display=''})}else{svgElement.querySelectorAll('[data-number-overlay]').forEach(overlay=>{overlay.style.display='none'})}}},isSquare:false,updateRotation(){const rotation=this.getRotation();const shape=this.getShape();if(shape==='ngon'&&rotation===45&&this.getSides()===4){this.updateImage();this.isSquare=true;}else if(this.isSquare){this.updateImage();this.isSquare=false;}else{if(['ngon','star','flower'].includes(shape)){this.preview.querySelectorAll('[transform]').forEach(node=>{if(node.getAttribute('transform').includes('rotate')){node.setAttribute('transform',`rotate(${rotation})`)}})}}},getForm(){return this.elem.closest('form')},getShape(){for(const input of this.getForm().querySelectorAll(`#${this.badgetype}_shape input[type="radio"][name="${this.badgetype}_shape"]`)){if(input.checked){return input.value}}
|
||||
return'circle'},getIcon(){const value=JSON.parse(this.getForm().querySelector(`input[name="${this.badgetype}_icon"]`)?.value||'null')||null;if(Array.isArray(value)&&value.length){return value[0]}
|
||||
return null},getForeground(){return this.getForm().querySelector(`input[name="${this.badgetype}_foreground"]`)?.value||"#ffffff";},getBackground(){return this.getForm().querySelector(`input[name="${this.badgetype}_background"]`)?.value||"#eeb95f";},getBorder(){return this.getForm().querySelector(`input[name="${this.badgetype}_border"]`)?.value||"#f7d36f";},getSides(){return parseInt(this.getForm().querySelector(`input[name="${this.badgetype}_sides"]`)?.value||"5");},getRotation(){return parseInt(this.getForm().querySelector(`input[name="${this.badgetype}_rotation"]`)?.value||"0");},getNumberOverlay(){if(this.getForm().querySelector(`input[type="checkbox"][name="${this.badgetype}_number_overlay"][data-control="unlimited"]`)?.checked){return 0;}
|
||||
const value=parseInt(this.getForm().querySelector(`input[type="number"][name="${this.badgetype}_number_overlay"]`)?.value||this.getForm().querySelector(`input[type="number"][name="${this.badgetype}_number_overlay"]`)?.dataset.previousvalue||"0");return Math.min(Math.max(0,value),999)}})}(jQuery,_));
|
||||
const value=parseInt(this.getForm().querySelector(`input[type="number"][name="${this.badgetype}_number_overlay"]`)?.value||this.getForm().querySelector(`input[type="number"][name="${this.badgetype}_number_overlay"]`)?.dataset.previousvalue||"0");return Math.min(Math.max(0,value),999)},getIconSize(){return Math.min(5,Math.max(1,parseInt(this.getForm().querySelector(`input[name="${this.badgetype}_icon_size"][type="range"]`)?.value)||3));}})}(jQuery,_));
|
||||
@@ -1,5 +1,5 @@
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.core.editable',{_editTimeout:null,_editing:false,initialize:function(){this.on('mousedown',this.editMousedown);this.on('mouseup mouseleave',this.editMouseup);this.on('click',this.editMouseclick);this.on('click','[data-role="edit"]',this.clickEdit);this.setup();},setup:function(){var defaultFill=this.scope.attr('data-default');if(ips.utils.events.isTouchDevice()||(!_.isUndefined(defaultFill)&&defaultFill=='empty')){this.scope.removeClass('ipsType_editable').find('[data-role="edit"]').show();}},clickEdit:function(e){e.preventDefault();this._triggerEdit();},editMousedown:function(e){var self=this;if(e.which!==1){return;}
|
||||
this._editTimeout=setTimeout(_.bind(this._triggerEdit,this),1000);},editMouseup:function(e){clearTimeout(this._editTimeout);},editMouseclick:function(e){if(this._editing){e.preventDefault();}},_triggerEdit:function(){var self=this;this._editing=true;clearTimeout(this._editTimeout);var span=this.scope;var url=span.attr('data-url');var textField=span.find('[data-role="text"]');var fieldName=span.find('[data-name]').attr('data-name');var defaultFill=span.attr('data-default');span.hide();var defaultText=(_.isUndefined(defaultFill)||defaultFill!='empty')?textField.text().trim():'';var inputNode=$('<input/>').attr({type:'text'}).attr('data-role','editField').val(defaultText);span.after(inputNode);inputNode.focus();inputNode.on('blur',function(){inputNode.addClass('ipsField_loading');if(inputNode.val()==''){inputNode.remove();span.show();self._editing=false;}else{var dataToSend={};dataToSend[fieldName]=inputNode.val();ips.getAjax()(url,{method:'post',data:dataToSend}).done(function(response){textField.text(inputNode.val());}).fail(function(response){ips.ui.alert.show({type:'alert',icon:'warn',message:response.responseJSON,});}).always(function(){inputNode.remove();span.show();self._editing=false;});}});inputNode.on('keypress',function(e){if(e.keyCode==ips.ui.key.ENTER){e.stopPropagation();e.preventDefault();inputNode.blur();return false;}});inputNode.on('keydown',function(e){if(e.keyCode==ips.ui.key.ESCAPE){inputNode.remove();span.show();self._editing=false;return false;}});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.core.tags',{initialize:function(){this.on('submit',this.submitForm);},submitForm:function(e){if($(e.currentTarget).attr('data-bypassValidation')){return true;}
|
||||
e.preventDefault();e.stopPropagation();ips.ui.alert.show({type:'confirm',subText:ips.getString('tag_delete_confirm_detail'),icon:'fa-solid fa-triangle-exclamation',callbacks:{ok:function(){$(e.currentTarget).attr('data-bypassValidation',true);$(e.currentTarget).submit();},cancel:function(){return false;}}});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.core.notificationMenu',{initialize:function(){this.on(document,'menuOpened',this.menuOpened);$('body').on('updateNotificationCount',this.updateNotificationCount);this.setup();},setup:function(){var notificationCount=parseInt(this.scope.find('[data-role="notificationCount"]').text());if(isNaN(notificationCount)){notificationCount=0;}
|
||||
var storedNotificationCount=parseInt(ips.utils.cookie.get('acpNotificationCount'));if(isNaN(storedNotificationCount)){storedNotificationCount=0;}
|
||||
if(notificationCount>storedNotificationCount){setTimeout(function(){$(this.scope).find('[data-role="notificationIcon"]').addClass('cAcpNotifications_animate');}.bind(this),800);}
|
||||
@@ -14,9 +14,12 @@ e.preventDefault();if(data.selectedItemID=='os'){ips.utils.cookie.unset('acpthem
|
||||
else
|
||||
{var expires=new Date();expires.setFullYear(expires.getFullYear()+1);ips.utils.cookie.set('acptheme',data.selectedItemID,expires.toUTCString());}
|
||||
$('#elThemeMenu_menu, #elNavThemeMob_menu').find('.ipsMenu_itemChecked').removeClass('ipsMenu_itemChecked');$('#elThemeMenu_menu, #elNavThemeMob_menu').find('[data-ipsMenuValue="'+data.selectedItemID+'"]').addClass('ipsMenu_itemChecked');this.setTheme();}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.core.langString',{_url:null,_hideTimeout:null,_currentValue:'',initialize:function(){this.on('change','textarea',this.changeTextarea);this.on('focus','textarea',this.focusTextarea);this.on('blur','textarea',this.blurTextarea);this.on('click','[data-action="saveWords"]',this.saveWords);this.on('click','[data-action="revertWords"]',this.revertWords);this.setup();},setup:function(){this._url=this.scope.attr('data-saveURL');var contents=this.scope.find('a').html();var html=ips.templates.render('languages.translateString',{value:_.unescape(contents)});this._currentValue=_.unescape(contents);this.scope.html(html);},changeTextarea:function(){},focusTextarea:function(){this.scope.addClass('cTranslateTable_field_focus').find('textarea').removeClass('ipsField_success').end().find('[data-action]').show();},blurTextarea:function(){this._saveWords(true);},_hideButtons:function(e){this.scope.removeClass('cTranslateTable_field_focus');},saveWords:function(e){e.preventDefault();this._saveWords(false);},_saveWords:function(hideButtonsImmediately){var self=this;var url=this._url+'&form_submitted=1&csrfKey='+ips.getSetting('csrfKey');var textarea=this.scope.find('textarea');var value=textarea.val();if(this._currentValue==value){this._hideButtons();return;}
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.core.editable',{_editTimeout:null,_editing:false,initialize:function(){this.on('mousedown',this.editMousedown);this.on('mouseup mouseleave',this.editMouseup);this.on('click',this.editMouseclick);this.on('click','[data-role="edit"]',this.clickEdit);this.setup();},setup:function(){var defaultFill=this.scope.attr('data-default');if(ips.utils.events.isTouchDevice()||(!_.isUndefined(defaultFill)&&defaultFill=='empty')){this.scope.removeClass('ipsType_editable').find('[data-role="edit"]').show();}},clickEdit:function(e){e.preventDefault();this._triggerEdit();},editMousedown:function(e){var self=this;if(e.which!==1){return;}
|
||||
this._editTimeout=setTimeout(_.bind(this._triggerEdit,this),1000);},editMouseup:function(e){clearTimeout(this._editTimeout);},editMouseclick:function(e){if(this._editing){e.preventDefault();}},_triggerEdit:function(){var self=this;this._editing=true;clearTimeout(this._editTimeout);var span=this.scope;var url=span.attr('data-url');var textField=span.find('[data-role="text"]');var fieldName=span.find('[data-name]').attr('data-name');var defaultFill=span.attr('data-default');span.hide();var defaultText=(_.isUndefined(defaultFill)||defaultFill!='empty')?textField.text().trim():'';var inputNode=$('<input/>').attr({type:'text'}).attr('data-role','editField').val(defaultText);span.after(inputNode);inputNode.focus();inputNode.on('blur',function(){inputNode.addClass('ipsField_loading');if(inputNode.val()==''){inputNode.remove();span.show();self._editing=false;}else{var dataToSend={};dataToSend[fieldName]=inputNode.val();ips.getAjax()(url,{method:'post',data:dataToSend}).done(function(response){textField.text(inputNode.val());}).fail(function(response){ips.ui.alert.show({type:'alert',icon:'warn',message:response.responseJSON,});}).always(function(){inputNode.remove();span.show();self._editing=false;});}});inputNode.on('keypress',function(e){if(e.keyCode==ips.ui.key.ENTER){e.stopPropagation();e.preventDefault();inputNode.blur();return false;}});inputNode.on('keydown',function(e){if(e.keyCode==ips.ui.key.ESCAPE){inputNode.remove();span.show();self._editing=false;return false;}});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.core.langString',{_url:null,_hideTimeout:null,_currentValue:'',initialize:function(){this.on('input','textarea',this.changeTextarea);this.on('focus','textarea',this.focusTextarea);this.on('blur','textarea',this.blurTextarea);this.on('click','[data-action="saveWords"]',this.saveWords);this.on('click','[data-action="revertWords"]',this.revertWords);this.setup();},setup:function(){this._url=this.scope.attr('data-saveURL');const contentRoot=this.elem.querySelector('[data-langcontent]');let contents;if(contentRoot){const getText=node=>(node instanceof Text?[node.wholeText]:(node.childNodes?.length?[...node.childNodes].map(getText):[])).flat();contents=getText(contentRoot).join('');}else{contents=this.elem.innerText;}
|
||||
var html=ips.templates.render('languages.translateString',{value:contents});this._currentValue=contents;this.scope.html(html);this.changeTextarea();},changeTextarea:function(){this.elem.querySelector('[data-action="saveWords"]').disabled=this._currentValue===this.elem.querySelector('textarea').value},focusTextarea:function(){this.scope.addClass('cTranslateTable_field_focus').find('textarea').removeClass('ipsField_success').end().find('[data-action]').show();},blurTextarea:function(){this._saveWords(true);},_hideButtons:function(e){this.scope.removeClass('cTranslateTable_field_focus');},saveWords:function(e){e.preventDefault();this._saveWords(false);},_saveWords:function(hideButtonsImmediately){var self=this;var url=this._url+'&form_submitted=1&csrfKey='+ips.getSetting('csrfKey');var textarea=this.scope.find('textarea');var value=textarea.val();if(this._currentValue==value){this._hideButtons();return;}
|
||||
if(this._hideTimeout){clearTimeout(this._hideTimeout);}
|
||||
this.scope.find('[data-action]').addClass('ipsButton--disabled');ips.getAjax()(url,{type:'post',data:{lang_word_custom:encodeURIComponent(value)}}).done(function(){textarea.removeClass('ipsField_loading').addClass('ipsField_success');ips.ui.flashMsg.show(ips.getString('saved'));if(!hideButtonsImmediately){self._hideTimeout=setTimeout(_.bind(self._hideButtons,self),300);}else{self._hideButtons();}
|
||||
this.elem.querySelector('[data-action="saveWords"]').disabled=true;ips.getAjax()(url,{type:'post',data:{lang_word_custom:encodeURIComponent(value)}}).done(function(){textarea.removeClass('ipsField_loading').addClass('ipsField_success');ips.ui.flashMsg.show(ips.getString('saved'));if(!hideButtonsImmediately){self._hideTimeout=setTimeout(_.bind(self._hideButtons,self),300);}else{self._hideButtons();}
|
||||
self._currentValue=value;}).fail(function(){window.location=url;});},revertWords:function(e){}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.core.mobileNav',{initialize:function(){this.on('click','[data-action="mobileSearch"]',this.mobileSearch);this.on(document,'click','[data-role="clearCaches"]',this.clearCaches);},mobileSearch:function(e){e.preventDefault();if($('body').hasClass('acpSearchOpen')){$('body').find('.ipsModal').trigger('click');}
|
||||
$('body').toggleClass('acpSearchOpen');},clearCaches:function(e){e.preventDefault();var button=this.scope.find('[data-role="clearCaches"]');if(button.hasClass('ipsButton--disabled')){return;}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
ips.templates.set('templates.customizationMedia.grid'," <ul class='cMedia_manager__items'> {{{contents}}} </ul>");ips.templates.set('templates.customizationMedia.noItems'," <div class='i-text-align_center i-font-size_2 i-color_soft i-padding_4'> {{#lang}}mediaEmptyFolder{{/lang}} </div>");ips.templates.set('templates.customizationMedia.noSearchResults'," <div class='i-text-align_center i-font-size_2 i-color_soft i-padding_4'> {{#lang}}mediaNoResults{{/lang}} </div>");;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.customization.customTemplatesForm',{currentHookPoint:null,initialize:function(){this.on('change','input[name=template_type]',this.typeChanged);this.on('change','select[name=template_hookapp]',this.hookAppChanged);this.on('change','select[name^=template_path_]',this.hookPathChanged);this.on('change','select[name^=template_hookpoint_]',this.hookPointChanged);this.on('click','[data-role=viewTemplate]',this.viewTemplate);this.setup();},setup:function(){$('li[id^=template_path_]').hide();$('#template_hookapp').hide();$('li[id^=template_hookpoint_]').hide();$('#template_hookpoint_type').hide();$('#template_key').hide();this.typeChanged();},viewTemplate:function(e){let currentApp=$('select[name=template_hookapp]').val();let currentPath=$('select[name=template_path_'+currentApp+']').val();let dialogRef=ips.ui.dialog.create({title:ips.getString('custom_theme_template_title'),url:'?app=core&module=customization&controller=customtemplates&do=ajaxGetTemplate&hookpoint='+currentApp+'/'+currentPath.replace(/_/g,'/',)+':'+this.currentHookPoint,forceReload:true,remoteSubmit:true});dialogRef.show();},typeChanged:function(e,data){if($('input[name="template_type"]:checked').val()==='hook'){$('#template_key').hide();$('#template_hookapp').show();this.hookAppChanged(e,data);}else{$('#template_hookapp').hide();$('li[id^=template_path_]').hide();$('li[id^=template_hookpoint_]').hide();$('#template_key').show();}},hookAppChanged:function(e,data){$('li[id^=template_path_]').hide();$('li[id^=template_hookpoint_]').hide();$('#template_path_'+$('select[name=template_hookapp]').val()).show();this.hookPathChanged(e,data);},hookPathChanged:function(e,data){let currentApp=$('select[name=template_hookapp]').val();$('li[id^=template_hookpoint_'+currentApp+'_]').hide();$('#template_hookpoint_'+currentApp+'_'+$('select[name=template_path_'+currentApp+']').val()).show();this.hookPointChanged(e,data);},hookPointChanged:function(e,data){let currentApp=$('select[name=template_hookapp]').val();let currentPath=$('select[name=template_path_'+currentApp+']').val();this.currentHookPoint=$('select[name=template_hookpoint_'+currentApp+'_'+currentPath+']').val();$('#template_hookpoint_type').show();this.getTemplateParams(e,data);},getTemplateParams:function(e,data){let currentApp=$('select[name=template_hookapp]').val();let currentPath=$('select[name=template_path_'+currentApp+']').val();ips.getAjax()('?app=core&module=customization&controller=customtemplates&do=ajaxGetAvailableParams',{data:{hookpoint:currentApp+'/'+currentPath.replace(/_/g,'/',)+':'+this.currentHookPoint,hookpoint_type:$('#template_hookpoint_type').val(),}}).done(function(response){$('span[data-template-params]').html(response);});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.customization.designerCore',{_cmInstances:{},isSaving:false,initialize:function(){this.on('click','button[type="submit"]',this.save);this.on('tabChanged',this.changedTab);const debounce=_.debounce(_.bind(this._recalculatePanelWrapper,this),100);this.on(window,'resize',debounce);const disableSubmit=()=>{this.isSaving=true}
|
||||
const debouncedEnableSubmit=_.debounce(()=>{this.isSaving=false},500)
|
||||
this.elem.addEventListener('ips:codeboxAfterInit',e=>{if(e.detail?.instance){e.detail.instance.on('transaction',()=>{disableSubmit();debouncedEnableSubmit();});}})},changedTab:function(e,data){this._recalculatePanelWrapper();},async save(e){e.preventDefault();const form=this.scope.find('form[data-formid="form"]');if(this.isSaving){await new Promise(resolve=>setTimeout(resolve,500));}
|
||||
this.elem.addEventListener('ips:codebox#update',()=>{disableSubmit();debouncedEnableSubmit();})},changedTab:function(e,data){this._recalculatePanelWrapper();},async save(e){e.preventDefault();const form=this.scope.find('form[data-formid="form"]');if(this.isSaving){await new Promise(resolve=>setTimeout(resolve,500));}
|
||||
const save=Object.fromEntries(new FormData(form.get(0)).entries());Debug.log(save);this.scope.find('button[type="submit"]').addClass('ipsButton_disabled').removeClass('ipsButton_primary');try{await ips.fetch(form.attr('action'),{dataType:'json',data:save,type:'post'});ips.ui.flashMsg.show(ips.getString('saved'));}catch(jqXHR){let message=ips.getString('saveThemeError');try{message=JSON.parse(jqXHR.responseText);}
|
||||
catch(e){}
|
||||
ips.ui.alert.show({type:'alert',icon:'warn',message});}
|
||||
@@ -16,5 +17,4 @@ console.log(output);this._fileListing.html(output);$(document).trigger('contentC
|
||||
_.each(info,function(value,key){var elem=self._sidebar.find('[data-role="'+key+'"]');if(elem.is('input')){elem.val(value);}else if(key=='itemPreview'){elem.html(value);}else if(key=='itemUrl'){elem.html($('<a/>').attr('href',value).text(value).attr('target','_blank'));}
|
||||
else if(value===null){elem.html($('<span/>').addClass('i-color_soft').text('Loading...'));}else{elem.text(value);}});this._sidebar.find('[data-role="itemDimensionsRow"]').toggle(info.itemShowDimensions);this._sidebar.find('[data-role="itemTag"]').get(0).select();this._sidebar.find('[data-role="itemInformation"]').show().end().find('[data-role="multipleItems"]').hide();this._sidebar.find('[data-role="replaceFile"]').show();$(document).trigger('contentChange',[this._sidebar]);}},doSearch:function(){var value=this.scope.find('[data-role="mediaSearch"]').val();if(!_.isEmpty(value)){this._searchStyleTag.html('[data-role="mediaItem"]:not([data-filename*="'+value.replace(/['"]+/g,'')+'" i]){ display: none; }');this._unselectAll();}else{this._searchStyleTag.html('');}
|
||||
this._updatePreview();this._checkDeleteButton();},_getSelected:function(){if(this._fileListing.is(':visible')){return this._fileListing.find('.cMedia_itemSelected');}else{return this._searchResults.find('.cMedia_itemSelected');}},_resetSearch:function(){this.scope.find('[data-role="mediaSearch"]').val('');this._searchResults.hide();this._fileListing.show();this._unselectAll();this._updatePreview();this._checkDeleteButton();},_unselectAll:function(){this._fileListing.find('.cMedia_item').removeClass('cMedia_itemSelected');this._searchResults.find('.cMedia_item').removeClass('cMedia_itemSelected');}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.customization.themeForm',{initialize:function(){this.headerFooterCssFieldSetUp();},headerFooterCssFieldSetUp:function(){$('#theme_header').addClass('ipsFieldRow--fullWidth');$('#theme_footer').addClass('ipsFieldRow--fullWidth');$('#theme_css').addClass('ipsFieldRow--fullWidth');}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.customization.customTemplatesForm',{currentHookPoint:null,initialize:function(){this.on('change','input[name=template_type]',this.typeChanged);this.on('change','select[name=template_hookapp]',this.hookAppChanged);this.on('change','select[name^=template_path_]',this.hookPathChanged);this.on('change','select[name^=template_hookpoint_]',this.hookPointChanged);this.on('click','[data-role=viewTemplate]',this.viewTemplate);this.setup();},setup:function(){$('li[id^=template_path_]').hide();$('#template_hookapp').hide();$('li[id^=template_hookpoint_]').hide();$('#template_hookpoint_type').hide();$('#template_key').hide();this.typeChanged();},viewTemplate:function(e){let currentApp=$('select[name=template_hookapp]').val();let currentPath=$('select[name=template_path_'+currentApp+']').val();let dialogRef=ips.ui.dialog.create({title:ips.getString('custom_theme_template_title'),url:'?app=core&module=customization&controller=customtemplates&do=ajaxGetTemplate&hookpoint='+currentApp+'/'+currentPath.replace(/_/g,'/',)+':'+this.currentHookPoint,forceReload:true,remoteSubmit:true});dialogRef.show();},typeChanged:function(e,data){if($('input[name="template_type"]:checked').val()==='hook'){$('#template_key').hide();$('#template_hookapp').show();this.hookAppChanged(e,data);}else{$('#template_hookapp').hide();$('li[id^=template_path_]').hide();$('li[id^=template_hookpoint_]').hide();$('#template_key').show();}},hookAppChanged:function(e,data){$('li[id^=template_path_]').hide();$('li[id^=template_hookpoint_]').hide();$('#template_path_'+$('select[name=template_hookapp]').val()).show();this.hookPathChanged(e,data);},hookPathChanged:function(e,data){let currentApp=$('select[name=template_hookapp]').val();$('li[id^=template_hookpoint_'+currentApp+'_]').hide();$('#template_hookpoint_'+currentApp+'_'+$('select[name=template_path_'+currentApp+']').val()).show();this.hookPointChanged(e,data);},hookPointChanged:function(e,data){let currentApp=$('select[name=template_hookapp]').val();let currentPath=$('select[name=template_path_'+currentApp+']').val();this.currentHookPoint=$('select[name=template_hookpoint_'+currentApp+'_'+currentPath+']').val();$('#template_hookpoint_type').show();this.getTemplateParams(e,data);},getTemplateParams:function(e,data){let currentApp=$('select[name=template_hookapp]').val();let currentPath=$('select[name=template_path_'+currentApp+']').val();ips.getAjax()('?app=core&module=customization&controller=customtemplates&do=ajaxGetAvailableParams',{data:{hookpoint:currentApp+'/'+currentPath.replace(/_/g,'/',)+':'+this.currentHookPoint,hookpoint_type:$('#template_hookpoint_type').val(),}}).done(function(response){$('span[data-template-params]').html(response);});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.customization.themeForm',{initialize:function(){this.headerFooterCssFieldSetUp();},headerFooterCssFieldSetUp:function(){$('#theme_header').addClass('ipsFieldRow--fullWidth');$('#theme_footer').addClass('ipsFieldRow--fullWidth');$('#theme_css').addClass('ipsFieldRow--fullWidth');}});}(jQuery,_));;
|
||||
@@ -1,12 +1,11 @@
|
||||
ips.templates.set('moderatorPermissions.checkUncheckAll'," <li class='ipsFieldRow'> <div class='ipsFieldRow__label'> </div> <div class='ipsFieldRow__content'> <ul class='ipsList ipsList--inline i-font-weight_500'> <li><button type='button' data-role='checkAll'>{{#lang}}check_all{{/lang}}</button></li> <li><button type='button' data-role='uncheckAll'>{{#lang}}uncheck_all{{/lang}}</button></li> </ul> </div> </li>");;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.members.listFlagSpammer',{initialize:function(){this.on('click',this.toggleFlagSpammer);},toggleFlagSpammer:function(e){e.preventDefault();var elem=$(e.currentTarget);var icon=elem.find('.fa-flag');ips.ui.alert.show({'type':'confirm','icon':'warn','message':icon.hasClass('ipsType_spammer')?ips.getString('confirmUnFlagAsSpammer'):ips.getString('confirmFlagAsSpammer'),'subText':icon.hasClass('ipsType_spammer')?ips.getString('confirmUnFlagAsSpammerDesc'):'',callbacks:{ok:function(){ips.getAjax()(elem.attr('href'),{dataType:'json'}).done(function(response){ips.ui.flashMsg.show(response);icon.toggleClass('ipsType_spammer');var newStatus=ips.utils.url.getParam('status',elem.attr('href'))==1?0:1;var newUrl=ips.utils.url.removeParam('status',elem.attr('href'));elem.attr('href',newUrl+'&status='+newStatus);elem.attr('_title',newStatus?ips.getString('flagAsSpammer'):ips.getString('unflagAsSpammer'));elem.attr('aria-label',newStatus?ips.getString('flagAsSpammer'):ips.getString('unflagAsSpammer'));}).fail(function(jqXHR){if(Debug.isEnabled()){Debug.error(jqXHR.responseText);}else{window.location=elem.attr('href');}});}}});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.members.restrictions',{initialize:function(){this.on('click','.acpRestrictions_subHeader h3',this.toggleSubHeader);this.on('change','.acpRestrictions_header input[type="checkbox"]',this.toggleHeader);this.on('change','.acpAppRestrictions_header input[type="checkbox"]',this.toggleAppHeader);this.on('click','[data-action="checkAll"]',this.checkAll);this.on('click','[data-action="checkNone"]',this.checkNone);this.on('click','[data-action="expandAll"], [data-action="collapseAll"]',this.toggleDisplay);this.setup();},toggleDisplay:function(e){e.preventDefault();var row=$(e.currentTarget).closest('.acpRestrictions_header');var subHeaders=row.next().find('.acpRestrictions_subHeader');var self=this;var action=($(e.currentTarget).attr('data-action')=='expandAll')?'expand':'collapse';subHeaders.each(function(){if(action=='expand'){self._expandSection($(this));}else{self._collapseSection($(this));}});},toggleAppHeader:function(e){var check=$(e.currentTarget);var row=check.closest('.acpAppRestrictions_header');if(!check.is(':checked')){row.siblings('.acpAppRestrictions_panel').find('.acpRestrictions_header input[type="checkbox"]').each(function(){$(this).prop('disabled',true).attr('data-originalState',$(this).is(':checked')).attr('checked',false).trigger('change');});}else{row.siblings('.acpAppRestrictions_panel').find('input[type="checkbox"]').each(function(){var thisCheck=$(this);thisCheck.prop('disabled',false);if(thisCheck.attr('data-originalState')=='true'){thisCheck.prop('checked',true).trigger('change');}});row.siblings('.acpAppRestrictions_panel').find('.acpRestrictions_panel input[type="checkbox"]').each(function(){var thisCheck=$(this);var checked=thisCheck.closest('.acpRestrictions_panel').siblings('.acpRestrictions_header').find('input[type="checkbox"]').is(':checked');if(!checked){thisCheck.prop('disabled',true);}else{thisCheck.prop('disabled',false);}
|
||||
if(thisCheck.attr('data-originalState')=='true'){thisCheck.prop('checked',true).trigger('change');}});}},toggleHeader:function(e){var check=$(e.currentTarget);var row=check.closest('.acpRestrictions_header');var unChecked=!check.is(':checked');row.next().find('input[type="checkbox"]').each(function(){var thisCheck=$(this);if(unChecked){thisCheck.attr('data-originalState',thisCheck.is(':checked')).prop('checked',false);}else if((thisCheck.attr('data-originalState')=='true')){thisCheck.prop('checked',true);}
|
||||
thisCheck.prop('disabled',unChecked).trigger('change');});},toggleSubHeader:function(e){var header=$(e.currentTarget).parent();if(header.hasClass('acpRestrictions_open')){this._collapseSection(header);}else{this._expandSection(header);}},_expandSection:function(section){var next=section.next('ul');section.addClass('acpRestrictions_open').removeClass('acpRestrictions_closed');ips.utils.anim.go('fadeInDown fast',next);},_collapseSection:function(section){section.removeClass('acpRestrictions_open').addClass('acpRestrictions_closed');},checkAll:function(e){e.preventDefault();var self=this;var header=$(e.currentTarget).parents('.acpRestrictions_subHeader');var next=header.next('ul');if(!next.is(':visible')){next.animationComplete(function(){self._togglePermissions(true,next);});this._expandSection(header);}else{this._togglePermissions(true,next);}},checkNone:function(e){e.preventDefault();var self=this;var header=$(e.currentTarget).parents('.acpRestrictions_subHeader');var next=header.next('ul');if(!next.is(':visible')){next.animationComplete(function(){self._togglePermissions(false,next);});this._expandSection(header);}else{this._togglePermissions(false,next);}},_togglePermissions:function(state,container){container.find('input[type="checkbox"]:not( [disabled] )').prop('checked',state).change();},setup:function(){this.scope.find('.acpRestrictions_open').removeClass('acpRestrictions_open').addClass('acpRestrictions_closed');}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.members.moderatorPermissions',{initialize:function(){this.on('change','#ipsTabs_form_modperms__core_Content_panel input[type="checkbox"]',this.toggle);this.on('click','[data-role="checkAll"]',this.checkAll);this.on('click','[data-role="uncheckAll"]',this.checkAll);this.setup();},setup:function(){var mainPanel=this.scope.find('#ipsTabs_form_modperms__core_Content_panel');var self=this;mainPanel.find('input[type="checkbox"]').each(function(){self._toggleChanged($(this));});$(this.scope).find('.ipsTabs__panel').each(function(){var controls=$(ips.templates.render('moderatorPermissions.checkUncheckAll'));controls.find('button').attr('data-scope',$(this).attr('id'));$(this).children('ul').prepend(controls);});this._checkEachTab();},checkAll:function(e){e.preventDefault();var check=$(e.currentTarget).attr('data-role')=='checkAll';if($(e.currentTarget).attr('data-scope')){var scope=$('#'+$(e.currentTarget).attr('data-scope'));}else{var scope=$(this.scope);}
|
||||
if(check&&!$(e.currentTarget).attr('data-scope')){$('input[name="mod_use_restrictions"][value="no"]').prop('checked',true).change();}
|
||||
var self=this;scope.find('input[type="checkbox"]').each(function(){if(check&&!$(this).is(':checked')){$(this).prop('checked',true).change();}else if(!check&&$(this).is(':checked')){$(this).prop('checked',false).change();}});},toggle:function(e){this._toggleChanged($(e.currentTarget));this._checkEachTab();},_toggleChanged:function(thisToggle){var id=thisToggle.closest('.ipsFieldRow').attr('id').replace('_content','');var panels=this.scope.find('.ipsTabs__panel:not( #ipsTabs_form_modperms__core_Content_panel )');var otherToggles=panels.find('.ipsFieldRow[id^="'+id+'"]').not(thisToggle.closest('.ipsFieldRow'));if(thisToggle.is(':checked')){otherToggles.hide();otherToggles.find('input[type="checkbox"]').prop('disabled',true);}else{otherToggles.show();otherToggles.find('input[type="checkbox"]').prop('disabled',false);}},_checkEachTab:function(){var self=this;var panels=this.scope.find('.ipsTabs__panel:not( #ipsTabs_form_modperms__core_Content_panel )');panels.each(function(){var count=$(this).find('input[type="checkbox"]:enabled:not( [data-role="zeroVal"] )').length;var id=$(this).attr('id').replace('ipsTabs_tabs_form_','').replace('_panel','');if(!count){self.scope.find('#'+id).closest('li').hide();}else{self.scope.find('#'+id).closest('li').show();}});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.members.lazyLoadingProfileBlock',{initialize:function(){var scope=$(this.scope);ips.getAjax()(scope.attr('data-url')).done(function(response){scope.html(response);$(document).trigger('contentChange',[scope]);});},});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.members.listFlagSpammer',{initialize:function(){this.on('click',this.toggleFlagSpammer);},toggleFlagSpammer:function(e){e.preventDefault();var elem=$(e.currentTarget);var icon=elem.find('.fa-flag');ips.ui.alert.show({'type':'confirm','icon':'warn','message':icon.hasClass('ipsType_spammer')?ips.getString('confirmUnFlagAsSpammer'):ips.getString('confirmFlagAsSpammer'),'subText':icon.hasClass('ipsType_spammer')?ips.getString('confirmUnFlagAsSpammerDesc'):'',callbacks:{ok:function(){ips.getAjax()(elem.attr('href'),{dataType:'json'}).done(function(response){ips.ui.flashMsg.show(response);icon.toggleClass('ipsType_spammer');var newStatus=ips.utils.url.getParam('status',elem.attr('href'))==1?0:1;var newUrl=ips.utils.url.removeParam('status',elem.attr('href'));elem.attr('href',newUrl+'&status='+newStatus);elem.attr('_title',newStatus?ips.getString('flagAsSpammer'):ips.getString('unflagAsSpammer'));elem.attr('aria-label',newStatus?ips.getString('flagAsSpammer'):ips.getString('unflagAsSpammer'));}).fail(function(jqXHR){if(Debug.isEnabled()){Debug.error(jqXHR.responseText);}else{window.location=elem.attr('href');}});}}});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.members.history',{initialize:function(){this.on('menuItemSelected',this.filterSelected);},filterSelected:function(e,data){if(data.originalEvent){data.originalEvent.preventDefault();}
|
||||
if(data.triggerID=='memberHistoryFilters'){$(this.scope).find('[data-role="historyTitle"]').text(data.menuElem.find('[data-ipsMenuValue="'+data.selectedItemID+'"]').text());$(this.scope).find('[data-role="historyDisplay"]').addClass('ipsLoading').html('');ips.getAjax()(data.menuElem.find('[data-ipsMenuValue="'+data.selectedItemID+'"] a').attr('href')).done(function(response){$(this.scope).find('[data-role="historyDisplay"]').html(response).removeClass('ipsLoading');$(document).trigger('contentChange',[this.scope]);}.bind(this));}}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.members.form',{initialize:function(){this.on('submit',this.submitForm);},submitForm:function(e){var self=this;if($(e.currentTarget).attr('data-bypassValidation')){return true;}
|
||||
@@ -20,4 +19,5 @@ this.scope.find('[data-role="regex"]').show();this.scope.find('[data-role="easy"
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.members.achievementRuleForm',{initialize(){this.on('click','[data-action="filterReveal"]',this.showFilter);this.on('click','[data-action="filterCollapse"]',this.hideFilter);this.on('change keyup','input[type="number"]',this.changeNumber);},showFilter(e){const ruleWrap=e.currentTarget.closest('[data-role="ruleWrap"]');const toggleWrap=e.currentTarget.closest('[data-role="toggleFilter"]');const check=toggleWrap.querySelector('input[type="checkbox"]');const conditionButtons=toggleWrap.closest('[data-role="conditionButtons"]');check.checked=true;check.dispatchEvent(new Event('change',{bubbles:true}));toggleWrap.ipsHide();if(conditionButtons?.querySelector('[data-role="toggleFilter"] input[data-filter]:not(:checked)')){conditionButtons?.ipsShow();}else{conditionButtons?.ipsHide();}
|
||||
const filterName=check.dataset.filter;if(filterName){ruleWrap.querySelectorAll(`#${filterName}`).ipsShow();}
|
||||
ruleWrap.querySelectorAll('input[type="number"]').forEach(el=>this._pluralizeNumber(el));},hideFilter(e){e.preventDefault();const filter=e.currentTarget.closest('[data-role="filterField"]');const filterName=filter.id;const check=filter.closest('[data-role="ruleWrap"]').querySelector(`#${filterName}Checkbox`);const toggleWrap=check.closest('[data-role="toggleFilter"]');check.checked=false;check.dispatchEvent(new Event('change',{bubbles:true}));toggleWrap.ipsShow()
|
||||
toggleWrap.closest('[data-role="conditionButtons"]')?.ipsShow();filter.ipsHide();},changeNumber(e){this._pluralizeNumber(e.currentTarget);},_pluralizeNumber(input){const span=input.nextElementSibling;if(span?.matches('[data-role="th"]')){span.innerText=ips.pluralize(ips.getString('numberSuffix'),input.value);}}});}(jQuery,_));;
|
||||
toggleWrap.closest('[data-role="conditionButtons"]')?.ipsShow();filter.ipsHide();},changeNumber(e){this._pluralizeNumber(e.currentTarget);},_pluralizeNumber(input){const span=input.nextElementSibling;if(span?.matches('[data-role="th"]')){span.innerText=ips.pluralize(ips.getString('numberSuffix'),input.value);}}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.members.lazyLoadingProfileBlock',{initialize:function(){var scope=$(this.scope);ips.getAjax()(scope.attr('data-url')).done(function(response){scope.html(response);$(document).trigger('contentChange',[scope]);});},});}(jQuery,_));;
|
||||
@@ -1,6 +1,9 @@
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.stats.overview',{dateFilters:{'start':null,'end':null,'range':null},initialize:function(){this.on('submit','[data-role="dateFilter"]',this.updateDateFilter);this.on('change','[data-action="toggleApp"]',this.toggleApp);this.on('change','[name="predate"]',this.submitForm);this.on('click','[data-action="cancelDateRange"]',this.cancelDateRange);this.on('stats.ready',this.blockReady);$(document).on('reloadStatsDateFilters',_.bind(this.resendDateFilters,this));this.setup();},setup:function(){this.url=this.scope.attr('data-url');this.dateFilters.range=this.scope.find('[data-role="dateFilter"]').attr('data-defaultRange');},resendDateFilters:function(e){this.trigger('stats.setDateFilters',{dateFilters:this.dateFilters,url:this.url});},cancelDateRange:function(e){e.preventDefault();this.scope.find('select[name="predate"]').val(this.scope.find('.cStatsFilters').attr('data-defaultRange')).change();},submitForm:function(e){var select=$(e.currentTarget);if(select.val()==='-1'){this.scope.find('.cStatsFilters [data-role="formTitle"], select[name="predate"]').hide();this.scope.find('.cStatsFilters button').show();}else{this.scope.find('.cStatsFilters [data-role="formTitle"], select[name="predate"]').show();this.scope.find('.cStatsFilters button').hide();select.closest('form').submit();}},blockReady:function(e,data){$(e.target).trigger('stats.loadBlock',{dateFilters:this.dateFilters,url:this.url});},toggleApp:function(){var enabledApps=_.map(this.scope.find('[data-action="toggleApp"]:checked'),function(app){return $(app).attr('data-toggledApp')});var disabledApps=_.map(this.scope.find('[data-action="toggleApp"]:not( :checked )'),function(app){return $(app).attr('data-toggledApp');});this.scope.find('.cStatTile[data-app]').each(function(){var tile=$(this);if(tile.hasClass('ipsHide')&&enabledApps.indexOf($(this).attr('data-app'))!==-1){tile.css({transform:'scale(0.7)',opacity:"0"}).removeClass('ipsHide').animate({transform:'scale(1)',opacity:"1"});}else if(enabledApps.indexOf($(this).attr('data-app'))===-1){tile.addClass('ipsHide');}});ips.utils.cookie.set('overviewExcludedApps',JSON.stringify(disabledApps),true);},updateDateFilter:function(e){e.preventDefault();e.stopPropagation();this.dateFilters={'start':null,'end':null,'range':this.scope.find('[name="predate"]').val()};if(this.dateFilters.range=='-1'){this.dateFilters.start=this.scope.find('[name="date[start]"]').val();this.dateFilters.end=this.scope.find('[name="date[end]"]').val();}
|
||||
this.triggerOn('core.admin.stats.overviewBlock','stats.loadBlock',{dateFilters:this.dateFilters,url:this.url});this.triggerOn('core.admin.stats.nodeFilters','stats.setDateFilters',{dateFilters:this.dateFilters,url:this.url});},});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.stats.nodeFilters',{url:null,dateFilters:{'start':null,'end':null,'range':null},initialize:function(){this.on('submit',this.reloadBlock);$(document).on('stats.setDateFilters',_.bind(this.statsReady,this));$(document).on('click.hovercard',_.bind(function(){this.trigger('reloadStatsDateFilters');},this));this.trigger('reloadStatsDateFilters');},statsReady:function(e,data){this.url=data.url;this.dateFilters=data.dateFilters;},reloadBlock:function(e){var blockKey=$(e.currentTarget).attr('data-block');var subblock=$(e.currentTarget).attr('data-subblock');var blockElement=$('[data-role="statsBlock"][data-block="'+blockKey+'"][data-subblock="'+subblock.replace(/\\/g,'\\\\')+'"]');blockElement.attr('data-nodeFilter',$(e.currentTarget).find('[data-role="nodeValue"]').val());e.preventDefault();e.stopPropagation();this.trigger('stats.nodeFilters',{blockToRefresh:blockKey,subblockToRefresh:subblock,url:this.url,dateFilters:this.dateFilters});$(document).trigger('click');}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.stats.filtering',{initialize:function(){this.on('click','[data-role="toggleGroupFilter"]',this.toggleGroupFilter);if($('#elGroupFilter').attr('data-hasGroupFilters')=='true'){$('#elGroupFilter').show();}},toggleGroupFilter:function(e){e.preventDefault();if($('#elGroupFilter').is(':visible')){$('#elGroupFilter').find('input[type="checkbox"]').prop('checked',true);$('#elGroupFilter').slideUp();}
|
||||
else
|
||||
{$('#elGroupFilter').slideDown();}}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.stats.overviewBlock',{initialize:function(){Debug.log('init bloc');this.on('stats.loadBlock',this.loadBlock);$(document).on('stats.nodeFilters',_.bind(this.loadBlock,this));this.setup();},setup:function(){this.refresh=null;this.loaded=false;this.currentCounts=[];this.url=null;this.block=this.scope.attr('data-block');this.subblock=this.scope.attr('data-subblock');this.refreshInterval=this.scope.attr('data-refresh')?parseInt(this.scope.attr('data-refresh')):false;this.trigger('stats.ready');},getCounts:function(elem){return _.map(elem.find('[data-number]'),function(thisElem){return parseInt($(thisElem).attr('data-number'))});},startInterval:function(){if(!this.refreshInterval||!this.url){return;}
|
||||
clearInterval(this.refresh);this.refresh=setInterval(_.bind(this.fetchUpdate,this),this.refreshInterval*1000);},fetchUpdate:function(){var self=this;ips.getAjax()(this.url,{type:'get'}).done(function(response){var newContent=$("<div>"+response+"</div>");var counts=self.getCounts(newContent);var hasDifference=false;if(counts.length!==self.currentCounts.length){hasDifference=true;}else{for(var i=0;i<counts.length;i++){if(counts[i]!==self.currentCounts[i]){hasDifference=true;break;}}}
|
||||
if(hasDifference){self.scope.addClass('cStatTile--updated').find('[data-role="statBlockContent"]').html(response);self.currentCounts=counts;setTimeout(function(){self.scope.removeClass('cStatTile--updated');},2200);$(document).trigger('contentChange',[self.scope]);}else{Debug.log("No change in values in "+self.block);}});},loadBlock:function(e,data){if(!_.isUndefined(data.blockToRefresh)&&(data.blockToRefresh!=this.block||data.subblockToRefresh!=this.subblock)){Debug.log("Skipping because "+data.blockToRefresh+" does not match "+this.block+" or "+data.subblockToRefresh+" does not match "+this.subblock);return;}
|
||||
@@ -8,7 +11,4 @@ var self=this;this.url=data.url+'&blockKey='+this.block;clearInterval(this.refre
|
||||
if(!_.isUndefined(this.subblock)){this.url=this.url+'&subblock='+this.subblock;}
|
||||
if(data.dateFilters.range!='-1'&&data.dateFilters.range!='0'){this.url=this.url+'&range='+data.dateFilters.range;}else if(data.dateFilters.range=='-1'&&!_.isNull(data.dateFilters.start)){this.url=this.url+'&start='+data.dateFilters.start+'&end='+data.dateFilters.end;}
|
||||
if(this.scope.attr('data-nodeFilter')){this.url=this.url+'&nodes='+this.scope.attr('data-nodeFilter');}
|
||||
ips.getAjax()(this.url,{type:'get'}).done(function(response){self.scope.addClass('cStatTile--loaded').find('.cStatTile__body').removeClass('ipsLoading').end().find('[data-role="statBlockContent"]').hide().html(response);self.scope.find('[data-role="statBlockContent"]').fadeIn('fast');self.loaded=true;self.currentCounts=self.getCounts(self.scope);self.startInterval();$(document).trigger('contentChange',[self.scope]);});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.stats.filtering',{initialize:function(){this.on('click','[data-role="toggleGroupFilter"]',this.toggleGroupFilter);if($('#elGroupFilter').attr('data-hasGroupFilters')=='true'){$('#elGroupFilter').show();}},toggleGroupFilter:function(e){e.preventDefault();if($('#elGroupFilter').is(':visible')){$('#elGroupFilter').find('input[type="checkbox"]').prop('checked',true);$('#elGroupFilter').slideUp();}
|
||||
else
|
||||
{$('#elGroupFilter').slideDown();}}});}(jQuery,_));;
|
||||
ips.getAjax()(this.url,{type:'get'}).done(function(response){self.scope.addClass('cStatTile--loaded').find('.cStatTile__body').removeClass('ipsLoading').end().find('[data-role="statBlockContent"]').hide().html(response);self.scope.find('[data-role="statBlockContent"]').fadeIn('fast');self.loaded=true;self.currentCounts=self.getCounts(self.scope);self.startInterval();$(document).trigger('contentChange',[self.scope]);});}});}(jQuery,_));;
|
||||
@@ -3,14 +3,12 @@ ips.templates.set('menuManager.temporaryDropdown'," <li class='ipsMenu_item {{#s
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.system.settings',{initialize:function(){this.on('change','input[name=datastore_method]',this.datastoreChanged);this.on('change','input[name=cache_method]',this.cacheChanged);this.setup();},setup:function(){if($('input[name=datastore_method]:checked').val()=='Redis'){$("input[name=cache_method][value=Redis]").prop("checked",true);$('#form_cache_method').slideUp();$('li[id^=redis]').slideDown();}},cacheChanged:function(e,data){var value=$(e.currentTarget).val();if(value=='Redis'){$("input[name=datastore_method][value=Redis]").prop("checked",true);$('#form_cache_method,#id_datastore_filesystem_path').slideUp();$('li[id^=redis]').slideDown();}else{$('#form_cache_method').slideDown();$('li[id^=redis]').slideUp();if($('input[name=datastore_method]:checked').val()=="Redis"){$("input[name=datastore_method][value=FileSystem]").prop("checked",true);}}},datastoreChanged:function(e,data){var value=$(e.currentTarget).val();if(value=='Redis'){$("input[name=cache_method][value=Redis]").prop("checked",true);$('#form_cache_method').slideUp();$('li[id^=redis]').slideDown();}else{$('#form_cache_method').slideDown();$('li[id^=redis]').slideUp();if($('input[name=cache_method]:checked').val()=="Redis"){$("input[name=cache_method][value=None]").prop("checked",true);}}}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.system.menuManager',{_hasChanges:false,initialize:function(){this.on('sortstop','.ipsTree_rows > .ipsTree',this.afterSort);this._hasChanges=ips.getSetting('menuChanged');this.togglePublish();},afterSort:function(event,ui){this._hasChanges=true;this.togglePublish();},togglePublish:function(){if(this._hasChanges){$('#acpPageHeader > .ipsMessage').fadeIn();}else{$('#acpPageHeader > .ipsMessage').hide();}}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.system.login',{initialize:function(){this.on('tabChanged',this.tabChanged);this.on('click','[data-action="upgradeWarningContinue"]',this.upgradeWarningContinue);this.setup();},setup:function(){this.scope.find("#elTabContent .ipsTabs__panel:visible").first().find('input[type="text"]').first().focus();},tabChanged:function(e,data){ips.utils.cookie.set('acpLoginMethod',data.tabID,1);},upgradeWarningContinue:function(e,data){e.preventDefault();$(this.scope).find('[data-role="upgradeWarning"]').hide();$(this.scope).find('[data-role="loginForms"]').removeClass('ipsHide').show();}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.system.langString',{initialize:function(){this.on('click','[data-action="saveWords"]',this.saveWords);this.on('click','[data-action="revertWords"]',this.revertWords);this.setup();},setup:function(){var self=this;var textArea=$('<textarea />');textArea.attr('data-url',this.scope.attr('href')).val(this.scope.html()).change(function(e){self._change(e);});},_change:function(e){var elem=$(e.target);elem.addClass('ipsField_loading');var url=elem.attr('data-url')+'&form_submitted=1&csrfKey='+ips.getSetting('csrfKey')+
|
||||
'&lang_word_custom='+encodeURIComponent(elem.val());ips.getAjax()(url).done(function(){elem.removeClass('ipsField_loading');ips.ui.flashMsg.show(ips.getString('saved'));}).fail(function(){window.location=url;});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.system.codeHook',{codeMirror:null,initialize:function(){this.on('click','[data-codeToInject]',this._itemClick);},_itemClick:function(e){var codeMirror=$(this.scope).find('textarea').data('CodeMirrorInstance');var regex=new RegExp($.parseJSON($(e.currentTarget).attr('data-signature')));var found=false;var lastLine=codeMirror.doc.lineCount()-1;codeMirror.doc.eachLine(function(line){if(line.text.match(regex)){found=true;codeMirror.setSelection({line:codeMirror.doc.getLineNumber(line),ch:0},{line:codeMirror.doc.getLineNumber(line),ch:line.text.length});codeMirror.scrollIntoView({line:codeMirror.doc.getLineNumber(line),ch:0});}
|
||||
if(line.text.match(/^\s*}\s*$/)){lastLine=codeMirror.doc.getLineNumber(line);}});if(!found){codeMirror.doc.replaceRange($.parseJSON($(e.currentTarget).attr('data-codeToInject')),{line:lastLine-1,chr:0},{line:lastLine-1,chr:0});codeMirror.scrollIntoView({line:codeMirror.doc.lineCount(),ch:0});}}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.system.autoupgradetimer',{initialize:function(){var self=this;var secondsRemaining=60*5;if(ips.getSetting('cloud2')){secondsRemaining=15;}
|
||||
var interval=setInterval(function(){secondsRemaining--;if(secondsRemaining<1){clearInterval(interval);self.scope.find('[data-role="counter-wrapper"]').hide();self.scope.find('[data-role="continue-button"]').show();}
|
||||
else
|
||||
{var minutes=Math.floor(secondsRemaining/60);var seconds=secondsRemaining%60;self.scope.find('[data-role="counter"]').html(minutes+':'+((seconds>=10)?seconds:'0'+seconds));}},1000);}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.system.api',{initialize:function(){this.on('click','[data-action="showEndpoint"]',this.showEndpoint);},showEndpoint:function(e){e.preventDefault();var self=this;var url=$(e.currentTarget).attr('href');this.scope.find('.cApiTree_activeNode').removeClass('cApiTree_activeNode');$(e.currentTarget).parent('li').addClass('cApiTree_activeNode');this.scope.find('[data-role="referenceContainer"]').html($('<div/>').addClass('ipsLoading').css({height:'300px'}));ips.getAjax()(url).done(function(response){self.scope.find('[data-role="referenceContainer"]').html(response)}).fail(function(){window.location=url;});this.scope.find('[data-role="referenceContainer"]')[0].scrollIntoView({behavior:"smooth"});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.system.apiPermissions',{initialize:function(){this.on('click','[data-action="toggleSection"]',this.toggleSection);this.on('click','.cApiPermissions [data-action="checkAll"]',this.checkAll);this.on('click','.cApiPermissions [data-action="checkNone"]',this.checkNone);this.on('click','.cApiPermissions_header [data-action="checkAll"]',this.checkAllHeader);this.on('click','.cApiPermissions_header [data-action="checkNone"]',this.checkNoneHeader);this.setup();},setup:function(){var self=this;var sections=this.scope.find('.cApiPermissions > li');sections.each(function(){self._calculatedCheckedEndpoints($(this));});},toggleSection:function(e){var header=$(e.currentTarget).parent();if(header.hasClass('cApiPermissions_open')){this._collapseSection(header);}else{this._expandSection(header);}},checkAllHeader:function(e){e.preventDefault();var self=this;var header=$(e.currentTarget).closest('.cApiPermissions_header');var sections=header.next('.cApiPermissions').find('> li');sections.each(function(){var next=$(this).find('> ul');if(!next.is(':visible')){next.animationComplete(function(){setTimeout(function(){self._togglePermissions(true,next);},300);});self._expandSection($(this));}else{self._togglePermissions(true,next);}})},checkNoneHeader:function(e){e.preventDefault();var self=this;var header=$(e.currentTarget).closest('.cApiPermissions_header');var sections=header.next('.cApiPermissions').find('> li');sections.each(function(){var next=$(this).find('> ul');if(!next.is(':visible')){next.animationComplete(function(){setTimeout(function(){self._togglePermissions(false,next);},300);});self._expandSection($(this));}else{self._togglePermissions(false,next);}})},checkAll:function(e){e.preventDefault();var self=this;var header=$(e.currentTarget).parents('li').first();var next=header.find('> ul');if(!next.is(':visible')){next.animationComplete(function(){setTimeout(function(){self._togglePermissions(true,next);},300);});this._expandSection(header);}else{this._togglePermissions(true,next);}},checkNone:function(e){e.preventDefault();var self=this;var header=$(e.currentTarget).parents('li').first();var next=header.find('> ul');if(!next.is(':visible')){next.animationComplete(function(){setTimeout(function(){self._togglePermissions(false,next);},300);});this._expandSection(header);}else{this._togglePermissions(false,next);}},_calculatedCheckedEndpoints:function(section){var totalEndpoints=section.find('input[name*="access"]');var checkedEndpoints=totalEndpoints.filter(':checked');var endpointSpan=section.find('[data-role="endpointOverview"]');if(section.hasClass('cApiPermissions_open')){endpointSpan.hide();}else{var text=ips.getString('apiEndpoints_all');if(!checkedEndpoints.length){text=ips.getString('apiEndpoints_none');}else if(totalEndpoints.length!==checkedEndpoints.length){text=ips.pluralize(ips.getString('apiEndpoints_some',{checked:checkedEndpoints.length}),totalEndpoints.length);}
|
||||
endpointSpan.text(text).show();}},_togglePermissions:function(state,container){container.find('input[type="checkbox"]:not( [disabled] )').prop('checked',state).change();},_expandSection:function(section){var next=section.find('> ul');section.addClass('cApiPermissions_open').removeClass('cApiPermissions_closed');ips.utils.anim.go('fadeInDown fast',next);this._calculatedCheckedEndpoints(section);},_collapseSection:function(section){section.removeClass('cApiPermissions_open').addClass('cApiPermissions_closed');this._calculatedCheckedEndpoints(section);},});}(jQuery,_));;
|
||||
endpointSpan.text(text).show();}},_togglePermissions:function(state,container){container.find('input[type="checkbox"]:not( [disabled] )').prop('checked',state).change();},_expandSection:function(section){var next=section.find('> ul');section.addClass('cApiPermissions_open').removeClass('cApiPermissions_closed');ips.utils.anim.go('fadeInDown fast',next);this._calculatedCheckedEndpoints(section);},_collapseSection:function(section){section.removeClass('cApiPermissions_open').addClass('cApiPermissions_closed');this._calculatedCheckedEndpoints(section);},});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.system.api',{initialize:function(){this.on('click','[data-action="showEndpoint"]',this.showEndpoint);},showEndpoint:function(e){e.preventDefault();var self=this;var url=$(e.currentTarget).attr('href');this.scope.find('.cApiTree_activeNode').removeClass('cApiTree_activeNode');$(e.currentTarget).parent('li').addClass('cApiTree_activeNode');this.scope.find('[data-role="referenceContainer"]').html($('<div/>').addClass('ipsLoading').css({height:'300px'}));ips.getAjax()(url).done(function(response){self.scope.find('[data-role="referenceContainer"]').html(response)}).fail(function(){window.location=url;});this.scope.find('[data-role="referenceContainer"]')[0].scrollIntoView({behavior:"smooth"});}});}(jQuery,_));;
|
||||
@@ -1,9 +1,6 @@
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.notifications',{initialize:function(){this.on(document,'menuOpened',this.menuOpened);this.on(document,'permissionDenied.notifications',this.hideNotice);this.on(document,'subscribePending.notifications',this.subscribePending);this.on(document,'subscribeSuccess.notifications',this.subscribeSuccess);this.on(document,'subscribeFail.notifications',this.subscribeFail);this.on('click','[data-action=browserNotificationPrompt]',this.requestPermission);this.on('click','[data-role=dismissNotification]',this.dismissNotification);this.on('click','[data-action="rejectPush"]',this.rejectPush);if(ips.getSetting('memberID')&&ips.utils.notification.supported&&ips.utils.serviceWorker.supported){this.setup();}},setup:function(){this._timeout=null;this._buttonText='';this._missingSubscription=false;if(ips.utils.notification.needsPermission()&&_.isUndefined(ips.utils.cookie.get('browserNotificationDismiss'))){this.scope.html(ips.templates.render('core.browserNotification.prompt')).hide();}else if(ips.utils.notification.hasPermission()&&_.isUndefined(ips.utils.cookie.get('notificationPushRejected'))){ips.utils.notification.getSubscription().then(subscription=>{if(subscription){return;}
|
||||
this._missingSubscription=true;this.scope.html(ips.templates.render('core.browserNotification.missingSubscription')).hide();}).catch(err=>{Debug.log("getSubscription failed - browser may not support pushManager");Debug.log(err);return;});}},destroy:function(){clearTimeout(this._timeout);},menuOpened:function(e,data){let date;const showPrompt=()=>{this._timeout=setTimeout(()=>{this.scope.slideDown('fast');ips.utils.cookie.unset('notificationMenuShown');},750);};if(data.elemID==='elFullNotifications'){if(this._missingSubscription){showPrompt();}else{if(ips.utils.cookie.get('notificationMenuShown')===undefined){date=parseInt(ips.utils.cookie.get('notificationMenuShown'));if(date&&Date.now()>=date){showPrompt();}}else{date=new Date();date.setDate(date.getDate()+2);ips.utils.cookie.set('notificationMenuShown',date.getTime(),true);}}}},subscribePending:function(e,data){const button=this.scope.find('[data-action="browserNotificationPrompt"]');this._buttonText=button.text();button.prop('disabled',true).text(ips.getString('notificationsEnabling'));},subscribeSuccess:function(e,data){const button=this.scope.find('[data-action="browserNotificationPrompt"]');button.prop('disabled',true).text(ips.getString('notificationsSubscribed'));},subscribeFail:function(e,data){this.scope.find('[data-action="browserNotificationPrompt"]').prop('disabled',false).text(this._buttonText);this.scope.find('[data-role="promptMessage"]').text(ips.getString('notificationsSubscribeFailed')).slideDown();},requestPermission:function(){this.scope.find('[data-role="promptMessage"]').text(ips.getString('notificationsAllowPrompt')).slideDown();$(document).trigger('requestPermission.notifications');},rejectPush:function(e){e.preventDefault();ips.utils.cookie.set('notificationPushRejected',true,true);this.hideNotice();},hideNotice:function(){this.scope.slideUp('fast');},dismissNotification:function(e){if(e){e.preventDefault();}
|
||||
var date=new Date();date.setDate(date.getDate()+100);ips.utils.cookie.set('browserNotificationDismiss',true,date.toUTCString());this.scope.slideUp({duration:400,complete:function(){$(this).remove();}});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.onlineUsersWidget',{initialize(){if(!ips.getSetting('member_url')||this.elem.querySelector(`[data-memberId="${ips.getSetting('memberID')}"]`)){return;}
|
||||
const memberRowHtml=ips.templates.render('core.onlineUser.linked',{memberUrl:ips.getSetting('member_url'),memberHovercardUrl:ips.getSetting('member_hovercardUrl'),formattedName:ips.getSetting('member_formattedName'),memberId:ips.getSetting('memberID')});this.scope.find('ul').prepend(memberRowHtml);const numOnline=this.elem.querySelector('[data-memberCount]');if(numOnline){numOnline.innerText=ips.pluralize(ips.getString('widget_onlineusers_membercount'),parseInt(numOnline.dataset.membercount)+1);}
|
||||
this.elem.querySelector('li[data-noneOnline]')?.remove();}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.poll',{initialize:function(){this.on('submit','form',this.submitPoll);this.on('click','[data-action="viewResults"]',this.viewResults);},viewResults:function(e){e.preventDefault();var url=$(e.currentTarget).attr('href')+'&fetchPoll=1&viewResults=1';if($(e.currentTarget).attr('data-viewResults-confirm')){var self=this;ips.ui.alert.show({type:'confirm',icon:'warn',message:ips.getString('generic_confirm'),subText:ips.getString('warn_allow_result_view'),callbacks:{ok:function(){self._viewResults(url+'&nullVote=1');}}});}else{this._viewResults(url);}},_viewResults:function(url){var self=this;self._setContentsLoading();ips.getAjax()(url).done(function(response){self.cleanContents();self.scope.html(response);$(document).trigger('contentChange',[self.scope]);});},_setContentsLoading:function(){var container=this.scope.find('[data-role="pollContents"]');var height=container.outerHeight();container.css({height:height+'px'}).html('').addClass('ipsLoading');},submitPoll:function(e){var form=$(e.currentTarget);if(form.attr('data-bypassAjax')){return}
|
||||
e.preventDefault();var url=form.attr('action');var self=this;this.scope.find('button[type="submit"]').prop('disabled',true).text(ips.getString('votingNow'));if(url.match(/\?/)){url+='&';}else{url+='?';}
|
||||
ips.getAjax()(url+'fetchPoll=1',{data:form.serialize(),type:'POST'}).done(function(response){self.cleanContents();self.scope.html(response);$(document).trigger('contentChange',[self.scope]);ips.ui.flashMsg.show(ips.getString('thanksForVoting'));}).fail(function(){form.attr('data-bypassAjax',true).submit();});}});}(jQuery,_));;
|
||||
@@ -20,11 +17,11 @@ this.scope.find('[data-role="pollContainer"]').append(ips.templates.render('core
|
||||
this.scope.find('.ipsTags__item:not(.ipsTags__item--edit)').remove();this.scope.prepend(data.tags);var editablePrefix=$('body').find('[data-editablePrefix]');if(editablePrefix.length){if(data.prefix){editablePrefix.html(data.prefix).removeClass('ipsHide');}else{editablePrefix.html('').addClass('ipsHide');}}else if(data.prefix.length){this.scope.prepend(data.prefix);}
|
||||
this._setCount();this._checkMinMax();if(data.tagsChanged==1){ips.ui.flashMsg.show(ips.getString('tagsUpdated'));}},removeTag:function(e){e.preventDefault();var self=this;var remove=$(e.currentTarget);var url=remove.attr('href');var tagContainer=remove.closest('.ipsTags__item');var tag=tagContainer.find('.ipsTags__tag');tagContainer.fadeOut('fast');this._count--;this._checkMinMax();ips.getAjax()(url,{bypassRedirect:true}).done(function(){ips.ui.flashMsg.show(ips.getString('tagRemoved'));setTimeout(function(){tagContainer.remove();},200);}).fail(function(jqXHR,textStatus,errorThrown){tagContainer.stop().show().css({opacity:"1"});self._count++;if(jqXHR.responseJSON){ips.ui.alert.show({type:'alert',icon:'warn',message:jqXHR.responseJSON,callbacks:{}});}});},_checkMinMax:function(){var allowRemove=!(this._minTags&&this._count<=this._minTags);this.scope.find('[data-action="removeTag"]').toggle(allowRemove).end().find('.ipsTags__item--deletable').toggleClass('ipsTags__item--deletable',allowRemove);this.scope.find('.ipsTags__item--edit').toggle(!(this._maxTags&&this._count>=this._maxTags));},_setCount:function(){var prefix=this._getPrefix();var count=this.scope.find('.ipsTags__item').length;if(prefix.length&&prefix.is(':visible')){count++;}
|
||||
this._count=count;},_getPrefix:function(){return $('body').find('[data-editablePrefix]');}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.tagEditorForm',{_placeholder:null,_menuID:'',_tagEditID:'',initialize:function(){this.on(document,'menuOpened',this.menuOpened);this.on(document,'menuClosed',this.menuClosed);this.on('submit','form',this.submitForm);this.setup();},setup:function(){this._menuID=this.scope.closest('.ipsMenu').attr('id').replace('_menu','');this._tagEditID=this._menuID.replace('elTagEditor_','');},menuClosed:function(e,data){if(data.elemID!=this._menuID){return;}
|
||||
this.scope.html(ips.templates.render('core.edittags.default'));},menuOpened:function(e,data){if(data.elemID!=this._menuID){return;}
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.tagEditorForm',{_placeholder:null,_menuID:'',_tagEditID:'',initialize:function(){this.on(document,'menuOpened',this.menuOpened);this.on(document,'menuClosed',this.menuClosed);this.on('submit','form',this.submitForm);this.setup();},setup:function(){this._menuID=this.scope.closest('.ipsMenu').attr('id').replace('_menu','');this._tagEditID=this._menuID.replace('elTagEditor_','');},menuClosed:function(e,data){if(data.elemID!==this._menuID){return;}
|
||||
ips.cleanContentsOf(this.elem);this.scope.html(ips.templates.render('core.edittags.default'));this._buildPlaceholder();},menuOpened:function(e,data){if(data.elemID!=this._menuID){return;}
|
||||
var self=this;var url=$(data.originalEvent.currentTarget).attr('href');ips.getAjax()(url).done(function(response){self._setLoading(false);self.scope.html(response);$(document).trigger('contentChange',[self.scope]);}).fail(function(){window.location=url;});},submitForm:function(e){e.preventDefault();var self=this;var form=$(e.currentTarget);var autoComplete=this.scope.find('[data-ipsAutocomplete]');autoComplete.trigger('blur');setTimeout(function(){if(ips.ui.autocomplete.getObj(autoComplete).hasErrors()){e.preventDefault();return;}
|
||||
self._setLoading(true);ips.getAjax()(form.attr('action'),{type:'post',data:form.serialize(),dataType:'json'}).done(function(response){self.scope.trigger('tagsUpdated',{tagEditID:self._tagEditID,tags:response.tags,prefix:response.prefix,tagsChanged:response.tagsChanged});self.scope.trigger('closeMenu');setTimeout(function(){self._setLoading(false);},200);}).fail(function(jqXHR,textStatus,errorThrown){if(jqXHR.responseJSON){ips.ui.alert.show({type:'alert',icon:'warn',message:jqXHR.responseJSON,callbacks:{}});}});},500);},_setLoading:function(loading){if(loading){if(!this._placeholder){this._buildPlaceholder();}
|
||||
var width=this.scope.outerWidth();var height=this.scope.outerHeight();this.scope.hide();this._placeholder.show().css({width:width+'px',height:height+'px'});}else{if(this._placeholder){this._placeholder.hide();this.scope.show();}}},_buildPlaceholder:function(){this._placeholder=$('<div/>').addClass('ipsLoading').hide();this.scope.after(this._placeholder);}});}(jQuery,_));;
|
||||
self._setLoading(true);ips.getAjax()(form.attr('action'),{type:'post',data:form.serialize(),dataType:'json'}).done(function(response){self.scope.trigger('tagsUpdated',{tagEditID:self._tagEditID,tags:response.tags,prefix:response.prefix,tagsChanged:response.tagsChanged});self.scope.trigger('closeMenu');}).fail(function(jqXHR,textStatus,errorThrown){if(jqXHR.responseJSON){ips.ui.alert.show({type:'alert',icon:'warn',message:jqXHR.responseJSON,callbacks:{}});}});},500);},_setLoading:function(loading){if(loading){if(!this._placeholder){this._buildPlaceholder();}
|
||||
var width=this.scope.outerWidth();var height=this.scope.outerHeight();this.scope.hide();this._placeholder.show().css({width:width+'px',height:height+'px'});}else{if(this._placeholder){this._placeholder.hide();this.scope.show();}}},_buildPlaceholder:function(){this._placeholder?.remove?.();this._placeholder=$('<div/>').addClass('ipsLoading').hide();this.scope.after(this._placeholder);}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.announcementBanner',{initialize:function(){this.setup();this.on('click','[data-role="dismissAnnouncement"]',this.dismissAnnouncement);},setup:function(){this.scope.find('[data-announcementId]').each(function(){var announcement=$(this);if(ips.utils.cookie.get('announcement_'+announcement.attr('data-announcementId'))){announcement.hide();}});},dismissAnnouncement:function(e){var element=$(e.target).closest('[data-announcementId]');var id=element.attr('data-announcementId');var date=new Date();date.setTime(date.getTime()+(7*86400000));ips.utils.cookie.set('announcement_'+id,true,date.toUTCString());element.slideUp({duration:400,complete:function(){$(this).remove();}});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.articlePages',{_currentPage:1,_pages:null,_articleID:'',initialize(){this.on('paginationClicked',this.paginationClicked);this.setup();},setup(){this._articleID=this._getArticleID();this.on(window,`historychange:article-${this._articleID}`,this.stateChange);this._setupPages();},stateChange(){if(!(('article-'+this._articleID)in ips.utils.history.getState())){return;}
|
||||
const state=ips.utils.history.getState(`article-${this._articleID}`)
|
||||
@@ -43,7 +40,7 @@ if(this.scope.attr('data-role')=='cookieConsentBar'&&!ips.utils.cookie.get('cook
|
||||
this.scope.toggle(!hide);$('body').toggleClass('cWithGuestTerms',!hide);},dismissTerms:function(e){e.preventDefault();ips.utils.cookie.set('guestTermsDismissed',1);this.hideGuestBar();},hideGuestBar:function(){this.scope.toggle(false);$('body').toggleClass('cWithGuestTerms',false);}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.followForm',{initialize:function(){this.on('submit',this.submitForm);this.on('click','[data-action="unfollow"]',this.unfollow);this.setup();},setup:function(){this._app=this.scope.attr('data-followApp');this._area=this.scope.attr('data-followArea');this._id=this.scope.attr('data-followID');},unfollow:function(e){e.preventDefault();this._doFollowAction($(e.currentTarget).attr('href'),{},true);},submitForm:function(e){e.preventDefault();this._doFollowAction(this.scope.attr('action'),this.scope.serialize(),false);},_doFollowAction:function(url,data,unfollow){var self=this;var dims=ips.utils.position.getElemDims(this.scope.parent('div'));this.scope.hide().parent('div').css({width:dims.outerWidth+'px',height:dims.outerHeight+'px'}).addClass('ipsLoading');ips.getAjax()(url,{data:data,type:'post'}).done(function(response){if(unfollow){self.trigger('followingItem',{feedID:self._area+'-'+self._id,unfollow:true});}else{self.trigger('followingItem',{feedID:self._area+'-'+self._id,notificationType:self.scope.find('[name="follow_type"]:checked').val(),anonymous:!self.scope.find('[name="follow_public_checkbox"]').is(':checked')});}
|
||||
ips.ui.flashMsg.show(ips.getString('followUpdated'));}).fail(function(jqXHR,textStatus,errorThrown){window.location=url;}).always(function(){self.scope.parents('.ipsHovercard').remove();});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.followButton',{initialize:function(){this.setup();this.on(document,'followingItem',this.followingItemChange);},setup:function(){this._app=this.scope.attr('data-followApp');this._area=this.scope.attr('data-followArea');this._id=this.scope.attr('data-followID');this._feedID=this._area+'-'+this._id;this._button=this.scope.find('[data-role="followButton"]');},followingItemChange:function(e,data){if(data.feedID==this._feedID){this._reloadButton();}},_reloadButton:function(){this._button.addClass('i-opacity_3');var self=this;var pos=ips.utils.position.getElemPosition(this._button);var dims=ips.utils.position.getElemDims(this._button);this.scope.append(ips.templates.render('core.follow.loading'));this.scope.find('.ipsLoading').css({width:dims.outerWidth+'px',height:dims.outerHeight+'px',top:"0",left:"0",position:'absolute',zIndex:ips.ui.zIndex()});ips.getAjax()(ips.getSetting('baseURL')+'index.php?app=core&module=system&controller=notifications&do=button',{data:_.extend({follow_app:this._app,follow_area:this._area,follow_id:this._id,},(this.scope.attr('data-buttonType'))?{button_type:this.scope.attr('data-buttonType')}:{},(this.scope.attr('data-buttonSize'))?{button_size:this.scope.attr('data-buttonSize')}:{})}).done(function(response){self.scope.html(response);$(document).trigger('contentChange',[self.scope]);if($('input[data-toggle-id="auto_follow_toggle"]').length){var val=self.scope.find('[data-role="followButton"]').attr('data-following');if(val=='false'&&$('input[data-toggle-id="auto_follow_toggle"]').is(':checked')){$('input[data-toggle-id="auto_follow_toggle"]').prop('checked',false).change();}else if(val=='true'&&!$('input[data-toggle-id="auto_follow_toggle"]').is(':checked')){$('input[data-toggle-id="auto_follow_toggle"]').prop('checked',true).change();}}}).fail(function(){self._button.removeClass('i-opacity_3');}).always(function(){self.scope.find('.ipsLoading').remove();});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.followButton',{initialize:function(){this.setup();this.on(document,'followingItem',this.followingItemChange);},setup:function(){this._app=this.scope.attr('data-followApp');this._area=this.scope.attr('data-followArea');this._id=this.scope.attr('data-followID');this._feedID=this._area+'-'+this._id;this._button=this.scope.find('[data-role="followButton"]');},followingItemChange:function(e,data){if(data.feedID===this._feedID){this._reloadButton();}},_reloadButton:function(){this._button.addClass('i-opacity_3');var self=this;var pos=ips.utils.position.getElemPosition(this._button);var dims=ips.utils.position.getElemDims(this._button);this.scope.append(ips.templates.render('core.follow.loading'));this.scope.find('.ipsLoading').css({width:dims.outerWidth+'px',height:dims.outerHeight+'px',top:"0",left:"0",position:'absolute',zIndex:ips.ui.zIndex()});ips.getAjax()(ips.getSetting('baseURL')+'index.php?app=core&module=system&controller=notifications&do=button',{data:_.extend({follow_app:this._app,follow_area:this._area,follow_id:this._id,},(this.scope.attr('data-buttonType'))?{button_type:this.scope.attr('data-buttonType')}:{},(this.scope.attr('data-buttonSize'))?{button_size:this.scope.attr('data-buttonSize')}:{})}).done(function(response){self.scope.html(response);$(document).trigger('contentChange',[self.scope]);if($('input[data-toggle-id="auto_follow_toggle"]').length){var val=self.scope.find('[data-role="followButton"]').attr('data-following');if(val=='false'&&$('input[data-toggle-id="auto_follow_toggle"]').is(':checked')){$('input[data-toggle-id="auto_follow_toggle"]').prop('checked',false).change();}else if(val=='true'&&!$('input[data-toggle-id="auto_follow_toggle"]').is(':checked')){$('input[data-toggle-id="auto_follow_toggle"]').prop('checked',true).change();}}}).fail(function(){self._button.removeClass('i-opacity_3');}).always(function(){self.scope.find('.ipsLoading').remove();});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.dataLayer',{eventHandlers:[],propertiesHandlers:[],initialize:function(){if(this.verify()){this.on('ipsDataLayer',this.handleEvent);this.on('ipsDataLayerProperties',this.handleProperties);this.setup();Debug.log('Pushing events to the dataLayer');}},setup:function(){for(let i in IpsDataLayerEventHandlers){let handler=IpsDataLayerEventHandlers[i];if(handler instanceof Function){try{let callback=handler();if(callback instanceof Function){this.eventHandlers.push(callback);}else{Debug.error(`Invalid Handler Callback Found: Returned value of type '${typeof (callback || undefined)}', expected a callback Function!`);}}catch(e){Debug.error(e);}}}
|
||||
for(let i in IpsDataLayerPropertiesHandlers){let handler=IpsDataLayerPropertiesHandlers[i];if(handler instanceof Function){try{let callback=handler();if(callback instanceof Function){this.propertiesHandlers.push(callback);}else{Debug.error(`Invalid Handler Callback Found: Returned value of type '${typeof (callback || undefined)}', expected a callback Function!`);}}catch(e){Debug.error(e);}}}
|
||||
this.unsetOldUniqueKeys();setTimeout(_.bind(this.loginLogout,this),200);setTimeout(_.bind(this.handleInitialEvents,this),202);this.on('ipsDataLayerSync',this.remoteFetchEvents);this.scope.find('[data-datalayer-postfetch]').on('click',function(e){setTimeout(function(){$(e.currentTarget).trigger('ipsDataLayerSync');},1500);});},handleEvent:function(evt,event){let Events=IpsDataLayerConfig._events;let Properties=IpsDataLayerConfig._properties;let PII=IpsDataLayerConfig._pii;if(!Object.keys(Events).length||!this.eventHandlers.length){return;}
|
||||
@@ -68,8 +65,9 @@ ips.utils.db.set('ipsDataLayer','login',{logged_in:1},false)}else{if(stored.logg
|
||||
ips.utils.db.set('ipsDataLayer','login',{logged_in:0},false);}},uniqueId:function(){let s=i=>{return Math.floor((1+Math.random())*Math.pow(16,i)).toString(16).substring(1);};let time=Date.now();let sec=Math.floor(time/1000);let secString=sec.toString(16);secString=secString.substring(secString.length-8);let ms=(time-(sec*1000))*1000;let msString=(ms+0x100000).toString(16).substring(1);return secString+msString+s(1)+'.'+s(4)+s(4);},unsetOldUniqueKeys:function(){let Events=IpsDataLayerConfig._events;for(let eventKey in Events){let saved=ips.utils.db.get('ipsDataLayer',eventKey)||{};if(Object.keys(saved).length){Debug.log(`Found stored unique keys for the event '${eventKey}'`);Debug.log(saved);if(!saved.exp||saved.exp<=(Date.now()/1000)){Debug.log(`Removing expired stored unique keys for the event '${eventKey}'`);ips.utils.db.set('ipsDataLayer',eventKey,0,false);}}}},remoteFetchEvents:function(){let self=this;ips.getAjax()('?app=core&module=system&controller=ajax&do=getDataLayerEvents').done(function(response){for(let i in response){self.handleEvent({},response[i]);}});},});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.contentMessage',{initialize:function(){this.on('change','#check_message_is_public',this.updateEditorBorder);this.setup();},setup:function(){this.scope.find('.ipsComposeArea_editor').addClass('cContentMessageEditor');this.updateEditorBorder();},updateEditorBorder:function(){if($('#check_message_is_public').is(":checked")){this.scope.find('.ipsComposeArea_editor').removeClass('cContentMessageEditor--private').addClass('cContentMessageEditor--public');}else{this.scope.find('.ipsComposeArea_editor').removeClass('cContentMessageEditor--public').addClass('cContentMessageEditor--private');}}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.moderation',{_editTimeout:0,_editingTitle:false,initialize:function(){this.on('submit','[data-role="moderationTools"]',this.moderationSubmit);this.on('mousedown','[data-role="editableTitle"]',this.editTitleMousedown);this.on('mouseup mouseleave','[data-role="editableTitle"]',this.editTitleMouseup);this.on('click','[data-role="editableTitle"]',this.editTitleMouseclick);},editTitleMousedown:function(e){var self=this;if(e.which!==1){return;}
|
||||
this._editTimeout=setTimeout(function(){self._editingTitle=true;clearTimeout(this._editTimeout);var anchor=$(e.currentTarget);anchor.hide();var inputNode=$('<input/>').attr({type:'text'}).attr('data-role','editTitleField').val(anchor.text().trim());anchor.after(inputNode);inputNode.focus();inputNode.on('blur',function(){inputNode.addClass('ipsField_loading');const oldTitle=anchor.text().trim();const newTitle=inputNode.val().trim();if(newTitle===''||newTitle===oldTitle){inputNode.remove();anchor.show();self._editingTitle=false;}
|
||||
this._editTimeout=setTimeout(function(){self._editingTitle=true;clearTimeout(this._editTimeout);var anchor=$(e.currentTarget);anchor.hide();var inputNode=$('<input/>').attr({type:'text'}).attr('data-role','editTitleField').val(anchor.text().trim());anchor.after(inputNode);inputNode.focus();let params={do:'ajaxEditTitle'};if(anchor.attr('data-params')!==undefined){params=Object.assign({},params,JSON.parse(anchor.attr('data-params')));}
|
||||
inputNode.on('blur',function(){inputNode.addClass('ipsField_loading');const oldTitle=anchor.text().trim();const newTitle=inputNode.val().trim();if(newTitle===''||newTitle===oldTitle){inputNode.remove();anchor.show();self._editingTitle=false;}
|
||||
else
|
||||
{ips.getAjax()(anchor.attr('href'),{method:'post',data:{do:'ajaxEditTitle',newTitle}}).done(function(response){anchor.text(response);}).fail(function(response){ips.ui.alert.show({type:'alert',icon:'warn',message:response.responseJSON,});}).always(function(){inputNode.remove();anchor.show();self._editingTitle=false;});}});inputNode.on('keypress',function(e){if(e.keyCode==ips.ui.key.ENTER){e.stopPropagation();e.preventDefault();inputNode.blur();return false;}});inputNode.on('keydown',function(e){if(e.keyCode==ips.ui.key.ESCAPE){inputNode.remove();anchor.show();self._editingTitle=false;return false;}});},1000);},editTitleMouseup:function(e){clearTimeout(this._editTimeout);},editTitleMouseclick:function(e){if(this._editingTitle){e.preventDefault();}},moderationSubmit:function(e){if(this._editingTitle){e.preventDefault();}
|
||||
{params={...params,...{"newTitle":newTitle}};ips.getAjax()(anchor.attr('href'),{method:'post',data:params}).done(function(response){anchor.text(response);}).fail(function(response){ips.ui.alert.show({type:'alert',icon:'warn',message:response.responseJSON,});}).always(function(){inputNode.remove();anchor.show();self._editingTitle=false;});}});inputNode.on('keypress',function(e){if(e.keyCode==ips.ui.key.ENTER){e.stopPropagation();e.preventDefault();inputNode.blur();return false;}});inputNode.on('keydown',function(e){if(e.keyCode==ips.ui.key.ESCAPE){inputNode.remove();anchor.show();self._editingTitle=false;return false;}});},1000);},editTitleMouseup:function(e){clearTimeout(this._editTimeout);},editTitleMouseclick:function(e){if(this._editingTitle){e.preventDefault();}},moderationSubmit:function(e){if(this._editingTitle){e.preventDefault();}
|
||||
var action=this.scope.find('[data-role="moderationAction"]').val();switch(action){case'delete':this._modActionDelete(e);break;case'move':this._modActionDialog(e,'move','narrow');break;case'hide':this._modActionDialog(e,'hide','narrow');break;case'split':this._modActionDialog(e,'split','wide');break;case'merge':this._modActionDialog(e,'merge','medium');break;case'tag':this._modActionDialog(e,'tag','narrow');break;case'untag':this._modActionDialog(e,'untag','narrow');break;default:$(document).trigger('moderationSubmitted');break;}},_modActionDelete:function(e){var self=this;var form=this.scope.find('[data-role="moderationTools"]');if(self._bypassDeleteCheck){return;}
|
||||
e.preventDefault();var count=parseInt(this.scope.find('[data-role="moderation"]:checked').length)+parseInt(this.scope.find('[data-role="moderation"]:hidden').length);ips.ui.alert.show({type:'confirm',icon:'warn',message:(count>1)?ips.pluralize(ips.getString('delete_confirm_many'),count):ips.getString('delete_confirm'),callbacks:{ok:function(){$(document).trigger('moderationSubmitted');self._bypassDeleteCheck=true;self.scope.find('[data-role="moderationTools"]').submit();}}});},_modActionDialog:function(e,title,size){e.preventDefault();var form=this.scope.find('[data-role="moderationTools"]');var moveDialog=ips.ui.dialog.create({url:form.attr('action')+'&'+form.serialize().replace(/%5B/g,'[').replace(/%5D/g,']'),modal:true,title:ips.getString(title),forceReload:true,size:size});moveDialog.show();$(document).trigger('moderationSubmitted');}});}(jQuery,_));;
|
||||
@@ -76,9 +76,9 @@ if(data['stream_classes_type']===0&&defaultValues['stream_classes_type']===1){re
|
||||
var containers={};if(!_.isUndefined(data['stream_classes'])&&_.isObject(data['stream_classes'])){_.each(_.without(_.keys(data['stream_classes']),'__EMPTY'),function(val,key){var contentType=$('div[data-role="streamContainer"][data-className="'+val.replace(/\\/g,'\\\\')+'"]').attr('data-contentKey');if(!_.isUndefined(contentType)&&$('input[name="stream_containers_'+contentType+'"]').length){containers[val]=$('input[name="stream_containers_'+contentType+'"]').val();}});}
|
||||
if(!_.isEmpty(containers)){if(!_.isUndefined(defaultValues['containers'])&&!_.isEqual(containers,defaultValues['containers'])){returnedValues['stream_containers']=containers;}}
|
||||
return returnedValues;},_buildRequestURL(extraParams){var urlDiff=this._getUrlDiff(this._formData);var params=[];_.each(urlDiff,function(val,key){if(_.isObject(val)){if(!_.size(val)){params.push(key+'=');}else{var keys=_.keys(val);var values=_.values(val);for(var i=0;i<keys.length;i++){var paramValue=(!_.isUndefined(values[i])?values[i]:1);params.push(key+'['+encodeURIComponent(keys[i])+']='+paramValue);}}}else{params.push(key+'='+encodeURIComponent(val));}});if(_.isObject(extraParams)){_.each(extraParams,function(val,key){params.push(key+'='+encodeURIComponent(val));});}
|
||||
return this._baseURL+'&'+params.join('&');},menuOpened(e,data){data.menu.find('input[type="text"]').focus().get(0).select();},removeStream(e){e.preventDefault();ips.ui.alert.show({type:'confirm',message:ips.getString('confirmRemoveStream'),callbacks:{ok(){window.location=$(e.currentTarget).attr('href')+'&wasConfirmed=1';},}});},toggleDefault(e){e.preventDefault();var self=this;var link=$(e.currentTarget);var value=link.attr('data-change');var url=link.attr('href');ips.getAjax()(url).done(function(response){if(value===1){self.scope.find('a[data-action="toggleStreamDefault"][data-change="0"]').removeClass('ipsHide');self.scope.find('a[data-action="toggleStreamDefault"][data-change="1"]').addClass('ipsHide');}else{self.scope.find('a[data-action="toggleStreamDefault"][data-change="0"]').addClass('ipsHide');self.scope.find('a[data-action="toggleStreamDefault"][data-change="1"]').removeClass('ipsHide');}
|
||||
return this._baseURL+'&'+params.join('&');},menuOpened(e,data){data.menu.find('input[type="text"]').focus().get(0).select();},removeStream(e){e.preventDefault();ips.ui.alert.show({type:'confirm',message:ips.getString('confirmRemoveStream'),callbacks:{ok(){window.location=$(e.currentTarget).attr('href')+'&wasConfirmed=1';},}});},toggleDefault(e){e.preventDefault();var self=this;var link=$(e.currentTarget);var value=link.attr('data-change');var url=link.attr('href');ips.getAjax()(url).done(function(response){if(value==1){self.scope.find('[data-role="toggleDefaultTrue"]').attr('hidden','');self.scope.find('[data-role="toggleDefaultFalse"]').removeAttr('hidden');}else{self.scope.find('[data-role="toggleDefaultTrue"]').removeAttr('hidden');self.scope.find('[data-role="toggleDefaultFalse"]').attr('hidden','');}
|
||||
if(!response.title){$('a[data-action="defaultStream"]').hide();}else{$('a[data-action="defaultStream"]').attr('href',response.url).attr('aria-label',response.title).show().find('[data-role="defaultStreamName"]').html(response.title);}
|
||||
if(value===1){if(!ips.utils.responsive.enabled||!ips.utils.responsive.currentIs('phone')&&$('a[data-action="defaultStream"]').is(':visible')){self._showStreamTooltip(response.tooltip);}else{ips.utils.anim.go('pulseOnce',$('a[data-action="defaultStream"]'));}}});},_showStreamTooltip(title){if(!this._tooltip){var tooltipHTML=ips.templates.render('core.tooltip',{id:'elDefaultStreamTooltip_'+this.controllerID});ips.getContainer().append(tooltipHTML);this._tooltip=$('#elDefaultStreamTooltip_'+this.controllerID);}else{this._tooltip.hide();}
|
||||
if(value==1){if(!ips.utils.responsive.enabled||!ips.utils.responsive.currentIs('phone')&&$('a[data-action="defaultStream"]').is(':visible')){self._showStreamTooltip(response.tooltip);}else{ips.utils.anim.go('pulseOnce',$('a[data-action="defaultStream"]'));}}});},_showStreamTooltip(title){if(!this._tooltip){var tooltipHTML=ips.templates.render('core.tooltip',{id:'elDefaultStreamTooltip_'+this.controllerID});ips.getContainer().append(tooltipHTML);this._tooltip=$('#elDefaultStreamTooltip_'+this.controllerID);}else{this._tooltip.hide();}
|
||||
if(this._tooltipTimer){clearTimeout(this._tooltipTimer);}
|
||||
this._tooltip.text(ips.getString('streamDefaultTooltip',{title:title}));var streamLink=$('a[data-action="defaultStream"]:visible');var self=this;var positionInfo={trigger:streamLink.first(),target:this._tooltip,center:true,above:true};var tooltipPosition=ips.utils.position.positionElem(positionInfo);$(this._tooltip).css({left:tooltipPosition.left+'px',top:tooltipPosition.top+'px',position:(tooltipPosition.fixed)?'fixed':'absolute',zIndex:ips.ui.zIndex()});if(tooltipPosition.location.vertical==='top'){this._tooltip.addClass('ipsTooltip_top');}else{this._tooltip.addClass('ipsTooltip_bottom');}
|
||||
this._tooltip.show();setTimeout(function(){if(self._tooltip&&self._tooltip.is(':visible')){ips.utils.anim.go('fadeOut',self._tooltip);}},3000);},_setStreamLoading(loading){var stream=this.scope.find('[data-role="streamContent"]');if(!loading){this._streamLoadingOverlay.hide();stream.css({opacity:"1"});return;}else{if(!this._streamLoadingOverlay){this._streamLoadingOverlay=$('<div/>').addClass('ipsLoading');ips.getContainer().append(this._streamLoadingOverlay);}
|
||||
|
||||
@@ -23,7 +23,7 @@ else
|
||||
{$('#elMetaTagEditor_customTags').find('li[data-role="noCustomMetaTagsMessage"]').show();}},formSubmit:function(e){var form=$(e.currentTarget);if(form.attr('data-noAjax')){return;}
|
||||
e.preventDefault();var self=this;form.find('.ipsButton').prop('disabled',true).addClass('ipsButton--disabled');ips.getAjax()(form.attr('action'),{data:form.serialize(),type:'post'}).done(function(){ips.ui.flashMsg.show(ips.getString('metaTagsSaved'));form.find('.ipsButton').prop('disabled',false).removeClass('ipsButton--disabled');self._changed=false;if(form.find('[name="meta_tag_title"]').val()){document.title=form.find('[name="meta_tag_title"]').val();}
|
||||
else
|
||||
{document.title=self.scope.attr('data-defaultPageTitle');}}).fail(function(){form.attr('data-noAjax','true');form.submit();});},beforeUnload:function(){if(this._changed){return ips.getString('metaTagsUnsaved');}},addMetaBlock:function(e){e.preventDefault();var copy=this.scope.find('[data-role="metaTemplate"]').clone().attr('data-role','metaTagRow').hide();$('#elMetaTagEditor_customTags').append(copy);ips.utils.anim.go('fadeIn',copy);$(document).trigger('contentChange',[copy]);this.changed();this._showHideNoTagsMessage();},changed:function(e){this._changed=true;}});}(jQuery,_));;
|
||||
{document.title=self.scope.attr('data-defaultPageTitle');}}).fail(function(){form.attr('data-noAjax','true');form.submit();});},beforeUnload:function(){if(this._changed){return ips.getString('metaTagsUnsaved');}},addMetaBlock:function(e){var copy=this.scope.find('[data-role="metaTemplate"]').clone().attr('data-role','metaTagRow').hide();$('#elMetaTagEditor_customTags').append(copy);ips.utils.anim.go('fadeIn',copy);$(document).trigger('contentChange',[copy]);this.changed();this._showHideNoTagsMessage();},changed:function(e){this._changed=true;}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.system.notificationSettings',{initialize:function(){this.on('click','[data-action="enablePush"]',this.enablePush);this.on(document,'subscribePending.notifications',this.subscribePending);this.on(document,'subscribeSuccess.notifications',this.subscribeSuccess);this.on(document,'subscribeFail.notifications',this.subscribeFail);this.on(document,'permissionDenied.notifications',this.permissionDenied);this.on('click','[data-action="showNotificationSettings"]',this.showNotificationSettings);this.on('click','[data-action="closeNotificationSettings"]',this.closeNotificationSettings);this.on('change','[data-role="notificationSettingsWindow"]',this.saveNotificationSettings);this.on('change','#elBrowserNotifications',this.promptMe);this.setup();},setup:function(){this._showNotificationOptions();},_showNotificationOptions:function(){const pushElement=this.scope.find('[data-action="enablePush"]');if(ips.utils.notification.supported&&ips.utils.serviceWorker.supported){if(Notification.permission==='granted'){ips.utils.notification.getSubscription().then(subscription=>{if(!subscription){return;}
|
||||
const enableLink=pushElement.contents();pushElement.html(ips.templates.render('core.notifications.checking'));const jsonSubscription=JSON.parse(JSON.stringify(subscription));const key=jsonSubscription.keys.p256dh;ips.getAjax()(ips.getSetting('baseURL')+'index.php?app=core&module=system&controller=notifications&do=verifySubscription',{type:'post',data:{key}}).done((response,status,jqXHR)=>{if(jqXHR.status===200){pushElement.html(ips.templates.render('core.notifications.success'));return;}
|
||||
pushElement.html(enableLink);}).fail(()=>{pushElement.html(enableLink);});}).catch(err=>{Debug.error(err);pushElement.html(ips.templates.render('core.notifications.notSupported'));});}else if(Notification.permission==='denied'){pushElement.html(ips.templates.render('core.notifications.fail'));}}else{Debug.log("Notifications not supported");pushElement.html(ips.templates.render('core.notifications.notSupported'));}
|
||||
|
||||
@@ -28,20 +28,23 @@ const response=await ips.fetch(ips.getSetting('baseURL'),{method:'GET',data});th
|
||||
ips.utils.anim.go('fadeIn',this.scope);this.trigger('loadedWidget.widgets',{blockID:this._blockID});}catch(e){this.scope.html('Error');}
|
||||
this._setLoading(false);},resetResponsiveClasses(deviceList){this.scope.removeClass('ipsResponsive_hidePhone').removeClass('ipsResponsive_hideDesktop').removeClass('ipsResponsive_hideTablet');for(const value of["Phone","Tablet","Desktop"].filter(i=>!deviceList.includes(i))){this.scope.addClass('ipsResponsive_hide'+value);}},markAllRead(){this.scope.find('[data-ips-unread]').removeAttr('data-ips-unread');},_setLoading(status){if(status){this.scope.html('').addClass('ipsLoading cSidebarBlock_loading');}else{this.scope.removeClass('ipsLoading cSidebarBlock_loading');}}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.widgets.carouselControls',{initialize(){if(this.elem.closest('.pageBuilderRoot')||!this.getCarousel()){return;}
|
||||
this._area=undefined;this.setupCarousel();},_area:undefined,getCarousel(){if(this._area===undefined){const container=this.elem.closest('.cWidgetContainer');if(!container?.classList.contains('cWidgetContainer--carousel')){this._area=null;}else{this._area=container;}}
|
||||
return this._area;},_carouselIndicator:undefined,_isScrolling:false,_actualCarouselIndex:0,getCarouselOffset(){const children=this.getCarousel().querySelectorAll(':scope > .cWidgetContainer:not([hidden])');if(this._isScrolling){return[this._actualCarouselIndex,children.length,children];}
|
||||
const box=this.getCarousel().getBoundingClientRect();let index;for(index=0;index<children.length;index++){if(children[index].getBoundingClientRect().left>=(box.left-10)){return[index,children.length,children];}}
|
||||
return[children.length-1,children.length,children];},getCarouselIndicator(){if(this._carouselIndicator===undefined){this._carouselIndicator=this.elem.querySelector(`.cWidgetContainer__carousel-indicator`);}
|
||||
this._area=undefined;this.setupCarousel();},_area:undefined,getCarousel(){if(this._area===undefined){const container=this.elem.closest('.cWidgetContainer');if(!container?.classList.contains('cWidgetContainer--carousel')){this._area=null;}else{this._area=container.querySelector(":scope > .cWidgetContainer__carousel-wrap")||container;}}
|
||||
return this._area;},_carouselIndicator:undefined,_isScrolling:false,_actualCarouselIndex:0,getCarouselOffset(){let children=[...this.getCarousel().querySelectorAll(':scope > .cWidgetContainer:not([hidden])')];if(this._isScrolling){return[this._actualCarouselIndex,children.length,children];}
|
||||
const box=this.getScrollerBox();let index;for(index=0;index<children.length-1;index++){if(!this.isRTL()&&Math.ceil(children[index].getBoundingClientRect().left)>=Math.floor(box.left)){return[index,children.length,children];}else if(this.isRTL()&&Math.floor(children[index].getBoundingClientRect().right)<=Math.ceil(box.right)){return[index,children.length,children];}}
|
||||
return[children.length-1,children.length,children];},isRTL(){return ips.ui.carousel.isRTL(this.getCarousel());},getCarouselIndicator(){if(this._carouselIndicator===undefined){this._carouselIndicator=this.elem.querySelector(`.cWidgetContainer__carousel-indicator`);}
|
||||
return this._carouselIndicator;},updateCarouselIndicator(){const indicator=this.getCarouselIndicator();if(!indicator){Debug.warn(`Couldn't find a carousel indicator for a carousel`);return;}
|
||||
let[index,total]=this.getCarouselOffset();index=Math.min(index,this.getPageCount());total=Math.min(total,this.getPageCount());indicator.innerHTML=this.shouldUseCarouselLinks()?`<a href="#${this.getCarouselHref(index)}">${index + 1}/${total}</a>`:`${index + 1}/${total}`;this.elem.querySelectorAll('button').forEach(el=>total<=1?el.setAttribute('disabled',''):el.removeAttribute('disabled'));},carouselScroll(e){const button=e.target?.closest?.(`[data-carousel-arrow]`);if(!button){return;}
|
||||
const[index,total,children]=this.getCarouselOffset();const dir=button.dataset.carouselArrow||'next';const box=this.getCarousel().getBoundingClientRect();const atEnd=dir!=='prev'&&((index===total-1)||(children[total-1].getBoundingClientRect().right<=box.right-5));const toIndex=((dir==='prev'&&index===0)?(total-1):(atEnd?0:index+(dir==='prev'?-1:1)))%total;const childBox=children[toIndex].getBoundingClientRect();const scrollAmount=(toIndex===total-1?childBox.right:childBox.left)-box.left;this._isScrolling=true;this._actualCarouselIndex=toIndex;children.forEach(child=>child.style.scrollSnapStop="normal")
|
||||
this.getCarousel().scrollTo({left:this.getCarousel().scrollLeft+scrollAmount,behavior:"smooth"});this.updateCarouselIndicator();},carouselScrollEnd(){this._isScrolling=false;const children=this.getCarousel().querySelectorAll(":scope > .cWidgetContainer:not([hidden])");children.forEach(child=>child.style.scrollSnapStop="")
|
||||
const[index,total,children]=this.getCarouselOffset();const dir=button.dataset.carouselArrow||'next';const box=this.getScrollerBox();let atEnd=false;if(dir==='next'){if(index===total-1){atEnd=true;}else if(!this.isRTL()){atEnd=Math.floor(children[total-1].getBoundingClientRect().right)<=Math.ceil(box.right);}else{atEnd=Math.ceil(children[total-1].getBoundingClientRect().left)>=Math.floor(box.left);}}else{if(index===0){atEnd=true;}else if(this.isRTL()){atEnd=Math.floor(children[0].getBoundingClientRect().right)<=Math.ceil(box.right);}else{atEnd=Math.ceil(children[0].getBoundingClientRect().left)>=Math.floor(box.left);}}
|
||||
const toIndex=((dir==='prev'&&atEnd)?(total-1):(atEnd?0:index+(dir==='prev'?-1:1)))%total;const childBox=children[toIndex].getBoundingClientRect();const paddedBox=this.getPaddedScrollBox();let scrollAmount;if(this.isRTL()){scrollAmount=(toIndex===total-1?childBox.left:childBox.right)-paddedBox.right;}else{scrollAmount=(toIndex===total-1?childBox.right:childBox.left)-paddedBox.left;}
|
||||
this._isScrolling=true;this._actualCarouselIndex=toIndex;children.forEach(child=>child.style.scrollSnapStop="normal")
|
||||
this.getCarousel().scrollTo({left:this.getCarousel().scrollLeft+scrollAmount,behavior:"smooth"});this.updateCarouselIndicator();},getScrollerBox(){return this.getCarousel().getBoundingClientRect();},getPaddedScrollBox(){const box=this.getScrollerBox();const padding=this.getScrollPadding();return new DOMRect(box.x+padding.left,box.y,box.width-(padding.left+padding.right),box.height);},getScrollPadding(){return ips.ui.carousel.getScrollPadding(this.getCarousel());},carouselScrollEnd(){this._isScrolling=false;const children=this.getCarousel().querySelectorAll(":scope > .cWidgetContainer:not([hidden])");children.forEach(child=>child.style.scrollSnapStop="")
|
||||
this.updateCarouselIndicator();},getCarouselHref(idx){if(this.shouldUseCarouselLinks()){return`carouselwidget_${this.getCarousel().dataset.widgetarea}_${this.getCarousel().dataset.widgetAreaId}_${idx + 1}`;}
|
||||
return'';},shouldUseCarouselLinks(){return!!(this.getCarousel().dataset.widgetAreaId&&this.getCarousel().dataset.widgetarea);},setupCarousel(){if(!(this.getCarousel()instanceof Element)||this.getCarousel().closest('body')!==document.body||!this.getCarousel().classList.contains('cWidgetContainer--carousel')||!this.getCarousel().querySelector(`:scope > .cWidgetContainer`)||(this.getCarousel().querySelectorAll(`:scope > .cWidgetContainer`).length===1&&this.getCarousel().querySelector(`:scope > .cWidgetContainer`).getBoundingClientRect().width>=this.elem.getBoundingClientRect().width)){this.elem.ipsHide();return;}
|
||||
return'';},shouldUseCarouselLinks(){return!!(this.getCarousel().dataset.widgetAreaId&&this.getCarousel().dataset.widgetarea);},setupCarousel(){if(!(this.getCarousel()instanceof Element)||this.getCarousel().closest('body')!==document.body||!this.getCarousel().querySelector(`:scope > .cWidgetContainer`)||(this.getCarousel().querySelectorAll(`:scope > .cWidgetContainer`).length===1&&this.getCarousel().querySelector(`:scope > .cWidgetContainer`).getBoundingClientRect().width>=this.elem.getBoundingClientRect().width)){this.elem.ipsHide();return;}
|
||||
this.elem.ipsShow();const buttonContainer=this.elem;buttonContainer.querySelectorAll('[data-carousel-arrow]').forEach(button=>button.addEventListener('click',e=>this.carouselScroll(e)));if('onscrollend'in this.getCarousel()){this.getCarousel().addEventListener('scrollend',()=>this.carouselScrollEnd(),{capture:true});}else{this.getCarousel().addEventListener('scroll',_.debounce(()=>this.carouselScrollEnd(),200),{capture:true});}
|
||||
this.updateCarouselIndicator();if(this.shouldUseCarouselLinks()&&window.location.hash){const[_,total,children]=this.getCarouselOffset();for(let i=0;i<total;i++){const hash=this.getCarouselHref(i);if(hash&&window.location.hash===`#${hash}`){this._actualCarouselIndex=i;this._isScrolling=true;children[i].scrollIntoView({behavior:"instant",block:"start",inline:"start"});break;}}}
|
||||
this.setupObserver();},getPageCount(){const box=this.getCarousel()?.getBoundingClientRect();if(!box){return 1;}
|
||||
const children=this.getCarousel().querySelectorAll(`:scope > .cWidgetContainer:not([hidden])`);if(children.length<2){return 1;}
|
||||
let children=[...this.getCarousel().querySelectorAll(`:scope > .cWidgetContainer:not([hidden])`)];if(children.length<2){return 1;}
|
||||
if(this.isRTL()){children=children.reverse();}
|
||||
let basePages=Math.ceil(Math.abs(children[children.length-1].getBoundingClientRect().right-children[0].getBoundingClientRect().left)/box.width);if(children.length>2&&(children[children.length-1].getBoundingClientRect().right-children[children.length-2].getBoundingClientRect().left)>box.width){basePages++;}
|
||||
return basePages;},setupObserver(){if(this._observer){this._observer.disconnect();}
|
||||
if(this.getCarousel()instanceof HTMLElement){this._observer=new ResizeObserver(_.debounce(()=>this.updateCarouselIndicator()));this._observer.observe(this.getCarousel());}}});}(jQuery,_));;
|
||||
@@ -69,7 +72,8 @@ let url=window.location.href.replaceAll(/#.*$|\b_blockManager=1?\b/g,'')
|
||||
url+=url.includes('?')?'&_blockManager=1':'?_blockManager=1'
|
||||
url+=anchor
|
||||
ips.utils.history.pushState({artificial:true},'pagebuilder',url)}
|
||||
this.scope.addClass('cWidgetsManaging');},closeSidebarManager(e){e?.preventDefault();if(this._inManagingState){this.scope.removeClass('cWidgetsManaging');this._hideManager();try{this.triggerOn('core.front.widgets.area','managingFinished.widgets');}catch(e){Debug.error(e);}
|
||||
this.scope.addClass('cWidgetsManaging');},closeSidebarManager(e){e?.preventDefault();if(this._inManagingState){document.querySelectorAll('.ipsMenu[data-page-editor-menu]').forEach(element=>{element.dispatchEvent(new CustomEvent('closeMenu'));element.remove();})
|
||||
this.scope.removeClass('cWidgetsManaging');this._hideManager();try{this.triggerOn('core.front.widgets.area','managingFinished.widgets');}catch(e){Debug.error(e);}
|
||||
if(ips.utils.url.getParam('_blockManager')){if(ips.utils.history.getState('pagebuilder').artificial){window.history.back()}
|
||||
setTimeout(()=>ips.utils.history.replaceState({},'pagebuilder',window.location.href.replace(/\?(.*?)&?_blockManager=[^&]*/,'?$1').replace(/[?&]+$/,'')))}}},_setUpDragging(){this.elem.querySelectorAll('[data-role="availableBlocks"] ul').forEach(list=>{list.style.zIndex=ips.ui.zIndex();list.querySelectorAll(':scope > .cSidebarManager_block').forEach(item=>this._setupDraggingOnItem(item));})},_setupDraggingOnItem(item){item.setAttribute('draggable','true');const wrapBehavior=item.dataset.widgetLayouts?.split(',')?.[0]?.trim()||'table'
|
||||
item.addEventListener('dragstart',function(e){e.stopPropagation();e.dataTransfer.clearData();const data={blockID:e.target.dataset.blockid,blockTitle:e.target.dataset.blocktitle,allowReuse:e.target.dataset.allowreuse,config:!!e.target.dataset.blockconfig,blank:e.target.dataset.blockerrormessage,menustyle:e.target.dataset.menustyle,ipsWrapBehavior:wrapBehavior,};e.dataTransfer.setData('application/x.ipsblock',JSON.stringify(data));ipsSettings.__pageeditor_last_dragged_widget_data__=data;item.addEventListener('dragend',e=>{delete ipsSettings.__pageeditor_last_dragged_widget_data__;},{once:true});})},async _showManager(){this.scope.find('#elSidebarManager').removeAttr('hidden');this._fadeUnmanagedRoots();if(!this._loadedManager&&!this._loadingManager){try{const response=await ips.fetch(ips.getSetting('baseURL')+'index.php?app=core&module=system&controller=widgets&do=getBlockList',{data:{pageApp:$('body').attr('data-pageApp')}})
|
||||
|
||||
@@ -44,7 +44,7 @@ var div=$('<div data-role="autoCompleteWrapper" />').html(this.scope.contents())
|
||||
var self=this;var autoCompleteObj=ips.ui.autocomplete.getObj(this._autoComplete);this.scope.find('[data-action="showAutocomplete"]').hide();this.scope.find('[data-role="autoCompleteWrapper"]').show();this.scope.closest('.ipsFieldRow').find('.ipsFieldRow__label').show();setTimeout(function(){if(self._closedTagging){self.scope.find('[data-action="addToken"]').click();}else{autoCompleteObj.focus();}},100);}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.global.core.prefixedAutocomplete',{initialize:function(){this.setup();this.on('autoCompleteReady',this.autoCompleteReady);this.on('tokenAdded',this.tokensChanged);this.on('tokenDeleted',this.tokensChanged);this.on('menuItemSelected','[data-role="prefixButton"]',this.prefixSelected);this.scope.find('[data-ipsAutocomplete]').trigger('reissueReady');},setup:function(){this._prefixRow=this.scope.find('[data-role="prefixRow"]');this._prefixValue=this.scope.find('[data-role="prefixValue"]');this._prefixButton=this.scope.find('[data-role="prefixButton"]');this._prefixMenu=this.scope.find('[data-role="prefixMenu"]');},autoCompleteReady:function(e,data){var tokens=data.currentValues;if(this._prefixValue&&tokens.length){this._prefixMenu.html(this._buildTokenList(tokens,this._prefixValue.val()));this._prefixButton.find('span').html(this._getPrefixText(_.escape(this._prefixValue.val())));this._prefixRow.show();}},tokensChanged:function(e,data){if(data.totalTokens>0&&!this._prefixRow.is(':visible')){ips.utils.anim.go('fadeIn',this._prefixRow);}else if(data.totalTokens===0&&this._prefixRow.is(':visible')){ips.utils.anim.go('fadeOut',this._prefixRow);this._prefixRow.find('input[type="checkbox"]').prop('checked',false);}
|
||||
if(e&&e.type=='tokenDeleted'&&data.token==this._prefixValue.val()){this._prefixButton.find('span').html(ips.getString('selectPrefix'));this._prefixValue.val('');}
|
||||
var value=this._prefixValue.val();var list=this._buildTokenList(data.tokenList,value);this._prefixMenu.html(list);},prefixSelected:function(e,data){data.originalEvent.preventDefault();var itemValue=(data.selectedItemID=='-')?'':data.selectedItemID;var selectedText=this._getPrefixText(data.selectedItemID);this._prefixButton.find('span').html(selectedText);this._prefixValue.val(itemValue);this._prefixRow.find('input[type="checkbox"]').prop('checked',true);},_buildTokenList:function(tokens,value){var output='';output+=ips.templates.render('core.menus.menuItem',{value:'',title:ips.getString('selectedNone'),checked:(value=='')});output+=ips.templates.render('core.menus.menuSep');$.each(tokens,function(i,item){output+=ips.templates.render('core.menus.menuItem',{value:item,title:_.unescape(item),checked:(item==value)});});Debug.log(output);return output;},_getPrefixText:function(prefix){var selectedText='';if(prefix&&prefix!='-'){selectedText=ips.getString('selectedPrefix',{tag:prefix});}else{selectedText=ips.getString('selectedPrefix',{tag:ips.getString('selectedNone')});}
|
||||
var value=this._prefixValue.val();var list=this._buildTokenList(data.tokenList,value);this._prefixMenu.html(list);},prefixSelected:function(e,data){data.originalEvent.preventDefault();var itemValue=(data.selectedItemID=='-')?'':data.selectedItemID;var selectedText=this._getPrefixText(data.selectedItemID);this._prefixButton.find('span').html(selectedText);this._prefixValue.val(itemValue);this._prefixRow.find('input[type="checkbox"]').prop('checked',true);},_buildTokenList:function(tokens,value){var output='';output+=ips.templates.render('core.menus.menuItem',{value:'',title:ips.getString('selectedNone'),checked:(value=='')});output+=ips.templates.render('core.menus.menuSep');$.each(tokens,function(i,item){output+=ips.templates.render('core.menus.menuItem',{value:item,title:_.unescape(item),checked:(item==value)});});return output;},_getPrefixText:function(prefix){var selectedText='';if(prefix&&prefix!='-'){selectedText=ips.getString('selectedPrefix',{tag:prefix});}else{selectedText=ips.getString('selectedPrefix',{tag:ips.getString('selectedNone')});}
|
||||
return selectedText;}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.global.core.table',{_urlParams:{},_baseURL:'',_otherParams:[],_pageParam:'page',_updateURL:true,_currentPage:1,_seoPagination:false,_initialURL:'',_ajax:null,initialize:function(){this.on('paginationClicked paginationJump',this.paginationClicked);this.on('refreshResults',this.refreshResults);this.on('buttonAction',this.buttonAction);this.on('click','[data-action="tableFilter"]',this.changeFiltering);this.on('menuItemSelected','[data-role="tableFilterMenu"]',this.changeFilteringFromMenu);this.on('click','tr[data-tableClickTarget]',this.rowClick);this.setup();},setup:function(){if(this.scope.attr('data-pageParam')&&this.scope.attr('data-pageParam')!='page'){this._pageParam=this.scope.attr('data-pageParam');}
|
||||
this._otherParams.push(this._pageParam);this._baseURL=this.scope.attr('data-baseurl');const safeURL=[...(new TextEncoder()).encode(this.scope.attr('data-baseurl')?ips.utils.url.pageParamToPath(this._cleanUpURL(this.scope.attr('data-baseurl')),this._pageParam,1):'')].map(char=>String.fromCodePoint(char)).join('');this._stateKey=`table${btoa(safeURL)}`;this._originalBaseURL=this._baseURL;this._currentPage=ips.utils.url.getPageNumber(this._pageParam,window.location.href);this._cleanUpBaseURL();if(this._baseURL.match(/\?/)){if(this._baseURL.slice(-1)!='?'){this._baseURL+='&';}}else{this._baseURL+='?';}
|
||||
|
||||
@@ -39,7 +39,7 @@ this.updateURL({sortby:cell.attr('data-key'),sortdirection:order});};this.startL
|
||||
return{by:sortBy.attr('data-key'),order:sortOrder};};this._getFilterValue=function(){var sortBar=this.scope.find('[data-role="tableSortBar"]');if(!sortBar.length){return'';}
|
||||
return sortBar.find('.ipsDataFilters__button--active').closest('[data-filter]').attr('data-filter');};this._getSearchValue=function(){if(ips.utils.url.getParam('quicksearch')){return ips.utils.url.getParam('quicksearch');}
|
||||
return this.scope.find('[data-role="tableSearch"]').val();};});}(jQuery,_));;
|
||||
ips.templates.set('core.appMenu.reorder'," <span data-role='reorder' style='display: none'><i class='fa-solid fa-bars'></i></span>");ips.templates.set('core.controlStrip.menu'," <ul class='ipsMenu ipsMenu_auto' role='menu' id='{{id}}_menu' style='display: none'> {{{content}}} </ul>");ips.templates.set('core.controlStrip.menuItem'," <li class='ipsMenu_item ipsControlStrip_menuItem' role='menuitem' id='{{id}}'> {{{item}}} </li>");ips.templates.set('core.controlStrip.dropdown'," <li class='ipsControlStrip_button ipsControlStrip_dropdown' data-dropdown id='{{id}}'> <a href='#'> <i class='ipsControlStrip_icon fa-solid fa-angle-down'></i> </a> </li>");ips.templates.set('core.trees.childWrapper'," {{{content}}}");ips.templates.set('core.trees.loadingRow'," <ol class='ipsTree'><li class='ipsTree_loadingRow ipsLoading ipsLoading--tiny'>{{#lang}}loading{{/lang}}</li></ol>");ips.templates.set('core.trees.loadingPane'," <div class='ipsLoading' style='height: 150px'> </div>");ips.templates.set('core.trees.noRows'," <div class='i-text-align_center i-padding_3 i-color_soft'>{{#lang}}no_results{{/lang}}</div>");ips.templates.set('core.livesearch.noResults'," <li class='i-text-align_center i-padding_3 i-color_soft' data-role='result'> <br><br> </li>");ips.templates.set('languages.translateString'," <div class='cTranslateTable_field'> <textarea class='ipsInput'>{{value}}</textarea> <a href='#' data-action='saveWords' tabindex='-1' class='ipsButton ipsButton--positive ipsButton--tiny ipsButton--icon'><i class='fa-solid fa-check'></i> {{#lang}}languageSave{{/lang}}</a> </div>");ips.templates.set('support.guideSearch'," <li> <a href=\"{{link}}\" target='_blank' rel='noopener'>{{title}}</a> </li>");ips.templates.set('support.guideSearch.noResults'," <li class='i-color_soft'> {{#lang}}no_results{{/lang}} </li>");ips.templates.set('support.ticket.supportSummary'," <div class='i-padding-top_3'> {{#lang}}health_ticket_beforeproceeding{{/lang}} </div>");;
|
||||
ips.templates.set('core.appMenu.reorder'," <span data-role='reorder' style='display: none'><i class='fa-solid fa-bars'></i></span>");ips.templates.set('core.controlStrip.menu'," <ul class='ipsMenu ipsMenu_auto' role='menu' id='{{id}}_menu' style='display: none'> {{{content}}} </ul>");ips.templates.set('core.controlStrip.menuItem'," <li class='ipsMenu_item ipsControlStrip_menuItem' role='menuitem' id='{{id}}'> {{{item}}} </li>");ips.templates.set('core.controlStrip.dropdown'," <li class='ipsControlStrip_button ipsControlStrip_dropdown' data-dropdown id='{{id}}'> <a href='#'> <i class='ipsControlStrip_icon fa-solid fa-angle-down'></i> </a> </li>");ips.templates.set('core.trees.childWrapper'," {{{content}}}");ips.templates.set('core.trees.loadingRow'," <ol class='ipsTree'><li class='ipsTree_loadingRow ipsLoading ipsLoading--tiny'>{{#lang}}loading{{/lang}}</li></ol>");ips.templates.set('core.trees.loadingPane'," <div class='ipsLoading' style='height: 150px'> </div>");ips.templates.set('core.trees.noRows'," <div class='i-text-align_center i-padding_3 i-color_soft'>{{#lang}}no_results{{/lang}}</div>");ips.templates.set('core.livesearch.noResults'," <li class='i-text-align_center i-padding_3 i-color_soft' data-role='result'> <br><br> </li>");ips.templates.set('languages.translateString'," <div class='cTranslateTable_field'> <textarea class='ipsInput'>{{value}}</textarea> <button type='button' href='#' data-action='saveWords' tabindex='-1' class='ipsButton ipsButton--positive ipsButton--tiny ipsButton--icon'><i class='fa-solid fa-check'></i> {{#lang}}languageSave{{/lang}}</button> </div>");ips.templates.set('support.guideSearch'," <li> <a href=\"{{link}}\" target='_blank' rel='noopener'>{{title}}</a> </li>");ips.templates.set('support.guideSearch.noResults'," <li class='i-color_soft'> {{#lang}}no_results{{/lang}} </li>");ips.templates.set('support.ticket.supportSummary'," <div class='i-padding-top_3'> {{#lang}}health_ticket_beforeproceeding{{/lang}} </div>");;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.admin.core.app',{initialize:function(){this.on('click','[data-clickshow]',this.clickShow);this.on('click','[data-clickhide]',this.clickHide);this.on('click','[data-clickempty]',this.clickEmpty);this.on('click','[data-delete]',this.deleteSomething);this.on('click','a[data-confirm]',this.confirmSomething);this.on('click','[data-doajax]',this.doAjaxAction);this.on(document,'contentChange',this._checkAndClearAutosave);this.setup();},setup:function(){if(ips.utils.serviceWorker.supported){ips.utils.serviceWorker.registerServiceWorker('admin',false);}
|
||||
this._checkAndClearAutosave();if(!ips.getSetting('memberID')&&ips.utils.url.getParam('_fromLogout')){ips.utils.db.removeByType('editorSave');}},_checkAndClearAutosave:function(){if(ips.utils.cookie.get('clearAutosave')){var autoSaveKeysToClear=ips.utils.cookie.get('clearAutosave').split(',');for(var i=0;i<autoSaveKeysToClear.length;i++){ips.utils.db.remove('editorSave',autoSaveKeysToClear[i]);}
|
||||
ips.utils.cookie.unset('clearAutosave');}},doAjaxAction:function(e){e.preventDefault();ips.getAjax()($(e.currentTarget).attr('href'),{dataType:'json'}).done(function(response){ips.ui.flashMsg.show(response);}).fail(function(jqXHR){if(Debug.isEnabled()){Debug.error(jqXHR.responseText);}else{window.location=$(e.currentTarget).attr('href');}});},deleteSomething:function(e){e.preventDefault();var elem=$(e.currentTarget);var deleteTitle=elem.attr('data-delete-message');var extraWarning=elem.attr('data-delete-warning');ips.ui.alert.show({type:'confirm',icon:'warn',message:deleteTitle||ips.getString('delete_confirm'),subText:extraWarning||'',focus:'cancel',callbacks:{ok:function(){if(elem.attr('data-noajax')!==undefined){window.location=elem.attr('href')+'&csrfKey='+ips.getSetting('csrfKey')+'&wasConfirmed=1';return;}
|
||||
|
||||
+305
-379
File diff suppressed because it is too large.
Load diff
@@ -1,6 +1,6 @@
|
||||
;(function($,_,undefined){"use strict";ips.controller.mixin('contentListing','core.global.core.table',true,function(){this._rowSelector='li';this.after('initialize',function(){this.on('menuItemSelected','[data-role="sortButton"]',this.changeSorting);this.on('change','[data-role="moderation"]',this.selectRow);this.on('paginationClicked',this.frontPaginationClicked);this.on('markTableRead',this.markAllRead);$(document).on('markTableRowRead',_.bind(this.markRowRead,this));$(document).on('markAllRead',_.bind(this.markAllRead,this));$(document).on('updateTableURL',_.bind(this.updateTableURL,this));$(document).on('moderationSubmitted',_.bind(this.clearLocalStorage,this));});this.after('setup',function(){this._tableID=this.scope.attr('data-tableID');this._storeID='table-'+this._stateKey;if(this.scope.attr('data-dummyLoadingSelector')){this._rowSelector=this.scope.attr('data-dummyLoadingSelector');}
|
||||
this._findCheckedRows();this.on('pageActionReady',this._findCheckedRows);});this.before('_handleStateChanges',function(state){ips.utils.analytics.trackPageView(state.url);});this.before('_getResults',function(){this._setTableLoading(true);});this.after('_getResultsAlways',function(){this._setTableLoading(false);});this.after('_updateTable',function(){this.scope.find('[data-ipsPageAction]').trigger('refresh.pageAction');this.scope.find('[data-role="tableRows"]').css({opacity:"0.0001"}).animate({opacity:"1"});this._findCheckedRows();});this._findCheckedRows=function(){if(!this.scope.find('input[type="checkbox"]').length){return;}
|
||||
var dataStore=ips.utils.db.get('moderation',this._storeID)||{};var self=this;var pageAction=this.scope.find('[data-ipsPageAction]');if(_.size(dataStore)){var sizeOtherPage=0;_.each(dataStore,function(val,key){if(self.scope.find('[data-rowid="'+key+'"]').length){self.scope.find('[data-rowid="'+key+'"]').addClass('ipsData__item--selected').find('input[type="checkbox"][data-role="moderation"]').attr('checked',true).trigger('change');}else{sizeOtherPage++;pageAction.trigger('addManualItem.pageAction',{id:'moderate['+key+']',actions:val});}});if(this.scope.find('[data-ipsAutoCheck]')){this.scope.find('[data-ipsAutoCheck]').trigger('setInitialCount.autoCheck',{count:sizeOtherPage});}}};this.clearLocalStorage=function(){ips.utils.db.remove('moderation',this._storeID);};this._showLoading=function(){return _.isUndefined(this.scope.attr('data-dummyLoading'));};this.markAllRead=function(){this.scope.find('.ipsSubList__item--unread').removeClass('ipsSubList__item--unread').addClass('ipsSubList__item--read');this.scope.find('[data-ips-unread]').removeAttr('data-ips-unread').attr('data-ips-read','');this.elem.querySelectorAll('.ipsIndicator').forEach(unreadIcon=>unreadIcon.remove())};this.markRowRead=function(e,data){if(_.isUndefined(data.tableID)||data.tableID!=this._tableID){return;}
|
||||
var dataStore=ips.utils.db.get('moderation',this._storeID)||{};var self=this;var pageAction=this.scope.find('[data-ipsPageAction]');if(_.size(dataStore)){var sizeOtherPage=0;_.each(dataStore,function(val,key){if(self.scope.find('[data-rowid="'+key+'"]').length){self.scope.find('[data-rowid="'+key+'"]').addClass('ipsData__item--selected').find('input[type="checkbox"][data-role="moderation"]').attr('checked',true).trigger('change');}else{sizeOtherPage++;pageAction.trigger('addManualItem.pageAction',{id:'moderate['+key+']',actions:val});}});if(this.scope.find('[data-ipsAutoCheck]')){this.scope.find('[data-ipsAutoCheck]').trigger('setInitialCount.autoCheck',{count:sizeOtherPage});}}};this.clearLocalStorage=function(){ips.utils.db.remove('moderation',this._storeID);};this._showLoading=function(){return _.isUndefined(this.scope.attr('data-dummyLoading'));};this.markAllRead=function(){this.scope.find('.ipsSubList__item--unread').removeClass('ipsSubList__item--unread').addClass('ipsSubList__item--read');this.scope.find('[data-ips-unread]').removeAttr('data-ips-unread').attr('data-ips-read','');this.scope.find('[data-ips-badge-new]').remove();this.elem.querySelectorAll('.ipsIndicator').forEach(unreadIcon=>unreadIcon.remove())};this.markRowRead=function(e,data){if(_.isUndefined(data.tableID)||data.tableID!=this._tableID){return;}
|
||||
this.scope.find('[data-rowID="'+data.rowID+'"]').removeAttr('data-ips-unread').attr('data-ips-read','');};this.updateTableURL=function(e,data){this.updateURL(data);};this.frontPaginationClicked=function(){var wrappingDialog=this.scope.closest('.ipsDialog');var elemPosition=ips.utils.position.getElemPosition(wrappingDialog.length?wrappingDialog:this.scope);$('html, body').animate({scrollTop:elemPosition.absPos.top+'px'});};this.selectRow=function(e){var row=$(e.currentTarget).closest('.ipsData__item');var rowID=row.attr('data-rowID');var dataStore=ips.utils.db.get('moderation',this._storeID)||{};var rowActions=row.find('[data-role="moderation"]').attr('data-actions');row.toggleClass('ipsData__item--selected',$(e.currentTarget).is(':checked'));if(rowID){if($(e.currentTarget).is(':checked')){if(_.isUndefined(dataStore[rowID])){dataStore[rowID]=rowActions;}}else{delete dataStore[rowID];}
|
||||
if(_.size(dataStore)){ips.utils.db.set('moderation',this._storeID,dataStore,undefined,Date.now()/1000+86400);}else{ips.utils.db.remove('moderation',this._storeID);}}};this._setTableLoading=function(loading){var rowElem=this.scope.find('[data-role="tableRows"]');var rows=rowElem.find('> '+this._rowSelector);if(_.isUndefined(this.scope.attr('data-dummyLoading'))){this._basicLoading(loading);return;}
|
||||
if(!loading||!rowElem.length||!rows.length){return;}
|
||||
@@ -15,19 +15,22 @@ this.updateURL({sortby:sortBy,sortdirection:sortDirection,page:1});};this._getSo
|
||||
this.setup();},setup:function(){if(ips.utils.serviceWorker.supported){ips.utils.serviceWorker.registerServiceWorker('front',!_.isUndefined(ips.utils.cookie.get('loggedIn')));}
|
||||
if(!ips.utils.events.isTouchDevice()){this.scope.addClass('ipsApp_noTouch');}
|
||||
ips.utils.cookie.set('ipsTimezone',new Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC");this._checkAndClearAutosave();if(!ips.getSetting('memberID')&&ips.utils.url.getParam('_fromLogout')){ips.utils.db.removeByType('editorSave');}
|
||||
if($('#elInlineMessage').length){var dialogRef=ips.ui.dialog.create({showFrom:'#inbox',content:'#elInlineMessage',title:$('#elInlineMessage').attr('title')});setTimeout(function(){dialogRef.show();},800);}
|
||||
if($('#elInlineMessage').length){var dialogRef=ips.ui.dialog.create({content:'#elInlineMessage',title:$('#elInlineMessage').attr('title')});setTimeout(function(){dialogRef.show();},800);}
|
||||
ips.utils.links.updateExternalLinks(this.scope);this._upgradeOldEmbeds(this.scope);if(!ips.getSetting('viewProfiles')){this._removeProfileLinks();}},updateExternalLinks:function(e,data){ips.utils.links.updateExternalLinks(data);},checkOldEmbeds:function(e,data){this._upgradeOldEmbeds(data);},_removeProfileLinks:function(){this.scope.find('a[data-mentionid],a[href*="controller=profile"]').replaceWith(function(){return $(this).contents();});},_upgradeOldEmbeds:function(element){if(_.isUndefined(element)){return;}
|
||||
var oldEmbeds=element.find('[data-embedcontent]:not([data-controller], [data-embed-src])');var toRefresh=[];if(oldEmbeds.length){oldEmbeds.each(function(){$(this).attr('data-controller','core.front.core.autoSizeIframe');toRefresh.push(this);Debug.log("Upgraded old embed");});$(document).trigger('contentChange',[jQuery([]).pushStack(toRefresh)]);}},_checkAndClearAutosave:function(){if(ips.utils.cookie.get('clearAutosave')){var autoSaveKeysToClear=ips.utils.cookie.get('clearAutosave').split(',');for(var i=0;i<autoSaveKeysToClear.length;i++){ips.utils.db.remove('editorSave',autoSaveKeysToClear[i]);}
|
||||
ips.utils.cookie.unset('clearAutosave');}},confirmSomething:function(e){e.preventDefault();var elem=$(e.currentTarget);var customMessage=$(e.currentTarget).attr('data-confirmMessage');var subMessage=$(e.currentTarget).attr('data-confirmSubMessage');var icon=$(e.currentTarget).attr('data-confirmIcon');ips.ui.alert.show({type:'confirm',icon:(icon)?icon:'warn',message:(customMessage)?customMessage:ips.getString('generic_confirm'),subText:(subMessage)?subMessage:'',callbacks:{ok:function(){window.location=elem.attr('href')+'&wasConfirmed=1';}}});},broadcastChannelEvent(ev){if(ev.data.command==="colorScheme"){document.dispatchEvent(new CustomEvent("ips:colorScheme",{bubbles:true,detail:{scheme:ev.data.value}}));}},colorScheme(ev){if(document.documentElement.matches('[data-ips-scheme-toggle="false"]')){return;}
|
||||
let value=ev.detail.scheme;document.querySelectorAll('[data-ips-prefers-color-scheme]').forEach(el=>{if(el.matches('[data-ips-prefers-color-scheme='+value+']')){el.setAttribute('aria-current','true');}else{el.removeAttribute('aria-current');}});document.documentElement.dataset.ipsSchemeActive=value;if(value==='system'){document.documentElement.dataset.ipsScheme=(window.matchMedia('(prefers-color-scheme: dark)').matches)?'dark':'light';}else{document.documentElement.dataset.ipsScheme=value;}
|
||||
ips.utils.cookie.set('scheme_preference',value,true);},updatePrefersColorScheme:function(){if(document.documentElement.getAttribute('data-ips-scheme-active')==='system'){document.documentElement.setAttribute('data-ips-scheme',(window.matchMedia('(prefers-color-scheme: dark)').matches)?'dark':'light');}}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.autoSizeIframe',{_origin:ips.utils.url.getOrigin(),_embedId:'',_iframe:null,_border:{vertical:0,horizontal:0},initialize(){if(!this.scope.is('iframe')){return;}
|
||||
this.on(window,'message',this.receiveMessage);this.on(document,'breakpointChange',this.breakpointChange);this.setup();},setup(){this._lastDims={height:0,width:0};var iframe=this.scope.get(0);iframe.style.overflow='hidden';this._getBorderAdjustment();if(this.scope.height()>800){this.scope.css({height:'800px'});}
|
||||
;(function($,_,undefined){"use strict";const PREINITIALIZED_DIMS_FLAG=Symbol('PREINITIALIZED_DIMS_FLAG');if(ips?.utils?.db?.get instanceof Function){document.querySelectorAll('iframe[data-controller*="core.front.core.autosizeiframe"][src]').forEach(embed=>{if(!embed.src||embed.src===window.location.href){return;}
|
||||
const currentDims=ips.utils.db.get("embedDimsCache",embed.src);if(typeof currentDims?.height==='number'&¤tDims.height>0){Debug.log(`(EMBED) - Filling in width and height before registering controller for embed ${embed.src}`);embed[PREINITIALIZED_DIMS_FLAG]={width:typeof currentDims.width==='number'?currentDims.width:0,height:typeof currentDims.height==='number'?currentDims.height:0};if(typeof currentDims.width==='number'&¤tDims.width>0){requestAnimationFrame(()=>{embed.style.height=currentDims.height+"px";embed.style.width=currentDims.style.width+"px";})}else{requestAnimationFrame(()=>{embed.style.height=currentDims.height+"px";});}}})}
|
||||
ips.controller.register('core.front.core.autoSizeIframe',{_origin:ips.utils.url.getOrigin(),_embedId:'',_iframe:null,_border:{vertical:0,horizontal:0},initialize(){if(!this.scope.is('iframe')){return;}
|
||||
this.on(window,'message',this.receiveMessage);this.on(document,'breakpointChange',this.breakpointChange);this.setup();},getEmbedSrc(){return this.elem.src;},setup(){this._lastDims={height:0,width:0};let cachedDims;if(PREINITIALIZED_DIMS_FLAG in this.elem){Object.assign(this._lastDims,this.elem[PREINITIALIZED_DIMS_FLAG]);}else if(this.getEmbedSrc()&&(cachedDims=ips.utils.db.get('embedDimsCache',this.getEmbedSrc()))&&cachedDims){if(typeof cachedDims?.height==='number'&&cachedDims.height>0){Debug.log(`(EMBED) - Using cached height and width while the embed initializes`);if(typeof cachedDims?.width==='number'&&cachedDims.width>0){this.dims(cachedDims);}else{this.height({height:cachedDims.height});}}}
|
||||
var iframe=this.scope.get(0);iframe.style.overflow='hidden';this._getBorderAdjustment();if(this.scope.height()>800){this.scope.css({height:'800px'});}
|
||||
this._iframe=iframe.contentWindow;this._embedId='embed'+parseInt(Math.random()*(10000000000-1)+1);this.scope.attr('data-embedId',this._embedId);if(!window.postMessage||!window.JSON.parse){this.scope.css({height:'400px'});Debug.error("Can't resize embed: "+this._embedId);return;}
|
||||
this._startReadyTimeout();},_startReadyTimeout(){this._readyTimeout=setInterval(_.bind(function(){this._postMessage('ready');},this),100);setTimeout(_.bind(function(){this._stopReadyTimeout();},this),10000);},_stopReadyTimeout(){if(this._readyTimeout!==null){Debug.log("Stopped posting to embed "+this._embedId);clearInterval(this._readyTimeout);this._readyTimeout=null;}},destruct(){Debug.log('Destruct autoSizeIframe '+this._embedId);this._stopReadyTimeout();this._postMessage('stop');},receiveMessage(e){if(e.originalEvent.origin!==this._origin){return;}
|
||||
try{const pmData=typeof e.originalEvent.data==='string'?JSON.parse(e.originalEvent.data):e.originalEvent.data;const method=pmData.method;if(pmData.embedId===undefined||pmData.embedId!==this._embedId){return;}
|
||||
this._stopReadyTimeout();this[method]?.call(this,pmData);}catch(err){Debug.error(err.message);}},_postMessage(method,obj){Debug.log("Posting to iframe "+this._embedId);this._iframe.postMessage(JSON.stringify(_.extend(obj||{},{method:method,embedId:this._embedId})),this._origin);},_getBorderAdjustment(){this._border.vertical=parseInt(this.scope.css('border-top-width'))+parseInt(this.scope.css('border-bottom-width'));this._border.horizontal=parseInt(this.scope.css('border-left-width'))+parseInt(this.scope.css('border-right-width'));},breakpointChange(e,data){this._postMessage('responsiveState',{currentIs:data.curBreakName});},dialog(data){var options=ips.ui.getAcceptedOptions('dialog');var dialogOptions={};_.each(options,function(opt){if(!_.isUndefined(data.options['data-ipsdialog-'+opt.toLowerCase()])){dialogOptions[opt]=data.options['data-ipsdialog-'+opt.toLowerCase()];}});if(_.isUndefined(dialogOptions['url'])){dialogOptions['url']=data.url;}
|
||||
var dialogRef=ips.ui.dialog.create(dialogOptions);dialogRef.show();},height(data){if(this._lastDims.height!==data.height){this.scope.css({height:parseInt(data.height)+this._border.vertical+'px'});this._postMessage('setDimensions',{height:parseInt(data.height)});this._lastDims.height=data.height;}},dims(data){if(parseInt(this._lastDims.height)!==parseInt(data.height)||this._lastDims.width!==data.width){this.scope.css({height:parseInt(data.height)+this._border.vertical+'px',maxWidth:(data.width.toString().indexOf('%')==-1)?parseInt(data.width)+this._border.horizontal+'px':'100%'});this._lastDims.height=data.height;this._lastDims.width=data.width;}},ok(){this._stopReadyTimeout();this.scope.addClass('ipsEmbed_finishedLoading');this._postMessage('responsiveState',{currentIs:ips.utils.responsive.getCurrentKey()});}});}(jQuery,_));;
|
||||
var dialogRef=ips.ui.dialog.create(dialogOptions);dialogRef.show();},height(data){if(this._lastDims.height!==data.height){this.scope.css({height:parseInt(data.height)+this._border.vertical+'px'});this._lastDims.height=data.height;if(this.getEmbedSrc()){ips.utils.db.set('embedDimsCache',this.getEmbedSrc(),this._lastDims);}}},dims(data){if(parseInt(this._lastDims.height)!==parseInt(data.height)||this._lastDims.width!==data.width){this.scope.css({height:parseInt(data.height)+this._border.vertical+'px',maxWidth:(data.width.toString().indexOf('%')==-1)?parseInt(data.width)+this._border.horizontal+'px':'100%'});this._lastDims.height=data.height;this._lastDims.width=data.width;if(this.getEmbedSrc()){ips.utils.db.set('embedDimsCache',this.getEmbedSrc(),this._lastDims);}}},ok(){this._stopReadyTimeout();this.scope.addClass('ipsEmbed_finishedLoading');this._postMessage('responsiveState',{currentIs:ips.utils.responsive.getCurrentKey()});}});}(jQuery,_));;
|
||||
;(function(){"use strict";ips.controller.register('core.front.core.colorScheme',{initialize(){this.menu=this.scope[0];this.on(this.menu,'click',this.changeColorScheme);if(!this.menu.querySelector("[aria-current")){this.schemePref=ips.utils.cookie.get('scheme_preference')||document.documentElement.dataset.ipsSchemeDefault;document.querySelectorAll('[data-ips-prefers-color-scheme='+this.schemePref+']').forEach(el=>el.setAttribute('aria-current','true'));}},changeColorScheme(ev){let el=ev.target.closest('[data-controller="core.front.core.colorScheme"] [data-ips-prefers-color-scheme]');if(!el)return;document.dispatchEvent(new CustomEvent("ips:colorScheme",{bubbles:true,detail:{scheme:el.dataset.ipsPrefersColorScheme}}));if(ips.utils.broadcastChannel.enabled){ips.utils.broadcastChannel.channel.postMessage({command:'colorScheme',value:el.dataset.ipsPrefersColorScheme});}}});}());;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.comment',{_quoteData:null,_commentContents:'',_quotingDisabled:false,_quoteTimeout:null,_isEditing:false,_clickHandler:null,_observer:null,initialize:function(){for(const link of this.scope.find('[data-ipsMenu]')){const menuSelector=$(link).attr('href');for(const action of['editComment','deleteComment','approveComment']){this.on(document,'click',`${menuSelector} [data-action="${action}"]`,this[action]);}}
|
||||
for(const action of['quoteComment','multiQuoteComment','rateReview','cancelEditComment']){this.on('click',`[data-action="${action}"]`,this[action]);}
|
||||
@@ -35,7 +38,7 @@ this.on('submit','form',this.submitEdit);this.on('change','input[type="checkbox"
|
||||
this.on('click','[data-action="quoteSelection"]',this.quoteSelection);this.on('submitDialog','[data-action="recommendComment"]',this.recommendComment);this.on('click','[data-action="unrecommendComment"]',this.unrecommendComment);this.on('tabChanged',this.tabChanged);this.on('setMultiQuoteEnabled.comment setMultiQuoteDisabled.comment',this.setMultiQuote);this.on('disableQuoting.comment',this.disableQuoting);this.on(document,'getEditFormLoading.comment saveEditCommentLoading.comment '+
|
||||
'deleteCommentLoading.comment',this.commentLoading);this.on(document,'getEditFormDone.comment saveEditCommentDone.comment '+
|
||||
'deleteCommentDone.comment',this.commentDone);this.on(document,'getEditFormDone.comment',this.getEditFormDone);this.on(document,'getEditFormError.comment',this.getEditFormError);this.on(document,'saveEditCommentDone.comment',this.saveEditCommentDone);this.on(document,'saveEditCommentError.comment',this.saveEditCommentError);this.on(document,'deleteCommentDone.comment',this.deleteCommentDone);this.on(document,'deleteCommentError.comment',this.deleteCommentError);this.on(document,'unrecommendCommentDone.comment',this.unrecommendCommentDone);this.on(document,'unrecommendCommentError.comment',this.unrecommendCommentError);this.on(document,'approveCommentLoading.comment',this.approveCommentLoading);this.on(document,'approveCommentDone.comment',this.approveCommentDone);this.on(document,'approveCommentError.comment',this.approveCommentError);this.setup();},setup:function(){this._commentID=this.scope.attr('data-commentID');this._clickHandler=_.bind(this._hideQuoteTooltip,this);this._setupIntersectionObserver();this._setupShareCommentDialog();const fragment=window.location.hash;const match=fragment.match(/#find(Review|Comment)-(\d+)/);if(match){const type=match[1]
|
||||
const commentId=match[2];const elementId=`find${type}-${commentId}`;const element=document.getElementById(elementId);if(!element){var currentUrl=new URL(window.location.href);currentUrl.searchParams.set('do',`find${type}`);currentUrl.searchParams.set(type.toLowerCase(),commentId);window.location.href=currentUrl;}}},destroy:function(){},tabChanged:function(e,data){this._menu=undefined;this.getMenu();},inlineQuote:function(){var self=this;var quoteButton=this.scope.find('[data-action="quoteComment"]');if(this._isEditing||this._quotingDisabled||!quoteButton.length){return;}
|
||||
const commentId=match[2];const elementId=`find${type}-${commentId}`;const element=document.getElementById(elementId);if(!element){const currentUrl=new URL(window.location.href);currentUrl.updateSearchParams({params:{do:`find${type}`,[type.toLowerCase()]:commentId.toString()}});window.location.href=currentUrl;}}},destroy:function(){},tabChanged:function(e,data){this._menu=undefined;this.getMenu();},inlineQuote:function(){var self=this;var quoteButton=this.scope.find('[data-action="quoteComment"]');if(this._isEditing||this._quotingDisabled||!quoteButton.length){return;}
|
||||
clearInterval(this._quoteTimeout);this._quoteTimeout=setInterval(function(){self._checkQuoteStatus();},400);},recommendComment:function(e,data){var commentHtml=$('<div>'+data.response.comment+'</div>').find('[data-controller="core.front.core.comment"]').html();this.scope.html(commentHtml).closest('.ipsEntry').addClass('ipsEntry--popular');$(document).trigger('contentChange',[this.scope]);if(ips.utils.db.isEnabled()){this.scope.find('[data-action="multiQuoteComment"]').removeClass('ipsHide');}
|
||||
this.trigger('refreshRecommendedComments',{scroll:true,recommended:data.response.recommended});},unrecommendComment:function(e,data){e.preventDefault();var url=$(e.currentTarget).attr('href');this.trigger('unrecommendComment.comment',{url:url,commentID:this._commentID});},unrecommendCommentDone:function(e,data){if(data.commentID!=this._commentID){return;}
|
||||
var commentHtml=$('<div>'+data.comment+'</div>').find('[data-controller="core.front.core.comment"]').html();console.log(commentHtml);this.scope.html(commentHtml).closest('.ipsEntry').removeClass('ipsEntry--popular').find('.ipsEntry__popularFlag').remove();ips.ui.flashMsg.show(ips.getString('commentUnrecommended'));this.trigger('removeRecommendation',{commentID:data.unrecommended});},unrecommendCommentError:function(e,data){if(data.commentID!=this._commentID){return;}
|
||||
@@ -49,7 +52,7 @@ var tooltipSize={width:tooltip.show().outerWidth(),height:tooltip.show().outerHe
|
||||
const feed=document.querySelector(`[data-feedid=${this.elem.dataset.feedid}][data-controller*="core.front.core.commentFeed"]`);if(feed){return $(feed);}
|
||||
Debug.warn(`The comment feed for a comment could not be identified. This can be prevented by ensuring the comment and its feed have macthing data-feedid attributes (comment's feedid: ${this.elem.dataset.feedid})`);}else{Debug.warn(`A comment is missing its data-feedid attribute, so its comment feed could not be identified. This can be prevented by ensuring the comment and its feed have macthing data-feedid attributes`);}
|
||||
Debug.warn(this.elem);return $(this.elem.closest(`[data-controller*="core.front.core.commentFeed"]`)||this.elem);},quoteSelection:function(e){e.preventDefault();this._getQuoteData();if(this._selectedText){this.feedJQ().trigger('quoteComment.comment',{userid:this._quoteData.userid,username:this._quoteData.username,timestamp:this._quoteData.timestamp,contentapp:this._quoteData.contentapp,contenttype:this._quoteData.contenttype,contentclass:this._quoteData.contentclass,contentid:this._quoteData.contentid,contentcommentid:this._quoteData.contentcommentid,quoteHtml:this._selectedText,citeurl:$(this.elem).get(0).querySelector(".ipsEntry__date[href]")?.getAttribute('href')});}
|
||||
this._hideQuoteTooltip();},commentCheckbox:function(e){var checked=$(e.currentTarget).is(':checked');this.scope.closest('.js-ipsEntry').toggleClass('ipsEntry--selected',checked);this.scope.closest('.js-ipsEntry').find('label[for='+$(e.currentTarget).attr('id')+']').toggleClass('ipsInput--pseudoChecked',checked);this.feedJQ().trigger('checkedComment.comment',{commentID:this._commentID,actions:$(e.currentTarget).attr('data-actions'),checked:checked});},disableQuoting:function(){this._quotingDisabled=true;this.scope.find('[data-ipsQuote-editor]').remove();},rateReview:function(e){e.preventDefault();var self=this;ips.getAjax()($(e.currentTarget).attr('href')).done(function(response){var content=$("<div>"+response+"</div>");self.scope.html(content.find('[data-controller="core.front.core.comment"]').contents());$(document).trigger('contentChange',[self.scope]);}).fail(function(err){window.location=$(e.currentTarget).attr('href');});},_menu:undefined,getMenu(){if(!this._menu){let activeTabId=this.elem.closest(`[data-commentstype="reviews"]`)?'elReview':'elComment';Debug.log(activeTabId);let commentFeed=this.scope.get(0)?.closest('[data-controller]')
|
||||
this._hideQuoteTooltip();},commentCheckbox:function(e){var checked=$(e.currentTarget).is(':checked');this.scope.closest('.js-ipsEntry').toggleClass('ipsEntry--selected',checked);this.scope.closest('.js-ipsEntry').find('label[for='+$(e.currentTarget).attr('id')+']').toggleClass('ipsInput--pseudoChecked',checked);this.feedJQ().trigger('checkedComment.comment',{commentID:this._commentID,actions:$(e.currentTarget).attr('data-actions'),checked:checked});},disableQuoting:function(){this._quotingDisabled=true;this.scope.find('[data-ipsQuote-editor]').remove();},rateReview:function(e){e.preventDefault();var self=this;ips.getAjax()($(e.currentTarget).attr('href')).done(function(response){var content=$("<div>"+response+"</div>");self.scope.html(content.find('[data-controller="core.front.core.comment"]').contents());$(document).trigger('contentChange',[self.scope]);}).fail(function(err){window.location=$(e.currentTarget).attr('href');});},_menu:undefined,getMenu(){if(!this._menu){let activeTabId=this.elem.closest(`[data-commentstype="reviews"]`)?'elReview':'elComment';let commentFeed=this.scope.get(0)?.closest('[data-controller]')
|
||||
while(commentFeed&&!commentFeed.dataset.controller?.includes('core.front.core.commentFeed')){commentFeed=commentFeed.parentElement?.closest('[data-controller]')}
|
||||
const menuLink=(commentFeed||document).querySelector('#'+activeTabId+`_${this.scope.get(0)?.dataset['commentid']} [href][data-ipsmenu]`);this._menu=menuLink?document.querySelector(menuLink.getAttribute('href')):null;}
|
||||
return this._menu;},_setupShareCommentDialog(){const shareButton=this.getMenu()?.querySelector('[data-role="shareComment"], [data-role="shareReview"]');const shareMenu=shareButton?.dataset.ipsdialogContent?document.querySelector(shareButton.dataset.ipsdialogContent):null;const copyToClipboard=shareMenu?.querySelector('[data-role="shareButton"]');let shared=false;if(window.isSecureContext&©ToClipboard){copyToClipboard.onclick=e=>e.preventDefault()
|
||||
@@ -70,8 +73,7 @@ ips.ui.flashMsg.show(ilang`copied`)
|
||||
if(!shared&&ips.utils.contentViews.enabled()&&this.scope.get(0).dataset.commentapp==='forums'){shared=true;ips.getAjax()(`${location.protocol}${ips.getSetting("baseURL")}/?app=core&module=system&controller=ajax&do=trackPostShareIntent&commentId=${this.scope.get(0).dataset.commentid}`).done(()=>{Debug.log("Sent post share intent");})}}
|
||||
copyToClipboard.addEventListener('pointerup',cb)
|
||||
copyToClipboard.addEventListener('pointercancel',()=>copyToClipboard.removeEventListener('pointerup',cb))
|
||||
copyToClipboard.addEventListener('pointerleave',()=>copyToClipboard.removeEventListener('pointerup',cb))})}else if(copyToClipboard){Debug.log(`Converting share copy to clipboard links to contenteditable links`)
|
||||
copyToClipboard.setAttribute('hidden','')
|
||||
copyToClipboard.addEventListener('pointerleave',()=>copyToClipboard.removeEventListener('pointerup',cb))})}else if(copyToClipboard){copyToClipboard.setAttribute('hidden','')
|
||||
const shareArea=document.createElement('span')
|
||||
const wrap=document.createElement('span')
|
||||
if(copyToClipboard.querySelector(':scope > i')){const icon=copyToClipboard.querySelector(':scope > i')
|
||||
@@ -91,10 +93,10 @@ document.getSelection().addRange(range)
|
||||
try{if(document.execCommand instanceof Function){document.execCommand?.('copy')
|
||||
ips.ui.flashMsg.show(ips.getString('copied'))}}catch(e){}}}},setMultiQuote:function(e,data){var selector='[data-commentApp="'+data.contentapp+'"]';selector+='[data-commentType="'+data.contenttype+'"]';selector+='[data-commentID="'+data.contentcommentid+'"]';if(this.scope.is(selector)){if(!_.isNull(e)&&e.type=='setMultiQuoteEnabled'){this.scope.find('[data-action="multiQuoteComment"]').removeClass('ipsButton--simple').addClass('ipsButton--secondary').attr('data-mqActive',true).html(ips.templates.render('core.posts.multiQuoteOn'));}else if(_.isNull(e)||e.type=='setMultiQuoteDisabled'){this.scope.find('[data-action="multiQuoteComment"]').addClass('ipsButton--simple').removeClass('ipsButton--secondary').removeAttr('data-mqActive').html(ips.templates.render('core.posts.multiQuoteOff'));}}},quoteComment:function(e){e.preventDefault();if(!this._getQuoteData()){Debug.error("Couldn't get quote data");return;}
|
||||
var html=this._prepareQuote($('<div/>').html(this.scope.find('[data-role="commentContent"]').html()));this.feedJQ().trigger('quoteComment.comment',{userid:this._quoteData.userid,username:this._quoteData.username,timestamp:this._quoteData.timestamp,contentapp:this._quoteData.contentapp,contenttype:this._quoteData.contenttype,contentclass:this._quoteData.contentclass,contentid:this._quoteData.contentid,contentcommentid:this._quoteData.contentcommentid,quoteHtml:html.html(),citeurl:$(this.elem).get(0).querySelector(".ipsEntry__date[href]")?.getAttribute('href')});},multiQuoteComment:function(e){e.preventDefault();if(!this._getQuoteData()){Debug.error("Couldn't get quote data");return;}
|
||||
var button=$(e.currentTarget);var mqActive=button.attr('data-mqActive');var html=this._prepareQuote($('<div/>').html(this.scope.find('[data-role="commentContent"]').html()));this.feedJQ().trigger((mqActive)?'removeMultiQuote.comment':'addMultiQuote.comment',{userid:this._quoteData.userid,username:this._quoteData.username,timestamp:this._quoteData.timestamp,contentapp:this._quoteData.contentapp,contenttype:this._quoteData.contenttype,contentclass:this._quoteData.contentclass,contentid:this._quoteData.contentid,contentcommentid:this._quoteData.contentcommentid,quoteHtml:html.html(),button:button.attr('data-mqId'),citeurl:$(this.elem).get(0).querySelector(".ipsEntry__date[href]")?.getAttribute('href')});if(mqActive){button.removeClass('ipsButton--secondary').addClass('ipsButton--simple').removeAttr('data-mqActive').html(ips.templates.render('core.posts.multiQuoteOff'));}else{button.removeClass('ipsButton--simple').addClass('ipsButton--secondary').attr('data-mqActive',true).html(ips.templates.render('core.posts.multiQuoteOn'));}},editComment:function(e){e.preventDefault();this._commentContents=this.scope.find('[data-role="commentContent"]').html();var url=$(e.currentTarget).attr('href');this.scope.find('[data-role="commentContent"]').removeClass('ipsRichText');this.trigger('getEditForm.comment',{url:url,commentID:this._commentID});},cancelEditComment:function(e){e.preventDefault();var self=this;ips.ui.alert.show({type:'verify',icon:'warn',message:ips.getString('cancel_edit_confirm'),subText:'',buttons:{yes:ips.getString('yes'),no:ips.getString('no')},callbacks:{yes:function(){ips.ui.editorv5.destruct(self.scope.find('[data-ipseditorv5]'));self.scope.find('[data-role="commentContent"]').html(self._commentContents);self.scope.find('[data-role="commentControls"], [data-action="expandTruncate"]').show();self.scope.find('[data-action="editComment"]').parent('li').show();self.scope.find('[data-role="commentContent"]').addClass('ipsRichText');$(document).trigger('contentChange',[self.scope]);}}});},submitEdit:function(e){e.preventDefault();e.stopPropagation();var form=this.scope.find('form');var url=form.attr('action');var data=form.serialize();form.find('[data-action="cancelEditComment"]').remove();form.find('[type="submit"]').prop('disabled',true).text(ips.getString('saving'));this.trigger('saveEditComment.comment',{form:data,url:url,commentID:this._commentID});},commentLoading:function(e,data){if(data.commentID!=this._commentID){return;}
|
||||
var button=$(e.currentTarget);var mqActive=button.attr('data-mqActive');var html=this._prepareQuote($('<div/>').html(this.scope.find('[data-role="commentContent"]').html()));this.feedJQ().trigger((mqActive)?'removeMultiQuote.comment':'addMultiQuote.comment',{userid:this._quoteData.userid,username:this._quoteData.username,timestamp:this._quoteData.timestamp,contentapp:this._quoteData.contentapp,contenttype:this._quoteData.contenttype,contentclass:this._quoteData.contentclass,contentid:this._quoteData.contentid,contentcommentid:this._quoteData.contentcommentid,quoteHtml:html.html(),button:button.attr('data-mqId'),citeurl:$(this.elem).get(0).querySelector(".ipsEntry__date[href]")?.getAttribute('href')});if(mqActive){button.removeClass('ipsButton--secondary').addClass('ipsButton--simple').removeAttr('data-mqActive').html(ips.templates.render('core.posts.multiQuoteOff'));}else{button.removeClass('ipsButton--simple').addClass('ipsButton--secondary').attr('data-mqActive',true).html(ips.templates.render('core.posts.multiQuoteOn'));}},editComment:function(e){e.preventDefault();this._commentContents=this.scope.find('[data-role="commentContent"]').html();var url=$(e.currentTarget).attr('href');this.trigger('getEditForm.comment',{url:url,commentID:this._commentID});},cancelEditComment:function(e){e.preventDefault();var self=this;ips.ui.alert.show({type:'verify',icon:'warn',message:ips.getString('cancel_edit_confirm'),subText:'',buttons:{yes:ips.getString('yes'),no:ips.getString('no')},callbacks:{yes:function(){ips.ui.editorv5.destruct(self.scope.find('[data-ipseditorv5]'));self.scope.find('[data-role="commentContent"]').html(self._commentContents);self.scope.find('[data-role="commentControls"], [data-action="expandTruncate"]').show();self.scope.find('[data-action="editComment"]').parent('li').show();self.scope.find('[data-role="commentContent"]').addClass('ipsRichText');$(document).trigger('contentChange',[self.scope]);}}});},submitEdit:function(e){e.preventDefault();e.stopPropagation();var form=this.scope.find('form');var url=form.attr('action');var data=form.serialize();form.find('[data-action="cancelEditComment"]').remove();form.find('[type="submit"]').prop('disabled',true).text(ips.getString('saving'));this.trigger('saveEditComment.comment',{form:data,url:url,commentID:this._commentID});},commentLoading:function(e,data){if(data.commentID!=this._commentID){return;}
|
||||
var commentLoading=this.scope.find('[data-role="commentLoading"]');commentLoading.removeClass('ipsHide');},commentDone:function(e,data){if(data.commentID!=this._commentID){return;}
|
||||
this.scope.find('[data-role="commentLoading"]').addClass('ipsHide');},getEditFormDone:function(e,data){if(data.commentID!=this._commentID){return;}
|
||||
var self=this;var showForm=_.once(function(){self._isEditing=true;self.scope.find('[data-action="expandTruncate"], [data-role="commentControls"]').hide();self.scope.find('[data-action="editComment"]').parent('li').hide();self.scope.find('[data-role="commentContent"]').html(data.response);$(document).trigger('contentChange',[self.scope.find('[data-role="commentContent"]')]);});var elemPosition=ips.utils.position.getElemPosition(this.scope);var windowScroll=$(window).scrollTop();var viewHeight=$(window).height();if(elemPosition.absPos.top<windowScroll||elemPosition.absPos.top>(windowScroll+viewHeight)){$('html, body').animate({scrollTop:elemPosition.absPos.top+'px'},function(){showForm();});}else{showForm();}},getEditFormError:function(e,data){if(data.commentID!=this._commentID){return;}
|
||||
const showForm=_.once(()=>{this._isEditing=true;this.scope.find('[data-action="expandTruncate"], [data-role="commentControls"]').hide();this.scope.find('[data-action="editComment"]').parent('li').hide();this.scope.find('[data-role="commentContent"]').html(data.response);this.scope.find('[data-role="commentContent"]').removeClass('ipsRichText');$(document).trigger('contentChange',[this.scope.find('[data-role="commentContent"]')]);});var elemPosition=ips.utils.position.getElemPosition(this.scope);var windowScroll=$(window).scrollTop();var viewHeight=$(window).height();if(elemPosition.absPos.top<windowScroll||elemPosition.absPos.top>(windowScroll+viewHeight)){$('html, body').animate({scrollTop:elemPosition.absPos.top+'px'},function(){showForm();});}else{showForm();}},getEditFormError:function(e,data){if(data.commentID!=this._commentID){return;}
|
||||
window.location=data.url;},saveEditCommentDone:function(e,data){if(data.commentID!=this._commentID){return;}
|
||||
ips.ui.editorv5.destruct(this.scope.find('[data-ipseditorv5]'));this._isEditing=false;this.scope.find('[data-role="commentContent"]').replaceWith($('<div>'+data.response+'</div>').find('[data-role="commentContent"]'));this.scope.trigger('refreshContent');this.scope.find('[data-action="expandTruncate"], [data-role="commentControls"]').show();this.scope.find('[data-action="editComment"]').parent('li').show();$(document).trigger('contentChange',[this.scope]);},saveEditCommentError:function(e,data){if(data.commentID!=this._commentID){return;}
|
||||
ips.ui.alert.show({type:'alert',icon:'warn',message:ips.getString('editCommentError'),});},approveComment:function(e){e.preventDefault();var url=$(e.currentTarget).attr('href');this.trigger('approveComment.comment',{url:url,commentID:this._commentID});},approveCommentLoading:function(e,data){if(data.commentID!=this._commentID){return;}
|
||||
@@ -127,9 +129,12 @@ if(replyForm.attr('data-noAjax')){this._pollingEnabled=false;}
|
||||
if(!('commentFeed'in ips.utils.history.getState())){this._updateState({})
|
||||
ips.utils.history.replaceState(this.historyState,'commentFeed',window.location.href)}
|
||||
if(!_.isUndefined(this.scope.attr('data-lastPage'))&&this._pollingEnabled){this._startPolling();}
|
||||
$(document).ready(()=>{this._setUpMultiQuote();this._findCheckedComments();});this.on('updateTimestamps',this._updateTimestamps);for(const ev of['ips:editorUpdated','ips:editorAfterInit']){this.elem.addEventListener(ev,e=>{const{elem}=e.detail;const submit=elem.closest(CSS.supports('selector(a:has(b))')?'form:has(input[type="submit"],button[type="submit"])':'form').querySelectorAll(':is(button, input)[type="submit"]');if(!submit.length){return;}
|
||||
const widget=ips.ui.editorv5.getObj(elem);if(!widget){return;}
|
||||
const empty=!widget.getInstanceHTML();submit.forEach(item=>{if(empty){item.setAttribute('disabled','');}else{item.removeAttribute('disabled');}})})}},clearLocalStorage:function(){ips.utils.db.remove('moderation',$(document).find("[data-feedID]").attr('data-feedID'));},destroy:function(){$(document).off('click','[data-role="multiQuote_'+this._containerID+'"]',this._boundMQ);$(document).off('click','[data-action="clearQuoted_'+this._containerID+'"]',this._boundCMQ);this._stopPolling();},_getUrlParams:function(){const sort=this._getSortValue();const obj={sortby:sort.by||'',sortdirection:sort.order||'',};obj[this._pageParam]=ips.utils.url.getPageNumber(this._pageParam)||1;return obj;},_getSortValue:function(){return{by:'',order:''};},stateChange(e){if(e.detail?.type==='replace'||!('commentFeed'in ips.utils.history.getState())){return;}
|
||||
$(document).ready(()=>{this._setUpMultiQuote();this._findCheckedComments();});this.on('updateTimestamps',this._updateTimestamps);for(const ev of['ips:editorUpdated','ips:editorAfterInit']){this.elem.addEventListener(ev,_.debounce(e=>{const{elem,instance}=e.detail;const submit=elem.closest(CSS.supports('selector(a:has(b))')?'form:has(input[type="submit"],button[type="submit"])':'form').querySelectorAll(':is(button, input)[type="submit"]');if(!submit.length){return;}
|
||||
function nodeHasContent(node){if(node.textContent?.trim()?.length){return true;}
|
||||
if(node.isAtom&&!node.isText){return true;}
|
||||
if(node.children&&Symbol.iterator in node.children){for(const child of node.children){if(nodeHasContent(child)){return true;}}}
|
||||
return false;}
|
||||
const empty=!nodeHasContent(instance.state.doc);submit.forEach(item=>{if(empty){item.setAttribute('disabled','');}else{item.removeAttribute('disabled');}})},100));}},clearLocalStorage:function(){ips.utils.db.remove('moderation',$(document).find("[data-feedID]").attr('data-feedID'));},destroy:function(){$(document).off('click','[data-role="multiQuote_'+this._containerID+'"]',this._boundMQ);$(document).off('click','[data-action="clearQuoted_'+this._containerID+'"]',this._boundCMQ);this._stopPolling();},_getUrlParams:function(){const sort=this._getSortValue();const obj={sortby:sort.by||'',sortdirection:sort.order||'',};obj[this._pageParam]=ips.utils.url.getPageNumber(this._pageParam)||1;return obj;},_getSortValue:function(){return{by:'',order:''};},stateChange(e){if(e.detail?.type==='replace'||!('commentFeed'in ips.utils.history.getState())){return;}
|
||||
const state={data:ips.utils.history.getState('commentFeed'),url:window.location.href}
|
||||
if(typeof state.data!=="object"){return;}
|
||||
const lastChange=e.detail.type==='pop'?'pop':ips.utils.history.getLastChangeType()
|
||||
@@ -146,7 +151,7 @@ this._setUpMultiQuote();$(document).trigger('contentChange',[this.scope]);this._
|
||||
return;}
|
||||
Debug.error("Ajax request failed ("+textStatus+"): "+errorThrown);Debug.error(jqXHR.responseText);}else{window.location=this._getURL();}},_getResultsAlways:function(){},_setLoading:function(status){var commentFeed=this.scope.find('[data-role="commentFeed"]');if(status){if(!this._overlay){this._overlay=$('<div/>').addClass('ipsLoading').hide();ips.getContainer().append(this._overlay);}
|
||||
var dims=ips.utils.position.getElemDims(commentFeed);var position=ips.utils.position.getElemPosition(commentFeed);this._overlay.show().css({left:position.viewportOffset.left+'px',top:position.viewportOffset.top+$(document).scrollTop()+'px',width:dims.width+'px',height:dims.height+'px',position:'absolute',zIndex:ips.ui.zIndex()});commentFeed.animate({opacity:"0.5"});}else{}},_paginatedOnce:false,paginationClick:function(e,data){data.originalEvent.preventDefault();if(data.pageNo!==this._urlParams[this._pageParam]){Debug.log("Possibly collapsing elements as the user navigated away from the first page");if(parseInt(`${this._urlParams[this._pageParam]}`)===1&&!this._paginatedOnce){document.querySelectorAll(`[data-feedid="${this._commentFeedID}"] [data-collapse-off-first-page]`).forEach(toCollapse=>{toCollapse.dispatchEvent(new CustomEvent("ips:truncateCollapse",{bubbles:true}));})}
|
||||
this._paginatedOnce=true;var urlObj=ips.utils.url.getURIObject(data.href);var queryKey=urlObj.queryKey;if(_.isUndefined(queryKey[this._pageParam])){queryKey[this._pageParam]=data.pageNo;}
|
||||
this._paginatedOnce=true;const urlObj=new URL(data.href,location.href);const queryKey=Object.fromEntries(urlObj.searchParams.entries());if(!(this._pageParam in queryKey)){queryKey[this._pageParam]=data.pageNo;}
|
||||
this._seoPagination=data.seoPagination;this._updateURL(queryKey,()=>{const elem=this.elem.querySelector(`.ipsButtonBar--top`)
|
||||
if(!(elem instanceof HTMLElement)){Debug.warn("Couldn't find the .ipsButtonBar--top or .ipsButtonBar--bottom pagination container inside the comment feed controller. This is likely a theme error that needs to be addressed so that the content feed can be scrolled to the top or bottom after pagination")
|
||||
return;}
|
||||
@@ -156,12 +161,13 @@ window.scrollBy({top:boundingBox.top-30,behavior:'smooth'})});}},_updateURL:func
|
||||
let newUrl=this._getURL();if(newUrl.slice(-1)==='?'){newUrl=newUrl.substring(0,newUrl.length-1);}
|
||||
if(this._seoPagination===true){newUrl=ips.utils.url.pageParamToPath(newUrl,this._pageParam,this.historyState[this._pageParam]);}
|
||||
ips.utils.history.pushState(this.historyState,'commentFeed',newUrl);this._updateDoneCallback=callback;},_updateState(newParams){Object.assign(this._urlParams,newParams);this.historyState={...this._urlParams}
|
||||
Object.assign(this.historyState,{controller:this.controllerID,feedID:this._commentFeedID})},_getURL:function(){const urlObj=new URL(this._baseURL);const skipParams=new Set(['controller','feedID','bypassState']);for(const param in this._urlParams){if(this._urlParams[param]&&!skipParams.has(param)&&!(param===this._pageParam&&Number(this._urlParams[this._pageParam])<=1)){urlObj.searchParams.set(param,this._urlParams[param])}}
|
||||
return urlObj.toString();},editorCompatibility:function(e,data){if(!data.compatible){this.triggerOn('core.front.core.comment','disableQuoting.comment');}},checkedComment:function(e,data){var dataStore=ips.utils.db.get('moderation',this._commentFeedID)||{};if(data.checked){if(_.isUndefined(dataStore[data.commentID])){dataStore[data.commentID]=data.actions;}}else{delete dataStore[data.commentID];}
|
||||
Object.assign(this.historyState,{controller:this.controllerID,feedID:this._commentFeedID})},_getURL:function(){const urlObj=new URL(this._baseURL);const skipParams=new Set(['controller','feedID','bypassState']);const params={};for(const param in this._urlParams){if(this._urlParams[param]&&!skipParams.has(param)){params[param]=this._urlParams[param].toString();}}
|
||||
urlObj.updateSearchParams({params});return urlObj.toString();},editorCompatibility:function(e,data){if(!data.compatible){this.triggerOn('core.front.core.comment','disableQuoting.comment');}},checkedComment:function(e,data){var dataStore=ips.utils.db.get('moderation',this._commentFeedID)||{};if(data.checked){if(_.isUndefined(dataStore[data.commentID])){dataStore[data.commentID]=data.actions;}}else{delete dataStore[data.commentID];}
|
||||
if(_.size(dataStore)){ips.utils.db.set('moderation',this._commentFeedID,dataStore,undefined,(Date.now()/1000)+86400);}else{ips.utils.db.remove('moderation',this._commentFeedID);}},_findCheckedComments:function(){if(!this.scope.find('input[type="checkbox"]').length){return;}
|
||||
var dataStore=ips.utils.db.get('moderation',this._commentFeedID)||{};var self=this;var pageAction=this.scope.find('[data-ipsPageAction]');if(_.size(dataStore)){var sizeOtherPage=0;_.each(dataStore,function(val,key){if(self.scope.find('[data-commentID="'+key+'"]').length){self.scope.find('[data-commentID="'+key+'"] input[type="checkbox"][data-role="moderation"]').attr('checked',true).trigger('change');}else{sizeOtherPage++;pageAction.trigger('addManualItem.pageAction',{id:'multimod['+key+']',actions:val});}});if(this.scope.find('[data-ipsAutoCheck]')){this.scope.find('[data-ipsAutoCheck]').trigger('setInitialCount.autoCheck',{count:sizeOtherPage});}}},signatureOptions:function(e,data){data.originalEvent.preventDefault();if(data.selectedItemID=='oneSignature'){this._ignoreSingleSignature($(e.currentTarget).attr('data-memberID'));}else{this._ignoreAllSignatures();}},_ignoreAllSignatures:function(){var self=this;var url=ips.getSetting('baseURL')+'index.php?app=core&module=system&controller=settings&do=toggleSigs';var signatures=this.scope.find('[data-role="memberSignature"]');signatures.slideUp();ips.getAjax()(url).done(function(response){ips.ui.flashMsg.show(ips.getString('signatures_hidden'));signatures.remove();}).fail(function(){signatures.show();ips.ui.alert.show({type:'alert',icon:'warn',message:ips.getString('signatures_error'),callbacks:{}});});},_ignoreSingleSignature:function(memberID){var url=ips.getSetting('baseURL')+'index.php?app=core&module=system&controller=ignore&do=ignoreType&type=signatures';var signatures=this.scope.find('[data-role="memberSignature"]').find('[data-memberID="'+memberID+'"]').closest('[data-role="memberSignature"]');signatures.slideUp();ips.getAjax()(url,{data:{member_id:parseInt(memberID)}}).done(function(response){ips.ui.flashMsg.show(ips.getString('single_signature_hidden'));signatures.remove();}).fail(function(){signatures.show();ips.ui.alert.show({type:'alert',icon:'warn',message:ips.getString('single_signature_error'),callbacks:{}});});},filterClick:function(e){e.preventDefault();var urlObj=ips.utils.url.getURIObject($(e.target).attr('href'));var queryKey=urlObj.queryKey;this._updateURL(queryKey);},quoteComment:function(e,data){if(this.scope.find('[data-role="replyArea"] [data-ipsEditorv5]').length){ips.ui.editorv5.getObjWithInit(this.scope.find('[data-role="replyArea"] [data-ipsEditorv5]'),function(editor){editor.insertQuotes([data]);});}},windowBlur:function(e){if(this._pollingEnabled){Debug.log('Window blurred, pausing polling...');this._pollingPaused=true;}},windowFocus:function(e){if(this._pollingEnabled&&this._pollingPaused){Debug.log('Window focused...');this._pollingPaused=false;if(this._pollOnUnpaused){this._pollOnUnpaused=false;this.pollForNewReplies();}}},handleSocketCommentTrigger:function(){if(!_.isUndefined(this.scope.attr('data-lastPage'))&&this._pollingEnabled){this.pollForNewReplies();}},_startPolling:function(){this._pollingActive=true;Debug.log('Starting polling with interval '+(this._currentPoll/1000)+'s');this._pollingTimeout=setTimeout(()=>{this.pollForNewReplies();},this._currentPoll);},_stopPolling:function(){this._pollingActive=false;if(this._pollingTimeout){clearTimeout(this._pollingTimeout);}
|
||||
Debug.log("Stopped polling for new replies in comment feed.");},pollForNewReplies(){const replyForm=this.scope.find('[data-role="replyArea"] form');const commentsOnThisPage=this.scope.find('[data-commentid]');if(!commentsOnThisPage.length){return;}
|
||||
const lastSeenId=this._getLastSeenID(commentsOnThisPage);const type=$(commentsOnThisPage[commentsOnThisPage.length-1]).attr('data-commentType');if(type.match(/-review$/)){Debug.log("Polling disabled for reviews");this._stopPolling();return;}
|
||||
var dataStore=ips.utils.db.get('moderation',this._commentFeedID)||{};var self=this;var pageAction=this.scope.find('[data-ipsPageAction]');if(_.size(dataStore)){var sizeOtherPage=0;_.each(dataStore,function(val,key){if(self.scope.find('[data-commentID="'+key+'"]').length){self.scope.find('[data-commentID="'+key+'"] input[type="checkbox"][data-role="moderation"]').attr('checked',true).trigger('change');}else{sizeOtherPage++;pageAction.trigger('addManualItem.pageAction',{id:'multimod['+key+']',actions:val});}});if(this.scope.find('[data-ipsAutoCheck]')){this.scope.find('[data-ipsAutoCheck]').trigger('setInitialCount.autoCheck',{count:sizeOtherPage});}}},signatureOptions:function(e,data){data.originalEvent.preventDefault();if(data.selectedItemID=='oneSignature'){this._ignoreSingleSignature($(e.currentTarget).attr('data-memberID'));}else{this._ignoreAllSignatures();}},_ignoreAllSignatures:function(){var self=this;var url=ips.getSetting('baseURL')+'index.php?app=core&module=system&controller=settings&do=toggleSigs';var signatures=this.scope.find('[data-role="memberSignature"]');signatures.slideUp();ips.getAjax()(url).done(function(response){ips.ui.flashMsg.show(ips.getString('signatures_hidden'));signatures.remove();}).fail(function(){signatures.show();ips.ui.alert.show({type:'alert',icon:'warn',message:ips.getString('signatures_error'),callbacks:{}});});},_ignoreSingleSignature:function(memberID){var url=ips.getSetting('baseURL')+'index.php?app=core&module=system&controller=ignore&do=ignoreType&type=signatures';var signatures=this.scope.find('[data-role="memberSignature"]').find('[data-memberID="'+memberID+'"]').closest('[data-role="memberSignature"]');signatures.slideUp();ips.getAjax()(url,{data:{member_id:parseInt(memberID)}}).done(function(response){ips.ui.flashMsg.show(ips.getString('single_signature_hidden'));signatures.remove();}).fail(function(){signatures.show();ips.ui.alert.show({type:'alert',icon:'warn',message:ips.getString('single_signature_error'),callbacks:{}});});},filterClick:function(e){e.preventDefault();var urlObj=ips.utils.url.getURIObject($(e.target).attr('href'));var queryKey=urlObj.queryKey;this._updateURL(queryKey);},quoteComment:function(e,data){if(this.scope.find('[data-role="replyArea"] [data-ipsEditorv5]').length){ips.ui.editorv5.getObjWithInit(this.scope.find('[data-role="replyArea"] [data-ipsEditorv5]'),function(editor){editor.insertQuotes([data]);});}},windowBlur:function(e){if(this._pollingEnabled){Debug.log('Window blurred, pausing polling...');this._pollingPaused=true;}},windowFocus:function(e){if(this._pollingEnabled&&this._pollingPaused){Debug.log('Window focused...');this._pollingPaused=false;if(this._pollOnUnpaused){this._pollOnUnpaused=false;this.pollForNewReplies();}}},handleSocketCommentTrigger:function(){if(!_.isUndefined(this.scope.attr('data-lastPage'))&&this._pollingEnabled){this.pollForNewReplies();}},_startPolling:function(){if(ips.utils.sockets.enabled()&&ips.utils.sockets.connected()){return;}
|
||||
this._pollingActive=true;Debug.log('Starting polling with interval '+(this._currentPoll/1000)+'s');this._pollingTimeout=setTimeout(()=>{this.pollForNewReplies();},this._currentPoll);},_stopPolling:function(){this._pollingActive=false;if(this._pollingTimeout){clearTimeout(this._pollingTimeout);}
|
||||
Debug.log("Stopped polling for new replies in comment feed.");},pollForNewReplies(){const replyForm=this.scope.find('[data-role="replyArea"] form');const commentsOnThisPage=document.querySelectorAll(`[data-feedid="${this.elem.dataset.feedid}"] [data-commentid]`);if(!commentsOnThisPage.length){return;}
|
||||
const lastSeenId=this._getLastSeenID($(commentsOnThisPage));const type=$(commentsOnThisPage[commentsOnThisPage.length-1]).attr('data-commentType');if(type.match(/-review$/)){Debug.log("Polling disabled for reviews");this._stopPolling();return;}
|
||||
if(this._pollingPaused){Debug.log('Window blurred, delaying poll until focused...');this._pollOnUnpaused=true;return;}
|
||||
if(this._pollAjax&&this._pollAjax.abort!==undefined){this._pollAjax.abort();}
|
||||
this._pollAjax=ips.getAjax();this._pollAjax(replyForm.attr('action'),{dataType:'json',data:'do=checkForNewReplies&type=count&lastSeenID='+lastSeenId+'&csrfKey='+ips.getSetting('csrfKey'),type:'post'}).done(response=>{if(response.error&&response.error==='auto_polling_disabled'){this._stopPolling();return;}
|
||||
@@ -184,15 +190,15 @@ form.find("[data-role='commentFormError']").each(function(){$(this).remove();});
|
||||
ips.ui.flashMsg.show(ips.getString('mergedConncurrentPosts'));$(document).trigger('contentChange',[self.scope]);}else{if(response.postedByLoggedInMember){self.trigger('ipsDataLayer',{_key:'content_comment',_properties:response.dataLayer});}
|
||||
self.trigger('addToCommentFeed',{content:response.content,totalItems:response.total,feedID:self._commentFeedID,scrollToItem:true});if(response.message){ips.ui.flashMsg.show(response.message);}
|
||||
if(self.scope.find('[data-role="replyArea"] input[name="guest_name"]').length){self.scope.find('[data-role="replyArea"] input[name="guest_name"]').val('');self.scope.find('[data-role="replyArea"] [data-ipsEditorv5]').find('.ipsComposeArea_dummy').hide().end().find('[data-role="mainEditorArea"]').show().end().closest('.ipsComposeArea').removeClass('ipsComposeArea_minimized').find('[data-ipsEditor-toolList]').show();}
|
||||
form.find("[data-role='commentFormError']").each(function(){$(this).remove();});if(autoFollow.length){self.trigger('followingItem',{feedID:self.scope.attr('data-feedID'),following:autoFollow.is(':checked')});}}
|
||||
form.find("[data-role='commentFormError']").each(function(){$(this).remove();});if(autoFollow.length){self.trigger('followingItem',{feedID:self.scope.attr('data-follow-area-id')||self.scope.attr('data-feedID'),following:autoFollow.is(':checked')});}}
|
||||
self._clearNotifications();}).fail(function(jqXHR,textStatus,errorThrown){if(Debug.isEnabled()){Debug.error("Posting new reply failed: "+textStatus);Debug.log(jqXHR);Debug.log(errorThrown);}else{form.attr('data-noAjax','true');form.attr('action',form.attr('action')+((!form.attr('action').match(/\?/))?'?failedReply=1':'&failedReply=1'));form.submit();}}).always(function(){submitRestorations.forEach(cb=>cb());});},loadNewPosts:function(e){e?.preventDefault?.();this._importNewReplies();},findCommentInFeed(commentId){const commentSelector=`[data-commentid="${commentId}"]`;const comment=this.elem.querySelector(`[data-role="commentFeed"] ${commentSelector}`);if(comment){return comment;}else if(this.elem.dataset.feedid){const feedSelector=`[data-feedid="${this.elem.dataset.feedid}"]`;return document.querySelector(`${feedSelector}${commentSelector}, ${feedSelector} ${commentSelector}`)||null;}
|
||||
return null;},addToCommentFeed(e,data){if(typeof data?.content!=="string"||data.feedID!==this._commentFeedID){return;}
|
||||
const content=$('<div/>').append(data.content);const div=content.get(0);const comment=content.find('.js-ipsEntry');let commentFeed=this.scope.find('[data-role="commentFeed"]');if(commentFeed.find('[data-role="moderationTools"]').length){commentFeed=commentFeed.find('[data-role="moderationTools"]');}
|
||||
this.scope.find('[data-role="noComments"]').remove();const actualContent=div.querySelector(`[data-ips-hook="postWrapper"]`)
|
||||
const content=$('<div/>').append(typeof data.content==='string'?data.content:'');const comment=content.find('.js-ipsEntry');if(comment.length){let commentFeed=this.scope.find('[data-role="commentFeed"]');if(commentFeed.find('[data-role="moderationTools"]').length){commentFeed=commentFeed.find('[data-role="moderationTools"]');}
|
||||
this.scope.find('[data-role="noComments"]').remove();const actualContent=comment.get(0)
|
||||
const id=parseInt(actualContent?.querySelector(`[data-commentid]`)?.dataset.commentid);const existing=Number.isInteger(id)&&this.findCommentInFeed(id);if(existing&&existing.parentElement){existing.parentElement.replaceChild(existing,actualContent);}else{commentFeed.append(comment.css({opacity:"0.001"}));const newItemTop=comment.offset().top;const windowScroll=$(window).scrollTop();const viewHeight=$(window).height();function _showComment(){comment.css({opacity:"1"});ips.utils.anim.go('fadeInDown',comment.filter(':not(.ipsHide)'));}
|
||||
if(data.scrollToItem&&(newItemTop<windowScroll||newItemTop>(windowScroll+viewHeight))){$('html, body').animate({scrollTop:newItemTop+'px'},'fast',function(){setTimeout(_showComment,100);});}else{_showComment();}
|
||||
if(ips.utils.db.isEnabled()){const buttons=comment.find('[data-action="multiQuoteComment"]');buttons.hide().removeClass('ipsHide');ips.utils.anim.go('fadeIn',buttons);}}}else{Debug.log(`core.front.core.commentFeed:addToCommentFeed() - Invalid content provided to addToCommentFeed. The data.content property is supposed to contain HTML with an element that has the \`js-ipsEntry\` class. This may be expected, as in the case of posts held for approval.`);if(Debug.isEnabled()){console.log(data);}}
|
||||
if(!('resetEditor'in data)||data.resetEditor!==false){this.scope.find('[data-role="replyArea"] [data-ipsEditorv5]').data('_editor').reset();}
|
||||
if(ips.utils.db.isEnabled()){const buttons=comment.find('[data-action="multiQuoteComment"]');buttons.hide().removeClass('ipsHide');ips.utils.anim.go('fadeIn',buttons);}}
|
||||
this._updateCount(data.totalItems);this._updateTimestamps();$(document).trigger('contentChange',[this.scope]);},deletedComment:function(e,data){data=$.parseJSON(data.response);var self=this;if(data.type=='redirect'){window.location=data.url;}
|
||||
else{this._updateCount(data.total);}},_updateCount:function(newTotal){if(this.scope.find('[data-role="comment_count"]')){var langString='js_num_comments';if(this.scope.find('[data-role="comment_count"]').attr('data-commentCountString')){langString=this.scope.find('[data-role="comment_count"]').attr('data-commentCountString');}
|
||||
this.scope.find('[data-role="comment_count"]').text(ips.pluralize(ips.getString(langString),newTotal));}},doMultiQuote:function(e){var mqData=this._getMultiQuoteData();var replyArea=this.scope.find('[data-role="replyArea"]');var output=[];var self=this;if(!_.size(mqData)||!replyArea.is(':visible')){return;}
|
||||
@@ -218,12 +224,13 @@ for(const[timeEl,timeStamp]of timestampMap.entries()){const key="time_"+timeStam
|
||||
this._updateCount($(e.target).closest('[data-commentsType]').attr('data-commentsType'),newTotal);},_updateCount:function(type,number){var langString='js_num_'+type;var elem=$('#'+$(this.scope).attr('data-tabsId')+'_tab_'+type);elem.text(ips.pluralize(ips.getString(langString),number));}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.ignoredComments',{initialize:function(){this.on('menuItemSelected','[data-action="ignoreOptions"]',this.commentIgnore);},commentIgnore:function(e,data){switch(data.selectedItemID){case'showPost':data.originalEvent.preventDefault();this._showHiddenPost(e,data);break;case'stopIgnoring':data.originalEvent.preventDefault();this._stopIgnoringFromComment(e,data);break;}},_showHiddenPost:function(e,data){var ignoreRow=$(data.triggerElem).closest('.ipsEntry--ignored');var commentID=ignoreRow.attr('data-ignoreCommentID');var comment=this.scope.find('#'+commentID);ignoreRow.remove();comment.removeClass('ipsHide');},_stopIgnoringFromComment:function(e,data){var ignoreRow=$(data.triggerElem).closest('.ipsEntry--ignored');var userID=ignoreRow.attr('data-ignoreUserID');var self=this;var posts=this.scope.find('[data-ignoreUserID="'+userID+'"]');posts.each(function(){self.scope.find('#'+$(this).attr('data-ignoreCommentID')).removeClass('ipsHide');$(this).remove();});var url=ips.getSetting('baseURL')+'index.php?app=core&module=system&controller=ignore&do=ignoreType&type=topics&off=1';ips.getAjax()(url,{data:{member_id:parseInt(userID)}}).done(function(){ips.ui.flashMsg.show(ips.getString('ignore_prefs_updated'));}).fail(function(){window.location=ips.getSetting('baseURL')+'index.php?app=core&module=system&controller=ignore&do=ignoreType&off=1type=topics&member_id='+userID;});}});}(jQuery,_));;
|
||||
;(function($,_){"use strict";ips.controller.register('core.front.core.instantNotifications',{_pollTimeout:60,_windowInactivePoll:0,_pollMultiplier:1,_messagesEnabled:null,_ajaxObj:null,_debugPolling:true,_browserNotifications:{},_paused:false,_interval:null,_usingRealtime:false,initialize(){this.on(document,ips.utils.events.getVisibilityEvent(),this.windowVisibilityChange);this.on(window,'storage',this.storageChange);this.setup();},setup(){if(!ips.utils.db.isEnabled()||!(window.JSON?.parse instanceof Function)){Debug.warn("Sorry, your browser doesn't support localStorage or JSON so we can't load instant notifications for you.");return;}
|
||||
if(ips.utils.sockets.enabled()){if(ips.utils.sockets.connected){this._useRealtime();}else{this.on(document,'socket.connected',this._useRealtime)}}
|
||||
if(ips.utils.sockets.enabled()){if(ips.utils.sockets.connected()){this._useRealtime();}else{this.on(document,'socket.connected',this._useRealtime)}}
|
||||
this.on(document,`socket.notifications_available`,()=>{Debug.log('Notifications: fetching the latest notification counts');this._useRealtime();this._doAjaxRequest(this._getCurrentCounts());})
|
||||
this._messagesEnabled=this.scope.find('[data-notificationType="inbox"]').length;this._setInterval(this._pollTimeout);this._doInitialCheck();},_useRealtime(){if(!this._usingRealtime){this._stopPolling();this._usingRealtime=true;}},storageChange(e){var event=e.originalEvent;if(event.key!=='notifications.'+ips.getSetting('baseURL')){return;}
|
||||
if(this._debugPolling){Debug.log('Notifications: updating instantly from storage event');}
|
||||
try{var data=JSON.parse(event.newValue);var counts=this._getCurrentCounts();this._updateIcons({messages:parseInt(data.messages),notifications:parseInt(data.notifications)},counts);}catch(err){}},windowVisibilityChange(){var hiddenProp=ips.utils.events.getVisibilityProp();if(!_.isUndefined(hiddenProp)&&!document[hiddenProp]){this._updateBrowserTitle(0);if(!this._usingRealtime){this._pollMultiplier=1;this._windowInactivePoll=0;if(this._paused){this._checkNotifications();this._setInterval(this._pollTimeout);}
|
||||
if(this._debugPolling){Debug.log("Notifications: Resetting inactive poll.");}}}},_setInterval(timeoutInSecs){clearInterval(this._interval);this._interval=setInterval(_.bind(this._checkNotifications,this),timeoutInSecs*1000);},_doInitialCheck(){const storage=ips.utils.db.get('notifications',ips.getSetting('baseURL'));const counts=this._getCurrentCounts();if(!storage||typeof storage!=="object"){return;}
|
||||
if(this._debugPolling){Debug.log("Notifications: Resetting inactive poll.");}}}},_setInterval(timeoutInSecs){clearInterval(this._interval);if(this._usingRealtime){return;}
|
||||
this._interval=setInterval(_.bind(this._checkNotifications,this),timeoutInSecs*1000);},_doInitialCheck(){const storage=ips.utils.db.get('notifications',ips.getSetting('baseURL'));const counts=this._getCurrentCounts();if(!storage||typeof storage!=="object"){return;}
|
||||
if((this._messagesEnabled&&counts.messages>storage.messages)||counts.notifications>storage.notifications){if(this._debugPolling){Debug.log("Notifications: bubbles reporting higher counts for notifications or messages.");}
|
||||
const dataToSend={notifications:storage.notifications};if(this._messagesEnabled)dataToSend.messages=storage.message
|
||||
this._doAjaxRequest(dataToSend);}},_checkNotifications(){const storage=ips.utils.db.get('notifications',ips.getSetting('baseURL'));const timestamp=ips.utils.time.timestamp();const counts=this._getCurrentCounts();const currentTimeout=this._pollTimeout*this._pollMultiplier;if(document[ips.utils.events.getVisibilityProp()]){if(this._windowInactivePoll>=3&&this._pollMultiplier===1){if(this._debugPolling){Debug.log("Notifications: Polled over 3 minutes, increasing multiplier to 2");}
|
||||
@@ -284,8 +291,7 @@ if(!data.content?.content_id||parseInt(data.content.content_id)!==this._getItemI
|
||||
if((data?.content?.comment_id||null)!==this._getCommentId()){return;}
|
||||
if('count'in data&&'score'in data){if(typeof data.blurb!=="string"||this.scope.get(0).querySelector(`[data-action='reactLaunch'].ipsReact_reacted`)){data.blurb=await this._fetchBlurb();}
|
||||
if(typeof data.blurb!=="string"){return;}
|
||||
this._updateReaction(data);}},async _fetchBlurb(){try{const reactionUrl=this.scope.get(0).querySelector(`[data-role='reaction'][href]`)?.getAttribute('href');if(!reactionUrl)return null;let url=new URL(reactionUrl);url.searchParams.delete('csrfKey');url.searchParams.delete('reaction');url.searchParams.delete('do');url.searchParams.set('do',`reactionBlurb${this._getCommentId() ? 'Comment' : ''}`)
|
||||
const response=await ips.fetch(url.toString())
|
||||
this._updateReaction(data);}},async _fetchBlurb(){try{const reactionUrl=this.scope.get(0).querySelector(`[data-role='reaction'][href]`)?.getAttribute('href');if(!reactionUrl)return null;let url=new URL(reactionUrl);url.updateSearchParams({params:{csrfKey:null,reaction:null,do:`reactionBlurb${this._getCommentId() ? "Comment" : ""}`,}});const response=await ips.fetch(url.toString())
|
||||
if(typeof response?.blurb==='string'){return response.blurb;}}catch(e){}
|
||||
return null;},_getCommentId(){if($(this.scope).get(0)?.closest(`[data-commentid]`)){return parseInt($(this.scope).get(0)?.closest(`[data-commentid]`).dataset.commentid)||null}
|
||||
return null;},_getItemId(){return parseInt($(this.scope).get(0)?.closest('[data-feedid]')?.dataset.feedid.match(/(\d+)$/)?.[1])||parseInt(document.body.dataset?.pageid)||null},clickLaunchReaction(){if(!ips.utils.events.isTouchDevice()||this._singleReaction){return;}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){m(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n="",r=0,i=e.nodeType;if(!i)while(t=e[r++])n+=ce.text(t);return 1===i||11===i?e.textContent:9===i?e.documentElement.textContent:3===i||4===i?e.nodeValue:n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var pe=oe.pop,de=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=new RegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function p(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+"").replace(f,p)};var ye=C,me=s;!function(){var e,b,w,o,a,T,r,C,d,i,k=me,S=ce.expando,E=0,n=0,s=W(),c=W(),u=W(),h=W(),l=function(e,t){return e===t&&(a=!0),0},f="checked|selected|async|autofocus|autoplay|conLine truncated
|
||||
"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],function(e){return t(e,window)}):"object"==typeof module&&module.exports?module.exports=t(require("jquery"),window):t(jQuery,window)}(function(s,n){"use strict";function e(e){return 0<=function(e,t){for(var r=/^(\d+)\.(\d+)\.(\d+)/,n=r.exec(e)||[],o=r.exec(t)||[],a=1;a<=3;a++){if(+o[a]<+n[a])return 1;if(+n[a]<+o[a])return-1}return 0}(s.fn.jquery,e)}s.migrateVersion="3.4.1";var t=Object.create(null);s.migrateDisablePatches=function(){for(var e=0;e<arguments.length;e++)t[arguments[e]]=!0},s.migrateEnablePatches=function(){for(var e=0;e<arguments.length;e++)delete t[arguments[e]]},s.migrateIsPatchEnabled=function(e){return!t[e]},n.console&&n.console.log&&(s&&e("3.0.0")&&!e("5.0.0")||n.console.log("JQMIGRATE: jQuery 3.x-4.x REQUIRED"),s.migrateWarnings&&n.console.log("JQMIGRATE: Migrate plugin loaded multiple times"),n.console.log("JQMIGRATE: Migrate is installed"+(s.migrateMute?"":" with logging active")+", version "+s.migrateVersion));var o={};function u(e,t){var r=n.console;!s.migrateIsPatchEnabled(e)||s.migrateDeduplicateWarnings&&o[t]||(o[t]=!0,s.migrateWarnings.push(t+" ["+e+"]"),r&&r.warn&&!s.migrateMute&&(r.warn("JQMIGRATE: "+t),s.migrateTrace&&r.trace&&r.trace()))}function r(e,t,r,n,o){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return u(n,o),r},set:function(e){u(n,o),r=e}})}function a(e,t,r,n,o){var a=e[t];e[t]=function(){return o&&u(n,o),(s.migrateIsPatchEnabled(n)?r:a||s.noop).apply(this,arguments)}}function c(e,t,r,n,o){if(!o)throw new Error("No warning message provided");return a(e,t,r,n,o),0}function i(e,t,r,n){return a(e,t,r,n),0}s.migrateDeduplicateWarnings=!0,s.migrateWarnings=[],void 0===s.migrateTrace&&(s.migrateTrace=!0),s.migrateReset=function(){o={},s.migrateWarnings.length=0},"BackCompat"===n.document.compatMode&&u("quirks","jQuery is not compatible with Quirks Mode");var d,l,p,f={},m=s.fn.init,y=s.find,h=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,g=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,v=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;for(d in i(s.fn,"init",function(e){var t=Array.prototype.slice.call(arguments);return s.migrateIsPatchEnabled("selector-empty-id")&&"string"==typeof e&&"#"===e&&(u("selector-empty-id","jQuery( '#' ) is not a valid selector"),t[0]=[]),m.apply(this,t)},"selector-empty-id"),s.fn.init.prototype=s.fn,i(s,"find",function(t){var r=Array.prototype.slice.call(arguments);if("string"==typeof t&&h.test(t))try{n.document.querySelector(t)}catch(e){t=t.replace(g,function(e,t,r,n){return"["+t+r+'"'+n+'"]'});try{n.document.querySelector(t),u("selector-hash","Attribute selector with '#' must be quoted: "+r[0]),r[0]=t}catch(e){u("selector-hash","Attribute selector with '#' was not fixed: "+r[0])}}return y.apply(this,r)},"selector-hash"),y)Object.prototype.hasOwnProperty.call(y,d)&&(s.find[d]=y[d]);c(s.fn,"size",function(){return this.length},"size","jQuery.fn.size() is deprecated and removed; use the .length property"),c(s,"parseJSON",function(){return JSON.parse.apply(null,arguments)},"parseJSON","jQuery.parseJSON is deprecated; use JSON.parse"),c(s,"holdReady",s.holdReady,"holdReady","jQuery.holdReady is deprecated"),c(s,"unique",s.uniqueSort,"unique","jQuery.unique is deprecated; use jQuery.uniqueSort"),r(s.expr,"filters",s.expr.pseudos,"expr-pre-pseudos","jQuery.expr.filters is deprecated; use jQuery.expr.pseudos"),r(s.expr,":",s.expr.pseudos,"expr-pre-pseudos","jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos"),e("3.1.1")&&c(s,"trim",function(e){return null==e?"":(e+"").replace(v,"$1")},"trim","jQuery.trim is deprecated; use String.prototype.trim"),e("3.2.0")&&(c(s,"nodeName",function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},"nodeName","jQuery.nodeName is deprecated"),c(s,"isArray",Array.isArray,"isArray","jQuery.isArray is deprecated; use Array.isArray")),e("3.3.0")&&(c(s,"isNumeric",function(e){var t=typeof e;return("number"==t||"string"==t)&&!isNaN(e-parseFloat(e))},"isNumeric","jQuery.isNumeric() is deprecated"),s.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){f["[object "+t+"]"]=t.toLowerCase()}),c(s,"type",function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?f[Object.prototype.toString.call(e)]||"object":typeof e},"type","jQuery.type is deprecated"),c(s,"isFunction",function(e){return"function"==typeof e},"isFunction","jQuery.isFunction() is deprecated"),c(s,"isWindow",function(e){return null!=e&&e===e.window},"isWindow","jQuery.isWindow() is deprecated")),s.ajax&&(l=s.ajax,p=/(=)\?(?=&|$)|\?\?/,i(s,"ajax",function(){var e=l.apply(this,arguments);return e.promise&&(c(e,"success",e.done,"jqXHR-methods","jQXHR.success is deprecated and removed"),c(e,"error",e.fail,"jqXHR-methods","jQXHR.error is deprecated and removed"),c(e,"complete",e.always,"jqXHR-mLine truncated
|
||||
!function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||{};return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=0,o=i[n];e=e||[];for(var r=this._onceEvents&&this._onceEvents[t];o;){var s=r&&r[o];s&&(this.off(t,o),delete r[o]),o.apply(this,e),n+=s?0:1,o=i[n]}return this}},t}),function(t,e){"use strict";"function"==typeof define&&define.amd?define(["ev-emitter/ev-emitter"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}(window,function(t,e){function i(t,e){for(var i in e)t[i]=e[i];return t}function n(t){var e=[];if(Array.isArray(t))e=t;else if("number"==typeof t.length)for(var i=0;i<t.length;i++)e.push(t[i]);else e.push(t);return e}function o(t,e,r){return this instanceof o?("string"==typeof t&&(t=document.querySelectorAll(t)),this.elements=n(t),this.options=i({},this.options),"function"==typeof e?r=e:i(this.options,e),r&&this.on("always",r),this.getImages(),h&&(this.jqDeferred=new h.Deferred),void setTimeout(function(){this.check()}.bind(this))):new o(t,e,r)}function r(t){this.img=t}function s(t,e){this.url=t,this.element=e,this.img=new Image}var h=t.jQuery,a=t.console;o.prototype=Object.create(e.prototype),o.prototype.options={},o.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},o.prototype.addElementImages=function(t){"IMG"==t.nodeName&&this.addImage(t),this.options.background===!0&&this.addElementBackgroundImages(t);var e=t.nodeType;if(e&&d[e]){for(var i=t.querySelectorAll("img"),n=0;n<i.length;n++){var o=i[n];this.addImage(o)}if("string"==typeof this.options.background){var r=t.querySelectorAll(this.options.background);for(n=0;n<r.length;n++){var s=r[n];this.addElementBackgroundImages(s)}}}};var d={1:!0,9:!0,11:!0};return o.prototype.addElementBackgroundImages=function(t){var e=getComputedStyle(t);if(e)for(var i=/url\((['"])?(.*?)\1\)/gi,n=i.exec(e.backgroundImage);null!==n;){var o=n&&n[2];o&&this.addBackground(o,t),n=i.exec(e.backgroundImage)}},o.prototype.addImage=function(t){var e=new r(t);this.images.push(e)},o.prototype.addBackground=function(t,e){var i=new s(t,e);this.images.push(i)},o.prototype.check=function(){function t(t,i,n){setTimeout(function(){e.progress(t,i,n)})}var e=this;return this.progressedCount=0,this.hasAnyBroken=!1,this.images.length?void this.images.forEach(function(e){e.once("progress",t),e.check()}):void this.complete()},o.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount==this.images.length&&this.complete(),this.options.debug&&a&&a.log("progress: "+i,t,e)},o.prototype.complete=function(){var t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){var e=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[e](this)}},r.prototype=Object.create(e.prototype),r.prototype.check=function(){var t=this.getIsImageComplete();return t?void this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),void(this.proxyImage.src=this.img.src))},r.prototype.getIsImageComplete=function(){return this.img.complete&&void 0!==this.img.naturalWidth},r.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.img,e])},r.prototype.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},r.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},r.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},r.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype=Object.create(r.prototype),s.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url;var t=this.getIsImageComplete();t&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},s.prototype.unbindEvents=function(){this.img.removeEventListener("loaLine truncated
|
||||
(function(e,t,n,r,i){function T(t){t=t.split(")");var n=e.trim,i=-1,s=t.length-1,o,u,a,f=h?new Float32Array(6):[],l=h?new Float32Array(6):[],c=h?new Float32Array(6):[1,0,0,1,0,0];f[0]=f[3]=c[0]=c[3]=1;f[1]=f[2]=f[4]=f[5]=0;while(++i<s){o=t[i].split("(");u=n(o[0]);a=o[1];l[0]=l[3]=1;l[1]=l[2]=l[4]=l[5]=0;switch(u){case b+"X":l[4]=parseInt(a,10);break;case b+"Y":l[5]=parseInt(a,10);break;case b:a=a.split(",");l[4]=parseInt(a[0],10);l[5]=parseInt(a[1]||0,10);break;case w:a=M(a);l[0]=r.cos(a);l[1]=r.sin(a);l[2]=-r.sin(a);l[3]=r.cos(a);break;case E+"X":l[0]=+a;break;case E+"Y":l[3]=a;break;case E:a=a.split(",");l[0]=a[0];l[3]=a.length>1?a[1]:a[0];break;case S+"X":l[2]=r.tan(M(a));break;case S+"Y":l[1]=r.tan(M(a));break;case x:a=a.split(",");l[0]=a[0];l[1]=a[1];l[2]=a[2];l[3]=a[3];l[4]=parseInt(a[4],10);l[5]=parseInt(a[5],10);break}c[0]=f[0]*l[0]+f[2]*l[1];c[1]=f[1]*l[0]+f[3]*l[1];c[2]=f[0]*l[2]+f[2]*l[3];c[3]=f[1]*l[2]+f[3]*l[3];c[4]=f[0]*l[4]+f[2]*l[5]+f[4];c[5]=f[1]*l[4]+f[3]*l[5]+f[5];f=[c[0],c[1],c[2],c[3],c[4],c[5]]}return c}function N(e){var t,n,i,s=e[0],o=e[1],u=e[2],a=e[3];if(s*a-o*u){t=r.sqrt(s*s+o*o);s/=t;o/=t;i=s*u+o*a;u-=s*i;a-=o*i;n=r.sqrt(u*u+a*a);u/=n;a/=n;i/=n;if(s*a<o*u){s=-s;o=-o;i=-i;t=-t}}else{t=n=i=0}return[[b,[+e[4],+e[5]]],[w,r.atan2(o,s)],[S+"X",r.atan(i)],[E,[t,n]]]}function C(t,n){var r={start:[],end:[]},i=-1,s,o,u,a;(t=="none"||L(t))&&(t="");(n=="none"||L(n))&&(n="");if(t&&n&&!n.indexOf("matrix")&&_(t).join()==_(n.split(")")[0]).join()){r.origin=t;t="";n=n.slice(n.indexOf(")")+1)}if(!t&&!n){return}if(!t||!n||A(t)==A(n)){t&&(t=t.split(")"))&&(s=t.length);n&&(n=n.split(")"))&&(s=n.length);while(++i<s-1){t[i]&&(o=t[i].split("("));n[i]&&(u=n[i].split("("));a=e.trim((o||u)[0]);O(r.start,k(a,o?o[1]:0));O(r.end,k(a,u?u[1]:0))}}else{r.start=N(T(t));r.end=N(T(n))}return r}function k(e,t){var n=+!e.indexOf(E),r,i=e.replace(/e[XY]/,"e");switch(e){case b+"Y":case E+"Y":t=[n,t?parseFloat(t):n];break;case b+"X":case b:case E+"X":r=1;case E:t=t?(t=t.split(","))&&[parseFloat(t[0]),parseFloat(t.length>1?t[1]:e==E?r||t[0]:n+"")]:[n,n];break;case S+"X":case S+"Y":case w:t=t?M(t):0;break;case x:return N(t?_(t):[1,0,0,1,0,0]);break}return[[i,t]]}function L(e){return m.test(e)}function A(e){return e.replace(/(?:\([^)]*\))|\s/g,"")}function O(e,t,n){while(n=t.shift()){e.push(n)}}function M(e){return~e.indexOf("deg")?parseInt(e,10)*(r.PI*2/360):~e.indexOf("grad")?parseInt(e,10)*(r.PI/200):parseFloat(e)}function _(e){e=/([^,]*),([^,]*),([^,]*),([^,]*),([^,p]*)(?:px)?,([^)p]*)(?:px)?/.exec(e);return[e[1],e[2],e[3],e[4],e[5],e[6]]}var s=n.createElement("div"),o=s.style,u="Transform",a=["O"+u,"ms"+u,"Webkit"+u,"Moz"+u],f=a.length,l,c,h="Float32Array"in t,p,d,v=/Matrix([^)]*)/,m=/^\s*matrix\(\s*1\s*,\s*0\s*,\s*0\s*,\s*1\s*(?:,\s*0(?:px)?\s*){2}\)\s*$/,g="transform",y="transformOrigin",b="translate",w="rotate",E="scale",S="skew",x="matrix";while(f--){if(a[f]in o){e.support[g]=l=a[f];e.support[y]=l+"Origin";continue}}if(!l){e.support.matrixFilter=c=o.filter===""}e.cssNumber[g]=e.cssNumber[y]=true;if(l&&l!=g){e.cssProps[g]=l;e.cssProps[y]=l+"Origin";if(l=="Moz"+u){p={get:function(t,n){return n?e.css(t,l).split("px").join(""):t.style[l]},set:function(e,t){e.style[l]=/matrix\([^)p]*\)/.test(t)?t.replace(/matrix((?:[^,]*,){4})([^,]*),([^)]*)/,x+"$1$2px,$3px"):t}}}else if(/^1\.[0-5](?:\.|$)/.test(e.fn.jquery)){p={get:function(t,n){return n?e.css(t,l.replace(/^ms/,"Ms")):t.style[l]}}}}else if(c){p={get:function(t,n,r){var s=n&&t.currentStyle?t.currentStyle:t.style,o,u;if(s&&v.test(s.filter)){o=RegExp.$1.split(",");o=[o[0].split("=")[1],o[2].split("=")[1],o[1].split("=")[1],o[3].split("=")[1]]}else{o=[1,0,0,1]}if(!e.cssHooks[y]){o[4]=s?parseInt(s.left,10)||0:0;o[5]=s?parseInt(s.top,10)||0:0}else{u=e._data(t,"transformTranslate",i);o[4]=u?u[0]:0;o[5]=u?u[1]:0}return r?o:x+"("+o+")"},set:function(t,n,r){var i=t.style,s,o,u,a;if(!r){i.zoom=1}n=T(n);o=["Matrix("+"M11="+n[0],"M12="+n[2],"M21="+n[1],"M22="+n[3],"SizingMethod='auto expand'"].join();u=(s=t.currentStyle)&&s.filter||i.filter||"";i.filter=v.test(u)?u.replace(v,o):u+" progid:DXImageTransform.Microsoft."+o+")";if(!e.cssHooks[y]){if(a=e.transform.centerOrigin){i[a=="margin"?"marginLeft":"left"]=-(t.offsetWidth/2)+t.clientWidth/2+"px";i[a=="margin"?"marginTop":"top"]=-(t.offsetHeight/2)+t.clientHeight/2+"px"}i.left=n[4]+"px";i.top=n[5]+"px"}else{e.cssHooks[y].set(t,n)}}}}if(p){e.cssHooks[g]=p}d=p&&p.get||e.css;e.fx.step.transform=function(t){var n=t.elem,i=t.start,s=t.end,o=t.pos,u="",a=1e5,f,h,v,m;if(!i||typeof i==="string"){if(!i){i=d(n,l)}if(c){n.style.zoom=1}s=s.split("+=").join(i);e.extend(t,C(i,s));i=t.start;s=t.end}f=i.length;while(f--){h=i[f];v=s[f];m=+false;switch(h[0]){case b:m="px";case E:m||(m="");u=h[0]+"("+r.round((h[1][0]+(v[1][0]-h[1][0])*o)*a)/a+m+","+r.round((h[1][1]+(v[1][1]-h[1][1])*o)*a)/a+m+")"+u;break;case S+"X":case S+"Y":case w:u=h[0]+"("+r.round((h[1]+(v[1]-h[1])*o)*a)/a+"rad)"+u;break}}t.origin&&(u=t.origin+u);p&&p.set?p.set(n,u,+true):n.styleLine truncated
|
||||
(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory():typeof define==="function"&&define.amd?define(factory):(global=global||self,global.Mustache=factory())})(this,function(){"use strict";var objectToString=Object.prototype.toString;var isArray=Array.isArray||function isArrayPolyfill(object){return objectToString.call(object)==="[object Array]"};function isFunction(object){return typeof object==="function"}function typeStr(obj){return isArray(obj)?"array":typeof obj}function escapeRegExp(string){return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function hasProperty(obj,propName){return obj!=null&&typeof obj==="object"&&propName in obj}function primitiveHasOwnProperty(primitive,propName){return primitive!=null&&typeof primitive!=="object"&&primitive.hasOwnProperty&&primitive.hasOwnProperty(propName)}var regExpTest=RegExp.prototype.test;function testRegExp(re,string){return regExpTest.call(re,string)}var nonSpaceRe=/\S/;function isWhitespace(string){return!testRegExp(nonSpaceRe,string)}var entityMap={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};function escapeHtml(string){return String(string).replace(/[&<>"'`=\/]/g,function fromEntityMap(s){return entityMap[s]})}var whiteRe=/\s*/;var spaceRe=/\s+/;var equalsRe=/\s*=/;var curlyRe=/\s*\}/;var tagRe=/#|\^|\/|>|\{|&|=|!/;function parseTemplate(template,tags){if(!template)return[];var lineHasNonSpace=false;var sections=[];var tokens=[];var spaces=[];var hasTag=false;var nonSpace=false;var indentation="";var tagIndex=0;function stripSpace(){if(hasTag&&!nonSpace){while(spaces.length)delete tokens[spaces.pop()]}else{spaces=[]}hasTag=false;nonSpace=false}var openingTagRe,closingTagRe,closingCurlyRe;function compileTags(tagsToCompile){if(typeof tagsToCompile==="string")tagsToCompile=tagsToCompile.split(spaceRe,2);if(!isArray(tagsToCompile)||tagsToCompile.length!==2)throw new Error("Invalid tags: "+tagsToCompile);openingTagRe=new RegExp(escapeRegExp(tagsToCompile[0])+"\\s*");closingTagRe=new RegExp("\\s*"+escapeRegExp(tagsToCompile[1]));closingCurlyRe=new RegExp("\\s*"+escapeRegExp("}"+tagsToCompile[1]))}compileTags(tags||mustache.tags);var scanner=new Scanner(template);var start,type,value,chr,token,openSection;while(!scanner.eos()){start=scanner.pos;value=scanner.scanUntil(openingTagRe);if(value){for(var i=0,valueLength=value.length;i<valueLength;++i){chr=value.charAt(i);if(isWhitespace(chr)){spaces.push(tokens.length);indentation+=chr}else{nonSpace=true;lineHasNonSpace=true;indentation+=" "}tokens.push(["text",chr,start,start+1]);start+=1;if(chr==="\n"){stripSpace();indentation="";tagIndex=0;lineHasNonSpace=false}}}if(!scanner.scan(openingTagRe))break;hasTag=true;type=scanner.scan(tagRe)||"name";scanner.scan(whiteRe);if(type==="="){value=scanner.scanUntil(equalsRe);scanner.scan(equalsRe);scanner.scanUntil(closingTagRe)}else if(type==="{"){value=scanner.scanUntil(closingCurlyRe);scanner.scan(curlyRe);scanner.scanUntil(closingTagRe);type="&"}else{value=scanner.scanUntil(closingTagRe)}if(!scanner.scan(closingTagRe))throw new Error("Unclosed tag at "+scanner.pos);if(type==">"){token=[type,value,start,scanner.pos,indentation,tagIndex,lineHasNonSpace]}else{token=[type,value,start,scanner.pos]}tagIndex++;tokens.push(token);if(type==="#"||type==="^"){sections.push(token)}else if(type==="/"){openSection=sections.pop();if(!openSection)throw new Error('Unopened section "'+value+'" at '+start);if(openSection[1]!==value)throw new Error('Unclosed section "'+openSection[1]+'" at '+start)}else if(type==="name"||type==="{"||type==="&"){nonSpace=true}else if(type==="="){compileTags(value)}}stripSpace();openSection=sections.pop();if(openSection)throw new Error('Unclosed section "'+openSection[1]+'" at '+scanner.pos);return nestTokens(squashTokens(tokens))}function squashTokens(tokens){var squashedTokens=[];var token,lastToken;for(var i=0,numTokens=tokens.length;i<numTokens;++i){token=tokens[i];if(token){if(token[0]==="text"&&lastToken&&lastToken[0]==="text"){lastToken[1]+=token[1];lastToken[3]=token[3]}else{squashedTokens.push(token);lastToken=token}}}return squashedTokens}function nestTokens(tokens){var nestedTokens=[];var collector=nestedTokens;var sections=[];var token,section;for(var i=0,numTokens=tokens.length;i<numTokens;++i){token=tokens[i];switch(token[0]){case"#":case"^":collector.push(token);sections.push(token);collector=token[4]=[];break;case"/":section=sections.pop();section[5]=token[2];collector=sections.length>0?sections[sections.length-1][4]:nestedTokens;break;default:collector.push(token)}}return nestedTokens}function Scanner(string){this.string=string;this.tail=string;this.pos=0}Scanner.prototype.eos=function eos(){return this.tail===""};Scanner.prototype.scan=function scan(re){var match=this.tail.match(re);if(!match||match.index!==0)return"";var string=match[0];this.tail=this.tail.substring(string.length);this.pos+=string.length;return string};ScannerLine truncated
|
||||
var Debug=Debug||{};;(function($,_,undefined){"use strict";Debug=function(){var options={enabled:false,level:1,adapters:[]};var LEVEL={DEBUG:1,INFO:2,WARN:3,ERROR:4};var debug=function(msg){logMessage(LEVEL.DEBUG,msg);return Debug;},info=function(msg){logMessage(LEVEL.INFO,msg);return Debug;},warn=function(msg){logMessage(LEVEL.WARN,msg);return Debug;},error=function(msg){logMessage(LEVEL.ERROR,msg);return Debug;},logMessage=function(level,message){if(options.enabled&&level>=options.level&&options.adapters.length){for(let i=0;i<options.adapters.length;i++){options.adapters[i].write(level,message);}}
|
||||
return Debug;},setEnabled=function(enabled){options.enabled=(enabled===false)?false:true;return Debug;},isEnabled=function(){return options.enabled;},setLevel=function(level){if(LEVEL[level]){options.level=LEVEL[level];}
|
||||
@@ -11,7 +10,8 @@ return Debug;},clearAdapters=function(){options.adapters=[];return Debug;};retur
|
||||
break;case 2:console.info(msg);break;case 3:console.warn(msg);break;case 4:console.error(msg);break;}}};Debug.addAdapter(new Console);if(ipsDebug||(!_.isUndefined(window.localStorage)&&'localStorage'in window&&window['localStorage']!==null&&window.localStorage.getItem('DEBUG'))){Debug.setEnabled(true).setLevel('DEBUG').info("Enabled logging");}}(jQuery,_));;
|
||||
var ips=ips||{};jQuery.migrateMute=true;(function($,_,undefined){class CustomSubmitEvent extends Event{submitter=undefined;originalEvent=undefined;constructor(originalEvent){super('submit',{bubbles:true});this.submitter=originalEvent.submitter;this.originalEvent=originalEvent;}}
|
||||
"use strict";let logTimeIndent=0;ips=(function(){var _settings,_strings={},_graphData={},uid=1,urand=Math.ceil(Math.random()*10000),elemContainer,_location='front';var boot=function(config){_settings=config;_setAjaxConfig();_setAjaxEventListeners();document.addEventListener('submit',e=>{const form=e.target;if(e instanceof SubmitEvent&&form instanceof HTMLFormElement&&form.method.toUpperCase()==='POST'&&!getSetting('memberID')&&getCsrfKeyExpiry()<Date.now()/1000){Debug.log(`Intercepted form submission... fetching fresh CSRF key`);e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();getFreshCsrfKey().then(()=>{Debug.log(`Got a new CSRF key, resuming the form submission`);let submitButton=(e instanceof SubmitEvent||e.submitter instanceof Element)?e.submitter:form.querySelector('button[type="submit"], button:not([type]), input[type="submit"]');if(submitButton){submitButton.click();}else{const ev=new CustomSubmitEvent(e);form.dispatchEvent(ev);if(ev.defaultPrevented){return;}
|
||||
form.submit();}});}},{capture:true});$.fn.animationComplete=function(callback){return $(this).one('webkitAnimationEnd animationend',function(e){if(e.target==this){callback.apply(this);}});};$.fn.identify=function(){return this.each(function(){if(!this.id){this.id='ips_uid_'+urand+'_'+(++uid);}});};var oldProp=$.fn.prop;var newProp=function(){var retFunc=oldProp.apply(this,arguments);this.trigger('propChanged',this);return retFunc;};$.fn.prop=newProp;Function.prototype.method=function(name,func){this.prototype[name]=func;return this;};_.templateSettings={interpolate:/\{\{(.+?)\}\}/g
|
||||
form.submit();}});}},{capture:true});$.fn.animationComplete=function(callback){if('getAnimations'in Element.prototype){const elements=[...this];(new Promise(resolve=>setTimeout(resolve,0))).then(()=>Promise.allSettled((elements.map(el=>el.getAnimations()).flat()).map(anim=>anim.finished))).then(()=>callback.apply(this));return $(this);}
|
||||
return $(this).one('webkitAnimationEnd animationend',function(e){if(e.target==this){callback.apply(this);}});};$.fn.identify=function(){return this.each(function(){if(!this.id){this.id='ips_uid_'+urand+'_'+(++uid);}});};var oldProp=$.fn.prop;var newProp=function(){var retFunc=oldProp.apply(this,arguments);this.trigger('propChanged',this);return retFunc;};$.fn.prop=newProp;Function.prototype.method=function(name,func){this.prototype[name]=func;return this;};_.templateSettings={interpolate:/\{\{(.+?)\}\}/g
|
||||
};if(!Debug.isEnabled()&&window.console){window.console.log("%cThis is a browser feature intended for developers. Do not paste any code here given to you by someone else. It may compromise your account or have other negative side effects.","font-weight: bold; font-size: 14px;");}
|
||||
$(document).trigger('doneBooting').ready(function(){_location=$('body').attr('data-pageLocation')||'front';});},getAjax=function(){const wrap=method=>(...args)=>{let options={},url;if(typeof args[0]==='string'){url=args[0];options=args[1]||{};}else if(typeof args[0]==='object'&&args[0]){options=args[0];}
|
||||
if((options.method||options.type)?.toLowerCase()!=='post'||getSetting('memberID')||getCsrfKeyExpiry()>=Date.now()/1000){return method(...args);}
|
||||
@@ -51,7 +51,7 @@ delete options.traditional
|
||||
delete options.xhr
|
||||
delete options.xhrFields
|
||||
if(options.type&&!options.method){options.method=options.type;delete options.type;}
|
||||
getAjax()(options).done(resolve).fail(reject)})},getContainer=function(){var tryThis=$(getSetting('container'));return(tryThis.length)?tryThis:$('body');},_refreshCsrfKey=async function(){setSetting('csrfKeyExpiry',Math.floor(Date.now()/1000+20));try{const response=await window.fetch(getSetting('baseURL').toString().replace(/\/+$/,'')+'/?app=core&module=system&controller=ajax&do=getCsrfKey&path='+window.location.pathname);const data=await response.json();Debug.log(`Got new CSRF Key: ${data.key}`);setSetting('csrfKey',data.key);setSetting('csrfKeyExpiry',typeof data.expiry==="number"?data.expiry:Math.floor(Date.now()/1000+500));_setAjaxConfig();document.querySelectorAll(`form input[name="csrfKey"]`).forEach(input=>{input.value=data.key;});document.querySelectorAll(`form:is([action*="?csrfKey="],[action*="&csrfKey="])`).forEach(form=>{const url=new URL(form.action);if((url.toString().startsWith('https:'+ips.getSetting('baseURL'))||url.toString().startsWith('http:'+ips.getSetting('baseURL')))&&(url.searchParams.has('csrfKey')||form.method.toLowerCase()!=='get')){url.searchParams.set('csrfKey',data.key);form.action=url.toString();}});document.querySelectorAll(`[href*="?csrfKey="], [href*="&csrfKey="]`).forEach(linkLikeEl=>{const url=new URL(linkLikeEl.href||linkLikeEl.getAttribute('href'));if((url.toString().startsWith('https:'+ips.getSetting('baseURL'))||url.toString().startsWith('http:'+ips.getSetting('baseURL')))&&url.searchParams.has('csrfKey')){url.searchParams.set('csrfKey',data.key);linkLikeEl.setAttribute('href',url.toString());}});document.dispatchEvent(new CustomEvent('ips:csrfKeyUpdated'));}catch(e){Debug.warn(e);}},getCsrfKeyExpiry=function(){const setting=getSetting('csrfKeyExpiry');if(typeof setting==="number"&&!Number.isNaN(setting)&&getSetting('csrfKey')){return setting;}
|
||||
getAjax()(options).done(resolve).fail(reject)})},getContainer=function(){var tryThis=$(getSetting('container'));return(tryThis.length)?tryThis:$('body');},_refreshCsrfKey=async function(){setSetting('csrfKeyExpiry',Math.floor(Date.now()/1000+20));try{const response=await window.fetch(getSetting('baseURL').toString().replace(/\/+$/,'')+'/?app=core&module=system&controller=ajax&do=getCsrfKey&path='+window.location.pathname);const data=await response.json();Debug.log(`Got new CSRF Key: ${data.key}`);setSetting('csrfKey',data.key);setSetting('csrfKeyExpiry',typeof data.expiry==="number"?data.expiry:Math.floor(Date.now()/1000+500));_setAjaxConfig();document.querySelectorAll(`form input[name="csrfKey"]`).forEach(input=>{input.value=data.key;});document.querySelectorAll(`form:is([action*="?csrfKey="],[action*="&csrfKey="])`).forEach(form=>{const url=new URL(form.action);if((url.toString().startsWith('https:'+ips.getSetting('baseURL'))||url.toString().startsWith('http:'+ips.getSetting('baseURL')))&&(url.searchParams.has('csrfKey')||form.method.toLowerCase()!=='get')){url.updateSearchParams({param:'csrfKey',value:data.key});form.action=url.toString();}});document.querySelectorAll(`[href*="?csrfKey="], [href*="&csrfKey="]`).forEach(linkLikeEl=>{const url=new URL(linkLikeEl.href||linkLikeEl.getAttribute('href'));if((url.toString().startsWith('https:'+ips.getSetting('baseURL'))||url.toString().startsWith('http:'+ips.getSetting('baseURL')))&&url.searchParams.has('csrfKey')){url.updateSearchParams({param:'csrfKey',value:data.key});linkLikeEl.setAttribute('href',url.toString());}});document.dispatchEvent(new CustomEvent('ips:csrfKeyUpdated'));}catch(e){Debug.warn(e);}},getCsrfKeyExpiry=function(){const setting=getSetting('csrfKeyExpiry');if(typeof setting==="number"&&!Number.isNaN(setting)&&getSetting('csrfKey')){return setting;}
|
||||
return 0;},getFreshCsrfKey=async function(){if(getSetting('memberID')&&getSetting('csrfKey')){return getSetting('csrfKey');}
|
||||
if(Date.now()/1000>=getCsrfKeyExpiry()){await _refreshCsrfKey();}
|
||||
return getSetting('csrfKey');},_setAjaxConfig=function(){var data={csrfKey:getSetting('csrfKey')};$.ajaxSetup({data:data,cache:true});},_setAjaxEventListeners=function(){var count=0;$(document).ajaxSend(function(event,request,settings){if(!_.isUndefined(settings)&&settings.showLoading===true){if(!$('#elAjaxLoading').length){getContainer().append(templates.render('core.general.ajax'));}
|
||||
|
||||
@@ -7,7 +7,8 @@ this._setLoading(true);try{const response=await ips.fetch(url)
|
||||
$('[data-role="packageListContainer"]').html(response.contents);$('[data-role="categorySidebar"]').html(response.sidebar);$(document).trigger('contentChange',[$('[data-role="packageListContainer"]'),$('[data-role="categorySidebar"]')]);}catch(e){Debug.log(`Failed to fetch data for a nexus store category after a filter/sort/view update from ${url}`)
|
||||
Debug.warn(e)}
|
||||
this._setLoading(false)},_setLoading:function(state){if(state){$('[data-role="packageList"]').css('height',$('[data-role="packageList"]').height()).html('').addClass('ipsLoading');}else{$('[data-role="packageList"]').css('height','auto').removeClass('ipsLoading');}}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('nexus.front.store.currencySelect',{initialize:function(){this.on('click','a',this.currencyChangeWarning);},currencyChangeWarning:function(e){e.preventDefault();var url=$(e.currentTarget).attr('href');ips.ui.alert.show({type:'confirm',message:ips.getString('store_currency_change_warning'),icon:'warn',callbacks:{ok:function(){window.location=url;}}});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('nexus.front.store.currencySelect',{currencyChangeWarningConfirmed:false,initialize:function(){this.on('submit','form',this.currencyChangeWarning);},currencyChangeWarning:function(e){if(this.currencyChangeWarningConfirmed){return;}
|
||||
e.preventDefault();ips.ui.alert.show({type:'confirm',message:ips.getString('store_currency_change_warning'),icon:'warn',callbacks:{ok:()=>{this.currencyChangeWarningConfirmed=true;let submitButton=(e instanceof SubmitEvent||e.originalEvent.submitter instanceof Element)?e.originalEvent.submitter:e.target.querySelector('button[type="submit"], button:not([type]), input[type="submit"]');submitButton.click();}}});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('nexus.front.store.giftCard',{initialize:function(){this.on('click','[data-color]',this.toggleColor);this.on('change','[name="gift_voucher_amount"], [name="x_gift_voucher_amount"]',this.changeAmount);this.setup();},setup:function(){this.changeAmount();if($('input[name="gift_voucher_color"]').val()){this.setColor($('input[name="gift_voucher_color"]').val());}},changeAmount:function(){var amountVal=this.scope.find('[name="gift_voucher_amount"]:checked').val();var customVal=this.scope.find('[name="x_gift_voucher_amount"]').val();var amount=0;if(amountVal=='x'){if(!_.isUndefined(customVal)&&customVal!=''&&customVal!='x'){amount=customVal;}
|
||||
var scope=this.scope;ips.getAjax()(this.scope.attr('data-formatCurrencyUrl')+'&amount='+amount).done(function(response){scope.find('[data-role="value"]').text(response);});}else{amount=amountVal;this.scope.find('[data-role="value"]').text(this.scope.find('label[for="'+this.scope.find('[name="gift_voucher_amount"]:checked').attr('id')+'"]').text());}},toggleColor:function(e){e.preventDefault();var swatch=$(e.currentTarget);var color=swatch.attr('data-color');this.setColor(color);},setColor:function(color){this.scope.find('[data-role="giftCard"]').css({backgroundColor:'#'+color}).end().find('input[type="hidden"][name="gift_voucher_color"]').val('#'+color).end().find('[data-color]').closest('li').removeAttr('data-selected');$(this.scope).find('[data-color="'+color+'"]').closest('li').attr('data-selected',true);}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('nexus.front.store.packagePage',{_productURL:'',initialize:function(){this.on('change','select, input[type="radio"], [name="quantity"], [name="renewal_term"]',this.updatePriceAndStock);this.on('submit','form',this.submitForm);this.on('click','[data-action="toggleImage"]',this.toggleScreenshot);this.on(document,'addToCart.nexus',this.addToCart);this.setup();},setup:function(){this.scope.find('.cNexusProduct_images [data-action="toggleImage"]').first().addClass('cNexusProduct_imageSelected');if(this.scope.find('select,input[type="radio"]').length){this.updatePriceAndStock();}},toggleScreenshot:function(e){e.preventDefault();var clickedImage=$(e.currentTarget);var thumbImage=clickedImage.find('img').attr('src');var fullImage=clickedImage.attr('href');var html=ips.templates.render('nexus.store.productImage',{fullURL:fullImage,thumbURL:thumbImage});this.scope.find('.cNexusProduct_primaryImage').replaceWith(html).end().find('[data-action="toggleImage"]').removeClass('cNexusProduct_imageSelected');clickedImage.addClass('cNexusProduct_imageSelected');$(document).trigger('contentChange',[this.scope.find('.cNexusProduct_primaryImage').parent()]);},submitForm:function(e){var self=this;var form=this.scope.find('form');if(form.attr('data-noajax')){return true;}
|
||||
|
||||
@@ -441,7 +441,7 @@ $return .= <<<IPSCONTENT
|
||||
<li class='ipsData__last-secondary'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $entry->date instanceof \IPS\DateTime ) ? $entry->date : \IPS\DateTime::ts( $entry->date );$return .= $val->html();
|
||||
$val = ( $entry->date instanceof \IPS\DateTime ) ? $entry->date : \IPS\DateTime::ts( $entry->date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
</ul>
|
||||
@@ -468,7 +468,17 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<header class="ipsPageHeader ipsPageHeader--blogs-index">
|
||||
<header class="ipsPageHeader ipsPageHeader--blogs-index
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $category !== null ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsBox ipsPull
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<div class="ipsPageHeader__row">
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -494,11 +504,30 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $category !== null ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'blogs', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "blog/front/browse/index", "title:inside-end", [ $table,$featured,$blogs,$viewMode,$category ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h1>
|
||||
@@ -521,7 +550,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count( $blogs ) || \IPS\blog\Blog::canCreate() ):
|
||||
if ( $category === null and ( \count( $blogs ) || \IPS\blog\Blog::canCreate() ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -561,6 +590,48 @@ $return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $category !== null and ( \count( $blogs ) || \IPS\blog\Blog::canCreate() ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "blog/front/browse/index", "buttons:before", [ $table,$featured,$blogs,$viewMode,$category ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<div data-ips-hook="buttons" class="ipsBlockSpacer">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "blog/front/browse/index", "buttons:inside-start", [ $table,$featured,$blogs,$viewMode,$category ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "browse", \IPS\Request::i()->app )->indexButtons( $blogs, $viewMode, FALSE, $category );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "blog/front/browse/index", "buttons:inside-end", [ $table,$featured,$blogs,$viewMode,$category ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "blog/front/browse/index", "buttons:after", [ $table,$featured,$blogs,$viewMode,$category ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count( $featured ) ):
|
||||
@@ -871,7 +942,18 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<header class="ipsPageHeader ipsPageHeader--blogs-grid">
|
||||
|
||||
<header class="ipsPageHeader ipsPageHeader--blogs-grid
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $category !== null ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsBox ipsPull
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<div class="ipsPageHeader__row">
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -897,11 +979,30 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $category !== null ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'blogs', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "blog/front/browse/indexGrid", "title:inside-end", [ $entries,$featured,$blogs,$pagination,$viewMode,$category ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h1>
|
||||
@@ -924,10 +1025,10 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count( $blogs ) || \IPS\blog\Blog::canCreate() ):
|
||||
if ( $category === null and ( \count( $blogs ) || \IPS\blog\Blog::canCreate() ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "blog/front/browse/indexGrid", "buttons:before", [ $entries,$featured,$blogs,$pagination,$viewMode,$category ] );
|
||||
@@ -938,13 +1039,13 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "blog/front/browse/indexGrid", "buttons:inside-start", [ $entries,$featured,$blogs,$pagination,$viewMode,$category ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "browse", \IPS\Request::i()->app )->indexButtons( $blogs, $viewMode, FALSE, $category );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "blog/front/browse/indexGrid", "buttons:inside-end", [ $entries,$featured,$blogs,$pagination,$viewMode,$category ] );
|
||||
@@ -955,7 +1056,7 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "blog/front/browse/indexGrid", "buttons:after", [ $entries,$featured,$blogs,$pagination,$viewMode,$category ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -964,6 +1065,48 @@ $return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $category !== null and ( \count( $blogs ) || \IPS\blog\Blog::canCreate() ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "blog/front/browse/indexGrid", "buttons:before", [ $entries,$featured,$blogs,$pagination,$viewMode,$category ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<div data-ips-hook="buttons" class="ipsBlockSpacer">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "blog/front/browse/indexGrid", "buttons:inside-start", [ $entries,$featured,$blogs,$pagination,$viewMode,$category ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "browse", \IPS\Request::i()->app )->indexButtons( $blogs, $viewMode, FALSE, $category );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "blog/front/browse/indexGrid", "buttons:inside-end", [ $entries,$featured,$blogs,$pagination,$viewMode,$category ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "blog/front/browse/indexGrid", "buttons:after", [ $entries,$featured,$blogs,$pagination,$viewMode,$category ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count( $featured ) ):
|
||||
@@ -1389,7 +1532,7 @@ $return .= <<<IPSCONTENT
|
||||
<li class='ipsData__last-secondary'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $entry->date instanceof \IPS\DateTime ) ? $entry->date : \IPS\DateTime::ts( $entry->date );$return .= $val->html();
|
||||
$val = ( $entry->date instanceof \IPS\DateTime ) ? $entry->date : \IPS\DateTime::ts( $entry->date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
</ul>
|
||||
@@ -1727,7 +1870,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $blog->latestEntry()->date instanceof \IPS\DateTime ) ? $blog->latestEntry()->date : \IPS\DateTime::ts( $blog->latestEntry()->date );$return .= $val->html();
|
||||
$val = ( $blog->latestEntry()->date instanceof \IPS\DateTime ) ? $blog->latestEntry()->date : \IPS\DateTime::ts( $blog->latestEntry()->date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -798,7 +798,7 @@ $return .= <<<IPSCONTENT
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $blog->latestEntry()->date instanceof \IPS\DateTime ) ? $blog->latestEntry()->date : \IPS\DateTime::ts( $blog->latestEntry()->date );$return .= $val->html();
|
||||
$val = ( $blog->latestEntry()->date instanceof \IPS\DateTime ) ? $blog->latestEntry()->date : \IPS\DateTime::ts( $blog->latestEntry()->date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
|
||||
|
||||
@@ -24,9 +24,7 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->pageHeader( \IPS\Member::loggedIn()->language()->get('create_blog') );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsBox'>
|
||||
{$form}
|
||||
</div>
|
||||
{$form}
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
@@ -131,7 +129,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<section class='ipsBox'>
|
||||
<section class='ipsBox ipsBox--submitBlog ipsPull'>
|
||||
<form accept-charset='utf-8' class="ipsForm ipsForm--blog-submit
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $class, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -335,6 +333,14 @@ IPSCONTENT;
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsSubmitRow'>
|
||||
<button type='submit' class='ipsButton ipsButton--primary'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'entry_submit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -376,6 +382,14 @@ IPSCONTENT;
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsSubmitRow'>
|
||||
<button type='submit' class='ipsButton ipsButton--primary'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'entry_submit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -383,15 +397,6 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<div class='ipsSubmitRow'>
|
||||
<button type='submit' class='ipsButton ipsButton--primary'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'entry_submit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -346,7 +346,7 @@ IPSCONTENT;
|
||||
if ( $table->title ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<h2 class='ipsBox__header' hidden>
|
||||
<h2 class='ipsInvisible'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$table->title}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -1387,7 +1387,7 @@ $return .= <<<IPSCONTENT
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $entry->date instanceof \IPS\DateTime ) ? $entry->date : \IPS\DateTime::ts( $entry->date );$return .= $val->html();
|
||||
$val = ( $entry->date instanceof \IPS\DateTime ) ? $entry->date : \IPS\DateTime::ts( $entry->date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
|
||||
@@ -1701,12 +1701,7 @@ $return .= <<<IPSCONTENT
|
||||
·
|
||||
IPSCONTENT;
|
||||
|
||||
$htmlsprintf = array($entry->author()->link()); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'byline_name_date', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $entry->date instanceof \IPS\DateTime ) ? $entry->date : \IPS\DateTime::ts( $entry->date );$return .= $val->html();
|
||||
$htmlsprintf = array($entry->author()->link(), \IPS\DateTime::ts( $entry->date )); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'byline_name_date', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
@@ -1942,7 +1937,11 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $entry->feedId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' id='comments'>
|
||||
' id='comments' data-follow-area-id="entry-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $entry->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -2729,7 +2728,7 @@ $return .= <<<IPSCONTENT
|
||||
<p class="ipsPhotoPanel__secondary">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $entry->date instanceof \IPS\DateTime ) ? $entry->date : \IPS\DateTime::ts( $entry->date );$return .= $val->html();
|
||||
$val = ( $entry->date instanceof \IPS\DateTime ) ? $entry->date : \IPS\DateTime::ts( $entry->date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
·
|
||||
IPSCONTENT;
|
||||
@@ -2842,7 +2841,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "sharelinks", "core" )->shareButton( $entry, 'verySmall', 'light' );
|
||||
$return .= \IPS\Theme::i()->getTemplate( "sharelinks", "core" )->shareButton( $entry );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
@@ -692,7 +692,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $blog->latestEntry()->date instanceof \IPS\DateTime ) ? $blog->latestEntry()->date : \IPS\DateTime::ts( $blog->latestEntry()->date );$return .= $val->html();
|
||||
$val = ( $blog->latestEntry()->date instanceof \IPS\DateTime ) ? $blog->latestEntry()->date : \IPS\DateTime::ts( $blog->latestEntry()->date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -94,13 +94,13 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $event->container()->club() !== NULL && $event->container()->club()->profile_photo ):
|
||||
elseif ( $event->container()->club() !== NULL && $event->container()->club()->cover_photo ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$image = \IPS\File::get('core_Clubs', $event->container()->club()->profile_photo );
|
||||
$image = \IPS\File::get('core_Clubs', $event->container()->club()->cover_photo );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -1003,13 +1003,13 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $event->container()->club() !== NULL && $event->container()->club()->profile_photo ):
|
||||
elseif ( $event->container()->club() !== NULL && $event->container()->club()->cover_photo ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$image = \IPS\File::get('core_Clubs', $event->container()->club()->profile_photo );
|
||||
$image = \IPS\File::get('core_Clubs', $event->container()->club()->cover_photo );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -1760,26 +1760,28 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'e
|
||||
$return .= <<<IPSCONTENT
|
||||
</h2>
|
||||
<div class='i-padding_3 i-background_2 i-border-end-start-radius_box i-border-end-end-radius_box'>
|
||||
<ul class='ipsEventList ipsData ipsData--grid ipsData--events-list'>
|
||||
|
||||
<i-data>
|
||||
<ul class='ipsEventList ipsData ipsData--grid ipsData--events-list'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $events as $event ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "events", "calendar" )->event( $event, 'small' );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</ul>
|
||||
</i-data>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -161,6 +161,49 @@ $return .= <<<IPSCONTENT
|
||||
' loading="lazy">
|
||||
</a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $club = $item->container()->club() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->coverPhoto() and $club->coverPhoto()->file ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$photo = $club->coverPhoto()->file;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $url, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' title='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $item->mapped('title'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class='ipsRichEmbed_masthead'>
|
||||
<img src='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $photo->url, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' alt='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $item->mapped('title'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' loading="lazy">
|
||||
</a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -606,6 +649,49 @@ $return .= <<<IPSCONTENT
|
||||
' loading="lazy">
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $club = $item->container()->club() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->coverPhoto() and $club->coverPhoto()->file ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$photo = $club->coverPhoto()->file;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $url, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' title='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $item->mapped('title'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class='ipsRichEmbed_masthead'>
|
||||
<img src='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $photo->url, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' alt='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $item->mapped('title'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' loading="lazy">
|
||||
</a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -941,6 +1027,49 @@ $return .= <<<IPSCONTENT
|
||||
' loading="lazy">
|
||||
</a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $club = $item->container()->club() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->coverPhoto() and $club->coverPhoto()->file ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$photo = $club->coverPhoto()->file;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $url, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' title='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $item->mapped('title'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class='ipsRichEmbed_masthead'>
|
||||
<img src='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $photo->url, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' alt='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $item->mapped('title'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' loading="lazy">
|
||||
</a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
|
||||
@@ -5,21 +5,41 @@ class class_calendar_front_overview extends \IPS\Theme\Template
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<section class='ipsBox' data-controller="calendar.front.overview.eventList">
|
||||
<h2 class='ipsBox__header'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "calendar/front/overview/byMonth", "main:before", [ $calendars,$date,$featured,$events,$thisCalendar,$months ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<section class="ipsBox" data-controller="calendar.front.overview.eventList" data-ips-hook="main">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "calendar/front/overview/byMonth", "main:inside-start", [ $calendars,$date,$featured,$events,$thisCalendar,$months ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<h2 class="ipsBox__header">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'events_browse_by_month', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h2>
|
||||
<div class='cEvents__monthNav' data-role='monthNav'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "calendar/front/overview/byMonth", "navigation:before", [ $calendars,$date,$featured,$events,$thisCalendar,$months ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<div class="cEvents__monthNav" data-role="monthNav" data-ips-hook="navigation">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "calendar/front/overview/byMonth", "navigation:inside-start", [ $calendars,$date,$featured,$events,$thisCalendar,$months ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $months as $monthObj ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a class='cEvents__monthNav__monthItem
|
||||
<a class="cEvents__monthNav__monthItem
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $monthObj->format( 'n' ) == $date->mon ):
|
||||
@@ -29,7 +49,7 @@ IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
' href="
|
||||
" href="
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $thisCalendar ):
|
||||
@@ -54,22 +74,22 @@ IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel='nofollow' data-action='changeMonth' data-month='
|
||||
" rel="nofollow" data-action="changeMonth" data-month="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $monthObj->format( 'n' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-year='
|
||||
" data-year="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $monthObj->format( 'Y' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
<span class='cEvents__monthNav__month'>
|
||||
">
|
||||
<span class="cEvents__monthNav__month">
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $monthObj->format( 'n' ) ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( '_date_month_short', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
<span class='cEvents__monthNav__year'>
|
||||
<span class="cEvents__monthNav__year">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $monthObj->format( 'Y' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -81,7 +101,17 @@ IPSCONTENT;
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "calendar/front/overview/byMonth", "navigation:inside-end", [ $calendars,$date,$featured,$events,$thisCalendar,$months ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "calendar/front/overview/byMonth", "navigation:after", [ $calendars,$date,$featured,$events,$thisCalendar,$months ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -89,7 +119,17 @@ if ( \count($events) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i-data>
|
||||
<ul class='ipsEventList ipsData ipsData--grid ipsData--events-list' data-role='eventList'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "calendar/front/overview/byMonth", "eventsList:before", [ $calendars,$date,$featured,$events,$thisCalendar,$months ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<ul class="ipsEventList ipsData ipsData--grid ipsData--events-list" data-role="eventList" data-ips-hook="eventsList">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "calendar/front/overview/byMonth", "eventsList:inside-start", [ $calendars,$date,$featured,$events,$thisCalendar,$months ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -108,10 +148,20 @@ IPSCONTENT;
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "calendar/front/overview/byMonth", "eventsList:inside-end", [ $calendars,$date,$featured,$events,$thisCalendar,$months ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
</ul>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "calendar/front/overview/byMonth", "eventsList:after", [ $calendars,$date,$featured,$events,$thisCalendar,$months ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</i-data>
|
||||
<div class='i-padding_2 i-text-align_center i-border-top_3'>
|
||||
<button class='ipsButton ipsButton--secondary'
|
||||
<div class="i-padding_2 i-text-align_center i-border-top_3">
|
||||
<button class="ipsButton ipsButton--secondary"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count( $events ) < 16 ):
|
||||
@@ -121,13 +171,13 @@ IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
data-action='loadMore'>
|
||||
data-action="loadMore">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'events_show_more', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button>
|
||||
<p class='ipsEmptyMessage i-padding_0'
|
||||
<p class="ipsEmptyMessage i-padding_0"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count( $events ) >= 16 ):
|
||||
@@ -137,7 +187,7 @@ IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
data-role='noMoreResults'>
|
||||
data-role="noMoreResults">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'events_no_more_this_month', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -151,7 +201,7 @@ else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i-data>
|
||||
<ul class='ipsEventList ipsData ipsData--grid ipsData--events-list' data-role='eventList'>
|
||||
<ul class="ipsEventList ipsData ipsData--grid ipsData--events-list" data-role="eventList">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -166,7 +216,17 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "calendar/front/overview/byMonth", "main:inside-end", [ $calendars,$date,$featured,$events,$thisCalendar,$months ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
</section>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "calendar/front/overview/byMonth", "main:after", [ $calendars,$date,$featured,$events,$thisCalendar,$months ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
|
||||
@@ -261,7 +261,11 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $event->feedId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' id='comments'>
|
||||
' id='comments' data-follow-area-id="event-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $event->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -790,6 +794,24 @@ IPSCONTENT;
|
||||
$coverPhoto = $event->coverPhoto();
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ( $coverPhoto === null or $coverPhoto->file === null ) and $club = $event->container()->club() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$coverPhoto = $club->coverPhoto();
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsData__item
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $event->ui('css'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -1423,7 +1445,7 @@ IPSCONTENT;
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $address || $event->map( 500, 500 ) ):
|
||||
if ( !$event->online and ( $address || $event->map( 500, 500 ) ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -2609,6 +2631,24 @@ $coverPhoto = $event->coverPhoto();
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ( $coverPhoto === null or $coverPhoto->file === null ) and $club = $event->container()->club() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$coverPhoto = $club->coverPhoto();
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<div class='cCalendarBlock i-background_1 ipsInnerBox i-margin-bottom_block
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $event->ui( 'css' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -3464,7 +3504,11 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $event->reviewFeedId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' id='reviews'>
|
||||
' id='reviews' data-follow-area-id="event-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $event->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -4795,7 +4839,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "sharelinks", "core" )->shareButton( $event, 'verySmall', 'light' );
|
||||
$return .= \IPS\Theme::i()->getTemplate( "sharelinks", "core" )->shareButton( $event );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
@@ -320,7 +320,7 @@ IPSCONTENT;
|
||||
if ( $block->category ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsBadge ipsBadge--new">
|
||||
<span class="ipsBadge ipsBadge--new i-text-transform_none">
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array($block->key); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cms_block_list_key', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
|
||||
@@ -183,13 +183,13 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $database->featured_settings['pagination'] and ( $pagination['pages'] > 1 ) ):
|
||||
if ( $pagination['pages'] > 1 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core", 'global' )->pagination( $url, $pagination['pages'], $pagination['page'], $database->featured_settings['perpage'], TRUE, 'page' );
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core", 'global' )->pagination( $url, $pagination['pages'], $pagination['page'], ( $database->field_perpage ?? 25 ), TRUE, 'page' );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</strong>
|
||||
<span>
|
||||
<span class="ipsSideMenu__count">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( \IPS\cms\Records::contentCount( $category ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -143,7 +143,7 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $subcategory->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
<span>
|
||||
<span class="ipsSideMenu__count">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( \IPS\cms\Records::contentCount( $subcategory ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -506,7 +506,7 @@ IPSCONTENT;
|
||||
<details
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $container->_id == $currentContainer ):
|
||||
if ( $currentContainer !== null and \in_array( $container->_id, $currentContainer ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
open
|
||||
IPSCONTENT;
|
||||
@@ -599,7 +599,7 @@ IPSCONTENT;
|
||||
return $return;
|
||||
}
|
||||
|
||||
function pagebuilderupload( $images, $captions, $urls, $maxHeight, $layout='table', $isCarousel=false ) {
|
||||
function pagebuilderupload( $images, $captions, $urls, $options, $layout='table', $isCarousel=false ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
@@ -610,21 +610,45 @@ IPSCONTENT;
|
||||
if ( ! \is_array( $images ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<figure class="ipsFigure ipsFigure--contain"
|
||||
<figure class="ipsFigure
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $maxHeight ):
|
||||
if ( !$options['showBackdrop'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
style="--_height:
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $maxHeight, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
px;"
|
||||
ipsFigure--transparent
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
ipsFigure--contain" style="
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $options['showBackdrop'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
--_backdrop: url('
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $images, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
');
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $options['maxHeight'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
--_height:
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $options['maxHeight'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
px;
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -635,7 +659,17 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $urls[0], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class='ipsFigure__main' aria-label="
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $options['tab'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
target='_blank'
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
class='ipsFigure__main' aria-label="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $captions[0], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -681,7 +715,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( isset( $captions[0] ) ):
|
||||
if ( !empty( $captions[0] ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<figcaption class="ipsFigure__footer i-text-align_center">
|
||||
@@ -709,7 +743,8 @@ IPSCONTENT;
|
||||
$carouselID = 'page-builder-image-widget_' . mt_rand();
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul class='ipsCarousel ipsCarousel--page-builder-image-widget' id='
|
||||
<!-- Lazy loading isn't used here as it prevents the carousel arrows from showing -->
|
||||
<ul class='ipsCarousel ipsCarousel--padding ipsCarousel--images ipsCarousel--page-builder-image-widget' id='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $carouselID, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -721,18 +756,38 @@ foreach ( $images as $id => $image ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<figure class='ipsFigure ipsFigure--contain' style="--_backdrop: url('
|
||||
<figure class='ipsFigure
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !$options['showBackdrop'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsFigure--transparent
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsFigure--contain' style="
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $options['showBackdrop'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
--_backdrop: url('
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $image, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
');
|
||||
');
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $maxHeight ):
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $options['maxHeight'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
--_height:
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $maxHeight, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $options['maxHeight'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
px;
|
||||
IPSCONTENT;
|
||||
@@ -750,7 +805,17 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $urls[ $id ], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class='ipsFigure__main' aria-label="
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $options['tab'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
target='_blank'
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
class='ipsFigure__main' aria-label="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $captions[0], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -772,7 +837,7 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $image, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" alt='' loading="lazy">
|
||||
" alt=''>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -796,7 +861,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( isset( $captions[ $id ] ) ):
|
||||
if ( !empty( $captions[ $id ] ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<figcaption class="ipsFigure__footer i-text-align_center">
|
||||
@@ -982,7 +1047,7 @@ $return .= <<<IPSCONTENT
|
||||
<div class='ipsData__meta'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $item['date'] instanceof \IPS\DateTime ) ? $item['date'] : \IPS\DateTime::ts( $item['date'] );$return .= $val->html();
|
||||
$val = ( $item['date'] instanceof \IPS\DateTime ) ? $item['date'] : \IPS\DateTime::ts( $item['date'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -112,16 +112,16 @@ if ( $exportableBadges ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsBox i-padding_3'>
|
||||
<div class="ipsMessage ipsMessage--info">
|
||||
|
||||
<div class="ipsMessage ipsMessage--info">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array($exportableBadges); $pluralize = array( $exportableBadges ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'acp_achievements_export_badges_blurb', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf, 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
<div class="ipsSubmitRow">
|
||||
<a href="
|
||||
</div>
|
||||
<div class="ipsSubmitRow">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=achievements&controller=badges&do=export", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
@@ -141,13 +141,14 @@ else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsBox i-padding_3'>
|
||||
<div class="ipsMessage ipsMessage--error">
|
||||
|
||||
<div class="ipsMessage ipsMessage--error">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'acp_achievements_export_badges_blurb_error', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -160,7 +161,7 @@ IPSCONTENT;
|
||||
return $return;
|
||||
}
|
||||
|
||||
function badgePreview( $content, $prefix='badge' ) {
|
||||
function badgePreview( $content, $prefix='custombadge' ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
@@ -176,7 +177,7 @@ $return .= <<<IPSCONTENT
|
||||
"
|
||||
>
|
||||
<div class='ipsFieldRow__label'></div>
|
||||
<div class='ipsFieldRow__content'>
|
||||
<div class='ipsFieldRow__content ipsCheckerboard'>
|
||||
<div data-role="preview">
|
||||
{$content}
|
||||
</div>
|
||||
@@ -1785,7 +1786,7 @@ $return .= <<<IPSCONTENT
|
||||
<td>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row['datetime'] instanceof \IPS\DateTime ) ? $row['datetime'] : \IPS\DateTime::ts( $row['datetime'] );$return .= $val->html();
|
||||
$val = ( $row['datetime'] instanceof \IPS\DateTime ) ? $row['datetime'] : \IPS\DateTime::ts( $row['datetime'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -840,7 +840,7 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'o
|
||||
$return .= <<<IPSCONTENT
|
||||
</strong>
|
||||
</span>
|
||||
<span data-ipsCopy>
|
||||
<span data-ipsCopy class="i-flex_11">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -977,36 +977,36 @@ IPSCONTENT;
|
||||
if ( \in_array( 'authorization_code', $grants ) and \in_array( 'token', $grants ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsType_desc">
|
||||
<div class="i-color_soft i-margin-top_1">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'oauth_authorize_uri_desc_3', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( \in_array( 'authorization_code', $grants ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsType_desc">
|
||||
<div class="i-color_soft i-margin-top_1">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'oauth_authorize_uri_desc_1', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsType_desc">
|
||||
<div class="i-color_soft i-margin-top_1">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'oauth_authorize_uri_desc_2', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1043,12 +1043,12 @@ IPSCONTENT;
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "oauth/token/", "interface", "", array(), \IPS\Http\Url::PROTOCOL_HTTPS ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</code><br>
|
||||
<span class="ipsType_desc">
|
||||
<div class="i-color_soft i-margin-top_1">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'oauth_token_uri_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</div>
|
||||
</span>
|
||||
</li>
|
||||
|
||||
|
||||
@@ -733,7 +733,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $application->added instanceof \IPS\DateTime ) ? $application->added : \IPS\DateTime::ts( $application->added );$return .= $val->html();
|
||||
$val = ( $application->added instanceof \IPS\DateTime ) ? $application->added : \IPS\DateTime::ts( $application->added );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</td>
|
||||
@@ -757,7 +757,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $lastUpgrade instanceof \IPS\DateTime ) ? $lastUpgrade : \IPS\DateTime::ts( $lastUpgrade );$return .= $val->html();
|
||||
$val = ( $lastUpgrade instanceof \IPS\DateTime ) ? $lastUpgrade : \IPS\DateTime::ts( $lastUpgrade );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</td>
|
||||
|
||||
@@ -532,7 +532,6 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
.ipsMessage:before {
|
||||
font-family: var(--i-font-awesome);
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
text-rendering: auto;
|
||||
font-weight: 900;
|
||||
@@ -837,41 +836,41 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="">
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->hasAcpRestriction( 'core', 'editor', 'emoticons_add' ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul class="ipsButtons ipsButtons--main i-padding_2 i-background_2">
|
||||
<li>
|
||||
<a href="
|
||||
<ul class="ipsButtons ipsButtons--main">
|
||||
<li>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=editor&controller=emoticons&do=add", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButton ipsButton--secondary ipsButton--small" data-ipsDialog data-ipsdialog-title="
|
||||
" class="ipsButton ipsButton--primary" data-ipsDialog data-ipsdialog-title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'emoticons_add', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<i class="fa-solid fa-plus-circle"></i> <span data-role="title">
|
||||
<i class="fa-solid fa-plus-circle"></i> <span data-role="title">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'emoticons_add', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsBox ipsBox--emoticons">
|
||||
<form accept-charset='utf-8' action="
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -985,16 +984,15 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $emo['id'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
<div class='cEmoticons_box'>
|
||||
<div class='i-padding_2 i-text-align_center' data-role='dragHandle'>
|
||||
|
||||
' class="cEmoticons_box i-flex i-flex-direction_column">
|
||||
<div class='i-flex_11 i-padding_2 i-text-align_center' data-role='dragHandle'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->hasAcpRestriction( 'core', 'editor', 'emoticons_delete' ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href='
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=editor&controller=emoticons&do=delete&id=", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
@@ -1012,26 +1010,31 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $emo['id'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">×</a>
|
||||
|
||||
" class='ipsBadge ipsBadge--negative ipsBadge--icon' title='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'delete', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-ipsTooltip><i class="fa-solid fa-xmark"></i></a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
try{
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $emo['image_2x'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<img src="
|
||||
<img src="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\File::get( "core_Emoticons", $emo['image'] )->url;
|
||||
@@ -1060,45 +1063,45 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<img src="
|
||||
<img src="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\File::get( "core_Emoticons", $emo['image'] )->url;
|
||||
$return .= <<<IPSCONTENT
|
||||
" alt='' class='ipsImage'>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
} catch( \Exception $ex ){
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array($emo['image']); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'emoticon_invalid', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
}
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
<div class='cEmoticons_input'>
|
||||
<input type="hidden" name="emo[
|
||||
</div>
|
||||
<div class='cEmoticons_input i-flex i-align-items_center i-gap_2 i-padding_2 i-font-size_-1 i-text-align_center'>
|
||||
<input type="hidden" name="emo[
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $emo['id'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -1111,7 +1114,7 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $emo['id'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<input value="
|
||||
<input value="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $emo['typed'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -1119,26 +1122,25 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $emo['id'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
][name]" data-role="emoticonTyped" class="i-font-weight_500 i-color_hard">
|
||||
|
||||
][name]" data-role="emoticonTyped" class="ipsInput">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $emo['image_2x'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class='cEmoticons_hd i-font-size_-3 i-color_soft' title='
|
||||
<span class='cEmoticons_hd i-flex_00 i-font-size_-3 i-color_positive' title='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'emoticon_hd', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-ipsTooltip><i class='fa-solid fa-check'></i> HD</span>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
@@ -1351,7 +1353,7 @@ IPSCONTENT;
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=languages&controller=languages&do=translateWord&key={$key}&lang={$lang}&js={$js}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
<a href="
|
||||
<a data-langcontent href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=languages&controller=languages&do=translateWord&key={$key}&lang={$lang}&js={$js}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
@@ -1654,7 +1656,7 @@ $return .= <<<IPSCONTENT
|
||||
<!-- <div class='cMedia_meta'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $item['resource_added'] instanceof \IPS\DateTime ) ? $item['resource_added'] : \IPS\DateTime::ts( $item['resource_added'] );$return .= $val->html(FALSE);
|
||||
$val = ( $item['resource_added'] instanceof \IPS\DateTime ) ? $item['resource_added'] : \IPS\DateTime::ts( $item['resource_added'] );$return .= $val->html(FALSE, useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
@@ -235,7 +235,7 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class="i-color_soft i-text-align_center">
|
||||
<div class="i-color_soft i-text-align_center i-link-text-decoration_underline i-padding_2">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -273,7 +273,6 @@ if ( !\IPS\CIC ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<br>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array(\IPS\Member::loggedIn()->language()->addToStack('background_process_run_title')); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'background_processes_run_now', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
@@ -285,7 +284,7 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -548,7 +547,7 @@ $return .= <<<IPSCONTENT
|
||||
Invision Community
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array(\IPS\Application::load('core')->version); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'acp_version_number', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
$sprintf = array(\IPS\Application::load('core')->version); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'acp_version_number', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ) . ' | Chocapikk';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
@@ -673,7 +672,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $login['admin_time'] instanceof \IPS\DateTime ) ? $login['admin_time'] : \IPS\DateTime::ts( $login['admin_time'] );$return .= $val->html();
|
||||
$val = ( $login['admin_time'] instanceof \IPS\DateTime ) ? $login['admin_time'] : \IPS\DateTime::ts( $login['admin_time'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
@@ -2634,7 +2633,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $admin['session']['session_running_time'] instanceof \IPS\DateTime ) ? $admin['session']['session_running_time'] : \IPS\DateTime::ts( $admin['session']['session_running_time'] );$return .= $val->html();
|
||||
$val = ( $admin['session']['session_running_time'] instanceof \IPS\DateTime ) ? $admin['session']['session_running_time'] : \IPS\DateTime::ts( $admin['session']['session_running_time'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
|
||||
@@ -304,8 +304,8 @@ IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
<h2 class='ipsFieldRow__section'>
|
||||
class='ipsFieldRow__section'>
|
||||
<h2>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$lang}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -930,6 +930,12 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $userSuppliedInput, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class='i-margin-top_1'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$key = preg_replace( '/[^a-zA-Z0-9\-_]/', '_', $name );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<input type='text' class='ipsInput ipsInput--text' name='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $userSuppliedInput, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -953,7 +959,15 @@ IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
" id='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $userSuppliedInput, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -1138,7 +1152,17 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Widget\Request::i()->isAjax() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<div class="ipsBox ipsPull">
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<form accept-charset='utf-8' data-formId="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -1610,7 +1634,17 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Widget\Request::i()->isAjax() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
|
||||
@@ -1662,17 +1662,33 @@ IPSCONTENT;
|
||||
if ( \IPS\Dispatcher\Admin::showSwitchLink() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsResponsive_showDesktop'>
|
||||
<span class="acpHighlightLink_wrap">
|
||||
<a href='https://invisioncommunity.com/services/switch-to-invision/' target='_blank' rel='external noopener nofollow' class='acpHighlightLink'>
|
||||
Switch to Cloud
|
||||
</a>
|
||||
<a class="acpHighlightLink_close" data-ipsToolTip title='Hide this for a while' href='
|
||||
<li class='ipsResponsive_showDesktop acpHighlightLink_wrap'>
|
||||
<a href='https://invisioncommunity.com/services/switch-to-invision/' target='_blank' rel='external noopener nofollow' class='acpHighlightLink'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'acp_switch_to_cloud', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
<span class="acpHighlightLink_close">
|
||||
<a data-ipsToolTip title='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'acp_switch_to_cloud_hide', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
' href='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=overview&controller=dashboard&do=switchSnooze", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'><i class="fa-solid fa-xmark"></i></a>
|
||||
'>
|
||||
<i class="fa-solid fa-xmark"></i>
|
||||
<span class="ipsInvisible">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'acp_switch_to_cloud_hide', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</a>
|
||||
</span>
|
||||
</li>
|
||||
|
||||
@@ -2845,7 +2861,7 @@ IPSCONTENT;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<div class='i-padding_2'>
|
||||
<div class='i-padding_2 cPaddedBlock'>
|
||||
{$content}
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
@@ -3810,7 +3826,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsBox'>
|
||||
<div class='ipsBox ipsPull'>
|
||||
<i-tabs class='ipsTabs
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $tabClasses, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
|
||||
@@ -105,7 +105,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( strtotime( $licenseData['expires'] ) instanceof \IPS\DateTime ) ? strtotime( $licenseData['expires'] ) : \IPS\DateTime::ts( strtotime( $licenseData['expires'] ) );$return .= $val->html();
|
||||
$val = ( strtotime( $licenseData['expires'] ) instanceof \IPS\DateTime ) ? strtotime( $licenseData['expires'] ) : \IPS\DateTime::ts( strtotime( $licenseData['expires'] ) );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</span>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
namespace IPS\Theme;
|
||||
class class_core_admin_memberprofile extends \IPS\Theme\Template
|
||||
{ function basicInformation( $member, $canChangePassword, $hasPassword, $activeIntegrations, $actions, $activeSubscription ) {
|
||||
{ function basicInformation( $member, $activeIntegrations, $actions, $activeSubscription ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
@@ -460,24 +460,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<ul class="ipsButtons ipsButtons--fill i-margin-top_3">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count( $actions ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a href='#memberActions_menu' data-ipsMenu id="memberActions" class='ipsButton ipsButton--primary ipsButton--large'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'account_actions', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
<i class='fa-solid fa-caret-down'></i></a></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$actions}
|
||||
<li><a href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -490,216 +473,6 @@ $return .= <<<IPSCONTENT
|
||||
</a></li>
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count( $actions ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div id='memberActions_menu' class='ipsMenu ipsMenu_normal ipsHide'>
|
||||
<ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $actions as $item ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsMenu_item
|
||||
IPSCONTENT;
|
||||
|
||||
if ( isset( $item['class'] ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $item['class'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $item['link'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( isset( $item['target'] ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
target='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $item['target'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $item['target'] == '_blank' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
rel="noopener"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( isset( $item['data'] ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $item['data'] as $k => $v ):
|
||||
$return .= <<<IPSCONTENT
|
||||
data-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $k, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $v, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( isset( $item['icon'] ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i class='fa-solid fa-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $item['icon'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'></i>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span data-role="title">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$item['title']}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->hasAcpRestriction( 'core', 'members', 'member_edit' ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsMenu_item'>
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->acpUrl()->setQueryString( 'do', 'edit' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-ipsDialog data-ipsDialog-title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'edit_member_account', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
"><i class="fa-solid fa-sliders"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'edit_member_account', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $canChangePassword ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsMenu_item'>
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->acpUrl()->setQueryString( 'do', 'password' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-ipsDialog data-ipsDialog-title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'edit_password', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<i class="fa-solid fa-lock"></i>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $hasPassword ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'edit_password', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'set_password', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count( $activeIntegrations ) ):
|
||||
@@ -1645,12 +1418,14 @@ IPSCONTENT;
|
||||
if ( $member->group['g_icon'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<img src='
|
||||
<div class="i-basis_120">
|
||||
<img src='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\File::get( "core_Theme", $member->group['g_icon'] )->url;
|
||||
$return .= <<<IPSCONTENT
|
||||
' alt='' loading="lazy">
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -3607,7 +3382,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-padding_3 i-grid i-gap_4'>
|
||||
<div class=''>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -3615,7 +3390,7 @@ if ( $member->rank['title'] || $member->rank['image'] || \IPS\Settings::i()->pro
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div>
|
||||
<h2 class="ipsMinorTitle">
|
||||
<h2 class="ipsTitle ipsTitle--h4 i-background_2 i-padding_2">
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array($member->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'profile_about', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
@@ -3630,43 +3405,47 @@ if ( \IPS\Settings::i()->profile_birthday_type != 'none' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsData__item'>
|
||||
<span class='i-basis_100'><strong>
|
||||
<div class="ipsData__content">
|
||||
<div class="ipsData__main">
|
||||
<div class='ipsData__title'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'bday', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</strong></span>
|
||||
<span class=''>
|
||||
|
||||
</div>
|
||||
<div class="ipsData__desc ipsData__desc--all">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->birthday ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->birthday, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<em class="i-color_soft">
|
||||
<em class="i-color_soft">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_value', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</em>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -3681,39 +3460,43 @@ if ( \IPS\Settings::i()->signatures_enabled ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsData__item'>
|
||||
<span class='i-basis_100'><strong>
|
||||
<div class="ipsData__content">
|
||||
<div class="ipsData__main">
|
||||
<div class='ipsData__title'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'signature', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</strong></span>
|
||||
<span class='ipsRichText'>
|
||||
|
||||
</div>
|
||||
<div class='ipsData__desc ipsData__desc--all ipsRichText'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->signature ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$member->signature}
|
||||
|
||||
{$member->signature}
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<em class="i-color_soft">
|
||||
<em class="i-color_soft">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_value', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</em>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -3737,7 +3520,7 @@ foreach ( $fields as $groupKey => $values ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div>
|
||||
<h2 class="ipsMinorTitle">
|
||||
<h2 class="ipsTitle ipsTitle--h4 i-background_2 i-padding_2">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$groupKey}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -3752,38 +3535,42 @@ foreach ( $values as $k => $v ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsData__item'>
|
||||
<span class='i-basis_100'><strong>
|
||||
<div class="ipsData__content">
|
||||
<div class="ipsData__main">
|
||||
<div class="ipsData__title">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$k}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</strong></span>
|
||||
<div class=''>
|
||||
|
||||
</div>
|
||||
<div class='ipsData__desc ipsData__desc--all'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( (string) $v === '' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<em class="i-color_soft">
|
||||
<em class="i-color_soft">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_value', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</em>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div>{$v}</div>
|
||||
|
||||
<div>{$v}</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
@@ -5391,7 +5178,7 @@ $return .= <<<IPSCONTENT
|
||||
<p class='ipsPhotoPanel__secondary'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $warning->date instanceof \IPS\DateTime ) ? $warning->date : \IPS\DateTime::ts( $warning->date );$return .= $val->html();
|
||||
$val = ( $warning->date instanceof \IPS\DateTime ) ? $warning->date : \IPS\DateTime::ts( $warning->date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -1193,7 +1193,7 @@ $return .= <<<IPSCONTENT
|
||||
:
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $accessToken['issued'] instanceof \IPS\DateTime ) ? $accessToken['issued'] : \IPS\DateTime::ts( $accessToken['issued'] );$return .= $val->html();
|
||||
$val = ( $accessToken['issued'] instanceof \IPS\DateTime ) ? $accessToken['issued'] : \IPS\DateTime::ts( $accessToken['issued'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -1211,7 +1211,7 @@ $return .= <<<IPSCONTENT
|
||||
:
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $accessToken['access_token_expires'] instanceof \IPS\DateTime ) ? $accessToken['access_token_expires'] : \IPS\DateTime::ts( $accessToken['access_token_expires'] );$return .= $val->html();
|
||||
$val = ( $accessToken['access_token_expires'] instanceof \IPS\DateTime ) ? $accessToken['access_token_expires'] : \IPS\DateTime::ts( $accessToken['access_token_expires'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -1235,7 +1235,7 @@ $return .= <<<IPSCONTENT
|
||||
:
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $accessToken['refresh_token_expires'] instanceof \IPS\DateTime ) ? $accessToken['refresh_token_expires'] : \IPS\DateTime::ts( $accessToken['refresh_token_expires'] );$return .= $val->html();
|
||||
$val = ( $accessToken['refresh_token_expires'] instanceof \IPS\DateTime ) ? $accessToken['refresh_token_expires'] : \IPS\DateTime::ts( $accessToken['refresh_token_expires'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -1327,7 +1327,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $device->last_seen instanceof \IPS\DateTime ) ? $device->last_seen : \IPS\DateTime::ts( $device->last_seen );$return .= $val->html();
|
||||
$val = ( $device->last_seen instanceof \IPS\DateTime ) ? $device->last_seen : \IPS\DateTime::ts( $device->last_seen );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</span>
|
||||
|
||||
@@ -56,7 +56,7 @@ $return .= <<<IPSCONTENT
|
||||
</strong>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $user->joined instanceof \IPS\DateTime ) ? $user->joined : \IPS\DateTime::ts( $user->joined );$return .= $val->html();
|
||||
$val = ( $user->joined instanceof \IPS\DateTime ) ? $user->joined : \IPS\DateTime::ts( $user->joined );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
</ul>
|
||||
@@ -157,7 +157,7 @@ $return .= <<<IPSCONTENT
|
||||
</strong>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $user->joined instanceof \IPS\DateTime ) ? $user->joined : \IPS\DateTime::ts( $user->joined );$return .= $val->html();
|
||||
$val = ( $user->joined instanceof \IPS\DateTime ) ? $user->joined : \IPS\DateTime::ts( $user->joined );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
</ul>
|
||||
@@ -728,7 +728,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $task->last_run instanceof \IPS\DateTime ) ? $task->last_run : \IPS\DateTime::ts( $task->last_run );$return .= $val->html();
|
||||
$val = ( $task->last_run instanceof \IPS\DateTime ) ? $task->last_run : \IPS\DateTime::ts( $task->last_run );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -868,7 +868,7 @@ $return .= <<<IPSCONTENT
|
||||
</strong>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $user->joined instanceof \IPS\DateTime ) ? $user->joined : \IPS\DateTime::ts( $user->joined );$return .= $val->html();
|
||||
$val = ( $user->joined instanceof \IPS\DateTime ) ? $user->joined : \IPS\DateTime::ts( $user->joined );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
</ul>
|
||||
@@ -1010,7 +1010,7 @@ $return .= <<<IPSCONTENT
|
||||
</strong>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $user->joined instanceof \IPS\DateTime ) ? $user->joined : \IPS\DateTime::ts( $user->joined );$return .= $val->html();
|
||||
$val = ( $user->joined instanceof \IPS\DateTime ) ? $user->joined : \IPS\DateTime::ts( $user->joined );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -98,7 +98,7 @@ IPSCONTENT;
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=settings&controller=dataLayer&tab={$tab}&{$itemKey}={$key}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
<span class='ipsOnlineStatus ipsOnlineStatus_
|
||||
<span class='ipsOnline ipsOnline_
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( ($item['enabled'] ?? 1) ? 'online' : 'offline', ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
|
||||
@@ -302,15 +302,14 @@ IPSCONTENT;
|
||||
|
||||
|
||||
<div class="ipsBox">
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( trim( $pagination ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$pagination}
|
||||
<br><br>
|
||||
|
||||
{$pagination}
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -319,6 +318,7 @@ $return .= <<<IPSCONTENT
|
||||
<table class="ipsTable ipsTable_zebra">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="60"></th>
|
||||
<th>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -352,7 +352,8 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $member );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</td>
|
||||
<td>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -371,10 +372,20 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
{$pagination}
|
||||
if ( trim( $pagination ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$pagination}
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
@@ -1002,6 +1013,7 @@ $return .= <<<IPSCONTENT
|
||||
<table class="ipsTable ipsTable_zebra">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="60"></th>
|
||||
<th>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1035,7 +1047,8 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $member );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</td>
|
||||
<td>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -1054,8 +1067,6 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
{$pagination}
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -1094,6 +1105,7 @@ $return .= <<<IPSCONTENT
|
||||
<table class="ipsTable ipsTable_zebra">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="60"></th>
|
||||
<th>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1127,7 +1139,8 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $member );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</td>
|
||||
<td>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
@@ -403,9 +403,9 @@ $return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='ipsBox'>
|
||||
<div class='ipsBox i-margin-bottom_block'>
|
||||
<div class='elHealthChart'>
|
||||
<div class='ipsGrid ipsGrid--lines ipsGrid--max-3 i-border-bottom_3'>
|
||||
<div class='ipsGrid ipsGrid--lines ipsGrid--max-3'>
|
||||
<div class="i-flex i-gap_3 i-padding_3 ipsLinkPanelWrap">
|
||||
<a class='ipsLinkPanel' href='
|
||||
IPSCONTENT;
|
||||
@@ -524,113 +524,23 @@ $return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{$chart}
|
||||
<p class='i-font-size_1 i-color_soft i-padding_2'>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ipsBox">
|
||||
{$chart}
|
||||
<p class='i-font-size_1 i-color_soft i-padding_2'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_system_log_intro', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
</div>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='ipsColumns__secondary i-basis_360'>
|
||||
<div class='ipsBox i-margin-bottom_block'>
|
||||
<h2 class='ipsBox__header'>
|
||||
<i class="fa-solid fa-book i-color_soft"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health__search_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Http\Url::ips( "docs/docs" );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class='ipsBox__header-secondary' target='_blank' rel='noopener'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health__guides_link', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</h2>
|
||||
<div class='i-padding_3'>
|
||||
<p class='i-margin-bottom_2'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health__guides_intro', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
<div id='guidesForm'>
|
||||
{$guidesForm->customTemplate( array( \IPS\Theme::i()->getTemplate( 'support', 'core', 'admin' ), 'guideSearchForm' ) )}
|
||||
</div>
|
||||
<div class='i-margin-top_3' id='featuredGuides'>
|
||||
<p class='i-font-weight_bold'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health__guides_featured', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
<ul class='ipsList_guides'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count( $featuredGuides ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $featuredGuides as $guide ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $guide['link'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" target='_blank' rel='noopener'>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $guide['title'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><em class='i-font-size_-1'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health__no_featured', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</em></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<div class='i-margin-top_3 ipsHide ipsLoading' id='guideSearchResults'>
|
||||
<ul class='ipsList_guides'></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='ipsBox i-margin-bottom_block'>
|
||||
<h2 class='ipsBox__header'>
|
||||
<i class="fa-solid fa-screwdriver-wrench i-color_soft"></i>
|
||||
@@ -716,78 +626,6 @@ $return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='ipsBox i-margin-bottom_block'>
|
||||
<h2 class='ipsBox__header'>
|
||||
<i class="fa-solid fa-life-ring i-color_soft"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health__support_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Http\Url::ips( "docs/client_area" );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class='ipsBox__header-secondary' target='_blank' rel='noopener'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health__client_area_link', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</h2>
|
||||
<div class='i-padding_3'>
|
||||
<div class="ipsRichText i-font-size_1">
|
||||
<p>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_support_intro1', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
<p>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_support_intro2', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Login\Handler::findMethod( 'IPS\Login\Handler\Standard' ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_support_intro3', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Http\Url::ips( "docs/community_support" );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class='ipsButton ipsButton--secondary ipsButton--wide i-margin-top_3' target='_blank'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health__support_button', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
<i class="fa-solid fa-arrow-up-right-from-square"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div id='thirdPartyDialog'></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -533,7 +533,7 @@ $return .= <<<IPSCONTENT
|
||||
<div class="ipsPhotoPanel__secondary">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $log->time instanceof \IPS\DateTime ) ? $log->time : \IPS\DateTime::ts( $log->time );$return .= $val->html();
|
||||
$val = ( $log->time instanceof \IPS\DateTime ) ? $log->time : \IPS\DateTime::ts( $log->time );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
<div class="ipsPhotoPanel__secondary">
|
||||
@@ -1320,202 +1320,6 @@ $return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</form>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
function upgradeDeltaThemeConflicts( $version, $conflicts ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<form action="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=upgrade" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" method="post">
|
||||
<input type="hidden" name="version" value="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $version, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<input type="hidden" name="select_version_submitted" value="1">
|
||||
<input type="hidden" name="skip_md5_check" value="1">
|
||||
<input type="hidden" name="skip_resource_check" value="1">
|
||||
<input type="hidden" name="skip_theme_check" value="1">
|
||||
<div class="i-padding_3">
|
||||
<div class="i-margin-bottom_1">
|
||||
<h2 class='ipsTitle ipsTitle--h3'>
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( \count($conflicts) ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'download_upgrade_initial_theme_conflicts_title', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h2>
|
||||
</div>
|
||||
<div class="i-margin-bottom_1">
|
||||
<p>
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( \count($conflicts) ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'download_upgrade_initial_theme_conflicts_explain', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $conflicts as $themeId => $categories ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$theme = \IPS\Theme::load( $themeId );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="i-margin-bottom_1">
|
||||
<h3>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $theme->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h3>
|
||||
<ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( isset( $categories['html'] ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $categories['html'] as $templateName => $templateId ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
list( $app, $location, $group, $name ) = explode( '/', $templateName );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=customization&controller=themes&do=templates&id={$themeId}&t_type=templates&t_app={$app}&t_location={$location}&t_group={$group}&t_name={$name}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" target="_blank" rel="noopener">
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $app, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
→
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $location, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
→
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $group, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
→
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( isset( $categories['css'] ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $categories['css'] as $cssName => $cssId ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
list( $app, $location, $group, $name ) = explode( '/', $cssName );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=customization&controller=themes&do=templates&id={$themeId}&t_type=css&t_app={$app}&t_location={$location}&t_group={$group}&t_name={$name}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" target="_blank" rel="noopener">
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $app, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
→
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $location, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
→
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $group, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
→
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class="i-font-size_-1">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'download_upgrade_initial_theme_conflicts_tip', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</div>
|
||||
<div class="ipsSubmitRow">
|
||||
<input type="submit" class="ipsButton ipsButton--primary" name="skip_theme_check" value="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'continue', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
</div>
|
||||
</form>
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
|
||||
@@ -262,7 +262,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $club->last_activity instanceof \IPS\DateTime ) ? $club->last_activity : \IPS\DateTime::ts( $club->last_activity );$return .= $val->html();
|
||||
$val = ( $club->last_activity instanceof \IPS\DateTime ) ? $club->last_activity : \IPS\DateTime::ts( $club->last_activity );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
|
||||
@@ -971,7 +971,7 @@ IPSCONTENT;
|
||||
return $return;
|
||||
}
|
||||
|
||||
function coverPhotoOverlay( $club, $position='full' ) {
|
||||
function coverPhotoOverlay( $club, $position='full', $container=null ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
@@ -990,7 +990,7 @@ IPSCONTENT;
|
||||
if ( $position == 'full' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsCoverPhoto__avatar'>
|
||||
<div class="ipsCoverPhoto__avatar">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1027,18 +1027,18 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
-->
|
||||
</div>
|
||||
<div class='ipsCoverPhoto__titles'>
|
||||
<div class='ipsCoverPhoto__title'>
|
||||
<div class="ipsCoverPhoto__titles">
|
||||
<div class="ipsCoverPhoto__title">
|
||||
<h2>
|
||||
<a href='
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' title='
|
||||
" title="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -1050,31 +1050,31 @@ IPSCONTENT;
|
||||
if ( (\IPS\Settings::i()->clubs_require_approval and !$club->approved) or ($club->featured) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsBadges'>
|
||||
<div class="ipsBadges">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Settings::i()->clubs_require_approval and !$club->approved ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsBadge ipsBadge--icon ipsBadge--warning" data-ipsTooltip title='
|
||||
<span class="ipsBadge ipsBadge--icon ipsBadge--warning" data-ipstooltip title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_unapproved', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
'><i class='fa-solid fa-eye-slash'></i></span>
|
||||
"><i class="fa-solid fa-eye-slash"></i></span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $club->featured ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsBadge ipsBadge--icon ipsBadge--positive" data-ipsTooltip title='
|
||||
<span class="ipsBadge ipsBadge--icon ipsBadge--positive" data-ipstooltip title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'featured', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
'><i class='fa-solid fa-star'></i></span>
|
||||
"><i class="fa-solid fa-star"></i></span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1089,8 +1089,18 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
<div class='ipsCoverPhoto__subTitle'>
|
||||
<ul class='ipsList ipsList--sep'>
|
||||
<div class="ipsCoverPhoto__subTitle">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/clubs/coverPhotoOverlay", "clubHeaderLinks:before", [ $club,$position,$container ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<ul class="ipsList ipsList--sep" data-ips-hook="clubHeaderLinks">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/clubs/coverPhotoOverlay", "clubHeaderLinks:inside-start", [ $club,$position,$container ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1121,11 +1131,11 @@ IPSCONTENT;
|
||||
if ( $club->isLeader() and $club->type === $club::TYPE_CLOSED and $pendingMembers = $club->members( array( $club::STATUS_REQUESTED ), NULL, NULL, 4 ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a href='
|
||||
<li><a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString('do', 'members')->setQueryString('filter', 'requested')->setQueryString('filter', 'requested'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class='i-color_issue'><i class='fa-solid fa-circle-info'></i>
|
||||
" class="i-color_issue"><i class="fa-solid fa-circle-info"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $pendingMembers ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_pending_members', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
@@ -1143,16 +1153,16 @@ IPSCONTENT;
|
||||
if ( $club->rules ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a href='
|
||||
<li><a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString('do', 'rules'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-ipsDialog data-ipsDialog-title='
|
||||
" data-ipsdialog data-ipsdialog-title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_rules', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_rules', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -1201,282 +1211,30 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/clubs/coverPhotoOverlay", "clubHeaderLinks:inside-end", [ $club,$position,$container ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
</ul>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/clubs/coverPhotoOverlay", "clubHeaderLinks:after", [ $club,$position,$container ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='ipsCoverPhoto__buttons cClubControls__moderate'>
|
||||
<div class="ipsCoverPhoto__buttons cClubControls__moderate">
|
||||
<a href="#" data-action="saveClubmenu" class="ipsHide ipsButton ipsButton--small ipsButton--positive">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'save', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
<ul class='ipsButtons'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->isLeader() || ( $club->owner and $club->owner->member_id == \IPS\Member::loggedIn()->member_id ) or \IPS\Member::loggedIn()->modPermission('can_access_all_clubs') ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<a class="ipsButton ipsButton--inherit" href="#" id='elClubFeatures' data-ipsMenu><span>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_manage', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span><i class='ipsMenuCaret'></i></a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->type !== \IPS\Member\Club::TYPE_PUBLIC ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $memberStatus === \IPS\Member\Club::STATUS_BANNED ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<span class="ipsButton ipsButton--text" aria-disabled="true" data-ipsTooltip title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_banned_desc_short', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
"><i class='fa-solid fa-xmark'></i><span>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_banned_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></span>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( \in_array( $memberStatus, array( \IPS\Member\Club::STATUS_MEMBER, \IPS\Member\Club::STATUS_MODERATOR, \IPS\Member\Club::STATUS_LEADER, \IPS\Member\Club::STATUS_EXPIRED, \IPS\Member\Club::STATUS_EXPIRED_MODERATOR, \IPS\Member\Club::STATUS_WAITING_PAYMENT ) ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $memberStatus === \IPS\Member\Club::STATUS_WAITING_PAYMENT ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<a class="ipsButton ipsButton--inherit" href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString('do', 'join')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_pay_membership_fee', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \in_array( $memberStatus, array( \IPS\Member\Club::STATUS_EXPIRED, \IPS\Member\Club::STATUS_EXPIRED_MODERATOR ) ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<a class="ipsButton ipsButton--inherit" href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString('do', 'renew')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_renew_membership', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !$club->owner or $club->owner->member_id != \IPS\Member::loggedIn()->member_id ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<a class="ipsButton ipsButton--inherit" href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString('do', 'leave')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-confirm
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->isPaid() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
data-confirmSubMessage="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_leave_paid_warning', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_leave', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $club->canJoin() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->isPaid() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a class="ipsButton ipsButton--inherit" href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString('do', 'join')->csrf()->addRef( \IPS\Request::i()->url() ) , ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $memberStatus !== $club::STATUS_INVITED_BYPASSING_PAYMENT ):
|
||||
$return .= <<<IPSCONTENT
|
||||
data-confirm data-confirmIcon="info" data-confirmMessage="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_membership_item', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-confirmSubmessage="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->memberFeeMessage(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_join', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a class="ipsButton ipsButton--inherit" href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString('do', 'join')->csrf()->addRef( \IPS\Request::i()->url() ) , ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_join', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( !$club->canRead() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $memberStatus === \IPS\Member\Club::STATUS_REQUESTED ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<a class="ipsButton ipsButton--text" href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString('do', 'cancelJoin')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"><i class='fa-solid fa-xmark'></i><span>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_cancel_request', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $memberStatus === \IPS\Member\Club::STATUS_DECLINED ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<span class="ipsButton ipsButton--text" aria-disabled="true" data-ipsTooltip title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_denied_desc_short', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
"><i class='fa-solid fa-xmark'></i><span>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_denied_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></span>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul class="ipsButtons">
|
||||
{$club->menu( $container )}
|
||||
{$club->buttons()->contentHtml()}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -1486,7 +1244,7 @@ else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<!-- v5 todo: Remove this? -->
|
||||
<div class='ipsCoverPhoto__avatar' hidden>
|
||||
<div class="ipsCoverPhoto__avatar" hidden>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2024,7 +1782,7 @@ $return .= <<<IPSCONTENT
|
||||
'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $club->created instanceof \IPS\DateTime ) ? $club->created : \IPS\DateTime::ts( $club->created );$return .= $val->html();
|
||||
$val = ( $club->created instanceof \IPS\DateTime ) ? $club->created : \IPS\DateTime::ts( $club->created );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</p>
|
||||
@@ -2121,7 +1879,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $club->last_activity instanceof \IPS\DateTime ) ? $club->last_activity : \IPS\DateTime::ts( $club->last_activity );$return .= $val->html();
|
||||
$val = ( $club->last_activity instanceof \IPS\DateTime ) ? $club->last_activity : \IPS\DateTime::ts( $club->last_activity );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -2273,7 +2031,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
<!-- FULL CLUB HEADER -->
|
||||
<div id="elClubHeader" class='ipsPageHeader ipsBox cClubHeader cClubHeader--main i-margin-bottom_block'>
|
||||
{$club->coverPhoto(TRUE, 'full')}
|
||||
{$club->coverPhoto(TRUE, 'full', ( $container ?? $page ) )}
|
||||
<div id='elClubControls'>
|
||||
<div class='cClubControls__tabs'>
|
||||
<i-tabs class='ipsTabs ipsTabs--stretch' id='ipsTabs_club' data-ipsTabBar data-ipsTabBar-disableNav data-controller="core.front.clubs.navbar" data-clubID="
|
||||
@@ -2365,7 +2123,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
<!-- SIDEBAR CLUB HEADER -->
|
||||
<div id="elClubHeader_small" class='cClubHeader cClubHeader--sidebar ipsWidget ipsWidget--vertical'>
|
||||
{$club->coverPhoto(TRUE, 'sidebar')}
|
||||
{$club->coverPhoto(TRUE, 'sidebar' )}
|
||||
<div class='ipsWidget__padding' data-controller="core.front.clubs.navbar" data-clubID="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -2524,24 +2282,7 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->isLeader() || ( $club->owner and $club->owner->member_id == \IPS\Member::loggedIn()->member_id ) or \IPS\Member::loggedIn()->modPermission('can_access_all_clubs') ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a class="ipsButton ipsButton--inherit i-width_100p i-margin-top_2" href="#" id='elClubFeatures' data-ipsMenu><span>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_manage', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span><i class='fa-solid fa-caret-down'></i></a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$club->menu( $container ?? $page )}
|
||||
<a href="#" data-action="saveClubmenu" class="ipsButton ipsButton--positive i-width_100p ipsHide i-margin-top_2">
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2631,93 +2372,7 @@ $return .= <<<IPSCONTENT
|
||||
</div>
|
||||
|
||||
<ul class='ipsButtons i-margin-top_2'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->type !== $club::TYPE_PUBLIC and \in_array( $memberStatus, array( \IPS\Member\Club::STATUS_MEMBER, \IPS\Member\Club::STATUS_MODERATOR, \IPS\Member\Club::STATUS_LEADER, \IPS\Member\Club::STATUS_EXPIRED, \IPS\Member\Club::STATUS_EXPIRED_MODERATOR ) ) and ( !$club->owner or $club->owner->member_id != \IPS\Member::loggedIn()->member_id ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString('do', 'leave')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class='ipsButton ipsButton--text' data-confirm
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->isPaid() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
data-confirmSubMessage="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_leave_paid_warning', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_leave', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( !$club->canRead() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $memberStatus === \IPS\Member\Club::STATUS_REQUESTED ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<span class="ipsButton ipsButton--text" aria-disabled="true" data-ipsTooltip title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_requested_desc_short', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
"><i class='fa-regular fa-clock'></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_requested_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $memberStatus === \IPS\Member\Club::STATUS_DECLINED ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<span class="ipsButton ipsButton--text" aria-disabled="true" data-ipsTooltip title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_denied_desc_short', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
"><i class='fa-solid fa-xmark'></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_denied_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$club->buttons()->contentHtml()}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -2727,398 +2382,6 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->isLeader() || ( $club->owner and $club->owner->member_id == \IPS\Member::loggedIn()->member_id ) or \IPS\Member::loggedIn()->modPermission('can_access_all_clubs') ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul class='ipsMenu ipsMenu_auto ipsHide' id='elClubFeatures_menu'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Settings::i()->clubs_require_approval or $club->approved ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->isLeader() and $nodeTypes = \IPS\Member\Club::availableNodeTypes( \IPS\Member::loggedIn() ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsMenu_title'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_create_node', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $nodeTypes as $nodeType ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsMenu_item" ><a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString( array( 'do' => 'nodeForm', 'type' => $nodeType ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipsDialog data-ipsDialog-title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_create_node', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$nodeType::clubFrontTitle()}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ( $club->owner and $club->owner->member_id == \IPS\Member::loggedIn()->member_id ) or \IPS\Member::loggedIn()->modPermission('can_access_all_clubs') or \IPS\Member::loggedIn()->modPermission('can_manage_featured_clubs') ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsMenu_sep'><hr class='ipsHr'></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->isLeader() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsMenu_item'>
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString( 'do', 'editPhoto' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-action='editPhoto' data-ipsDialog data-ipsDialog-forceReload='true' data-ipsDialog-modal='true' data-ipsDialog-title='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_profile_photo', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_profile_photo', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ( $club->owner and $club->owner->member_id == \IPS\Member::loggedIn()->member_id ) or \IPS\Member::loggedIn()->modPermission('can_access_all_clubs') ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsMenu_item'>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString('do', 'edit'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipsDialog data-ipsDialog-title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_edit_settings', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_edit_settings', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->modPermission('can_manage_featured_clubs') ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsMenu_item'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->featured ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString('do', 'unfeature')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-confirm>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_unfeature', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString('do', 'feature')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-confirm>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_feature', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->canInvite() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsMenu_item'>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString( 'do', 'invite' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_invite_members', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_invite_members', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club->canManageNavigation() AND \count( $club->tabs( $container ) ) > 1 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsMenu_item ipsJS_show ipsResponsive_hidePhone'>
|
||||
<a href="#" data-action="reorderClubmenu">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reorder_club_menu', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member\Club\Page::canAdd( $club ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsMenu_item'>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQuerystring( 'do', 'addPage' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipsDialog data-ipsDialog-title='
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array($club->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'add_page_to_club', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_add_page', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $page ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $page->canEdit() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsMenu_item'><a href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $page->url('edit'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-ipsDialog data-ipsDialog-title='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'edit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'edit_page', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $page->canDelete() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsMenu_item'><a href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $page->url('delete')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-confirm>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'delete_page', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $container and $club->isLeader() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsMenu_sep'><hr class='ipsHr'></li>
|
||||
<li class='ipsMenu_item'>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString( array( 'do' => 'nodeForm', 'type' => \get_class( $container ), 'node' => $container->_id ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipsDialog data-ipsDialog-title="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $container->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array(\IPS\Member::loggedIn()->language()->addToStack( $container::$nodeTitle . '_sg' )); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'clubs_edit_this_container', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( isset( $container::$contentItemClass ) and $itemClass = $container::$contentItemClass and ( $container->modPermission( 'delete', \IPS\Member::loggedIn(), $itemClass ) or !$itemClass::contentCount( $container, TRUE, TRUE, TRUE, 1 ) ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsMenu_item'>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url()->setQueryString( array( 'do' => 'nodeDelete', 'type' => \get_class( $container ), 'node' => $container->_id ) )->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-confirm data-confirmSubMessage="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'clubs_delete_container_confirm', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array(\IPS\Member::loggedIn()->language()->addToStack( $container::$nodeTitle . '_sg' )); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'clubs_delete_this_container', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
@@ -4111,7 +3374,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $member['nexus_purchases']['ps_expire'] instanceof \IPS\DateTime ) ? $member['nexus_purchases']['ps_expire'] : \IPS\DateTime::ts( $member['nexus_purchases']['ps_expire'] );$return .= $val->html();
|
||||
$val = ( $member['nexus_purchases']['ps_expire'] instanceof \IPS\DateTime ) ? $member['nexus_purchases']['ps_expire'] : \IPS\DateTime::ts( $member['nexus_purchases']['ps_expire'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ $return .= <<<IPSCONTENT
|
||||
'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $date instanceof \IPS\DateTime ) ? $date : \IPS\DateTime::ts( $date );$return .= $val->html();
|
||||
$val = ( $date instanceof \IPS\DateTime ) ? $date : \IPS\DateTime::ts( $date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@@ -642,7 +642,7 @@ $return .= \IPS\Theme\Template::htmlspecialchars( $title, ENT_QUOTES | ENT_DISAL
|
||||
$return .= <<<IPSCONTENT
|
||||
</h1>
|
||||
</header>
|
||||
<div data-el='edit-content-form' class='ipsBox'>{$form}</div>
|
||||
{$form}
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
@@ -704,8 +704,8 @@ IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
<h4 class='ipsFieldRow__section'>
|
||||
class='ipsFieldRow__section'>
|
||||
<h4>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$lang}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -1230,7 +1230,7 @@ IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Widget\Request::i()->isAjax() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<div class="ipsBox">
|
||||
<div class="ipsBox ipsBox--popupTemplate">
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -1396,7 +1396,7 @@ IPSCONTENT;
|
||||
if ( !empty( $sidebar ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsColumns'>
|
||||
<div class='ipsColumns ipsColumns--popupTemplate ipsColumns--lines i-border-top_3'>
|
||||
<div class='ipsColumns__primary'>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -1457,7 +1457,7 @@ if ( !empty( $sidebar ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
<div class='ipsColumns__secondary i-basis_180'>
|
||||
<div class='ipsColumns__secondary i-basis_300'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2797,7 +2797,7 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'review_intro_2', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></h3>
|
||||
<button type="button" class='ipsButton ipsButton--primary ipsButton--small' data-action='writeReview'><i class="fa-regular fa-pen-to-square"></i><span>
|
||||
<button type="button" class='ipsButton ipsButton--primary ipsButton--small' data-action='writeReview'><i class="fa-solid fa-pen-to-square"></i><span>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'write_a_review', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -2962,7 +2962,7 @@ IPSCONTENT;
|
||||
|
||||
if ( $object === NULL ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsFieldRow_textValue
|
||||
ipsFieldRow--textValue
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -3565,6 +3565,17 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Widget\Request::i()->isAjax() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<div class="ipsBox ipsBox--formTemplate">
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<form action="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $action, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -4052,6 +4063,17 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</form>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Widget\Request::i()->isAjax() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -92,6 +92,241 @@ IPSCONTENT;
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
function buttonsContent( $menu ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $menu->elements as $element ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $element instanceof \IPS\Helpers\Menu\Link ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "menu", "core", 'front' )->buttonsLink( $element );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( \is_string( $element ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$element}
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
function buttonsItem( $css, $title, $icon='', $dataAttributes=array() ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<span class="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $css, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $dataAttributes as $attributeKey => $attributeValue ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $attributeKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $attributeValue, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $icon ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<i class="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $icon, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
<span>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$title}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
function buttonsLink( $element ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $element->wrapperDataAttributes as $attributeKey => $attributeValue ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $attributeKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $attributeValue, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
<a data-id="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $element->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $element->url, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $element->css, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $element->dataAttributes as $attributeKey => $attributeValue ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $attributeKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $attributeValue, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $element->icon ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<i class="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $element->icon, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
<span>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$element->title}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $element->notificationIcon ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<span class='ipsNotification'><i class="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $element->notificationIcon, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"></i></span>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</a>
|
||||
</li>
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
function buttonsList( $menu ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $menu->hasContent() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul class='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $menu->css, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "menu", "core", 'front' )->buttonsContent( $menu );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
@@ -266,7 +501,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "menu", "core" )->button( $menu );
|
||||
$return .= \IPS\Theme::i()->getTemplate( "menu", "core", 'front' )->button( $menu );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -278,13 +513,13 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "menu", "core" )->link( $menu );
|
||||
$return .= \IPS\Theme::i()->getTemplate( "menu", "core", 'front' )->link( $menu );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "menu", "core" )->content( $menu );
|
||||
$return .= \IPS\Theme::i()->getTemplate( "menu", "core", 'front' )->content( $menu );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
@@ -676,7 +676,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=messaging&controller=messenger&id={$row['mt_id']}", null, "messenger_convo", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class="ipsLinkPanel" aria-hidden="true" tabindex="-1" data-role="messageURL"><span>
|
||||
' class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $row['mt_title'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -692,7 +692,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=messaging&controller=messenger&id={$row['mt_id']}&latest=1", null, "messenger_convo", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class="ipsLinkPanel" aria-hidden="true" tabindex="-1" data-role="messageURL"><span>
|
||||
' class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $row['mt_title'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -800,7 +800,7 @@ $return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row['mt_last_post_time'] instanceof \IPS\DateTime ) ? $row['mt_last_post_time'] : \IPS\DateTime::ts( $row['mt_last_post_time'] );$return .= $val->html(TRUE, TRUE);
|
||||
$val = ( $row['mt_last_post_time'] instanceof \IPS\DateTime ) ? $row['mt_last_post_time'] : \IPS\DateTime::ts( $row['mt_last_post_time'] );$return .= $val->html(TRUE, TRUE, useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
·
|
||||
IPSCONTENT;
|
||||
@@ -1054,7 +1054,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $map['map_left_time'] instanceof \IPS\DateTime ) ? $map['map_left_time'] : \IPS\DateTime::ts( $map['map_left_time'] );$return .= $val->html();
|
||||
$val = ( $map['map_left_time'] instanceof \IPS\DateTime ) ? $map['map_left_time'] : \IPS\DateTime::ts( $map['map_left_time'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -1108,7 +1108,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $map['map_read_time'] instanceof \IPS\DateTime ) ? $map['map_read_time'] : \IPS\DateTime::ts( $map['map_read_time'] );$return .= $val->html();
|
||||
$val = ( $map['map_read_time'] instanceof \IPS\DateTime ) ? $map['map_read_time'] : \IPS\DateTime::ts( $map['map_read_time'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -1292,14 +1292,15 @@ $return .= <<<IPSCONTENT
|
||||
<div class='ipsMessenger__header' id='elMessageHeader'>
|
||||
|
||||
<div class='i-flex_91 i-flex i-gap_2 i-align-items_center'>
|
||||
<h1 class='ipsTitle ipsTitle--h3'>
|
||||
<a href='#elMessageFolders_menu' id='elMessageFolders' data-ipsMenu data-ipsMenu-appendTo="#elMessageHeader"><span data-role='currentFolder'>
|
||||
<div id="elMessengerTitle">
|
||||
<h1 class='ipsTitle ipsTitle--h3'>
|
||||
<a href='#elMessageFolders_menu' id='elMessageFolders' data-ipsMenu data-ipsMenu-appendTo="#elMessengerTitle"><span data-role='currentFolder'>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $folders[ $folder ], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span><i class='fa-solid fa-angle-down i-margin-start_icon i-font-size_2 i-color_soft'></i></a>
|
||||
</h1>
|
||||
<!-- <a href='#elFolderSettings_menu' id='elFolderSettings' data-ipsMenu data-ipsMenu-appendTo="#elMessageHeader"><i class='fa-solid fa-gear'></i></a> -->
|
||||
</h1>
|
||||
</div>
|
||||
<span data-role="loadingFolderAction" class='i-color_soft' style='display: none'><i class='ipsLoadingIcon -marign-inline-end_icon'></i>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1339,7 +1340,13 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a href='
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\core\Messenger\Conversation::showComposeButton( \IPS\Member::loggedIn() ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a href='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=messaging&controller=messenger&do=compose", null, "messenger_compose", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
@@ -1354,12 +1361,18 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'compose_new', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class='ipsButton ipsButton--primary'><i class="fa-regular fa-pen-to-square"></i><span>
|
||||
' class='ipsButton ipsButton--primary'><i class="fa-solid fa-pen-to-square"></i><span>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'compose_new', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></a></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class='ipsMenu ipsMenu_auto ipsHide' id='elMessageFolders_menu'>
|
||||
@@ -1490,7 +1503,8 @@ IPSCONTENT;
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='i-padding_1'><a class='ipsButton ipsButton--inherit i-width_100p' href="
|
||||
<li class='ipsMenu_sep'><hr></li>
|
||||
<li class="ipsMenu_item"><a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=messaging&controller=messenger&do=addFolder" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
@@ -1783,7 +1797,7 @@ $return .= <<<IPSCONTENT
|
||||
<div class="ipsMessage ipsMessage--warning">
|
||||
<div class="i-flex i-align-items_center i-gap_2">
|
||||
<div class='i-flex_11'>
|
||||
<div class='i-font-weight_500'><i class="fa-solid fa-microphone-lines-slash i-margin-end_icon"></i>
|
||||
<div class='i-font-weight_500'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'inbox_disabled', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -2040,17 +2054,17 @@ IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=messaging&controller=messenger&do=renameFolder", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' method='post'>
|
||||
' method='post' class="ipsForm ipsForm--vertical">
|
||||
<input type='hidden' name='csrfKey' value='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Session::i()->csrfKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
<div class='i-padding_3'>
|
||||
<input type='text' class='ipsInput ipsInput--text ipsInput--primary ipsInput--wide' data-role="folderName">
|
||||
<div class='ipsFieldRow'>
|
||||
<input type='text' class='ipsInput' data-role="folderName">
|
||||
</div>
|
||||
<div class='i-border-top_3 i-padding_3 i-text-align_end'>
|
||||
<div class='ipsSubmitRow'>
|
||||
<button type='submit' class='ipsButton ipsButton--primary' data-action='saveFolderName'>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2067,22 +2081,22 @@ IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=messaging&controller=messenger&do=addFolder", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' method='post'>
|
||||
' method='post' class="ipsForm ipsForm--vertical">
|
||||
<input type='hidden' name='csrfKey' value='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Session::i()->csrfKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
<div class='i-padding_3'>
|
||||
<input type='text' class='ipsInput ipsInput--text ipsInput--primary ipsInput--wide' data-role="folderName" placeholder="
|
||||
<div class='ipsFieldRow'>
|
||||
<input type='text' class='ipsInput' data-role="folderName" placeholder="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'messenger_add_folder_name', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
</div>
|
||||
<div class='i-border-top_3 i-padding_3 i-text-align_end'>
|
||||
<div class='ipsSubmitRow'>
|
||||
<button type='submit' class='ipsButton ipsButton--primary' data-action='saveFolderName'>
|
||||
IPSCONTENT;
|
||||
|
||||
|
||||
@@ -225,7 +225,7 @@ $return .= <<<IPSCONTENT
|
||||
</div>
|
||||
<div class="ipsData__meta">
|
||||
<ul class='ipsList ipsList--sep'>
|
||||
<li class='i-font-weight_600'>
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! $row->viewed ):
|
||||
@@ -2058,7 +2058,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$item = $row->object();
|
||||
if ( $item = $row->object() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsData__item i-padding_0'>
|
||||
@@ -2312,6 +2312,12 @@ $return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</article>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -3612,7 +3618,7 @@ IPSCONTENT;
|
||||
if ( $total > 250 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="i-padding_4 something-small-but-dont-know-new-classes">
|
||||
<div class="i-padding_4">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -3853,10 +3859,10 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsBox__padding i-border-bottom_1 ipsFieldRow ipsFieldRow--primary' id='elModCPIPTools'>
|
||||
<div class='i-border-bottom_3' id='elModCPIPTools'>
|
||||
{$form}
|
||||
</div>
|
||||
<div class='ipsBox__padding ipsFieldRow ipsFieldRow--primary' id='elModCPIPMemberTools'>
|
||||
<div id='elModCPIPMemberTools'>
|
||||
{$members}
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
@@ -4055,7 +4061,7 @@ $return .= \IPS\Theme::i()->getTemplate( "global", "core", 'global' )->tabScroll
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</i-tabs>
|
||||
<section id='elmodCPTabs_content' class='ipsTabs__panels ipsTabs__panels--padded'>
|
||||
<section id='elmodCPTabs_content' class='ipsTabs__panels'>
|
||||
<div id="elmodCPTabs_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $activeTab, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -4224,7 +4230,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $internalText ):
|
||||
if ( $internalText and $item->object()->canFeature() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href="
|
||||
@@ -4341,7 +4347,7 @@ $return .= <<<IPSCONTENT
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $warning->date instanceof \IPS\DateTime ) ? $warning->date : \IPS\DateTime::ts( $warning->date );$return .= $val->html();
|
||||
$val = ( $warning->date instanceof \IPS\DateTime ) ? $warning->date : \IPS\DateTime::ts( $warning->date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
</ul>
|
||||
@@ -5570,7 +5576,7 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $report->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-action='editComment'><i class="fa-regular fa-pen-to-square"></i><span>
|
||||
' data-action='editComment'><i class="fa-solid fa-pen-to-square"></i><span>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'edit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -6126,7 +6132,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $r['date_reported'] instanceof \IPS\DateTime ) ? $r['date_reported'] : \IPS\DateTime::ts( $r['date_reported'] );$return .= $val->html();
|
||||
$val = ( $r['date_reported'] instanceof \IPS\DateTime ) ? $r['date_reported'] : \IPS\DateTime::ts( $r['date_reported'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
@@ -6496,7 +6502,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->last_updated instanceof \IPS\DateTime ) ? $row->last_updated : \IPS\DateTime::ts( $row->last_updated );$return .= $val->html();
|
||||
$val = ( $row->last_updated instanceof \IPS\DateTime ) ? $row->last_updated : \IPS\DateTime::ts( $row->last_updated );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -6506,7 +6512,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->first_report_date instanceof \IPS\DateTime ) ? $row->first_report_date : \IPS\DateTime::ts( $row->first_report_date );$return .= $val->html();
|
||||
$val = ( $row->first_report_date instanceof \IPS\DateTime ) ? $row->first_report_date : \IPS\DateTime::ts( $row->first_report_date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -6737,7 +6743,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsMargin_top:half">
|
||||
<div class="i-margin-top_2">
|
||||
<i class='fa-solid fa-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $class::$icon, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -6785,7 +6791,7 @@ IPSCONTENT;
|
||||
if ( $report->status == \IPS\core\Reports\Report::STATUS_REJECTED ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsBadge ipsBadge_negative">
|
||||
<span class="ipsBadge ipsBadge--negative">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "report_status_{$report->status}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -6797,7 +6803,7 @@ IPSCONTENT;
|
||||
elseif ( $report->status == \IPS\core\Reports\Report::STATUS_OPEN ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsBadge ipsBadge_recommended">
|
||||
<span class="ipsBadge ipsBadge--recommended">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "report_status_{$report->status}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -6809,7 +6815,7 @@ IPSCONTENT;
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsBadge ipsBadge_positive">
|
||||
<span class="ipsBadge ipsBadge--positive">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "report_status_{$report->status}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -6827,7 +6833,7 @@ IPSCONTENT;
|
||||
foreach ( $report->getReportedTypes() as $name ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsBadge ipsBadge_style1">
|
||||
<span class="ipsBadge ipsBadge--style1">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -7089,7 +7095,7 @@ IPSCONTENT;
|
||||
return $return;
|
||||
}
|
||||
|
||||
function template( $content, $tabs, $activeTab, $approvalCount ) {
|
||||
function template( $content, $tabs, $activeTab, $counters=null ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
@@ -7098,12 +7104,12 @@ IPSCONTENT;
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:before", [ $content,$tabs,$activeTab,$approvalCount ] );
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:before", [ $content,$tabs,$activeTab,$counters ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<div class="cModCP_header i-padding-inline_3 i-padding-block_3 i-flex i-align-items_center i-flex-wrap_wrap i-gap_2 i-border-bottom_3" data-ips-hook="modcp_header">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:inside-start", [ $content,$tabs,$activeTab,$approvalCount ] );
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:inside-start", [ $content,$tabs,$activeTab,$counters ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<h1 class="ipsTitle ipsTitle--h2 i-flex_11 i-flex i-align-items_center i-gap_2"><i class="fa-solid fa-user-lock i-color_soft i-opacity_5"></i>
|
||||
@@ -7115,65 +7121,34 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->canAccessReportCenter() ):
|
||||
if ( !empty( $counters ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul class="ipsList ipsList--inline i-gap_4 i-row-gap_1 i-font-weight_500">
|
||||
<li
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !$approvalCount ):
|
||||
foreach ( $counters as $counter ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !$counter['total'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
class="i-color_soft"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
><span id="elModCPApprovalCount" class="ipsBadge
|
||||
><span id="
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !$approvalCount ):
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $counter['id'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsBadge--positive
|
||||
" class="ipsBadge
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsBadge--warning
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
i-margin-end_icon">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $approvalCount, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'modcp_approval', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$reportCount = \IPS\Member::loggedIn()->reportCount( TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !$reportCount ):
|
||||
$return .= <<<IPSCONTENT
|
||||
class="i-color_soft"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
><span class="ipsBadge
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !$reportCount ):
|
||||
if ( !$counter['total'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsBadge--positive
|
||||
IPSCONTENT;
|
||||
@@ -7187,14 +7162,20 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
i-margin-end_icon">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $reportCount, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $counter['total'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'active_reports', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$val = "{$counter['title']}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -7205,12 +7186,12 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:inside-end", [ $content,$tabs,$activeTab,$approvalCount ] );
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:inside-end", [ $content,$tabs,$activeTab,$counters ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:after", [ $content,$tabs,$activeTab,$approvalCount ] );
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:after", [ $content,$tabs,$activeTab,$counters ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<section class="ipsColumns ipsColumns--modcpanel i-gap_0">
|
||||
@@ -7484,10 +7465,8 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<!-- v5 todo: Not sure where this page is used -->
|
||||
<style>*{color:#ca0!important;}</style>
|
||||
<div class="i-background_3 i-padding_3">
|
||||
<h3 class='ipsTitle ipsTitle--h3'>
|
||||
<div class="i-padding_3 i-border-bottom_3">
|
||||
<h3 class='ipsTitle ipsTitle--h4 i-margin-bottom_2'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'assigned_point_levels', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -7499,323 +7478,320 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_points_blurb', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
<i-data>
|
||||
<ol class="ipsData ipsData--table ipsData--compact">
|
||||
|
||||
</div>
|
||||
<i-data>
|
||||
<ol class="ipsData ipsData--table ipsData--compact ipsData--warnActions">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $min ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsData__item">
|
||||
<div class=''>
|
||||
<span class="ipsWarningPoints"><i class='fa-solid fa-angle-left'></i>
|
||||
<li class="ipsData__item">
|
||||
<div class="i-basis_40 i-text-align_center">
|
||||
<span class="i-font-weight_bold i-color_negative"><span><i class='fa-solid fa-angle-left'></i>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $min, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</div>
|
||||
<div class='ipsData__main'>
|
||||
<p class="i-color_soft">
|
||||
</span></span>
|
||||
</div>
|
||||
<div class='ipsData__main'>
|
||||
<p class="i-color_soft">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_punishment', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $actions as $action ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsData__item">
|
||||
<div class=''>
|
||||
<span class="ipsWarningPoints">
|
||||
<li class="ipsData__item">
|
||||
<div class='i-basis_40 i-text-align_center'>
|
||||
<span class="i-font-weight_bold i-color_negative">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $action['wa_points'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</div>
|
||||
<div class='ipsData__main'>
|
||||
|
||||
</div>
|
||||
<div class='ipsData__main'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $action['wa_mq'] or $action['wa_rpa'] or $action['wa_suspend'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul>
|
||||
|
||||
<ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $action['wa_mq'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<strong>
|
||||
<li>
|
||||
<div class="ipsData__title">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_mq', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</strong>
|
||||
<br>
|
||||
<span class="i-color_soft">
|
||||
<i class='fa-regular fa-clock'></i>
|
||||
|
||||
</div>
|
||||
<div class="i-color_soft">
|
||||
<i class='fa-regular fa-clock'></i>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $action['wa_mq'] != -1 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $action['wa_mq_unit'] == 'h' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $action['wa_mq'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'f_hours', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $action['wa_mq'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'f_days', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'indefinitely', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</span>
|
||||
</li>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $action['wa_rpa'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<strong>
|
||||
<li>
|
||||
<div class="ipsData__title">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_rpa', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</strong>
|
||||
<br>
|
||||
<span class="i-color_soft">
|
||||
<i class='fa-regular fa-clock'></i>
|
||||
|
||||
</div>
|
||||
<div class="i-color_soft">
|
||||
<i class='fa-regular fa-clock'></i>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $action['wa_rpa'] != -1 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $action['wa_rpa_unit'] == 'h' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $action['wa_rpa'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'f_hours', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $action['wa_rpa'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'f_days', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'indefinitely', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</span>
|
||||
</li>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $action['wa_suspend'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<strong>
|
||||
<li>
|
||||
<div class="ipsData__title">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_suspend', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</strong>
|
||||
<br>
|
||||
<span class="i-color_soft">
|
||||
<i class='fa-regular fa-clock'></i>
|
||||
|
||||
</div>
|
||||
<div class="i-color_soft">
|
||||
<i class='fa-regular fa-clock'></i>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $action['wa_suspend'] != -1 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $action['wa_suspend_unit'] == 'h' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $action['wa_suspend'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'f_hours', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $action['wa_suspend'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'f_days', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'indefinitely', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</span>
|
||||
</li>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class='i-color_soft'>
|
||||
<p class='i-color_soft'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_punishment', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ol>
|
||||
</i-data>
|
||||
</div>
|
||||
</ol>
|
||||
</i-data>
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
@@ -8043,7 +8019,7 @@ $return .= <<<IPSCONTENT
|
||||
<p>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $warning->date instanceof \IPS\DateTime ) ? $warning->date : \IPS\DateTime::ts( $warning->date );$return .= $val->html();
|
||||
$val = ( $warning->date instanceof \IPS\DateTime ) ? $warning->date : \IPS\DateTime::ts( $warning->date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
<p>
|
||||
|
||||
@@ -41,7 +41,7 @@ $return .= <<<IPSCONTENT
|
||||
,
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row['ctime'] instanceof \IPS\DateTime ) ? $row['ctime'] : \IPS\DateTime::ts( $row['ctime'] );$return .= $val->html();
|
||||
$val = ( $row['ctime'] instanceof \IPS\DateTime ) ? $row['ctime'] : \IPS\DateTime::ts( $row['ctime'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
|
||||
@@ -27,7 +27,147 @@ IPSCONTENT;
|
||||
return $return;
|
||||
}
|
||||
|
||||
function onlineUsersRow( $table, $headers, $rows ) {
|
||||
function onlineUsersRow( $row ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="i-text-align_center i-padding_3 i-padding-bottom_4 i-grid i-gap_2 cOnlineUser
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $row['login_type'] == \IPS\Session\Front::LOGIN_TYPE_ANONYMOUS ):
|
||||
$return .= <<<IPSCONTENT
|
||||
i-opacity_4
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<div class="i-flex i-justify-content_center">
|
||||
<div class="i-basis_140">{$row['photo']}</div>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/online/onlineUsersRow", "name:before", [ $row ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<h3 class="i-font-weight_600 i-font-size_3" data-ips-hook="name">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/online/onlineUsersRow", "name:inside-start", [ $row ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $row['login_type'] == \IPS\Session\Front::LOGIN_TYPE_ANONYMOUS ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsBadge ipsBadge--icon ipsBadge--soft" title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'signed_in_anoymously', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipstooltip><i class="fa-solid fa-eye"></i></span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$row['member_name']}
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/online/onlineUsersRow", "name:inside-end", [ $row ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h3>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/online/onlineUsersRow", "name:after", [ $row ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/online/onlineUsersRow", "location:before", [ $row ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<div data-ips-hook="location">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/online/onlineUsersRow", "location:inside-start", [ $row ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class="i-font-weight_600 i-color_soft i-link-color_inherit">{$row['location_lang']}</p>
|
||||
<ul class="ipsList ipsList--sep i-justify-content_center i-color_soft i-margin-top_1">
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $row['running_time'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->modPermission( 'can_use_ip_tools' ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->modPermission('can_use_ip_tools') and \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'modcp' ) ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=modcp&controller=modcp&tab=ip_tools&ip={$row['ip_address']}", null, "modcp_ip_tools", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $row['ip_address'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $row['ip_address'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/online/onlineUsersRow", "location:inside-end", [ $row ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/online/onlineUsersRow", "location:after", [ $row ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
function onlineUsersRows( $table, $headers, $rows ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
@@ -43,97 +183,12 @@ IPSCONTENT;
|
||||
foreach ( $rows as $row ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='i-text-align_center i-padding_3 i-padding-bottom_4 i-grid i-gap_2 cOnlineUser
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $row['login_type'] == \IPS\Session\Front::LOGIN_TYPE_ANONYMOUS ):
|
||||
$return .= <<<IPSCONTENT
|
||||
i-opacity_4
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
<div class='i-flex i-justify-content_center'>
|
||||
<div class='i-basis_140'>{$row['photo']}</div>
|
||||
</div>
|
||||
<h3 class='i-font-weight_600 i-font-size_3'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $row['login_type'] == \IPS\Session\Front::LOGIN_TYPE_ANONYMOUS ):
|
||||
$return .= \IPS\Theme::i()->getTemplate( "online", "core" )->onlineUsersRow( $row );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsBadge ipsBadge--icon ipsBadge--soft" title='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'signed_in_anoymously', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-ipsTooltip><i class='fa-solid fa-eye'></i></span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$row['member_name']}
|
||||
</h3>
|
||||
<div>
|
||||
<p class='i-font-weight_600 i-color_soft i-link-color_inherit'>{$row['location_lang']}</p>
|
||||
<ul class='ipsList ipsList--sep i-justify-content_center i-color_soft i-margin-top_1'>
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $row['running_time'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->modPermission( 'can_use_ip_tools' ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->modPermission('can_use_ip_tools') and \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'modcp' ) ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=modcp&controller=modcp&tab=ip_tools&ip={$row['ip_address']}", null, "modcp_ip_tools", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $row['ip_address'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $row['ip_address'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
|
||||
@@ -334,7 +334,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=members&controller=profile&do=content&id={$member->member_id}", "front", "profile_content", array( $member->members_seo_name ), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class='ipsButton ipsButton--primary'><i class="fa-regular fa-file-lines"></i><span>
|
||||
' class='ipsButton ipsButton--primary ipsButton--wide'><i class="fa-regular fa-file-lines"></i><span>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'find_content', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -1065,7 +1065,7 @@ $return .= <<<IPSCONTENT
|
||||
"><i class="fa-regular fa-clock"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $indexData['index_date_updated'] instanceof \IPS\DateTime ) ? $indexData['index_date_updated'] : \IPS\DateTime::ts( $indexData['index_date_updated'] );$return .= $val->html();
|
||||
$val = ( $indexData['index_date_updated'] instanceof \IPS\DateTime ) ? $indexData['index_date_updated'] : \IPS\DateTime::ts( $indexData['index_date_updated'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -57,7 +57,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $followers !== NULL and \count( $followers ) ):
|
||||
if ( is_array( $followers ) and \count( $followers ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ IPSCONTENT;
|
||||
if ( $followersCount > 50 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsButtonBar">
|
||||
<div class="ipsButtonBar ipsButtonBar--bottom">
|
||||
<div class="ipsButtonBar__pagination" data-role="tablePagination">
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -635,7 +635,7 @@ $return .= <<<IPSCONTENT
|
||||
<div class="i-color_hard i-font-size_2 i-font-weight_600">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $member->joined instanceof \IPS\DateTime ) ? $member->joined : \IPS\DateTime::ts( $member->joined );$return .= $val->html();
|
||||
$val = ( $member->joined instanceof \IPS\DateTime ) ? $member->joined : \IPS\DateTime::ts( $member->joined );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</div>
|
||||
@@ -653,7 +653,7 @@ IPSCONTENT;
|
||||
if ( $member->isOnline() AND ( !$member->isOnlineAnonymously() OR ( $member->isOnlineAnonymously() AND \IPS\Member::loggedIn()->isAdmin() ) ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsOnlineStatus" data-ipstooltip title="
|
||||
<span class="ipsOnline" data-ipstooltip title="
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->isOnlineAnonymously() ):
|
||||
@@ -699,7 +699,7 @@ $return .= <<<IPSCONTENT
|
||||
<div class="i-color_hard i-font-size_2 i-font-weight_600">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $member->last_activity instanceof \IPS\DateTime ) ? $member->last_activity : \IPS\DateTime::ts( $member->last_activity );$return .= $val->html();
|
||||
$val = ( $member->last_activity instanceof \IPS\DateTime ) ? $member->last_activity : \IPS\DateTime::ts( $member->last_activity );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
|
||||
@@ -835,7 +835,7 @@ $return .= <<<IPSCONTENT
|
||||
<p class="i-color_soft i-font-weight_500">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $rankEarned instanceof \IPS\DateTime ) ? $rankEarned : \IPS\DateTime::ts( $rankEarned );$return .= $val->html();
|
||||
$val = ( $rankEarned instanceof \IPS\DateTime ) ? $rankEarned : \IPS\DateTime::ts( $rankEarned );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
|
||||
@@ -1940,11 +1940,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=warnings&do=view&id={$member->member_id}&w={$warning->id}", null, "warn_view", array( $member->members_seo_name ), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipsdialog data-ipsdialog-showfrom="#elWarningOverview_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $warning->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipsdialog-size="narrow" title="">
|
||||
" data-ipsdialog data-ipsdialog-size="narrow" title="">
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -2271,7 +2267,17 @@ IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=discover&controller=popular&tab=leaderboard&custom_date_start={$lastDayWon['date']->getTimeStamp()}&custom_date_end={$lastDayWon['date']->getTimeStamp()}", null, "leaderboard_leaderboard", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>Test</span></a>
|
||||
" class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->formatNumber( $member->getReputationDaysWonCount() );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'members_days_won_count', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
!</span></a>
|
||||
<div class="ipsData__content">
|
||||
<div class="ipsData__main">
|
||||
<h3 class="ipsData__title">
|
||||
@@ -2559,41 +2565,47 @@ $return .= <<<IPSCONTENT
|
||||
</i-data>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ipsWidget ipsWidget--profileMeta">
|
||||
<div class="ipsWidget__content">
|
||||
|
||||
<i-data>
|
||||
<ul class="ipsData ipsData--table ipsData--profileMeta">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->group['g_icon'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsData__item i-text-align_center">
|
||||
<div class="ipsData__main"><img src="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\File::get( "core_Theme", $member->group['g_icon'] )->url;
|
||||
$return .= <<<IPSCONTENT
|
||||
" alt="" loading="lazy"></div>
|
||||
</li>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
<div class="ipsWidget ipsWidget--profileMeta">
|
||||
<div class="ipsWidget__content">
|
||||
|
||||
<i-data>
|
||||
<ul class="ipsData ipsData--table ipsData--profileMeta">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->group['g_icon'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsData__item i-text-align_center">
|
||||
<div class="ipsData__main"><img src="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\File::get( "core_Theme", $member->group['g_icon'] )->url;
|
||||
$return .= <<<IPSCONTENT
|
||||
" alt="" loading="lazy"></div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->modPermission('can_see_emails') ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsData__item">
|
||||
<a href="mailto:
|
||||
<li class="ipsData__item">
|
||||
<a href="mailto:
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->email, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -2603,16 +2615,16 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'email_this_user', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></a>
|
||||
<div class="ipsData__icon"><i class="fa-solid fa-envelope"></i></div>
|
||||
<div class="ipsData__main">
|
||||
<strong class="ipsData__title">
|
||||
<div class="ipsData__icon"><i class="fa-solid fa-envelope"></i></div>
|
||||
<div class="ipsData__main">
|
||||
<strong class="ipsData__title">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'profile_email', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</strong>
|
||||
<div class="ipsData__desc">
|
||||
<div class="i-font-weight_500"><a href="mailto:
|
||||
<div class="ipsData__desc">
|
||||
<div class="i-font-weight_500"><a href="mailto:
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->email, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -2626,24 +2638,24 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->email, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></div>
|
||||
<span class="i-font-size_-1">
|
||||
<span class="i-font-size_-1">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'profile_email_addresses', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<li class="ipsData__item">
|
||||
<a href="
|
||||
<li class="ipsData__item">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=members&controller=profile&do=content&id={$member->member_id}", "front", "profile_content", array( $member->members_seo_name ), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
@@ -2679,15 +2691,15 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></a>
|
||||
<div class="ipsData__icon"><i class="fa-solid fa-comment"></i></div>
|
||||
<div class="ipsData__main">
|
||||
<h4 class="ipsData__title">
|
||||
<div class="ipsData__icon"><i class="fa-solid fa-comment"></i></div>
|
||||
<div class="ipsData__main">
|
||||
<h4 class="ipsData__title">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'members_member_posts', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h4>
|
||||
<div class="ipsData__desc"><a href="
|
||||
<div class="ipsData__desc"><a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=members&controller=profile&do=content&id={$member->member_id}", "front", "profile_content", array( $member->members_seo_name ), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
@@ -2723,25 +2735,25 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></a></div>
|
||||
</div>
|
||||
<div class="i-font-size_4 i-font-weight_600">
|
||||
|
||||
</div>
|
||||
<div class="i-font-size_4 i-font-weight_600 i-flex_00">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->formatNumber( $member->member_posts );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $solutions ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsData__item">
|
||||
<a href="
|
||||
<li class="ipsData__item">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=members&controller=profile&id={$member->member_id}&do=solutions", null, "profile_solutions", array( $member->members_seo_name ), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
@@ -2757,16 +2769,16 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'solutionlog_show_activity', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></a>
|
||||
<div class="ipsData__icon"><i class="fa-solid fa-clipboard-check"></i></div>
|
||||
<div class="ipsData__main">
|
||||
<h3 class="ipsData__title">
|
||||
<div class="ipsData__icon"><i class="fa-solid fa-clipboard-check"></i></div>
|
||||
<div class="ipsData__main">
|
||||
<h3 class="ipsData__title">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'profile_solutions', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h3>
|
||||
<p class="ipsData__desc">
|
||||
<a href="
|
||||
<p class="ipsData__desc">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=members&controller=profile&id={$member->member_id}&do=solutions", null, "profile_solutions", array( $member->members_seo_name ), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
@@ -2782,38 +2794,38 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'solutionlog_show_activity', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="i-font-size_4 i-font-weight_600">
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<div class="i-font-size_4 i-font-weight_600 i-flex_00">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->formatNumber( $solutions );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Settings::i()->reputation_enabled and \IPS\Settings::i()->reputation_show_profile ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsData__item">
|
||||
|
||||
<li class="ipsData__item">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->group['gbw_view_reps'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href="
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=members&controller=profile&id={$member->member_id}&do=reputation", null, "profile_reputation", array( $member->members_seo_name ), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
@@ -2829,59 +2841,59 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'replog_show_activity', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsData__icon"><i class="fa-solid fa-thumbs-up"></i></div>
|
||||
<div class="ipsData__main">
|
||||
<h3 class="ipsData__title">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'profile_reputation', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h3>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->reputation() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsData__desc">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->reputation(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsData__icon"><i class="fa-solid fa-thumbs-up"></i></div>
|
||||
<div class="ipsData__main">
|
||||
<h2 class="ipsData__title">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'profile_reputation', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h2>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->reputation() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsData__desc">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->reputation(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->reputationImage() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="i-margin-top_2">
|
||||
<img src="
|
||||
<div class="i-margin-top_2">
|
||||
<img src="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\File::get( "core_Theme", $member->reputationImage() )->url;
|
||||
$return .= <<<IPSCONTENT
|
||||
" alt="" loading="lazy">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
<div class="i-font-size_4 i-font-weight_600
|
||||
</div>
|
||||
<div class="i-font-size_4 i-font-weight_600 i-flex_00
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->pp_reputation_points > 1 ):
|
||||
@@ -2902,84 +2914,78 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->formatNumber( $member->pp_reputation_points );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->birthday AND \IPS\Settings::i()->profile_birthday_type == 'public' or ( \IPS\Settings::i()->profile_birthday_type == 'private' and ( \IPS\Member::loggedIn()->member_id == $member->member_id OR \IPS\Member::loggedIn()->isAdmin() ) ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsData__item">
|
||||
<div class="ipsData__icon"><i class="fa-solid fa-cake-candles"></i></div>
|
||||
<div class="ipsData__main">
|
||||
<strong class="ipsData__title">
|
||||
<li class="ipsData__item">
|
||||
<div class="ipsData__icon"><i class="fa-solid fa-cake-candles"></i></div>
|
||||
<div class="ipsData__main">
|
||||
<strong class="ipsData__title">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'bday', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</strong>
|
||||
<div class="ipsData__desc">
|
||||
<div class="ipsData__desc">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->birthday, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ( ! empty( $followers ) and is_array( $followers ) and count( $followers ) ) || \IPS\Member::loggedIn()->member_id === $member->member_id ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsData__item" id="elFollowers" data-feedid="member-
|
||||
<li class="ipsData__item" id="elFollowers" data-feedid="member-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->member_id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-controller="core.front.profile.followers">
|
||||
|
||||
" data-controller="core.front.profile.followers">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "profile", "core" )->followers( $member, $followers );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</i-data>
|
||||
</ul>
|
||||
</i-data>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
</div>
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -3218,26 +3224,28 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<ul class='ipsData ipsData--grid ipsData--profile-clubs'>
|
||||
|
||||
<i-data>
|
||||
<ul class='ipsData ipsData--grid ipsData--profile-clubs'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $clubs as $club ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "clubs", "core" )->clubCard( $club );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</ul>
|
||||
</i-data>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -3519,7 +3527,7 @@ $return .= <<<IPSCONTENT
|
||||
<span class="ipsCoverPhoto__statValue">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $member->joined instanceof \IPS\DateTime ) ? $member->joined : \IPS\DateTime::ts( $member->joined );$return .= $val->html();
|
||||
$val = ( $member->joined instanceof \IPS\DateTime ) ? $member->joined : \IPS\DateTime::ts( $member->joined );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</li>
|
||||
@@ -3545,7 +3553,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $member->last_activity instanceof \IPS\DateTime ) ? $member->last_activity : \IPS\DateTime::ts( $member->last_activity );$return .= $val->html();
|
||||
$val = ( $member->last_activity instanceof \IPS\DateTime ) ? $member->last_activity : \IPS\DateTime::ts( $member->last_activity );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -3569,7 +3577,7 @@ IPSCONTENT;
|
||||
if ( $member->isOnline() AND ( !$member->isOnlineAnonymously() OR ( $member->isOnlineAnonymously() AND \IPS\Member::loggedIn()->isAdmin() ) ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i class="ipsOnlineStatus ipsOnlineStatus--online" data-ipstooltip title="
|
||||
<i class="ipsOnline" data-ipstooltip title="
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->isOnlineAnonymously() ):
|
||||
@@ -3811,14 +3819,14 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $tabs as $tab => $title ):
|
||||
foreach ( $tabs as $tab => $tabData ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href='
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->url()->setQueryString( 'tab', $tab ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $tabData['url'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' id='elProfileTab_
|
||||
" id='elProfileTab_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $tab, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -3844,7 +3852,7 @@ $return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$title}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$val = "{$tabData['title']}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
|
||||
@@ -3981,7 +3989,7 @@ $return .= <<<IPSCONTENT
|
||||
<div class='ipsData__meta'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $visitor['visit_time'] instanceof \IPS\DateTime ) ? $visitor['visit_time'] : \IPS\DateTime::ts( $visitor['visit_time'] );$return .= $val->html();
|
||||
$val = ( $visitor['visit_time'] instanceof \IPS\DateTime ) ? $visitor['visit_time'] : \IPS\DateTime::ts( $visitor['visit_time'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</div>
|
||||
@@ -4008,7 +4016,7 @@ IPSCONTENT;
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-text-align_center i-color_soft'>
|
||||
<div class='i-text-align_center i-color_soft i-padding_2'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_recent_visitors', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -4137,7 +4145,7 @@ IPSCONTENT;
|
||||
|
||||
if ( $loadedMember->isOnline() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<i class="ipsOnlineStatus ipsOnlineStatus--online" data-ipsTooltip title='
|
||||
<i class="ipsOnline" data-ipsTooltip title='
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array($member->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'online_now', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
@@ -4173,7 +4181,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $loadedMember->joined instanceof \IPS\DateTime ) ? $loadedMember->joined : \IPS\DateTime::ts( $loadedMember->joined );$return .= $val->html();
|
||||
$val = ( $loadedMember->joined instanceof \IPS\DateTime ) ? $loadedMember->joined : \IPS\DateTime::ts( $loadedMember->joined );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
|
||||
@@ -4190,7 +4198,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $loadedMember->last_activity instanceof \IPS\DateTime ) ? $loadedMember->last_activity : \IPS\DateTime::ts( $loadedMember->last_activity );$return .= $val->html();
|
||||
$val = ( $loadedMember->last_activity instanceof \IPS\DateTime ) ? $loadedMember->last_activity : \IPS\DateTime::ts( $loadedMember->last_activity );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
|
||||
@@ -4487,8 +4495,8 @@ foreach ( $member->recentBadges( NULL ) as $badge ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-flex i-gap_2 i-align-items_center'>
|
||||
{$badge->html('i-flex_00 i-basis_40 ipsDimension', FALSE, TRUE)}
|
||||
<div>
|
||||
<div class="i-flex_00">{$badge->html('i-flex_00 i-basis_40 ipsDimension', FALSE, TRUE)}</div>
|
||||
<div class="i-flex_11">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -5645,7 +5653,7 @@ $return .= <<<IPSCONTENT
|
||||
<span class='i-color_soft'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->rep_date instanceof \IPS\DateTime ) ? $row->rep_date : \IPS\DateTime::ts( $row->rep_date );$return .= $val->html();
|
||||
$val = ( $row->rep_date instanceof \IPS\DateTime ) ? $row->rep_date : \IPS\DateTime::ts( $row->rep_date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</div>
|
||||
@@ -6304,7 +6312,7 @@ $return .= <<<IPSCONTENT
|
||||
<span class='i-color_soft'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->solved_date instanceof \IPS\DateTime ) ? $row->solved_date : \IPS\DateTime::ts( $row->solved_date );$return .= $val->html();
|
||||
$val = ( $row->solved_date instanceof \IPS\DateTime ) ? $row->solved_date : \IPS\DateTime::ts( $row->solved_date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -1158,14 +1158,16 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->uniqueId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-role="tableRows">
|
||||
<div class='ipsData ipsData--grid ipsData--featured-content'>
|
||||
|
||||
<i-data>
|
||||
<div class='ipsData ipsData--grid ipsData--featured-content'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= $table->rowsTemplate[0]->{$table->rowsTemplate[1]}( $table, $headers, $rows );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</i-data>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -1587,7 +1589,7 @@ $return .= <<<IPSCONTENT
|
||||
<div class='ipsData__last-secondary'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $item->added instanceof \IPS\DateTime ) ? $item->added : \IPS\DateTime::ts( $item->added );$return .= $val->html();
|
||||
$val = ( $item->added instanceof \IPS\DateTime ) ? $item->added : \IPS\DateTime::ts( $item->added );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2118,7 +2118,7 @@ $return .= <<<IPSCONTENT
|
||||
<p class="i-color_hard">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $member->joined instanceof \IPS\DateTime ) ? $member->joined : \IPS\DateTime::ts( $member->joined );$return .= $val->html();
|
||||
$val = ( $member->joined instanceof \IPS\DateTime ) ? $member->joined : \IPS\DateTime::ts( $member->joined );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</li>
|
||||
|
||||
@@ -154,7 +154,7 @@ IPSCONTENT;
|
||||
return $return;
|
||||
}
|
||||
|
||||
function shareButton( $item, $classes = '', $type = 'inherit' ) {
|
||||
function shareButton( $item, $classes = '' ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
@@ -178,13 +178,9 @@ _menu' id='elShareItem_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-ipsMenu class='ipsButton ipsButton--share
|
||||
' data-ipsMenu class='ipsButton ipsButton--share ipsButton--inherit
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $classes, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButton--
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $type, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
<i class='fa-solid fa-share-nodes'></i><span class="ipsButton__label">
|
||||
|
||||
@@ -44,7 +44,7 @@ $return .= <<<IPSCONTENT
|
||||
<li><i class="fa-regular fa-clock"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $time instanceof \IPS\DateTime ) ? $time : \IPS\DateTime::ts( $time );$return .= $val->html();
|
||||
$val = ( $time instanceof \IPS\DateTime ) ? $time : \IPS\DateTime::ts( $time );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
</ul>
|
||||
@@ -331,8 +331,7 @@ endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
<hr class='ipsHr ipsResponsive_hidePhone'>
|
||||
<hr class='ipsHr i-margin-block_2 ipsResponsive_showPhone'>
|
||||
<hr class='ipsHr'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -353,8 +352,8 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme::i()->getTemplate( "streams", "core" )->filterFormTags( $elements['']['stream_tags'] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<hr class='ipsHr i-margin-bottom_4 ipsResponsive_hidePhone'>
|
||||
<hr class='ipsHr i-margin-bottom_3 ipsResponsive_showPhone'>
|
||||
<hr class='ipsHr'>
|
||||
<hr class='ipsHr'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -391,8 +390,7 @@ endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
<hr class='ipsHr ipsResponsive_hidePhone'>
|
||||
<hr class='ipsHr i-margin-block_2 ipsResponsive_showPhone'>
|
||||
<hr class='ipsHr'>
|
||||
<h3 class='ipsSideMenu__title'>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -421,8 +419,7 @@ endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
<hr class='ipsHr ipsResponsive_hidePhone'>
|
||||
<hr class='ipsHr i-margin-block_2 ipsResponsive_showPhone'>
|
||||
<hr class='ipsHr'>
|
||||
<h3 class='ipsSideMenu__title'>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -469,8 +466,7 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<hr class='ipsHr ipsResponsive_hidePhone'>
|
||||
<hr class='ipsHr i-margin-block_2 ipsResponsive_showPhone'>
|
||||
<hr class='ipsHr'>
|
||||
<h3 class='ipsSideMenu__title'>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -511,7 +507,7 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<hr class='ipsHr i-margin-block_2 ipsResponsive_showPhone'>
|
||||
<hr class='ipsHr'>
|
||||
</div>
|
||||
<div class='ipsSpanGrid__6'>
|
||||
|
||||
@@ -546,7 +542,7 @@ IPSCONTENT;
|
||||
if ( $k == 'followed' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a class='cStreamForm_menu' data-ipsTooltip title='' id='elMenu_followOptions' data-ipsMenu data-ipsMenu-activeClass='cStreamForm_menuActive' data-ipsMenu-closeOnClick='false' data-ipsMenu-appendTo='#elStreamFilterForm'>
|
||||
<a class='cStreamForm_menu' data-ipsTooltip title='' id='elMenu_followOptions' data-ipsMenu data-ipsMenu-closeOnClick='false' data-ipsMenu-appendTo='#elStreamFilterForm'>
|
||||
<i class='fa-solid fa-gear i-font-size_2'></i>
|
||||
<i class='fa-solid fa-caret-down'></i>
|
||||
</a>
|
||||
@@ -576,8 +572,7 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<hr class='ipsHr ipsResponsive_hidePhone'>
|
||||
<hr class='ipsHr i-margin-block_2 ipsResponsive_showPhone'>
|
||||
<hr class='ipsHr'>
|
||||
<h3 class='ipsSideMenu__title'>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -637,26 +632,19 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $field ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsFieldRow ipsFieldRow--fullWidth'>
|
||||
<div class='ipsFieldRow__content'>
|
||||
<ul class='ipsList ipsList--inline'>{$field}</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul class='cFilterFormClubs'>{$field}</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
@@ -712,11 +700,7 @@ IPSCONTENT;
|
||||
if ( $field ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsFieldRow ipsFieldRow--fullWidth'>
|
||||
<div class='ipsFieldRow__content'>
|
||||
<ul class='ipsList ipsList--inline'>{$field}</ul>
|
||||
</div>
|
||||
</div>
|
||||
<ul class='cFilterFormContentType'>{$field}</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -956,12 +940,22 @@ IPSCONTENT;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $showTitle ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<h3 class='ipsSideMenu__title'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stream_classes_type', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h3>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul class='ipsSideMenu__list ipsSideMenu--pseudoChecks cStreamForm_list' data-ipsSideMenu data-ipsSideMenu-type='check' data-ipsSideMenu-responsive='false' data-filterType='type'>
|
||||
<li>
|
||||
<a href='#' class='ipsSideMenu_item
|
||||
@@ -1188,18 +1182,18 @@ IPSCONTENT;
|
||||
if ( ! isset( \IPS\Widget\Request::i()->do ) or \IPS\Widget\Request::i()->do != 'create' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<p class='ipsCenter'><button data-action='applyFilters' title="
|
||||
<li class="i-margin-top_2">
|
||||
<button data-action='applyFilters' title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stream_apply_tip', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" type='button' class='ipsButton ipsButton--soft ipsButton--wide ipsButton--small ipsButton--disabled'>
|
||||
" type='button' class='ipsButton ipsButton--soft ipsButton--wide ipsButton--disabled'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stream_apply', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button></p>
|
||||
</button>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -1208,7 +1202,6 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
<hr class='ipsHr i-margin-block_2 ipsResponsive_showPhone'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1228,6 +1221,7 @@ endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsMenu ipsMenu_wide i-padding_3 ipsHide' data-role="streamContainer" data-contentKey="clubs" data-className="clubs" id='elMenu_clubFilter_menu'>
|
||||
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1818,9 +1812,9 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
<!-- Tags menu -->
|
||||
<li><hr class='ipsHr'></li>
|
||||
<li class='i-padding_3 i-padding-top_2'>
|
||||
<li class='i-padding_2 i-padding-top_0'>
|
||||
<input type="hidden" name="stream_tags_type" value="custom">
|
||||
<h3 class='cStreamFilter__title i-padding-bottom_3'>
|
||||
<h3 class='i-padding-bottom_2 i-font-weight_500'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stream_tagged_with', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -1828,7 +1822,7 @@ $return .= <<<IPSCONTENT
|
||||
</h3>
|
||||
<div class='ipsFieldRow--fullWidth'>
|
||||
{$elements['']['stream_tags']->html()}
|
||||
<p class='i-font-size_-2 i-color_soft'>
|
||||
<p class='i-font-size_-2 i-color_soft i-margin-top_1'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'tags_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -1845,7 +1839,7 @@ $return .= <<<IPSCONTENT
|
||||
</ul>
|
||||
|
||||
<!-- Content types menu -->
|
||||
<div class='ipsMenu ipsMenu_selectable ipsMenu_wide i-padding_3 ipsHide' data-role="streamMenuFilter" id='elStreamContentTypes_menu'>
|
||||
<div class='ipsMenu ipsMenu_selectable ipsMenu_wide i-padding_2 ipsHide' data-role="streamMenuFilter" id='elStreamContentTypes_menu'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2193,7 +2187,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<div id='elSaveNewStream_menu' class='ipsMenu ipsMenu_wide ipsHide i-padding_3'>
|
||||
<div id='elSaveNewStream_menu' class='ipsMenu ipsMenu_wide ipsHide i-padding_2'>
|
||||
<ul class=''>
|
||||
<li class='ipsFieldRow'>
|
||||
<input type='text' name='stream_title' value='
|
||||
@@ -2783,17 +2777,17 @@ if ( \IPS\Member::loggedIn()->member_id ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul class="ipsMenu ipsMenu_auto ipsHide" id="elStreamOptions_menu">
|
||||
<li class="ipsMenu_item
|
||||
<li class="ipsMenu_item"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->defaultStream === $stream->_id ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsHide
|
||||
hidden
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
data-role="toggleDefaultTrue">
|
||||
<a data-action="toggleStreamDefault" data-change="1" href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $stream->url()->csrf()->setQueryString('default', 1), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -2805,17 +2799,17 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 's
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
<li class="ipsMenu_item
|
||||
<li class="ipsMenu_item"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->defaultStream !== $stream->_id ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsHide
|
||||
hidden
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
data-role="toggleDefaultFalse">
|
||||
<a data-action="toggleStreamDefault" data-change="0" href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $stream->url()->csrf()->setQueryString('default', 0), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -2844,7 +2838,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stream_edit_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-action="editStream"><i class="fa-regular fa-pen-to-square"></i>
|
||||
" data-action="editStream"><i class="fa-solid fa-pen-to-square"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stream_edit_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
|
||||
@@ -1575,7 +1575,7 @@ IPSCONTENT;
|
||||
|
||||
if ( $loadedMember->isOnline() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<i class="ipsOnlineStatus ipsOnlineStatus--online" data-ipsTooltip title='
|
||||
<i class="ipsOnline" data-ipsTooltip title='
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array($row->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'online_now', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
@@ -1608,7 +1608,7 @@ $return .= <<<IPSCONTENT
|
||||
:
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $loadedMember->last_activity instanceof \IPS\DateTime ) ? $loadedMember->last_activity : \IPS\DateTime::ts( $loadedMember->last_activity );$return .= $val->html();
|
||||
$val = ( $loadedMember->last_activity instanceof \IPS\DateTime ) ? $loadedMember->last_activity : \IPS\DateTime::ts( $loadedMember->last_activity );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -1627,7 +1627,7 @@ $return .= <<<IPSCONTENT
|
||||
' data-role='followDate' hidden><i class='fa-regular fa-clock'></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->_followData['follow_added'] instanceof \IPS\DateTime ) ? $row->_followData['follow_added'] : \IPS\DateTime::ts( $row->_followData['follow_added'] );$return .= $val->html();
|
||||
$val = ( $row->_followData['follow_added'] instanceof \IPS\DateTime ) ? $row->_followData['follow_added'] : \IPS\DateTime::ts( $row->_followData['follow_added'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
<li title='
|
||||
@@ -1845,7 +1845,7 @@ $return .= <<<IPSCONTENT
|
||||
' data-role='followDate'><i class='fa-regular fa-clock'></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->_followData['follow_added'] instanceof \IPS\DateTime ) ? $row->_followData['follow_added'] : \IPS\DateTime::ts( $row->_followData['follow_added'] );$return .= $val->html();
|
||||
$val = ( $row->_followData['follow_added'] instanceof \IPS\DateTime ) ? $row->_followData['follow_added'] : \IPS\DateTime::ts( $row->_followData['follow_added'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
<li title='
|
||||
@@ -2096,7 +2096,7 @@ $return .= <<<IPSCONTENT
|
||||
<span class='ipsData__meta'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $follower['follow_added'] instanceof \IPS\DateTime ) ? $follower['follow_added'] : \IPS\DateTime::ts( $follower['follow_added'] );$return .= $val->html();
|
||||
$val = ( $follower['follow_added'] instanceof \IPS\DateTime ) ? $follower['follow_added'] : \IPS\DateTime::ts( $follower['follow_added'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</div>
|
||||
@@ -3067,7 +3067,7 @@ $return .= <<<IPSCONTENT
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<i-data class="i-position_relative i-z-index_1">
|
||||
<i-data>
|
||||
<ol class="ipsData ipsData--table ipsData--ignored-users" id='elIgnoreUsers' data-role='tableRows'>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -3455,7 +3455,7 @@ IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Widget\Request::i()->isAjax() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsBox ipsPull
|
||||
ipsBox ipsBox--loginBothMethods ipsPull
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -3482,7 +3482,7 @@ IPSCONTENT;
|
||||
if ( \IPS\Login::registrationType() != 'disabled' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class="i-font-size_2 i-color_soft i-font-weight_500">
|
||||
<p class="i-font-size_2 i-color_soft i-font-weight_500 i-margin-top_1">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -3568,25 +3568,13 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'sign_in_faster', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h2>
|
||||
|
||||
<p class="i-color_soft i-font-weight_500">
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count( $buttonMethods ) > 1 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class="i-color_soft">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'sign_in_with_these', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reg_connect', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="i-grid i-gap_1 i-margin-top_2">
|
||||
<div class="i-grid i-gap_1 i-margin-top_3">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -3636,7 +3624,7 @@ IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Widget\Request::i()->isAjax() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsBox ipsPull
|
||||
ipsBox ipsBox--loginEmail ipsPull
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -3661,7 +3649,7 @@ IPSCONTENT;
|
||||
if ( \IPS\Login::registrationType() != 'disabled' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class="i-font-size_2 i-color_soft">
|
||||
<p class="i-font-size_2 i-color_soft i-margin-top_1">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -3766,22 +3754,34 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="i-gap_2 i-margin-top_2">
|
||||
|
||||
<div class="
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Widget\Request::i()->isAjax() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsBox ipsBox--loginEmail ipsPull
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<ul class="i-padding_3 i-gap_2 i-margin-top_2">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $buttonMethods as $method ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="i-text-align_center">
|
||||
{$method->button()}
|
||||
</div>
|
||||
|
||||
<li>
|
||||
{$method->button()}
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3816,7 +3816,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/loginForm", "loginForm:before", [ $login ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<ul data-ips-hook="loginForm" class="ipsForm">
|
||||
<ul data-ips-hook="loginForm" class="ipsForm ipsForm--loginForm">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/loginForm", "loginForm:inside-start", [ $login ] );
|
||||
@@ -4022,15 +4022,27 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", \IPS\Request::i()->app )->pageHeader( \IPS\Member::loggedIn()->language()->addToStack('lost_password') );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsBox'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsBox i-padding_3'>
|
||||
{$form}
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Widget\Request::i()->isAjax() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -4718,10 +4730,10 @@ $return .= <<<IPSCONTENT
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
<p class='i-color_soft'>
|
||||
<p class='i-color_soft i-flex_00'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $notification['notification']->updated_time instanceof \IPS\DateTime ) ? $notification['notification']->updated_time : \IPS\DateTime::ts( $notification['notification']->updated_time );$return .= $val->html();
|
||||
$val = ( $notification['notification']->updated_time instanceof \IPS\DateTime ) ? $notification['notification']->updated_time : \IPS\DateTime::ts( $notification['notification']->updated_time );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</li>
|
||||
@@ -5223,7 +5235,7 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", \IPS\Request::i()->app )->pageHeader( $title );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsBox i-padding_3">
|
||||
<div class="ipsBox ipsBox--notificationSettingsType">
|
||||
{$form}
|
||||
</div>
|
||||
|
||||
@@ -5349,7 +5361,7 @@ $return .= <<<IPSCONTENT
|
||||
<p class='ipsData__meta'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $notification['notification']->updated_time instanceof \IPS\DateTime ) ? $notification['notification']->updated_time : \IPS\DateTime::ts( $notification['notification']->updated_time );$return .= $val->html();
|
||||
$val = ( $notification['notification']->updated_time instanceof \IPS\DateTime ) ? $notification['notification']->updated_time : \IPS\DateTime::ts( $notification['notification']->updated_time );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</li>
|
||||
@@ -5933,7 +5945,7 @@ IPSCONTENT;
|
||||
if ( $blurb ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class='i-margin-bottom_3'>
|
||||
<p class='i-padding_3'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -6031,7 +6043,7 @@ $return .= <<<IPSCONTENT
|
||||
autocomplete="current-password">
|
||||
</div>
|
||||
</li>
|
||||
<li class="ipsFieldRow ipsFieldRow--fullWidth">
|
||||
<li class="ipsSubmitRow">
|
||||
<button type="submit" name="_processLogin" value="usernamepassword" class="ipsButton ipsButton--primary ipsButton--small">
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -6138,40 +6150,40 @@ IPSCONTENT;
|
||||
elseif ( $usernamePasswordMethods ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class='i-margin-bottom_3'>
|
||||
|
||||
<ul class='ipsForm'>
|
||||
<li class="ipsFieldRow">
|
||||
<label class='ipsFieldRow__label' for="password">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $blurb ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reauthenticate_password_blurb2', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reauthenticate_password_blurb', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
<ul class='ipsForm'>
|
||||
<li class="ipsFieldRow">
|
||||
</label>
|
||||
<div class="ipsFieldRow__content">
|
||||
<input type="password" class='ipsInput ipsInput--text' placeholder="
|
||||
IPSCONTENT;
|
||||
@@ -6196,39 +6208,32 @@ $return .= <<<IPSCONTENT
|
||||
>
|
||||
</div>
|
||||
</li>
|
||||
<li class="ipsFieldRow">
|
||||
<div class="i-flex i-align-items_center i-flex-wrap_wrap i-gap_2 i-justify-content_space-between">
|
||||
<button type="submit" name="_processLogin" value="usernamepassword" class="ipsButton ipsButton--primary ipsButton--small">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reauthenticate', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button>
|
||||
|
||||
<li class="ipsSubmitRow">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Settings::i()->allow_forgot_password != 'disabled' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Settings::i()->allow_forgot_password == 'redirect' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href='
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Settings::i()->allow_forgot_password_target, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' target="_blank" rel="noopener" class="ipsButton ipsButton--inherit ipsButton--small">
|
||||
|
||||
' target="_blank" rel="noopener" class="ipsButton ipsButton--inherit">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href='
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=lostpass", null, "lostpassword", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
@@ -6238,26 +6243,31 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'forgotten_password', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class="ipsButton ipsButton--inherit ipsButton--small">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'forgotten_password', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
' class="ipsButton ipsButton--inherit">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'forgotten_password', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<button type="submit" name="_processLogin" value="usernamepassword" class="ipsButton ipsButton--primary">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reauthenticate', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -6600,7 +6610,7 @@ $return .= <<<IPSCONTENT
|
||||
<span class='i-color_soft i-font-size_-2'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row['joined'] instanceof \IPS\DateTime ) ? $row['joined'] : \IPS\DateTime::ts( $row['joined'] );$return .= $val->html();
|
||||
$val = ( $row['joined'] instanceof \IPS\DateTime ) ? $row['joined'] : \IPS\DateTime::ts( $row['joined'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</div>
|
||||
@@ -6766,7 +6776,7 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/register", "registerForm:inside-start", [ $form,$login,$postBeforeRegister ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsBox ipsPull ipsColumns ipsColumns--lines i-overflow_hidden">
|
||||
<div class="ipsBox ipsBox--register ipsPull ipsColumns ipsColumns--lines i-overflow_hidden">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -6797,14 +6807,14 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<div class="i-padding_3 i-border-bottom_1 i-background_2 i-border-start-start-radius_box i-border-start-end-radius_box">
|
||||
<div class="i-padding_3">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $postBeforeRegister ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<h1 class="ipsTitle ipsTitle--h3">
|
||||
<h1 class="ipsTitle ipsTitle--h2">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'post_before_register_headline', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -6815,7 +6825,7 @@ IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Widget\Request::i()->hidereminder ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<p class="i-color_soft i-font-size_2 i-font-weight_500">
|
||||
<p class="i-color_soft i-font-size_2 i-font-weight_500 i-margin-top_1">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'post_before_register_subtext', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -6832,13 +6842,13 @@ IPSCONTENT;
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<h1 class="ipsTitle ipsTitle--h3">
|
||||
<h1 class="ipsTitle ipsTitle--h2">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'sign_up', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h1>
|
||||
<p class="i-color_soft i-font-size_2 i-font-weight_500">
|
||||
<p class="i-color_soft i-font-size_2 i-font-weight_500 i-margin-top_1">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'existing_user', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -6869,8 +6879,8 @@ if ( $buttonMethods ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
<div class="ipsColumns__secondary i-basis_340 i-padding_3" id="elRegisterSocial">
|
||||
<h2 class="ipsTitle ipsTitle--h4">
|
||||
<div class="ipsColumns__secondary i-basis_360 i-padding_3" id="elRegisterSocial">
|
||||
<h2 class="ipsTitle ipsTitle--h3">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reg_start_faster', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -6893,7 +6903,7 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Session::i()->csrfKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<div class="i-flex i-flex-wrap_wrap i-gap_2 i-margin-top_3">
|
||||
<div class="i-grid i-gap_1 i-margin-top_3">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -7137,7 +7147,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $unread ):
|
||||
if ( $unread or $iPostedIn ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href="
|
||||
@@ -7163,29 +7173,22 @@ IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-linkType="star"
|
||||
" data-linkType="star" class="ipsIndicator
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $iPostedIn ):
|
||||
$return .= <<<IPSCONTENT
|
||||
data-iPostedIn
|
||||
ipsIndicator--participated
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
title='
|
||||
" aria-label='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'first_unread_post', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-ipsTooltip class='ipsIndicator'></a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $iPostedIn ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class='ipsIndicator ipsIndicator--read ipsIndicator--participated'></span>
|
||||
' data-ipsTooltip></a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -7486,7 +7489,7 @@ $return .= <<<IPSCONTENT
|
||||
'><i class='fa-regular fa-clock'></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $indexData['index_date_created'] instanceof \IPS\DateTime ) ? $indexData['index_date_created'] : \IPS\DateTime::ts( $indexData['index_date_created'] );$return .= $val->html();
|
||||
$val = ( $indexData['index_date_created'] instanceof \IPS\DateTime ) ? $indexData['index_date_created'] : \IPS\DateTime::ts( $indexData['index_date_created'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
@@ -7904,7 +7907,7 @@ $return .= <<<IPSCONTENT
|
||||
' rel="nofollow"><i class='fa-regular fa-clock'></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $indexData['index_date_created'] instanceof \IPS\DateTime ) ? $indexData['index_date_created'] : \IPS\DateTime::ts( $indexData['index_date_created'] );$return .= $val->html();
|
||||
$val = ( $indexData['index_date_created'] instanceof \IPS\DateTime ) ? $indexData['index_date_created'] : \IPS\DateTime::ts( $indexData['index_date_created'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
@@ -8236,7 +8239,7 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div id='elSettingsTabs' data-ipsTabBar data-ipsTabBar-contentArea='#elProfileTabContent' data-ipsTabBar-itemSelector='[data-ipsSideMenu] .ipsSideMenu_item' data-ipsTabBar-activeClass='ipsSideMenu_itemActive'>
|
||||
<div id='elSettingsTabs' data-ipsTabBar data-ipsTabBar-contentArea='#elSettingsTabContent' data-ipsTabBar-itemSelector='[data-ipsSideMenu] .ipsSideMenu_item' data-ipsTabBar-activeClass='ipsSideMenu_itemActive'>
|
||||
<div class='ipsColumns ipsColumns--stack ipsBox ipsColumns--lines ipsPull'>
|
||||
<div class='ipsColumns__secondary i-basis_320 i-padding_2'>
|
||||
<div class='ipsSideMenu' data-ipsSideMenu>
|
||||
@@ -8437,7 +8440,7 @@ $return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</div>
|
||||
<div class='ipsColumns__primary'>
|
||||
<section id='elProfileTabContent'>
|
||||
<section id='elSettingsTabContent'>
|
||||
<div id="ipsTabs_elSettingsTabs_setting_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $activeTab, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -8458,7 +8461,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-background_2 i-padding_3 i-border-bottom_3'>
|
||||
<div class='i-padding_3 i-border-bottom_3'>
|
||||
<h2 class="ipsTitle ipsTitle--h3">
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -8528,7 +8531,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $app['issued'] instanceof \IPS\DateTime ) ? $app['issued'] : \IPS\DateTime::ts( $app['issued'] );$return .= $val->html();
|
||||
$val = ( $app['issued'] instanceof \IPS\DateTime ) ? $app['issued'] : \IPS\DateTime::ts( $app['issued'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</span>
|
||||
@@ -8615,7 +8618,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="i-background_2 i-padding_3 i-border-bottom_3">
|
||||
<div class="i-padding_3 i-border-bottom_3">
|
||||
<h2 class="ipsTitle ipsTitle--h3">
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -9108,7 +9111,7 @@ $return .= <<<IPSCONTENT
|
||||
<span class="i-color_soft">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $details['date'] instanceof \IPS\DateTime ) ? $details['date'] : \IPS\DateTime::ts( $details['date'] );$return .= $val->html();
|
||||
$val = ( $details['date'] instanceof \IPS\DateTime ) ? $details['date'] : \IPS\DateTime::ts( $details['date'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</li>
|
||||
@@ -9312,7 +9315,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-background_2 i-padding_3 i-border-bottom_3'>
|
||||
<div class='i-padding_3 i-border-bottom_3'>
|
||||
<h2 class='ipsTitle ipsTitle--h3'>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -9320,20 +9323,20 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'c
|
||||
$return .= <<<IPSCONTENT
|
||||
</h2>
|
||||
</div>
|
||||
<div class='i-padding_3'>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $form ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Settings::i()->reg_auth_type == 'user' or \IPS\Settings::i()->reg_auth_type == 'admin_user' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul class='ipsList ipsList--bullets'>
|
||||
<div class="i-padding_3">
|
||||
<ol class='ipsList ipsList--bullets'>
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -9348,34 +9351,34 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'c
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
<hr class='ipsHr'>
|
||||
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$form}
|
||||
|
||||
{$form}
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $login ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<br><hr class='ipsHr'>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "system", \IPS\Request::i()->app )->reauthenticate( $login, $error );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="i-padding_3">
|
||||
<div>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -9384,7 +9387,6 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'c
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
<ol class='ipsList ipsList--bullets i-margin-top_3'>
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
@@ -9411,13 +9413,13 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'c
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
@@ -9427,7 +9429,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-background_2 i-padding_3 i-border-bottom_3'>
|
||||
<div class='i-padding_3 i-border-bottom_3'>
|
||||
<h2 class='ipsTitle ipsTitle--h3'>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -9622,7 +9624,7 @@ IPSCONTENT;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<div class='i-flex i-align-items_center i-gap_2 i-background_2 i-padding_3 i-border-bottom_3'>
|
||||
<div class='i-flex i-align-items_center i-gap_2 i-padding_3 i-border-bottom_3'>
|
||||
<h2 class='ipsTitle ipsTitle--h3'>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $method->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -9899,7 +9901,7 @@ IPSCONTENT;
|
||||
if ( \count( $handlers ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-background_2 i-padding_3 i-border-bottom_3'>
|
||||
<div class='i-padding_3 i-border-bottom_3'>
|
||||
<h2 class="ipsTitle ipsTitle--h3">
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -10025,7 +10027,7 @@ IPSCONTENT;
|
||||
if ( \IPS\Member::loggedIn()->group['g_hide_online_list'] !== 2 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-background_2 i-padding_3 i-border-bottom_3
|
||||
<div class='i-padding_3 i-border-bottom_3
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count( $handlers ) ):
|
||||
@@ -10265,7 +10267,7 @@ IPSCONTENT;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<div class='i-background_2 i-padding_3 i-border-bottom_3'>
|
||||
<div class='i-padding_3 i-border-bottom_3'>
|
||||
<h2 class="ipsTitle ipsTitle--h3">
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -10273,14 +10275,12 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'u
|
||||
$return .= <<<IPSCONTENT
|
||||
</h2>
|
||||
</div>
|
||||
<div class='i-padding_3'>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "system", \IPS\Request::i()->app )->reauthenticate( $login, $error, 'mfa_ucp_blurb_password' );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
@@ -10553,7 +10553,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-background_2 i-padding_3 i-border-bottom_3'>
|
||||
<div class='i-padding_3 i-border-bottom_3'>
|
||||
<h2 class='ipsTitle ipsTitle--h3'>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -10562,31 +10562,35 @@ $return .= <<<IPSCONTENT
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div class='i-padding_3'>
|
||||
<div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->passwordResetForced() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class='ipsMessage ipsMessage--warning'>
|
||||
<div class='i-padding_3'>
|
||||
<p class='ipsMessage ipsMessage--warning'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'password_reset_required', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( isset( \IPS\Widget\Request::i()->success ) AND \IPS\Widget\Request::i()->success == 1 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class="ipsMessage ipsMessage--success">
|
||||
<div class='i-padding_3'>
|
||||
<p class="ipsMessage ipsMessage--success">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'password_changed', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -10606,41 +10610,42 @@ IPSCONTENT;
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div>
|
||||
|
||||
<div class='i-padding_3'>
|
||||
<div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_password_admin_1', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
<ol class='ipsList ipsList--bullets i-margin-top_3'>
|
||||
<li>
|
||||
</div>
|
||||
<ol class='ipsList ipsList--bullets i-margin-top_3'>
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_password_admin_2', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
<li>
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array(\IPS\Member::loggedIn()->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_password_admin_3', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
<li>
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_password_admin_4', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
<li>
|
||||
<li>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_password_admin_5', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
</ol>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -10952,7 +10957,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-background_2 i-padding_3 i-border-bottom_3'>
|
||||
<div class='i-padding_3 i-border-bottom_3'>
|
||||
<h2 class="ipsTitle ipsTitle--h3">
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -11153,7 +11158,7 @@ IPSCONTENT;
|
||||
if ( $canChangePassword ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsInnerBox i-margin-bottom_3">
|
||||
<div class="ipsBox ipsBox--changePassword i-margin-bottom_3">
|
||||
<h2 class="ipsBox__header">
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -11169,19 +11174,19 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 's
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
<div class="i-margin-top_3">
|
||||
<a href="
|
||||
</div>
|
||||
<div class="ipsSubmitRow">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&area=password", null, "settings_password", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" target="_blank" rel="noopener" class="ipsButton ipsButton--primary ipsButton--small">
|
||||
" target="_blank" rel="noopener" class="ipsButton ipsButton--primary">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_password', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -11196,7 +11201,7 @@ IPSCONTENT;
|
||||
if ( $canConfigureMfa ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsInnerBox i-margin-bottom_3">
|
||||
<div class="ipsBox ipsBox--canConfigureMfa i-margin-bottom_3">
|
||||
<h2 class="ipsBox__header">
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -11236,19 +11241,19 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
<div class="i-margin-top_3">
|
||||
<a href="
|
||||
</div>
|
||||
<div class="ipsSubmitRow">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&area=mfa", null, "settings_mfa", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" target="_blank" rel="noopener" class="ipsButton ipsButton--primary ipsButton--small">
|
||||
" target="_blank" rel="noopener" class="ipsButton ipsButton--primary">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_settings_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -11263,7 +11268,7 @@ IPSCONTENT;
|
||||
if ( \count( $loginMethods ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsInnerBox i-margin-bottom_3">
|
||||
<div class="ipsBox ipsBox--secureAccount i-margin-bottom_3">
|
||||
<h2 class="ipsBox__header">
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -11338,7 +11343,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&area=login&service={$id}", null, "settings_login", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButton ipsButton--primary ipsButton--small">
|
||||
" class="ipsButton ipsButton--primary">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'profilesync_configure', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -11369,7 +11374,7 @@ IPSCONTENT;
|
||||
if ( $oauthApps ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsInnerBox i-margin-bottom_3">
|
||||
<div class="ipsBox ipsBox--oauthApps i-margin-bottom_3">
|
||||
<h2 class="ipsBox__header">
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -11385,19 +11390,19 @@ $pluralize = array( $oauthApps ); $return .= \IPS\Member::loggedIn()->language()
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
<div class="i-margin-top_3">
|
||||
<a href="
|
||||
</div>
|
||||
<div class="ipsSubmitRow">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&area=apps", null, "settings_apps", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" target="_blank" rel="noopener" class="ipsButton ipsButton--primary ipsButton--small">
|
||||
" target="_blank" rel="noopener" class="ipsButton ipsButton--primary">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'review_oauth_apps', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -11545,7 +11550,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-background_2 i-padding_3 i-border-bottom_3'>
|
||||
<div class='i-padding_3 i-border-bottom_3'>
|
||||
<h2 class='ipsTitle ipsTitle--h3'>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -11581,7 +11586,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-background_2 i-padding_3 i-border-bottom_3'>
|
||||
<div class='i-padding_3 i-border-bottom_3'>
|
||||
<h2 class='ipsTitle ipsTitle--h3'>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -11955,7 +11960,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->__get( $row::$databaseColumnMap['date'] ) instanceof \IPS\DateTime ) ? $row->__get( $row::$databaseColumnMap['date'] ) : \IPS\DateTime::ts( $row->__get( $row::$databaseColumnMap['date'] ) );$return .= $val->html();
|
||||
$val = ( $row->__get( $row::$databaseColumnMap['date'] ) instanceof \IPS\DateTime ) ? $row->__get( $row::$databaseColumnMap['date'] ) : \IPS\DateTime::ts( $row->__get( $row::$databaseColumnMap['date'] ) );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
@@ -570,7 +570,7 @@ $return .= <<<IPSCONTENT
|
||||
' data-role='followDate' hidden><i class='fa-regular fa-clock'></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->_followData['follow_added'] instanceof \IPS\DateTime ) ? $row->_followData['follow_added'] : \IPS\DateTime::ts( $row->_followData['follow_added'] );$return .= $val->html();
|
||||
$val = ( $row->_followData['follow_added'] instanceof \IPS\DateTime ) ? $row->_followData['follow_added'] : \IPS\DateTime::ts( $row->_followData['follow_added'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
<li title='
|
||||
@@ -874,7 +874,7 @@ $return .= <<<IPSCONTENT
|
||||
' data-role='followDate' hidden><i class='fa-regular fa-clock'></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->_followData['follow_added'] instanceof \IPS\DateTime ) ? $row->_followData['follow_added'] : \IPS\DateTime::ts( $row->_followData['follow_added'] );$return .= $val->html();
|
||||
$val = ( $row->_followData['follow_added'] instanceof \IPS\DateTime ) ? $row->_followData['follow_added'] : \IPS\DateTime::ts( $row->_followData['follow_added'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
<li title='
|
||||
@@ -1856,7 +1856,7 @@ $return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->mapped('last_comment') instanceof \IPS\DateTime ) ? $row->mapped('last_comment') : \IPS\DateTime::ts( $row->mapped('last_comment') );$return .= $val->html();
|
||||
$val = ( $row->mapped('last_comment') instanceof \IPS\DateTime ) ? $row->mapped('last_comment') : \IPS\DateTime::ts( $row->mapped('last_comment') );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
|
||||
@@ -1868,7 +1868,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->mapped('date') instanceof \IPS\DateTime ) ? $row->mapped('date') : \IPS\DateTime::ts( $row->mapped('date') );$return .= $val->html();
|
||||
$val = ( $row->mapped('date') instanceof \IPS\DateTime ) ? $row->mapped('date') : \IPS\DateTime::ts( $row->mapped('date') );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -1983,7 +1983,7 @@ $return .= <<<IPSCONTENT
|
||||
<span class='i-color_soft i-font-weight_normal'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $subResult->mapped('date') instanceof \IPS\DateTime ) ? $subResult->mapped('date') : \IPS\DateTime::ts( $subResult->mapped('date') );$return .= $val->html();
|
||||
$val = ( $subResult->mapped('date') instanceof \IPS\DateTime ) ? $subResult->mapped('date') : \IPS\DateTime::ts( $subResult->mapped('date') );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></strong>
|
||||
</a>
|
||||
@@ -2011,7 +2011,7 @@ $return .= <<<IPSCONTENT
|
||||
<span class='i-color_soft i-font-weight_normal'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $subResult->mapped('date') instanceof \IPS\DateTime ) ? $subResult->mapped('date') : \IPS\DateTime::ts( $subResult->mapped('date') );$return .= $val->html();
|
||||
$val = ( $subResult->mapped('date') instanceof \IPS\DateTime ) ? $subResult->mapped('date') : \IPS\DateTime::ts( $subResult->mapped('date') );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></strong>
|
||||
</a>
|
||||
@@ -2101,8 +2101,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( md5($table->baseUrl->stripQueryString($table->getPaginationKey())), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-template='core/front/tables/table'>
|
||||
<!-- core/front/tables/table -->
|
||||
'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
|
||||
@@ -558,7 +558,7 @@ $return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->mapped('last_comment') instanceof \IPS\DateTime ) ? $row->mapped('last_comment') : \IPS\DateTime::ts( $row->mapped('last_comment') );$return .= $val->html();
|
||||
$val = ( $row->mapped('last_comment') instanceof \IPS\DateTime ) ? $row->mapped('last_comment') : \IPS\DateTime::ts( $row->mapped('last_comment') );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
|
||||
@@ -570,7 +570,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->mapped('date') instanceof \IPS\DateTime ) ? $row->mapped('date') : \IPS\DateTime::ts( $row->mapped('date') );$return .= $val->html();
|
||||
$val = ( $row->mapped('date') instanceof \IPS\DateTime ) ? $row->mapped('date') : \IPS\DateTime::ts( $row->mapped('date') );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -1343,7 +1343,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->mapped('date') instanceof \IPS\DateTime ) ? $row->mapped('date') : \IPS\DateTime::ts( $row->mapped('date') );$return .= $val->html();
|
||||
$val = ( $row->mapped('date') instanceof \IPS\DateTime ) ? $row->mapped('date') : \IPS\DateTime::ts( $row->mapped('date') );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
@@ -1361,7 +1361,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div id="elTagHeader" class='ipsBox ipsPageHeader ipsPull'>
|
||||
<div id="elTagHeader" class='ipsBox ipsBox--tagsHeader ipsPageHeader ipsPull'>
|
||||
{$tag->coverPhoto()}
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -1414,7 +1414,7 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
<div id='elTagControls' class="ipsBox ipsTagsFeed ipsPull">
|
||||
<div id='elTagControls' class="ipsBox ipsBox--tagsFeed ipsTagsFeed ipsPull ipsBox--clip">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
|
||||
@@ -81,84 +81,107 @@ IPSCONTENT;
|
||||
if ( $category->hasSettings() and $category->hasColors() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<editor-tabs>
|
||||
<button type='button' aria-controls='
|
||||
<i-tabs class="ipsTabs ipsTabs--stretch" id="ipsTabs-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
__settings' aria-expanded='true' data-ipscontrols><i class='fa-solid fa-sliders'></i>
|
||||
" data-ipsTabBar data-ipsTabBar-contentarea="#ipsTabs-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
-content">
|
||||
<div role='tablist'>
|
||||
<button type="button" class="ipsTabs__tab" id="ipsTabs-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
_settings" role="tab" aria-controls="ipsTabs-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
_settings_panel" aria-selected="true"><i class='fa-solid fa-sliders'></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_panel_settings', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button>
|
||||
<button type='button' aria-controls='
|
||||
<button type="button" class="ipsTabs__tab" id='ipsTabs-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
__colors' aria-expanded='false' data-ipscontrols><i class='fa-solid fa-palette'></i>
|
||||
_colors' role="tab" aria-controls="ipsTabs-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
_colors_panel" aria-selected="false"><i class='fa-solid fa-palette'></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_panel_colors', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button>
|
||||
</editor-tabs>
|
||||
</div>
|
||||
</i-tabs>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<div id='ipsTabs-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
-content'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $category->hasSettings() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<editor-tab-content id='
|
||||
<editor-tab-content id='ipsTabs-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
__settings' data-ips-hidden-group='
|
||||
_settings_panel' class='ipsTabs__panel' role="tabpanel" aria-labelledby="ipsTabs-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
|
||||
_settings">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $category->settings() as $setting ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$setting->editorHtml()}
|
||||
|
||||
{$setting->editorHtml()}
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</editor-tab-content>
|
||||
|
||||
</editor-tab-content>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $category->hasColors() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<editor-tab-content id='
|
||||
<editor-tab-content id='ipsTabs-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
__colors' data-ips-hidden-group='
|
||||
_colors_panel' class='ipsTabs__panel' role="tabpanel" aria-labelledby="ipsTabs-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'
|
||||
_colors"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $category->hasSettings() ):
|
||||
@@ -169,26 +192,27 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $category->colors() as $color ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$color->editorHtml()}
|
||||
|
||||
{$color->editorHtml()}
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</editor-tab-content>
|
||||
|
||||
</editor-tab-content>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</editor-panel>
|
||||
|
||||
@@ -1447,30 +1471,33 @@ $return .= <<<IPSCONTENT
|
||||
</h2>
|
||||
</div>
|
||||
</header>
|
||||
<editor-tabs>
|
||||
<button type='button' aria-controls='content__colorSelector__swatches' aria-expanded='true' data-ipscontrols><i class="fa-solid fa-swatchbook"></i>
|
||||
<i-tabs class="ipsTabs ipsTabs--stretch" id="content__colorSelector" data-ipsTabBar data-ipsTabBar-contentarea="#content__colorSelector-content">
|
||||
<div role='tablist'>
|
||||
<button type="button" class="ipsTabs__tab" id="content__colorSelector__swatches" role="tab" aria-controls="content__colorSelector__swatches_panel" aria-selected="true"><i class="fa-solid fa-swatchbook"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_swatches', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button>
|
||||
<button type='button' aria-controls='content__colorSelector__colorPicker' aria-expanded='false' data-ipscontrols><i class="fa-solid fa-eye-dropper"></i>
|
||||
<button type="button" class="ipsTabs__tab" id='content__colorSelector__colorPicker' role="tab" aria-controls="content__colorSelector__colorPicker_panel" aria-selected="false"><i class="fa-solid fa-eye-dropper"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_color_picker', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button>
|
||||
</editor-tabs>
|
||||
<editor-tab-content id='content__colorSelector__swatches' data-ips-hidden-group='swatch-color-picker'>
|
||||
<div data-swatches>
|
||||
<ul class='theme-editor__swatches' data-swatch-category='base'>
|
||||
|
||||
</div>
|
||||
</i-tabs>
|
||||
<div id='content__colorSelector-content'>
|
||||
<editor-tab-content id='content__colorSelector__swatches_panel' class='ipsTabs__panel' role="tabpanel" aria-labelledby="content__colorSelector__swatches">
|
||||
<div data-swatches>
|
||||
<ul class='theme-editor__swatches' data-swatch-category='base'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
for ( $i=1; $i<=6; $i++ ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-base_
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-base_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $i, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -1488,21 +1515,21 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $i, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button></li>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endfor;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
<ul class='theme-editor__swatches' data-swatch-category='contrast'>
|
||||
|
||||
</ul>
|
||||
<ul class='theme-editor__swatches' data-swatch-category='contrast'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
for ( $i=1; $i<=6; $i++ ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-base-contrast_
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-base-contrast_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $i, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -1520,85 +1547,86 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $i, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button></li>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endfor;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
<ul class='theme-editor__swatches' data-swatch-category='brand'>
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-primary)' style='--swatch:var(--i-primary);' data-on-click="swatchClick">
|
||||
</ul>
|
||||
<ul class='theme-editor__swatches' data-swatch-category='brand'>
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-primary)' style='--swatch:var(--i-primary);' data-on-click="swatchClick">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_primary', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button></li>
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-primary-light)' style='--swatch:var(--i-primary-light);' data-on-click="swatchClick">
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-primary-light)' style='--swatch:var(--i-primary-light);' data-on-click="swatchClick">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_primary_light', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button></li>
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-primary-dark)' style='--swatch:var(--i-primary-dark);' data-on-click="swatchClick">
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-primary-dark)' style='--swatch:var(--i-primary-dark);' data-on-click="swatchClick">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_primary_dark', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button></li>
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-color_primary)' style='--swatch:var(--i-color_primary);' data-on-click="swatchClick">
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-color_primary)' style='--swatch:var(--i-color_primary);' data-on-click="swatchClick">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_primary_text', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button></li>
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-primary-contrast)' style='--swatch:var(--i-primary-contrast);' data-on-click="swatchClick">
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-primary-contrast)' style='--swatch:var(--i-primary-contrast);' data-on-click="swatchClick">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_primary_contrast', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button></li>
|
||||
</ul>
|
||||
<ul class='theme-editor__swatches' data-swatch-category='brand'>
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-secondary)' style='--swatch:var(--i-secondary);' data-on-click="swatchClick">
|
||||
</ul>
|
||||
<ul class='theme-editor__swatches' data-swatch-category='brand'>
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-secondary)' style='--swatch:var(--i-secondary);' data-on-click="swatchClick">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_secondary', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button></li>
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-secondary-light)' style='--swatch:var(--i-secondary-light);' data-on-click="swatchClick">
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-secondary-light)' style='--swatch:var(--i-secondary-light);' data-on-click="swatchClick">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_secondary_light', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button></li>
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-secondary-dark)' style='--swatch:var(--i-secondary-dark);' data-on-click="swatchClick">
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-secondary-dark)' style='--swatch:var(--i-secondary-dark);' data-on-click="swatchClick">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_secondary_dark', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button></li>
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-color_secondary)' style='--swatch:var(--i-color_secondary);' data-on-click="swatchClick">
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-color_secondary)' style='--swatch:var(--i-color_secondary);' data-on-click="swatchClick">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_secondary_text', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button></li>
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-secondary-contrast)' style='--swatch:var(--i-secondary-contrast);' data-on-click="swatchClick">
|
||||
<li><button class="theme-editor__swatch" type="button" data-swatch value='var(--i-secondary-contrast)' style='--swatch:var(--i-secondary-contrast);' data-on-click="swatchClick">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_secondary_contrast', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button></li>
|
||||
</ul>
|
||||
</div>
|
||||
</editor-tab-content>
|
||||
<editor-tab-content id='content__colorSelector__colorPicker' data-ips-hidden-group='swatch-color-picker' hidden>
|
||||
<div data-color-picker>
|
||||
<color-picker></color-picker>
|
||||
<input type='text' id="color-picker-text" data-color-picker-text data-on-change="colorPickerTextBlur">
|
||||
</div>
|
||||
</editor-tab-content>
|
||||
</ul>
|
||||
</div>
|
||||
</editor-tab-content>
|
||||
<editor-tab-content id='content__colorSelector__colorPicker_panel' class='ipsTabs__panel' role="tabpanel" aria-labelledby="content__colorSelector__colorPicker" hidden>
|
||||
<div data-color-picker>
|
||||
<color-picker></color-picker>
|
||||
<input type='text' id="color-picker-text" data-color-picker-text data-on-change="colorPickerTextBlur">
|
||||
</div>
|
||||
</editor-tab-content>
|
||||
</div>
|
||||
</div>
|
||||
</editor-panel>
|
||||
|
||||
@@ -1624,18 +1652,20 @@ $return .= <<<IPSCONTENT
|
||||
<editor-tab-content>
|
||||
|
||||
<theme-setting data-setting='light__i-base-h' data-type='number'>
|
||||
<label for='light__i-base-h__num'>
|
||||
<div class="theme-editor__align-setting">
|
||||
<label for='light__i-base-h__num'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_hue', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</label>
|
||||
<input type='number' inputmode='numeric' data-range-output='light__i-base-h' id='light__i-base-h__num' value='
|
||||
<input type='number' inputmode='numeric' data-range-output='light__i-base-h' id='light__i-base-h__num' value='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getParsedCssVariableFromKey( 'light__i-base-h' );
|
||||
$return .= <<<IPSCONTENT
|
||||
' min="0" max="360" data-on-change="syncInputsWithPseudo">
|
||||
</div>
|
||||
<input type='range' id='light__i-base-h' name='light__i-base-h' value='
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1644,18 +1674,20 @@ $return .= <<<IPSCONTENT
|
||||
' min="0" max="360" data-on-input="changingRangeInput" data-on-change="settingHasBeenChanged">
|
||||
</theme-setting>
|
||||
<theme-setting data-setting='light__i-base-c' data-type='number'>
|
||||
<label for='light__i-base-c__num'>
|
||||
<div class="theme-editor__align-setting">
|
||||
<label for='light__i-base-c__num'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_chroma', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</label>
|
||||
<input type='number' inputmode='numeric' data-range-output='light__i-base-c' id='light__i-base-c__num' value='
|
||||
<input type='number' inputmode='numeric' data-range-output='light__i-base-c' id='light__i-base-c__num' value='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getParsedCssVariableFromKey( 'light__i-base-c' );
|
||||
$return .= <<<IPSCONTENT
|
||||
' min="0" max="100" data-on-change="syncInputsWithPseudo">
|
||||
</div>
|
||||
<input type='range' id='light__i-base-c' name='light__i-base-c' value='
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1664,18 +1696,20 @@ $return .= <<<IPSCONTENT
|
||||
' min="0" max="100" data-on-input="changingRangeInput" data-on-change="settingHasBeenChanged">
|
||||
</theme-setting>
|
||||
<theme-setting data-setting='light__i-base-l' data-type='number'>
|
||||
<label for='light__i-base-l__num'>
|
||||
<div class="theme-editor__align-setting">
|
||||
<label for='light__i-base-l__num'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_lightness', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</label>
|
||||
<input type='number' inputmode='numeric' data-range-output='light__i-base-l' id='light__i-base-l__num' value='
|
||||
<input type='number' inputmode='numeric' data-range-output='light__i-base-l' id='light__i-base-l__num' value='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getParsedCssVariableFromKey( 'light__i-base-l' );
|
||||
$return .= <<<IPSCONTENT
|
||||
' min="0" max="100" data-on-change="syncInputsWithPseudo">
|
||||
</div>
|
||||
<input type='range' id='light__i-base-l' name='light__i-base-l' value='
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1685,18 +1719,20 @@ $return .= <<<IPSCONTENT
|
||||
</theme-setting>
|
||||
|
||||
<theme-setting data-setting='dark__i-base-h' data-type='number'>
|
||||
<label for='dark__i-base-h__num'>
|
||||
<div class="theme-editor__align-setting">
|
||||
<label for='dark__i-base-h__num'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_hue', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</label>
|
||||
<input type='number' inputmode='numeric' data-range-output='dark__i-base-h' id='dark__i-base-h__num' value='
|
||||
<input type='number' inputmode='numeric' data-range-output='dark__i-base-h' id='dark__i-base-h__num' value='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getParsedCssVariableFromKey( 'dark__i-base-h' );
|
||||
$return .= <<<IPSCONTENT
|
||||
' min="0" max="360" data-on-change="syncInputsWithPseudo">
|
||||
</div>
|
||||
<input type='range' id='dark__i-base-h' name='dark__i-base-h' value='
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1705,18 +1741,20 @@ $return .= <<<IPSCONTENT
|
||||
' min="0" max="360" data-on-input="changingRangeInput" data-on-change="settingHasBeenChanged">
|
||||
</theme-setting>
|
||||
<theme-setting data-setting='dark__i-base-c' data-type='number'>
|
||||
<label for='dark__i-base-c__num'>
|
||||
<div class="theme-editor__align-setting">
|
||||
<label for='dark__i-base-c__num'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_chroma', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</label>
|
||||
<input type='number' inputmode='numeric' data-range-output='dark__i-base-c' id='dark__i-base-c__num' value='
|
||||
<input type='number' inputmode='numeric' data-range-output='dark__i-base-c' id='dark__i-base-c__num' value='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getParsedCssVariableFromKey( 'dark__i-base-c' );
|
||||
$return .= <<<IPSCONTENT
|
||||
' min="0" max="100" data-on-change="syncInputsWithPseudo">
|
||||
</div>
|
||||
<input type='range' id='dark__i-base-c' name='dark__i-base-c' value='
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1725,18 +1763,20 @@ $return .= <<<IPSCONTENT
|
||||
' min="0" max="100" data-on-input="changingRangeInput" data-on-change="settingHasBeenChanged">
|
||||
</theme-setting>
|
||||
<theme-setting data-setting='dark__i-base-l' data-type='number'>
|
||||
<label for='dark__i-base-l__num'>
|
||||
<div class="theme-editor__align-setting">
|
||||
<label for='dark__i-base-l__num'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_lightness', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</label>
|
||||
<input type='number' inputmode='numeric' data-range-output='dark__i-base-l' id='dark__i-base-l__num' value='
|
||||
<input type='number' inputmode='numeric' data-range-output='dark__i-base-l' id='dark__i-base-l__num' value='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getParsedCssVariableFromKey( 'dark__i-base-l' );
|
||||
$return .= <<<IPSCONTENT
|
||||
' min="0" max="100" data-on-change="syncInputsWithPseudo">
|
||||
</div>
|
||||
<input type='range' id='dark__i-base-l' name='dark__i-base-l' value='
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1806,7 +1846,7 @@ $return .= <<<IPSCONTENT
|
||||
<textarea data-ipscodebox data-ipscodebox-allowed-languages="["ipscss"]" class='theme-editor__customCSS' wrap="off" placeholder='/* Enter custom CSS here */' name="set__customCSS" id="customCSS" spellcheck="false" autocorrect="off" autocapitalize="off" translate="no" aria-label="Custom CSS">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->custom_css;
|
||||
$return .= \IPS\Theme::i()->getCustomCssForThemeEditorCodebox();
|
||||
$return .= <<<IPSCONTENT
|
||||
</textarea>
|
||||
</ips-code-editor>
|
||||
|
||||
@@ -12,11 +12,37 @@ IPSCONTENT;
|
||||
if ( $title ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<h3 class="ipsWidget__header">
|
||||
<div class="ipsWidget__header">
|
||||
<h3>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h3>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $isCarousel ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$carouselID = 'widget-achievements_' . mt_rand();
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->carouselNavigation( $carouselID );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -29,7 +55,31 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $layout, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsData--achievements'>
|
||||
ipsData--achievements
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $isCarousel ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsData--carousel
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
'
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $isCarousel ):
|
||||
$return .= <<<IPSCONTENT
|
||||
id='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $carouselID, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' tabindex="0"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -37,27 +87,29 @@ foreach ( $result as $row ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsData__item'>
|
||||
<div class='ipsData__image'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $row['member'], 'fluid', '', '' );
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $row['type'] === 'badge' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsData__icon'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $row['member'], 'fluid', '', '' );
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
<div class="ipsData__content">
|
||||
<div class='ipsData__main'>
|
||||
<div class='ipsData__title'><h4>
|
||||
<div class="i-flex i-gap_2">
|
||||
<div class="i-flex_11">
|
||||
<div class='ipsData__title'><h4>
|
||||
IPSCONTENT;
|
||||
|
||||
$htmlsprintf = array($row['member']->link(), $row['badge']->_title); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'block_achievements_earned_badge', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h4></div>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! empty( $row['badge']->awardDescription ) ):
|
||||
@@ -72,44 +124,44 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class="ipsData__meta">
|
||||
<p class="ipsData__meta">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row['date'] instanceof \IPS\DateTime ) ? $row['date'] : \IPS\DateTime::ts( $row['date'] );$return .= $val->html();
|
||||
$val = ( $row['date'] instanceof \IPS\DateTime ) ? $row['date'] : \IPS\DateTime::ts( $row['date'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</div>
|
||||
<div class='i-flex_00 cAchievementsWidget__badge'>{$row['badge']->html('')}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='cAchievementsWidget__badge'>{$row['badge']->html('')}</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsData__icon'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $row['member'], 'fluid', '', '' );
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
<div class="ipsData__content">
|
||||
<div class='ipsData__main'>
|
||||
<div class='ipsData__title'><h4>
|
||||
<div class="i-flex i-gap_2">
|
||||
<div class="i-flex_11">
|
||||
<div class='ipsData__title'><h4>
|
||||
IPSCONTENT;
|
||||
|
||||
$htmlsprintf = array($row['member']->link(), $row['rank']->_title); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'block_achievements_earned_rank', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h4></div>
|
||||
<p class="ipsData__meta">
|
||||
<p class="ipsData__meta">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row['date'] instanceof \IPS\DateTime ) ? $row['date'] : \IPS\DateTime::ts( $row['date'] );$return .= $val->html();
|
||||
$val = ( $row['date'] instanceof \IPS\DateTime ) ? $row['date'] : \IPS\DateTime::ts( $row['date'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</div>
|
||||
<div class='i-flex_00 cAchievementsWidget__badge'>{$row['rank']->html('')}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='cAchievementsWidget__badge'>{$row['rank']->html('')}</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -135,7 +187,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div data-controller='core.front.core.onlineUsersWidget' style="border-radius:inherit">
|
||||
<div style="border-radius:inherit">
|
||||
<h3 class='ipsWidget__header'>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -167,33 +219,11 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( isset($orientation) and $orientation == 'horizontal' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class='ipsWidget__header-secondary' data-memberCount="
|
||||
<span class='ipsWidget__header-secondary i-color_soft' data-memberCount="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $memberCount, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $memberCount ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'block_user_online_info', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class='ipsWidget__header-secondary i-color_soft' data-memberCount="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $memberCount, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipstooltip title='
|
||||
" data-ipsTooltip title='
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $memberCount ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'block_user_online_info', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
@@ -203,12 +233,6 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $memberCount, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</h3>
|
||||
<div class='ipsWidget__content ipsWidget__padding'>
|
||||
<ul class='ipsList ipsList--csv'>
|
||||
@@ -813,7 +837,12 @@ IPSCONTENT;
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Application::appIsEnabled('cms') ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -827,6 +856,12 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme::i()->getTemplate( "widgets", "core", 'front' )->blockGroup( $customBlocks, $customTitle, $favorites, true );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
@@ -859,38 +894,26 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! $config['border'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$block = \IPS\Widget\Request::i()->blockID;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
.ipsBox[data-blockid="
|
||||
.ipsBox[data-blockid="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $block, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"] {
|
||||
border-width: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
.ipsWidget[data-blockid="
|
||||
border-width: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
.ipsWidget[data-blockid="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $block, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"] {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
background: transparent !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -940,20 +963,10 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="
|
||||
<div class="ipsWidget__customStyles
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $config['class'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! empty($config['border']) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsBox
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -3001,7 +3014,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $item->object()->mapped('date') instanceof \IPS\DateTime ) ? $item->object()->mapped('date') : \IPS\DateTime::ts( $item->object()->mapped('date') );$return .= $val->html();
|
||||
$val = ( $item->object()->mapped('date') instanceof \IPS\DateTime ) ? $item->object()->mapped('date') : \IPS\DateTime::ts( $item->object()->mapped('date') );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
@@ -3034,7 +3047,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $item->added instanceof \IPS\DateTime ) ? $item->added : \IPS\DateTime::ts( $item->added );$return .= $val->html();
|
||||
$val = ( $item->added instanceof \IPS\DateTime ) ? $item->added : \IPS\DateTime::ts( $item->added );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
@@ -3525,7 +3538,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $item->mapped('last_comment') instanceof \IPS\DateTime ) ? $item->mapped('last_comment') : \IPS\DateTime::ts( $item->mapped('last_comment') );$return .= $val->html();
|
||||
$val = ( $item->mapped('last_comment') instanceof \IPS\DateTime ) ? $item->mapped('last_comment') : \IPS\DateTime::ts( $item->mapped('last_comment') );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -3535,7 +3548,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $item->mapped('date') instanceof \IPS\DateTime ) ? $item->mapped('date') : \IPS\DateTime::ts( $item->mapped('date') );$return .= $val->html();
|
||||
$val = ( $item->mapped('date') instanceof \IPS\DateTime ) ? $item->mapped('date') : \IPS\DateTime::ts( $item->mapped('date') );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -3910,7 +3923,7 @@ $return .= <<<IPSCONTENT
|
||||
'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $indexData['index_date_created'] instanceof \IPS\DateTime ) ? $indexData['index_date_created'] : \IPS\DateTime::ts( $indexData['index_date_created'] );$return .= $val->html();
|
||||
$val = ( $indexData['index_date_created'] instanceof \IPS\DateTime ) ? $indexData['index_date_created'] : \IPS\DateTime::ts( $indexData['index_date_created'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
@@ -4102,21 +4115,20 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $containerTitle ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsStreamItem__summary'>
|
||||
|
||||
<div class='ipsStreamItem__summary'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $indexData['index_title'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span data-ipsTooltip title='
|
||||
<span data-ipsTooltip title='
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$itemClass::$title}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -4126,13 +4138,13 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $itemClass::$icon, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'></i></span>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span data-ipsTooltip title='
|
||||
<span data-ipsTooltip title='
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$indexData['index_class']::$title}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -4142,13 +4154,13 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $indexData['index_class']::$icon, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'></i></span>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $summaryLanguage, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -4157,14 +4169,14 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $containerUrl, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'>{$containerTitle}</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -4227,7 +4239,7 @@ $return .= <<<IPSCONTENT
|
||||
'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $indexData['index_date_created'] instanceof \IPS\DateTime ) ? $indexData['index_date_created'] : \IPS\DateTime::ts( $indexData['index_date_created'] );$return .= $val->html();
|
||||
$val = ( $indexData['index_date_created'] instanceof \IPS\DateTime ) ? $indexData['index_date_created'] : \IPS\DateTime::ts( $indexData['index_date_created'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
@@ -5061,7 +5073,7 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div data-controller='core.front.core.onlineUsersWidget' style="border-radius:inherit">
|
||||
<div style="border-radius:inherit">
|
||||
<h3 class='ipsWidget__header'>
|
||||
<span>
|
||||
|
||||
|
||||
@@ -3211,28 +3211,22 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( isset( (\IPS\Request::i()->cookie['editor_supports_drag'])) and (\IPS\Request::i()->cookie['editor_supports_drag']) ?: "true", ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<div class='ipsAttachment_supportDrag'>
|
||||
<span>
|
||||
<div class='ipsAttachment__desc ipsResponsive_showPhone'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'editor_attach_drag', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'editor_attach_desc_small', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
<a href='#'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'editor_attach_choose_drag', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</div>
|
||||
<div class='ipsAttachment_nonDrag'>
|
||||
<button type='button' class='ipsButton ipsButton--soft'>
|
||||
<div class='ipsAttachment__desc ipsResponsive_hidePhone'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'editor_attach_choose_nodrag', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'editor_attach_desc_large', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
<li class="ipsComposeArea__media-other">
|
||||
<a
|
||||
@@ -8181,12 +8175,11 @@ IPSCONTENT;
|
||||
return $return;
|
||||
}
|
||||
|
||||
function radioImages( $name, $value, $required, $options, $disabled=FALSE, $toggles=array(), $descriptions=array(), $warnings=array(), $userSuppliedInput='', $unlimited=NULL, $unlimitedLang=NULL, $htmlId=NULL, $gridspan=3 ) {
|
||||
function radioImages( $name, $value, $required, $options, $disabled=FALSE, $toggles=array(), $descriptions=array(), $warnings=array(), $userSuppliedInput='', $unlimited=NULL, $unlimitedLang=NULL, $htmlId=NULL ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<!-- Used for screenshot selection: Eg. Downloads -->
|
||||
<div class="ipsGrid ipsGrid--forms-radio-images ipsAttachment_fileList ipsAttachment_fileList--radios">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1136,7 +1136,7 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
<div class='i-padding_2 i-background_2 i-border-bottom_3 ipsChart_filters i-flex i-align-items_center i-flex-wrap_wrap i-gap_1'>
|
||||
<div class='i-padding_2 i-background_2 i-border-bottom_3 ipsChart_filters i-flex i-align-items_center i-flex-wrap_wrap i-gap_1 i-border-start-start-radius_box i-border-start-end-radius_box'>
|
||||
<div class='i-flex_91'>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -2074,6 +2074,75 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<!-- Content Config CSS Properties -->
|
||||
<style id="contentOptionsCSS">
|
||||
:root {
|
||||
--i-embed-max-width:
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Settings::i()->max_internalembed_width ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Settings::i()->max_internalembed_width, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
px
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
100%
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
;
|
||||
--i-embed-default-width:
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Settings::i()->max_internalembed_width ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Settings::i()->max_internalembed_width, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
px
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
500px
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
;
|
||||
--i-embed-media-max-width:
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Settings::i()->max_embeddedmedia_width and intval(\IPS\Settings::i()->max_embeddedmedia_width) > 0 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Settings::i()->max_embeddedmedia_width, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
px
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
100%
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2251,6 +2320,33 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\IN_DEV AND defined('ICONPICKER_DEV') AND \ICONPICKER_DEV ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$editorURL = defined('ICONPICKER_DEV_URL') ? \ICONPICKER_DEV_URL : 'http://localhost:5175';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<script type="module">
|
||||
import RefreshRuntime from '{$editorURL}/@react-refresh'
|
||||
RefreshRuntime.injectIntoGlobalHook(window)
|
||||
window.\$RefreshReg$ = () => {}
|
||||
window.\$RefreshSig$ = () => (type) => type
|
||||
window.__vite_plugin_react_preamble_installed__ = true
|
||||
</script>
|
||||
<script type="module" src="{$editorURL}/@vite/client"></script>
|
||||
<script type="module" src="{$editorURL}/src/main.jsx"></script>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2806,7 +2902,7 @@ IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
|
||||
async
|
||||
></script>
|
||||
|
||||
@@ -2870,11 +2966,17 @@ IPSCONTENT;
|
||||
$hasPermission = \IPS\Helpers\Form\Editor::memberHasPermission( permission: "raw_embed" );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
ips.setSetting('maxEmbedWidth',
|
||||
ips.setSetting('maxEmbedWidth',
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= json_encode( \IPS\Settings::i()->max_internalembed_width ?: null, JSON_HEX_APOS );
|
||||
$return .= <<<IPSCONTENT
|
||||
);
|
||||
ips.setSetting('maxEmbeddedMediaWidth',
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= json_encode( \IPS\Settings::i()->max_embeddedmedia_width ?: null, JSON_HEX_APOS );
|
||||
$return .= <<<IPSCONTENT
|
||||
);
|
||||
ips.setSetting('allowedIframeDomains',
|
||||
IPSCONTENT;
|
||||
@@ -2888,19 +2990,6 @@ IPSCONTENT;
|
||||
$return .= \IPS\Output::i()->headJs;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Lang::vleActive() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<!--ipsVleWords-->
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</script>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -2975,6 +3064,23 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<!-- Need to add VLE tags regarless of ajax -->
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Lang::vleActive() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<script>
|
||||
// vle words defined here, on the next line <!--ipsVleWords-->
|
||||
</script>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
@@ -3943,6 +4049,7 @@ $return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Settings::i()->board_name
|
||||
$return .= <<<IPSCONTENT
|
||||
</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
|
||||
<style>
|
||||
|
||||
:root{
|
||||
@@ -4609,7 +4716,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/global/global/poll", "question:before", [ $poll,$url ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<h2 data-ips-hook="question" class="ipsInnerBox__header">
|
||||
<h2 data-ips-hook="question" class="ipsBox__header">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/global/global/poll", "question:inside-start", [ $poll,$url ] );
|
||||
@@ -4625,7 +4732,7 @@ IPSCONTENT;
|
||||
|
||||
if ( $poll->votes ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<span class="ipsInnerBox__header-secondary"><i class="fa-regular fa-check-square"></i>
|
||||
<span class="ipsBox__header-secondary"><i class="fa-regular fa-check-square"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $poll->votes ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'poll_num_votes', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
@@ -4652,7 +4759,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/global/global/poll", "contents:before", [ $poll,$url ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<div data-ips-hook="contents" class="ipsInnerBox__padding" data-role="pollContents">
|
||||
<div data-ips-hook="contents" class="" data-role="pollContents">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/global/global/poll", "contents:inside-start", [ $poll,$url ] );
|
||||
@@ -4681,7 +4788,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/global/global/poll", "questionNoVote:before", [ $poll,$url ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<h2 data-ips-hook="questionNoVote" class="ipsInnerBox__header">
|
||||
<h2 data-ips-hook="questionNoVote" class="ipsBox__header">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/global/global/poll", "questionNoVote:inside-start", [ $poll,$url ] );
|
||||
@@ -4697,7 +4804,7 @@ IPSCONTENT;
|
||||
|
||||
if ( $poll->votes ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<span class="ipsInnerBox__header-secondary"><i class="fa-regular fa-check-square"></i>
|
||||
<span class="ipsBox__header-secondary"><i class="fa-regular fa-check-square"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $poll->votes ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'poll_num_votes', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
@@ -4719,13 +4826,13 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/global/global/poll", "questionNoVote:after", [ $poll,$url ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsInnerBox__padding" data-role="pollContents">
|
||||
<div class="" data-role="pollContents">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/global/global/poll", "list:before", [ $poll,$url ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<ol data-ips-hook="list" class="ipsPollList i-grid i-gap_4">
|
||||
<ol data-ips-hook="list" class="ipsPollList ipsBox__padding i-grid i-gap_4">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/global/global/poll", "list:inside-start", [ $poll,$url ] );
|
||||
@@ -4766,11 +4873,11 @@ IPSCONTENT;
|
||||
foreach ( $question['choice'] as $k => $choice ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="i-flex i-flex-wrap i-align-items_center i-gap_1">
|
||||
<li class="i-flex i-flex-wrap_wrap i-align-items_center i-gap_1">
|
||||
<div class="i-flex_11 i-basis_340">
|
||||
{$choice}
|
||||
</div>
|
||||
<div class="i-flex_91 i-flex i-align-items_center i-gap_3 i-row-gap_1">
|
||||
<div class="i-flex_91 i-basis_400 i-flex i-align-items_center i-gap_3 i-row-gap_1">
|
||||
<div class="i-flex_11">
|
||||
<progress class="ipsProgress" max="100" value="
|
||||
IPSCONTENT;
|
||||
@@ -4836,6 +4943,12 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $choice, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<i class="fa-solid fa-user"></i>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $question['votes'][ $k ], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -4843,31 +4956,12 @@ else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="i-opacity_7">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i class="fa-solid fa-user"></i>
|
||||
<i class="fa-solid fa-user"></i>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $question['votes'][ $k ], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $poll->canSeeVoters() && $question['votes'][ $k ] > 0 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</span></a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
</span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -4908,8 +5002,7 @@ IPSCONTENT;
|
||||
if ( $poll->canVote() || !\IPS\Member::loggedIn()->member_id || $poll->canClose() || ( ( $poll->poll_close_date instanceof \IPS\DateTime ) and !$poll->poll_closed ) || ( ( $poll->poll_close_date instanceof \IPS\DateTime ) and $poll->poll_closed ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<hr class="ipsHr">
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -4921,7 +5014,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/global/global/poll", "closed:before", [ $poll,$url ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<div data-ips-hook="closed" class="i-padding_2 i-font-weight_600 i-color_soft">
|
||||
<div data-ips-hook="closed" class="i-border-top_2 i-padding_2 i-font-weight_600 i-color_soft">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/global/global/poll", "closed:inside-start", [ $poll,$url ] );
|
||||
@@ -4999,7 +5092,7 @@ IPSCONTENT;
|
||||
if ( !\IPS\Member::loggedIn()->member_id ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p>
|
||||
<p class="i-border-top_2 i-padding_2 i-color_soft">
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array(\IPS\Http\Url::internal( 'app=core&module=system&controller=login', 'front', 'login' ), \IPS\Http\Url::internal( 'app=core&module=system&controller=register', 'front', 'register' )); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'poll_guest', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
@@ -5017,7 +5110,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/global/global/poll", "vote:before", [ $poll,$url ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<ul data-ips-hook="vote" class="ipsButtons ipsButtons--polls i-margin-top_2">
|
||||
<ul data-ips-hook="vote" class="ipsSubmitRow ipsSubmitRow--poll ipsButtons">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/global/global/poll", "vote:inside-start", [ $poll,$url ] );
|
||||
@@ -5051,7 +5144,7 @@ IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -5102,7 +5195,7 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/global/global/poll", "vote:inside-end", [ $poll,$url ] );
|
||||
@@ -5469,14 +5562,13 @@ IPSCONTENT;
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<hr class='ipsHr'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ($poll->poll_close_date instanceof \IPS\DateTime) or $poll->poll_view_voters ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-padding_2 i-font-weight_600 i-color_soft'>
|
||||
<div class='i-padding_2 i-border-top_2 i-font-weight_600 i-color_soft'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -5532,31 +5624,51 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul class="ipsButtons i-margin-top_3">
|
||||
<li>
|
||||
<button type="submit" class="ipsButton ipsButton--primary" accesskey="s" role="button">
|
||||
<div class="ipsSubmitRow ipsSubmitRow--votePoll">
|
||||
<ul class="ipsButtons">
|
||||
<li>
|
||||
<button type="submit" class="ipsButton ipsButton--primary" accesskey="s" role="button">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'save_vote', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button>
|
||||
</li>
|
||||
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $poll->canViewResults() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a class='ipsButton ipsButton--text i-margin-end_auto' title='
|
||||
<li><a class='ipsButton ipsButton--text i-margin-end_auto' title='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'show_results_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
' href="
|
||||
'
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Settings::i()->allow_result_view ):
|
||||
$return .= <<<IPSCONTENT
|
||||
href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $url->setQueryString( '_poll', 'results' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $url->setQueryString( array( '_poll' => 'results', 'nullVote' => 1 ) )->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Settings::i()->allow_result_view ):
|
||||
@@ -5577,25 +5689,25 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'show_results', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></li>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $poll->canClose() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! $poll->poll_closed ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a class='ipsButton ipsButton--inherit' href='
|
||||
<li><a class='ipsButton ipsButton--inherit' href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $url->setQueryString( array( 'do' => 'pollStatus', 'value' => 0 ) )->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -5605,13 +5717,13 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'poll_close', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></a></li>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a class='ipsButton ipsButton--inherit' href='
|
||||
<li><a class='ipsButton ipsButton--inherit' href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $url->setQueryString( array( 'do' => 'pollStatus', 'value' => 1 ) )->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -5621,19 +5733,20 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'poll_open', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></a></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -5681,7 +5794,7 @@ $return .= <<<IPSCONTENT
|
||||
<span class="i-color_soft">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $vote->vote_date instanceof \IPS\DateTime ) ? $vote->vote_date : \IPS\DateTime::ts( $vote->vote_date );$return .= $val->html();
|
||||
$val = ( $vote->vote_date instanceof \IPS\DateTime ) ? $vote->vote_date : \IPS\DateTime::ts( $vote->vote_date );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -1582,7 +1582,7 @@ IPSCONTENT;
|
||||
elseif ( $icon === "windows" ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"/></svg>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1637,12 +1637,12 @@ IPSCONTENT;
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<span class='ipsSocial__text'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$method->buttonText()}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2110,46 +2110,6 @@ endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Settings::i()->mfa_required_groups != '*' and !$member->inGroup( explode( ',', \IPS\Settings::i()->mfa_required_groups ) ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="i-background_2 i-text-align_center i-padding_2 cOtherMethod">
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $url->setQueryString( '_mfa', 'optout' )->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class='ipsButton ipsButton--text ipsButton--wide' data-confirm
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->language()->checkKeyExists('security_questions_opt_out_warning_value') ):
|
||||
$return .= <<<IPSCONTENT
|
||||
data-confirmSubMessage="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'security_questions_opt_out_warning_value', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_opt_out', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -2171,15 +2131,30 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$thisUrl = \IPS\Widget\Request::i()->url();
|
||||
$url = \IPS\Widget\Request::i()->url()->stripQueryString();
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="i-background_2 i-text-align_center i-padding_2 cOtherMethod">
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $thisUrl->stripQueryString(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $url->setQueryString( '_mfa', 'optout' )->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' class='ipsButton ipsButton--text ipsButton--wide'>
|
||||
' class='ipsButton ipsButton--text ipsButton--wide' data-confirm
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->language()->checkKeyExists('security_questions_opt_out_warning_value') ):
|
||||
$return .= <<<IPSCONTENT
|
||||
data-confirmSubMessage="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'security_questions_opt_out_warning_value', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_opt_out', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
|
||||
@@ -567,23 +567,23 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ip_address_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h2>
|
||||
<div class='i-padding_3 i-background_2 cIPInfo' data-ips-template="ipLookup">
|
||||
<div class='i-background_2 cIPInfo' data-ips-template="ipLookup">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $geolocation or $hostName ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsColumns'>
|
||||
<div class='ipsColumns__secondary i-basis_280 i-background_2'>
|
||||
<div class='i-padding_3 cIPInfo_map'>
|
||||
<div class='ipsColumns ipsColumns--lines ipsColumns--ipLookUp'>
|
||||
<div class='ipsColumns__secondary i-basis_340 i-padding_3 i-background_1'>
|
||||
<div class='cIPInfo_map'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $hostName ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p>
|
||||
<p class="i-margin-bottom_3">
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array($hostName); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ip_geolocation_hostname', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
@@ -608,15 +608,14 @@ if ( $map ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$map}
|
||||
<br>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p>{$geolocation}</p>
|
||||
<p class="i-color_soft i-font-size_-2"><i class="fa-solid fa-circle-info"></i>
|
||||
<p class="i-margin-top_2 i-color_hard i-font-weight_500">{$geolocation}</p>
|
||||
<p class="i-margin-top_2 i-color_soft i-font-size_-2"><i class="fa-solid fa-circle-info"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ip_geolocation_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -790,7 +789,7 @@ $return .= <<<IPSCONTENT
|
||||
<h4 class='ipsData__title'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row['log_date'] instanceof \IPS\DateTime ) ? $row['log_date'] : \IPS\DateTime::ts( $row['log_date'] );$return .= $val->html();
|
||||
$val = ( $row['log_date'] instanceof \IPS\DateTime ) ? $row['log_date'] : \IPS\DateTime::ts( $row['log_date'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</h4>
|
||||
<p class='ipsData__meta'>
|
||||
|
||||
@@ -195,7 +195,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->submitted instanceof \IPS\DateTime ) ? $file->submitted : \IPS\DateTime::ts( $file->submitted );$return .= $val->html();
|
||||
$val = ( $file->submitted instanceof \IPS\DateTime ) ? $file->submitted : \IPS\DateTime::ts( $file->submitted );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -210,7 +210,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->updated instanceof \IPS\DateTime ) ? $file->updated : \IPS\DateTime::ts( $file->updated );$return .= $val->html();
|
||||
$val = ( $file->updated instanceof \IPS\DateTime ) ? $file->updated : \IPS\DateTime::ts( $file->updated );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -28,6 +28,7 @@ $return .= <<<IPSCONTENT
|
||||
<table class="ipsTable ipsTable_zebra">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="60"></th>
|
||||
<th>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -61,7 +62,8 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $member );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</td>
|
||||
<td>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $member->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -187,6 +189,7 @@ $return .= <<<IPSCONTENT
|
||||
<table class="ipsTable ipsTable_zebra">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="60"></th>
|
||||
<th>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -244,7 +247,8 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $member );
|
||||
$return .= <<<IPSCONTENT
|
||||
{$member->link()}</td>
|
||||
</td>
|
||||
<td>{$member->link()}</td>
|
||||
<td>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -82,7 +82,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "browse", \IPS\Request::i()->app )->categoryRow( NULL, NULL, \IPS\downloads\Category::roots() );
|
||||
$return .= \IPS\Theme::i()->getTemplate( "browse", \IPS\Request::i()->app )->categoryRow( NULL, NULL, \IPS\downloads\Category::roots(), $layout );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "browse", \IPS\Request::i()->app )->categoryRow( NULL, NULL, $clubNodes );
|
||||
$return .= \IPS\Theme::i()->getTemplate( "browse", \IPS\Request::i()->app )->categoryRow( NULL, NULL, $clubNodes, $layout );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -917,7 +917,7 @@ IPSCONTENT;
|
||||
return $return;
|
||||
}
|
||||
|
||||
function categoryRow( $table, $headers, $categories ) {
|
||||
function categoryRow( $table, $headers, $categories, $layout='table' ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
@@ -992,91 +992,15 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></a>
|
||||
|
||||
|
||||
<figure class='ipsData__image'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $category->card_image ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<img src='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\File::get( "downloads_Cards", $category->card_image )->url;
|
||||
$return .= <<<IPSCONTENT
|
||||
' alt='' loading='lazy'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $club ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$coverPhoto = $club->coverPhoto( FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$cfObject = $coverPhoto->object;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $coverPhoto->file ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<img src="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $coverPhoto->file->url, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" alt='' loading='lazy'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $club->profile_photo ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<img src='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\File::get( "core_Clubs", $club->profile_photo )->url;
|
||||
$return .= <<<IPSCONTENT
|
||||
' alt='' loading='lazy'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( ! empty( $cfObject::$coverPhotoDefault ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsFallbackImage" style="--i-empty-image-random--ba-co:
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $coverPhoto->object->coverPhotoBackgroundColor(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
;"></div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i></i>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
if ( $layout==="table" ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1090,13 +1014,131 @@ IPSCONTENT;
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i></i>
|
||||
<span class='ipsIcon ipsIcon--fa' aria-hidden="true"><i class="fa-ips"></i></span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $category->card_image ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<img src='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\File::get( "downloads_Cards", $category->card_image )->url;
|
||||
$return .= <<<IPSCONTENT
|
||||
' alt='' loading='lazy'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $club ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$coverPhoto = $club->coverPhoto( FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$cfObject = $coverPhoto->object;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $coverPhoto->file ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<img src="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $coverPhoto->file->url, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" alt='' loading='lazy'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $club->profile_photo ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<img src='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\File::get( "core_Clubs", $club->profile_photo )->url;
|
||||
$return .= <<<IPSCONTENT
|
||||
' alt='' loading='lazy'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( ! empty( $cfObject::$coverPhotoDefault ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsFallbackImage" style="--i-empty-image-random--ba-co:
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $coverPhoto->object->coverPhotoBackgroundColor(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
;"></div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class='ipsIcon ipsIcon--fa' aria-hidden="true"><i class="fa-ips"></i></span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $icon = $category->getIcon() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$icon}
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class='ipsIcon ipsIcon--fa' aria-hidden="true"><i class="fa-ips"></i></span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1108,38 +1150,53 @@ $return .= <<<IPSCONTENT
|
||||
<div class="ipsData__content">
|
||||
<div class="ipsData__main">
|
||||
<div class='ipsData__title'>
|
||||
<h4>
|
||||
<a href="
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\downloads\File::containerUnread( $category ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsIndicator" title='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'unread', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-ipstooltip></span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<h4><a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></h4>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $club ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsData__club"><a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array($club->name, $category->_title); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_node', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $club->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $category->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</a></div>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1269,7 +1326,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $lastPost->submitted instanceof \IPS\DateTime ) ? $lastPost->submitted : \IPS\DateTime::ts( $lastPost->submitted );$return .= $val->html();
|
||||
$val = ( $lastPost->submitted instanceof \IPS\DateTime ) ? $lastPost->submitted : \IPS\DateTime::ts( $lastPost->submitted );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
@@ -1743,7 +1800,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->submitted instanceof \IPS\DateTime ) ? $file->submitted : \IPS\DateTime::ts( $file->submitted );$return .= $val->html();
|
||||
$val = ( $file->submitted instanceof \IPS\DateTime ) ? $file->submitted : \IPS\DateTime::ts( $file->submitted );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -1753,7 +1810,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->updated instanceof \IPS\DateTime ) ? $file->updated : \IPS\DateTime::ts( $file->updated );$return .= $val->html();
|
||||
$val = ( $file->updated instanceof \IPS\DateTime ) ? $file->updated : \IPS\DateTime::ts( $file->updated );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -1990,7 +2047,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->submitted instanceof \IPS\DateTime ) ? $file->submitted : \IPS\DateTime::ts( $file->submitted );$return .= $val->html(FALSE);
|
||||
$val = ( $file->submitted instanceof \IPS\DateTime ) ? $file->submitted : \IPS\DateTime::ts( $file->submitted );$return .= $val->html(FALSE, useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -2005,7 +2062,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->updated instanceof \IPS\DateTime ) ? $file->updated : \IPS\DateTime::ts( $file->updated );$return .= $val->html(FALSE);
|
||||
$val = ( $file->updated instanceof \IPS\DateTime ) ? $file->updated : \IPS\DateTime::ts( $file->updated );$return .= $val->html(FALSE, useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -2964,7 +3021,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->submitted instanceof \IPS\DateTime ) ? $file->submitted : \IPS\DateTime::ts( $file->submitted );$return .= $val->html();
|
||||
$val = ( $file->submitted instanceof \IPS\DateTime ) ? $file->submitted : \IPS\DateTime::ts( $file->submitted );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -2974,7 +3031,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->updated instanceof \IPS\DateTime ) ? $file->updated : \IPS\DateTime::ts( $file->updated );$return .= $val->html();
|
||||
$val = ( $file->updated instanceof \IPS\DateTime ) ? $file->updated : \IPS\DateTime::ts( $file->updated );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -4104,7 +4161,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->submitted instanceof \IPS\DateTime ) ? $file->submitted : \IPS\DateTime::ts( $file->submitted );$return .= $val->html(FALSE);
|
||||
$val = ( $file->submitted instanceof \IPS\DateTime ) ? $file->submitted : \IPS\DateTime::ts( $file->submitted );$return .= $val->html(FALSE, useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -4119,7 +4176,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->updated instanceof \IPS\DateTime ) ? $file->updated : \IPS\DateTime::ts( $file->updated );$return .= $val->html(FALSE);
|
||||
$val = ( $file->updated instanceof \IPS\DateTime ) ? $file->updated : \IPS\DateTime::ts( $file->updated );$return .= $val->html(FALSE, useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1093,7 +1093,7 @@ $return .= <<<IPSCONTENT
|
||||
' data-role='followDate' hidden><i class='fa-regular fa-clock'></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $row->_followData['follow_added'] instanceof \IPS\DateTime ) ? $row->_followData['follow_added'] : \IPS\DateTime::ts( $row->_followData['follow_added'] );$return .= $val->html();
|
||||
$val = ( $row->_followData['follow_added'] instanceof \IPS\DateTime ) ? $row->_followData['follow_added'] : \IPS\DateTime::ts( $row->_followData['follow_added'] );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
<li title='
|
||||
|
||||
@@ -366,7 +366,11 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $file->feedId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' id='comments' class='ipsEntries ipsEntries--comments ipsEntries--download-comments'>
|
||||
' id='comments' class='ipsEntries ipsEntries--comments ipsEntries--download-comments' data-follow-area-id="file-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $file->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1188,7 +1192,36 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsData__item'>
|
||||
<div class='ipsData__main'>
|
||||
<h4 class='ipsData__title'><span class=''>
|
||||
<h4
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $fileObject->canEdit() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
data-controller="core.front.core.moderation"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
class='ipsData__title'><span
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $fileObject->canEdit() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
data-role="editableTitle" data-params='{"do":"ajaxEditLinkRecordRealName","record_id":
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['record_id'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
}' title='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'click_hold_edit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
'
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
class=''>
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $data['record_realname'] ):
|
||||
@@ -2060,7 +2093,7 @@ $return .= <<<IPSCONTENT
|
||||
<div class="i-basis_160">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->submitted instanceof \IPS\DateTime ) ? $file->submitted : \IPS\DateTime::ts( $file->submitted );$return .= $val->html();
|
||||
$val = ( $file->submitted instanceof \IPS\DateTime ) ? $file->submitted : \IPS\DateTime::ts( $file->submitted );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</li>
|
||||
@@ -2083,7 +2116,7 @@ $return .= <<<IPSCONTENT
|
||||
<div class="i-basis_160">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->updated instanceof \IPS\DateTime ) ? $file->updated : \IPS\DateTime::ts( $file->updated );$return .= $val->html();
|
||||
$val = ( $file->updated instanceof \IPS\DateTime ) ? $file->updated : \IPS\DateTime::ts( $file->updated );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</div>
|
||||
@@ -2219,7 +2252,11 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $file->reviewFeedId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' id='reviews' class='ipsEntries ipsEntries--reviews ipsEntries--download-reviews'>
|
||||
' id='reviews' class='ipsEntries ipsEntries--reviews ipsEntries--download-reviews' data-follow-area-id="file-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $file->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2562,7 +2599,17 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<div class="ipsBlockSpacer">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "downloads/front/view/view", "main:before", [ $file,$commentsAndReviews,$versionData,$previousVersions,$next,$prev,$cfields ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<div class="ipsBlockSpacer" data-ips-hook="main">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "downloads/front/view/view", "main:inside-start", [ $file,$commentsAndReviews,$versionData,$previousVersions,$next,$prev,$cfields ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsBox ipsPull">
|
||||
<header class="ipsPageHeader">
|
||||
<div class="ipsPageHeader__row">
|
||||
@@ -2854,7 +2901,17 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $file->author(), 'tiny', $file->warningRef() );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsPhotoPanel__text">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "downloads/front/view/view", "author:before", [ $file,$commentsAndReviews,$versionData,$previousVersions,$next,$prev,$cfields ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<div class="ipsPhotoPanel__text" data-ips-hook="author">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "downloads/front/view/view", "author:inside-start", [ $file,$commentsAndReviews,$versionData,$previousVersions,$next,$prev,$cfields ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class="ipsPhotoPanel__primary">
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -2969,7 +3026,17 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "downloads/front/view/view", "author:inside-end", [ $file,$commentsAndReviews,$versionData,$previousVersions,$next,$prev,$cfields ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "downloads/front/view/view", "author:after", [ $file,$commentsAndReviews,$versionData,$previousVersions,$next,$prev,$cfields ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -3148,7 +3215,7 @@ $pluralize = array( $file->screenshots()->getInnerIterator()->count() ); $return
|
||||
$return .= <<<IPSCONTENT
|
||||
</h2>
|
||||
<div class="">
|
||||
<ul class="ipsCarousel ipsCarousel--images ipsCarousel--downloads-file-screenshots" id="downloads-file-screenshots" tabindex="0">
|
||||
<ul class="ipsCarousel ipsCarousel--padding ipsCarousel--images ipsCarousel--downloads-file-screenshots" id="downloads-file-screenshots" tabindex="0">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -3162,12 +3229,6 @@ foreach ( $file->screenshots( 1 ) as $id => $screenshot ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$dimensions = $screenshot->getImageDimensions();
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $fullScreenshots[ $id ]->url, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -3181,17 +3242,7 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $screenshot->url, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" alt="" width="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $dimensions[0], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" height="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $dimensions[1], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" loading="lazy">
|
||||
" alt="">
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -3204,7 +3255,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->carouselNavigation( 'downloads-file-screenshots' );
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->carouselNavigation( 'downloads-file-screenshots', 'i-margin-bottom_2' );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
@@ -4005,7 +4056,7 @@ $return .= <<<IPSCONTENT
|
||||
<span class="ipsList__value">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->submitted instanceof \IPS\DateTime ) ? $file->submitted : \IPS\DateTime::ts( $file->submitted );$return .= $val->html();
|
||||
$val = ( $file->submitted instanceof \IPS\DateTime ) ? $file->submitted : \IPS\DateTime::ts( $file->submitted );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</li>
|
||||
@@ -4026,7 +4077,7 @@ $return .= <<<IPSCONTENT
|
||||
<span class="ipsList__value">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->published instanceof \IPS\DateTime ) ? $file->published : \IPS\DateTime::ts( $file->published );$return .= $val->html();
|
||||
$val = ( $file->published instanceof \IPS\DateTime ) ? $file->published : \IPS\DateTime::ts( $file->published );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</li>
|
||||
@@ -4053,7 +4104,7 @@ $return .= <<<IPSCONTENT
|
||||
<span class="ipsList__value">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $file->updated instanceof \IPS\DateTime ) ? $file->updated : \IPS\DateTime::ts( $file->updated );$return .= $val->html();
|
||||
$val = ( $file->updated instanceof \IPS\DateTime ) ? $file->updated : \IPS\DateTime::ts( $file->updated );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</li>
|
||||
@@ -4192,7 +4243,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "sharelinks", "core" )->shareButton( $file, 'verySmall', 'light' );
|
||||
$return .= \IPS\Theme::i()->getTemplate( "sharelinks", "core" )->shareButton( $file );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -4334,7 +4385,17 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "downloads/front/view/view", "main:inside-end", [ $file,$commentsAndReviews,$versionData,$previousVersions,$next,$prev,$cfields ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "downloads/front/view/view", "main:after", [ $file,$commentsAndReviews,$versionData,$previousVersions,$next,$prev,$cfields ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
Loaded 100 of 1214 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user